String formatting: "%s connected on port %d" % ["root", 22]. %s for any value, %d/%f for numbers, %% for a literal percent.
rm_dir(conn, path) - recursively delete a directory and everything inside it.
get_unix_time() - real wall-clock time, for benchmarking your own script's actual elapsed time.
Ctrl+/ in the code editor now comments/uncomments the selected lines (or just the current line).
A small "new output" indicator now appears if you're scrolled back in the terminal and something new prints.
Republishing an updated Workshop item now asks what actually changed, instead of always using a fixed generic note.
Piping is real now: cat file.txt | grep 'bob' works, and find ../ -name *.log | cat $_ runs cat once per result.
cd(conn?, path) and get_cwd(conn?) - scripts have a real working directory now.
Completed missions now show up in a collapsed list in the jobs panel. Retry any of them for a clean replay - no repeat payout.
Some performance improvements under the hood.
Updated Workshop editor tools - rename files and folders, a real multi-line editor for file content, and a few more authorable server fields.
Reconnecting to a server you were already tracing no longer resets the trace back to full.
upload() no longer silently writes files to a destination that doesn't exist yet.
mv and cp had the same issue as upload() above - fixed.
delete_file() on a directory now rejects it with a clear error instead of orphaning its contents. Use the new rm_dir() for that.
Added the missing "Skip Boot Sequence" toggle to the in-game settings menu.
pivot()'s "trace already active" error is clearer about why.
Mission tab text can now be selected and copied, and the target IP there is right-clickable too, same as the network panel.
help filesystem was missing several real commands - added.
#lounge could quietly stop receiving messages - it now reconnects and catches you up automatically.
Finishing an objective, saving, and reloading could reset it back to incomplete. Fixed.
Leaderboard/audit submissions could show your Steam profile name instead of your in-game handle. Fixed.
Progression/streak/skill badges weren't being awarded automatically. Fixed.
Shop page text and the bottom status bar didn't scale with the font size setting. Fixed.
Various mission hint/objective adjustments across the campaign.
ProxyChain's own shop page taught a pivot() workflow that never actually worked. Rewrote it to show the workflow that does.
A paused trace could regenerate fully and still stay flagged as active forever, permanently blocking pivot(). Fixed.
Fixed a login-gated dashboard page being reachable by just guessing its filename.
Cleaner parser errors.
Daily/weekly job briefings could describe a different objective than the one actually assigned. Fixed.
A first ever Workshop publish could silently create an empty, hidden item and orphan it on every retry. Fixed - a retry now correctly finishes the same reserved item.
- Static