Status
SteamPeaks
ChartsSalesUpcomingPatchesNewsCalculator
New on SteamEvery app, DLC and depot the minute Steam creates itAppsEvery app on Steam, newest change firstPackagesSubs and bundles, and what each containsDepotsDepots, manifests and install sizesTagsSteam's user tags and the games under themDevelopers & publishersCompanies and their cataloguesTechnologiesEngines, SDKs and anti-cheat found in the filesChange historyEvery PICS changelist as it lands
SignalsNineteen readings of the whole catalogueCompareAny games side by sideRecordsAll-time peaks and the days they were setReportsWeekly and monthly write-upsAlerts & newsroomWatch a game, get told when it movesSteam statusIs Steam up, right nowWeb API explorerTry the endpoints in the browser
NewsSteam's own announcements and the sales calendarCalculatorWhat a Steam account is worth, and its pile of shame
/
Sign in
/
SteamPeaks
The ultimate resource for Steam data.
ExploreChartsSalesSales and festsUpcomingPatchesNewsRecordsTrendingSignals
DatabaseAppsPackagesDepotsTagsDevelopersTechnologiesChange history
ToolsCalculatorCompareSearchAlertsSteam statusAPI
SiteMethodologyFAQDiscordSupportSign in via Steam
Not affiliated with Valve or Steam. Game names and artwork belong to their owners. All times UTC.
PrivacyCookiesFair useStatus
BlackdoorNewsDemo Update - v0.11.1
Game update

Demo Update - v0.11.1

Blackdoor · published 29 Jul 2026, 18:15 UTC

All newsPlayers around this dateRead on Steam

Features

  • Music, for real this time - the music command is live: view the playlist, music next / music prev to skip around, music <name> to jump straight to a track, or music set <name> to loop one track on repeat instead of rotating, for anyone who just wants one song. Tracks now play out in full - around four minutes each, matching the standalone soundtrack - and fade out naturally before handing off to the next one, instead of the old hard cut on a fixed timer.

  • forkbomb - a last-resort recovery command for a remote server you've broken beyond normal use (accidentally deleted its own /, or a stray script wrote a file literally named after a directory path). Crashes the target and restores it fresh from backup, undoing every change you've made to it - deleted files, uploads, cracked users, all of it. Asks for confirmation first. Not an actual attack - it's a reset button, framed as one.

  • New: get_cpu() - returns your current aggregate CPU load (0-100) across every running process, the same number your own status bar shows. Scripts can now self-throttle (if get_cpu() > 80: sleep(0.5)) instead of finding out about overload only when everything gets killed.

  • New: object.remove(key) - removes a property from an object, joining keys()/values()/has(). Objects previously had no way to delete a key at all.

  • creds - a formatted view of every cracked username/password, grouped by server. Reads the same ~/.ssh/credentials file cat already showed you, just organized - no more tracking it yourself.

Bug Fixes

  • Confirming a completed mission in IRC could silently fail to advance it - replying "yes" when an NPC asked for confirmation crashed partway through an internal check on almost any mission (a leftover call meant for a plain dictionary, used on a typed object instead), so the mission never moved to its upload step or finished, even though every objective was already checked off. This was a serious one - by far the most impactful fix in this patch.

  • Two "delete/scrub" mission objectives could become permanently unsatisfiable - clearing /var/log/auth.log (or any other common path) only counted if it was gone from every server you'd ever registered, not just the mission's own target. On a path that common, some other server almost always still had a copy, so the objective could never complete. It now only checks the mission's own server(s), and multi-server missions can point a specific objective at one server directly.

  • Abandoning mission_00 or a Daily/Weekly Audit and then finishing something else could corrupt that mission's completion - the abandon handler only reset its "is this mission active" flag for the base Full Audit, not mission_00 or the Daily/Weekly variants. Finishing an unrelated mission afterward could get silently rerouted through that abandoned mission's completion logic instead of its own.

  • cp on an encrypted or protected file dropped both the encryption and protection on the copy - cat-ing the copy showed the plaintext immediately, no cracking required, defeating any encryption-gated file. The copy now carries over encryption and protection state, same as the original.

  • Browser back button could leave you interacting with the wrong server - after following a link to another server and pressing back, the page shown reverted correctly, but the browser's internal "current server" pointer didn't - so the next form submit or login on that page could hit the server you'd left, not the one on screen.

  • mkdir foo/ (trailing slash) silently created an unreachable phantom directory, and mkdir .. created a literal folder named .. instead of failing sensibly - mkdir's path handling never normalized paths the way every other file command already does. Also fixes the same family of bug in mv/cp/grep/mkdir, where a filename that happened to start with ~ (but wasn't a home-folder shorthand) got mangled instead of treated literally.

  • /join//leave in IRC required exact-case channel names while /msg and /whois didn't - /join #Blackdoor failed even with #blackdoor open. Now case-insensitive like its siblings.

  • exit claimed nothing was connected even when a background script still held a connection - it skipped the same explanation disconnect already gives in that situation, which points you at ps/kill <pid> instead.

  • decrypt(conn) (missing the required path argument) hit a raw engine error instead of the usual decrypt: ... message every other function in the API gives for bad input.

  • List/string indexing didn't support negative indices (list[-1], "abc"[-1]) even though pop()/insert() already did and the v0.11.0 notes said it should - fixed to match.

  • neofetch, sysinfo, credits, and fortune are real, working commands that were missing from tab completion and typo suggestions. Added.

  • .size() on lists and strings was implemented but missing from the editor's built-in cheatsheet. Added.

  • upload(conn, local_path, "/some/dir/") (trailing slash, no filename) wrote a file literally named after the directory instead of appending the source filename - the directory check didn't strip the trailing slash first, so it silently missed the stored directory entry. Same bug already fixed for scp in v0.11.0, just never applied to the scripting API's own upload().

  • The Mission and Network panes could go blank after a live layout.cfg edit (or loading a save with a custom layout) and stay blank until quitting to the menu and back - both panes only render their own content once, the first time they're built; every later panel rebuild reuses the same control as-is instead of re-rendering it. Now re-rendered every time panels rebuild, not just the first.

  • A side mission's crack objective could never complete - side_gains_and_losses.json used "user": "cto" instead of "target": "cto", a field the loader doesn't read, so the crack check silently checked against an empty username forever.

  • A side mission's log-scrub objective could become permanently unsatisfiable - same bug class as the delete fix above, just not applied to scrub_log: with no server specified, it checked every registered server's log for the player's IP instead of just the mission's own target.

  • Several servers listed filesystem entries at the root level (lib, run, sbin, sys) that didn't actually exist - ls / would show them, but exploring any of them failed. Added the missing entries.

  • The shop mislabeled its own leaderboard server's IP, and referred to one of its own products by an old, unused name in three different places on its own pages - both now consistent with what's actually for sale.

  • Upload mission objectives only checked that a file existed at the destination, not what was in it - writing any file with the right name to the drop server completed the objective, real evidence or not. Now checks the actual file content against the source you were meant to deliver; the destination filename no longer has to match at all, only the content.



- Static

More from Blackdoor

Other announcements

All news
Game update13 Sep 2026v1.1.1 - bug fixesBug Fixes · sqli() no longer crashes a script when a target has no configured routes - returns a normal checkable result instead. · Object literals, lists, and function calls can now be written across multiple lines. · ls now shows real file permissions and ownership, matching what download()/upload() actually enforce. · The web API reference's connect() entry now carries the same success-vs-lo…Major update10 Sep 2026v1.1.0 - PersistenceThis is the biggest update Blackdoor's had since launch, and it's less about any one feature than about the world stopping being so still. A server used to be a filing cabinet - it sat there with its files and its users until you did something to it, and nothing happened in between. That's fine for a lot of the game, but it meant every "the system noticed you" moment was fake. This update makes…Game update1 Sep 2026v1.0.6 - workshop and scripting fixesNew · Action link syntax (open a firewall port, view server users, etc. from an HTML page) is now documented right in the Workshop editor when editing an .html file, instead of only existing in an external doc. · A new editor= option in ~/.config/blackdoor.conf (simple or nano) - nano mode adds a real Ctrl+X: prompts "Save modified buffer?" if you've got unsaved changes (Y or N then Enter to co…