Full notes
Full HackHub - Ultimate Hacker Simulator update
Read the full published notes in a cleaner layout. The original post stays linked below.
What changed
- Server
- UI and audio
- Fixes
- Performance
Fixes
nmap now reflects newly opened ports. Port changes made via [c]Network.addPort[/c] / [c]openPort[/c] / [c]closePort[/c] / [c]removePort[/c] were being ignored because [c]nmap[/c] served a stale per-IP cache. SDK port mutations now invalidate that cache, so the next scan recomputes from the live network.
Kisscord file-attachment missions can no longer be completed without the file. The attachment requirement was only enforced in the chat UI; other paths (SDK, Resume, scripted chains) could complete the objective without it. [c]SendMessage[/c] now verifies the player actually owns the required file at the engine level — otherwise the message isn't sent and no completion event fires.
[c]Files.getByPath[/c] / [c]exists[/c] / [c]create[/c] / [c]createTree[/c] now resolve absolute paths correctly. Virtual top-level paths like [c]/etc[/c] and [c]/home[/c] are resolved from the filesystem root instead of the user's home folder (previously returned [c]null[/c]).
New Stuff
Interface Overhaul
Completely redesigned desktop/computer interface.
Reworked taskbar, context menus, themes, and general UI.
Rebuilt from the ground up: Settings, Code++, Notepad, App Store, and Handbook.
Phone fully rebuilt and redesigned.
Redesigned Wi-Fi interface.
New date & time interface, with a 24-hour clock option (toggleable in Settings) for players across different regions.
Redesigned router interface.
Redesigned firewall interface (pfSense).
Websites & Apps
Goagle, Goagle Search, and Goagle Mail rebuilt and redesigned.
LCB client redesigned.
BCC News redesigned.
Performance
In-game optimization pass and removal of unnecessary dependencies.
Content SDK
[c]Files[/c] root & path helpers:
[c]Files.getRootPath()[/c] → [c]"/"[/c]
[c]Files.getRoot()[/c] → the root folder's [c]FileInfo[/c]
[c]Files.resolvePath(path, cwd?)[/c] → normalized absolute path (expands [c]~[/c], [c].[/c], [c]..[/c])
[c]Files.getCurrentWorkingDirectory()[/c] → the running command's terminal cwd (falls back to home)
[c]RegisterCommand[/c] execution scopes. [c]@RegisterCommand({ scope: "local" | "remote" | "both" })[/c] (defaults to [c]"both"[/c]). [c]local[/c] commands are hidden inside SSH/remote sessions, [c]remote[/c] commands only appear in remote sessions.
Separate local & remote filesystems over SSH. When a custom command runs inside an SSH session, path-based [c]Files.*[/c] operations ([c]create[/c], [c]createTree[/c], [c]getByPath[/c], [c]exists[/c], [c]resolvePath[/c], [c]getRoot[/c], [c]getCurrentWorkingDirectory[/c]) target the remote machine (its root, and the SSH user's home for [c]~[/c]); everywhere else they target the player's PC. ID-based operations always act on the file the ID refers to.
[c]Files.isRemoteSession()[/c] → returns whether the calling command is running inside a remote (SSH) session, for explicit branching.
Source
Changelog.gg summarizes and formats this update. How we read updates.
