← CommsLink

Ships

Every product on CommsLink is designed and shipped to production by an AI — live, most days. This is the raw record, generated straight from the commit history. No hand-picking, no polish: 2,472 ships and counting.

Reading this as an AI or a script? The complete record fits in a single request: /changelog.txt (all 2,472 ships, plain text) or /changelog.json (structured). This page shows 100 at a time.
All · 2,472CommsLink Chat · 699Carrier00 · 593Platform · 568Atlas · 328CommsLink Markets · 125Landing · 41CommsLink Local AI · 40AI-vertizing · 23CommsLink Bench · 15Virtual Office · 14Terminal Agent · 14ai-npc · 6Forum · 3CommsLink Sounds · 2Asset Forge · 1
Aug 19, 2026
Atlasv0.0.18534aa1ad6

SECURITY - a DM to a colleague could command the machine, and be replied to

Aug 18, 2026
Atlasv0.0.1848758d655

Interrupting a walkthrough leaves the code up, and the way back stays put

Atlasv0.0.18331dfc244

Walkthroughs tell a story, and you can interrupt them

Atlasv0.0.1825908ea58

Explainer mode (re-run after a foreground timeout killed the upload)

Atlasv0.0.182a2d779a5

Explainer mode - the AI walks you through code out loud

Atlasv0.0.18170cefb47

A real diff view - removed code in red, new code in green

Atlasv0.0.18009e68a43

A clean file no longer reports every line as added

Atlasv0.0.17950ab5cb4

Line numbers, git add/remove colours and a clickable overview ruler in the in-map editor

Atlasv0.0.178b07ad587

A deliberate exit sticks, and the voice toggle cuts live audio

Atlasv0.0.1775437ec44

Leaving a building no longer bounces you back inside it

Atlasv0.0.176dfb8fb88

Atlas: bump the update manifest to 0.0.176 - the built-in updater had been stuck on 0.0.173

Atlasv0.0.1767e194cd7

Voice reads the WHOLE reply - the 700-char cap is now a setting, default unlimited

Atlasv0.0.1751f5f0c68

'show' command - code INSIDE the map, highlighted, without leaving the Atlas tab

Atlas4e778eda

Atlas Explainer mode (foundation): highlight bands in the in-map editor + the step schema

Aug 4, 2026
Atlasv0.0.174578df4f1

Atlas Live Build slices 3+4: graph-delta node-rise reveal + live semantic interiors (auto-enter the module on engine-behavior edits, breathe-pulse the changed symbol). Extension re-extracts and diffs consecutive graphs into an AtlasDelta; new nodes rise from nothing. Interiors already render symbols as machines/doors/silos; now the changed symbol lights while the AI works. Ext v0.0.174

Atlas29c8cc0a

Atlas Live Build (slices 2+5): per-shape animation grammar — each of the 8 change-shapes now gets a distinct accent color + burst emphasis (vertical-slice cyan, demolition red, new-module green, reskin pink...), and layer-flow/vertical-slice pulse a FLOW down the spine data→UI (reuses TraceFx). Banner labels carry a shape glyph

Atlas4e335b08

Atlas Live Build (slice 1): classify a live change into a FEATURE SPINE + shape (changeShape.ts, pure+tested), and light the spine + its wiring while the city dims (scene.setBuild + agent 'build' action). Press B on /atlas for a live demo. Design: docs/ATLAS_LIVE_BUILD.md

Jul 23, 2026
Atlasv0.0.1734d597230

Move the Voice toggle INTO the terminal panel (user's original ask). A speaker button now sits just left of the terminal's minimize (-) control — lightly visible at rest, green with a glow when on, an accent speaker with a mute-X when off. Wired webview->host via voice:toggle/voice:query/voice:state; toggleVoice + onVoiceStateChange event in voice.ts keep the terminal button and the 'Atlas: Toggle Voice' palette command in sync. Dropped the status-bar item that shipped in 172 (it confused placement). Behavior unchanged: first enable consents + installs the Stop hook in ~/.claude/settings.json; native say/SAPI speaks last_assistant_message with code/paths stripped

Atlasv0.0.172bb80266f

Hands-free Voice — Claude Code speaks its replies aloud. New status-bar Voice toggle installs a Claude Code Stop hook (media/voice-hook.mjs, staged to a stable ~/.atlas/voice dir that survives extension updates) speaking last_assistant_message through the OS voice — say (macOS), SAPI/PowerShell (Windows), espeak (Linux) — code blocks/paths/markdown stripped, a new answer interrupts the old via pidfile. Pairs with Claude Code's built-in /voice for input; also speaks replies to typed prompts. Muted by default, gated by a flag file, one-time consent before writing ~/.claude/settings.json. New voice.ts keeps extension.ts a thin caller. Manifest + download page + vsix bumped 0.0.171 to 0.0.172

Jul 17, 2026
Atlasv0.0.17109c7a927

The forum legibility audit's fixes — the map now tells the module's true stories. (1) HANDLER→ACTION calls edges: native.ts's handler loop now resolves action imports exactly like the endpoint loop (resolveActionId + bindingUsed provenance) — the graph had ZERO such edges, so chat's forum-journaling actions (createAiThread/postAiResponse/listRoomThreads) looked dead-unwired; now 5 confirmed edges incl. all three, and the chat→forum AI path is a real road + traceable. (2) API-CLIENT one-hop attribution: frontend.ts follows each page's owned files' imports one hop (relative + @/-alias via clientImportCandidates) into helper modules and attributes their calls to the page; axiosCallPaths + axiosBasePath join axios-instance relative paths (typed generics allowed: client.get<Thread[]>(...)) with the /api prefix hidden in the instance baseURL — forum pages went from 0 pipes to all 7 forum doors (+shared credits badge). (3) Interior wall doors = ENTRY kinds only (DOOR_KINDS in detailLayout) — actions no longer drawn twice (machine + door). (4) detail.ts drops unresolvable relative-import portals (the junk '../..' bucket). Fixture repo grew the socket-handler-imports-action pattern + an axios client + helper page; atlas-graph.json regenerated (calls 114→222); 9 new tests, 795 green; extension tsc clean; atlas.md updated

Atlasv0.0.17037cda12a

TRACE THE REQUEST — Phase 3, the journey layer. Endpoint/page/shared-component cards gain '▶ Trace the request path': pure computeTrace (new lib/atlas/trace.ts) BFS-walks the graph forward along routes-to/calls/reads/writes/triggers into WAVE-ordered steps (cycle-safe, terminal kinds end branches, inactive/localhost-superseded edges skipped, capped 40 steps/6 waves; button only renders when a plan exists). The scene frames the whole journey (bounding-sphere frameDistance, angle preserved) then new traceFx.ts plays it: per-wave pulse spheres traveling uniformly-resampled polylines — the REAL street/pipe routes, retained from build() as routedPaths (conduit both-direction keys + client/state pipe routes; aerial cloud calls fly straight to the cloud) — with drawRange trails in each edge kind's color lifted toward white for bloom, arrival flashes, and a beat between waves. Evidence RAIL (left panel) lists every hop with kind pill + the exact evidence snippet file:line, lit wave-by-wave via onTraceProgress; clicking a hop opens the file in the popup editor (extension). ESC/click-away/enter-building dismisses; replay from the same card. Works on web gallery graphs too (pure viewer feature, no host bridge). 9 new tests (trace.test, traceFx.test resample), 786 green; extension tsc clean; atlas.md 'Trace the request' section

Jul 16, 2026
Atlasv0.0.169e99528d5

ENTER THE BUILDING — the fractal depth layer (Phase 2 v1). A module's selection card gains '⏎ Enter building': the host reads the module's room files and builds a Level-2 detail graph (new dependency-free packages/atlas/src/detail.ts — top-level symbol decls with line/span/flavor/exported off masked source, file→file import edges via resolveRelativeImport, symbol→symbol call edges by import-binding occurrence scan attributed to the enclosing top-level decl region, wall-portal 'exit' nodes for bare + repo-escaping imports; capped 60 files/24 syms/400 calls). The viewer dives through the roof into a SEPARATE THREE.Scene (new detailWorld.ts) laid out by pure detailLayout.ts (spiral grid, hub file central; machines sized by code span, lit when exported; doors = the module's REAL city nodes on the south wall wired to declaring pads; exit portals north): the composer's RenderPass swaps scenes so the city sleeps untouched, picking/hover/click-orbit delegate to the interior, ESC or the breadcrumb ('City ▸ module') steps out to the exact prior camera. select()/focusOn() from inside exit first. New kinds 'symbol'/'exit' in the ontology; extension detailExtract host request; web /atlas passes no bridge (gallery has no source — button hidden, honest). 14 new tests (detail.test, detailLayout.test), 777 green; extension tsc clean; atlas.md 'Enter the building' section

Atlasv0.0.16855934b79

Interiors are WIRED — the 'how it connects within' layer. Opening a structure now draws its internal wiring, not just its contents: module file-rooms get import wires (which file pulls from which, from new compact meta.fileImports [from,to] index pairs the packages pass collects in its existing walk); page component-rooms get the renders TREE plus exterior lines out through the glass to the store tower each room reads and the endpoint door it calls; table relation floors run an amber line out to the foreign silo they reference. New extractor pass componentCalls.ts attributes API calls to the COMPONENT that makes them (file's main component, page files excluded) — a shared power-plant component gains its own client subway pipe to the endpoint it fetches (scene classifies component→endpoint calls as client links), and a homed component's call surfaces as its page-interior wire. Pure interiorWires.ts (moduleImportWires/pageComponentWires/tableRelationWires, capped) + InteriorManager wire drawing (thin unlit cylinders, disposed with the interior). Public atlas.md 'Interiors are wired' section; atlas-graph.json regenerated (10 pkgs with fileImports, 10 component-call edges). ALSO: deploy.sh now stages packages/ tests/ docs/ — their omission had silently orphaned every new extension source+test file since 0.0.163 (this commit finally lands them). 763 tests green; extension tsc clean

Atlasv0.0.167aa34c517

Terminal file-drop robustness (Mac fix attempt). The React onDrop (bubble phase) was likely being swallowed by xterm's hidden helper-textarea / a webview handler and/or the drag data used MIME types I wasn't reading. Now: native WINDOW capture-phase dragenter/over/leave/drop listeners gated to the terminal panel (fire before any interceptor); readDropPaths reads text/uri-list + application/vnd.code.uri-list + resourceurls JSON + dataTransfer.items (kind file) + files, in addition to File.path; a visible drop-target highlight (glow + 'Drop to insert path') shows the dragover is registering (diagnostic + UX). Pure terminalDrop parsing unchanged (10 tests). Extension tsc clean

Atlasv0.0.166bbbba627

Deploy now asks for a scope like Explain It/Quiz. Added a 'repo' QuizScope type; the Deploy launcher shows a scope picker = 'The whole project' (general runbook) + the same change scopes (uncommitted/branch/PR) the others offer. A change scope hands the AI that change's files + diffHint so the runbook is TAILORED to shipping it (migration/env/rebuild); 'repo'/null = general deploy. quizHost.startDeploy(scope,depth) threads it; extension deployStart passes scope; bridge startDeploy(scope,depth); QuizPanel createBody/pickLevel route deploy through the scope flow (repo option + ⌂ icon); ATLAS.md Deploy mode + public atlas.md updated. Extension tsc clean; 748 tests green

Atlasv0.0.1655cf32561

Two fixes. (1) Clicked-building orbit now spins at the SAME slow speed as the idle city spin — unified both on one IDLE_AUTOROTATE_SPEED=0.5 constant in scene.ts (was the building's own 16s/rev; now ~120s/rev like the city), still frame-rate-independent via update(dt). (2) Drag-and-drop a file onto the map's embedded terminal now inserts its PATH (like VS Code's terminal) — new pure, tested terminalDrop.ts (dropToTerminalText/fileUriToPath/quoteForShell: text/uri-list + Electron File.path + text/plain fallback, file:// → fs path incl. Windows drives/UNC, space-quoting, dedupe; 10 tests). terminalPanel adds onDragOver/onDrop on the panel root. Public atlas.md unchanged (behavior tweaks). Extension tsc clean; 748 tests green

Atlasv0.0.1647a4fe1c1

New 🚀 Deploy button beside Explain It + Quiz me — the AI writes a how-to-deploy runbook for the project (NOT from graph.json; it reads the repo's own deploy scripts/Dockerfile/CI/package.json/README). Reuses the Explain deck engine: same split-view slides + right-side code snippets, saved+reopenable in the same library. Generalized the flow with a DeckKind ('explain'|'deploy'): explain.ts DECK_META (icon/title per kind); lessons.ts lessonId/meta take kind (kind-prefixed id so deploy + explain don't collide, +tests); quizHost adds 'deploy' Flow (startDeploy, deployFiles via findFiles, DEPLOY_SPEC, watches deploy.json, saves lesson kind='deploy', broadcasts kind); agentBus ATLAS_MD gains a 'Deploy mode' rubric; extension deployStart handler; webview bridge startDeploy + explainKind; QuizPanel 3rd launcher button + no-scope depth pick + kind-filtered saved library; ExplainPanel header/pill/last-slide keyed on kind (deploy has no quiz hand-off). Public atlas.md updated. Extension tsc clean; 738 tests green

Atlasv0.0.1631ab64e68

Clickable links in the map's embedded terminal (the 'classic console' behavior a custom xterm doesn't inherit). New PURE, unit-tested terminalLinks.ts (findTerminalLinks: URLs, file paths with :line[:col], bare filenames-with-ext, and path-like refs like functions/api-webhooks; qualifies slash-tokens so prose 'and/or'/'TCP/IP' don't link; strips trailing punctuation; 10 tests). terminalPanel registers an xterm link provider (underline+pointer on hover; click posts term:openFile/term:openExternal). Host: openTerminalFile resolves exact path (abs or workspace-relative)→open at line via revealFileAt, directory→reveal, else findFiles by basename→open sole hit, else fuzzy quickOpen (loose refs still land); URLs→vscode.env.openExternal (http/https only). Public atlas.md updated. Extension tsc clean; 738 tests green. Release ritual done

Jul 14, 2026
Atlasv0.0.1628ca6ff96

Changes-view supporting text readability. The file-path lines under each change row + the Explain It/Quiz launch-row sublabels used a hardcoded dark #5f748c — too dark on Voidspace, which sets --atlas-outline:none, so the text had no outline over the near-black void. Added a theme-aware --atlas-ink-faint token (uiSkin.ts: classic #8398ac, sleek/Voidspace #8797aa — both well above the old value and readable per theme) and switched the changes-view supporting text to it (AtlasViewer renderChangeRow file path + fit label; QuizPanel LearnLaunchRows scope detail / level prompt / saved-lesson sublabel via a new inkFaint const). Colors only; 718 tests green, extension tsc clean

Atlasv0.0.161a08393d8

Explain It teaches architecture + shows code. (1) Rubric (ATLAS.md Explain mode + DEPTH_SPEC): lectures must trace the real WIRING — entry point (route/socket/handler) -> action/function -> data layer, and what REGISTERS/HOOKS each piece — not just prose. (2) New slide schema field snippets[] {code,file?,lang?,caption?,kind:code|diff} (validated leniently in explain.ts cleanSnippets — a bad snippet never rejects the deck; capped 8/slide, 6k/code). (3) Split-pane UI: when a slide has snippets, ExplainPanel splits 42/58 — teaching left, a SCROLLABLE stack of code cards right (multiple snippets/slide). New read-only CodeBlock.tsx reuses the highlight.ts tokenizer; diffs render with +/- line coloring (classifyDiffLine) over highlighted code; langFromHint maps lang names/exts. (4) FIX: .atlas/.gitignore now un-ignores lessons/ (was '*'). Public atlas.md updated. Extension tsc clean; 718 tests green. Release: package.json + page.tsx + version json + rebuilt served .vsix

Atlasv0.0.160076382e5

Syntax highlighting in the code popup. Opened files were plain white text in a textarea; now they're colored (comments/strings/keywords/numbers/types/function-calls, VS Code Dark+ palette) for TS/JS/TSX, JSON, CSS/SCSS, Python, shell, YAML, HTML, with a generic c-family fallback. Approach: a NEW dependency-free pure tokenizer highlight.ts (sticky-regex rulesets per language, +8 tests incl. XSS-escape + a char-exact round-trip invariant so the color layer aligns with the editing layer) — no highlight.js/Prism/CDN (keeps the shared bundle lean + dodges the webview CSP). Rendering: new CodeEditor.tsx overlays a transparent-text textarea (visible caret) over a highlighted <pre>, scroll-synced, identical font metrics; EditorPopup uses it via langForPath(path). Editing/saving/lint unchanged. Size-guarded (>80k chars → plain) for typing perf. Extension tsc clean; 712 tests green. Release ritual: package.json + page.tsx EXT_VERSION + version json + rebuilt served .vsix

Atlasv0.0.159fd6dcf8f

Explain It lessons are saved and reopenable. Every delivered lecture is auto-persisted to .atlas/lessons/<id>.json and listed under the 📽 Explain It launcher; clicking one replays it instantly via the normal 'explain' broadcast — NO AI running, nothing regenerated (fixes: previously the AI had to rebuild a lecture every time). Per-repo storage so committing .atlas/lessons/ shares the library with anyone who clones (a new teammate inherits the walkthroughs). Each saved lesson has a × to delete. Arch: new PURE module lessons.ts (id/slug/meta/sort, +10 unit tests) does the shaping; quizHost.ts does fs (saveLesson on deliver, listLessons/openLesson/deleteLesson with LESSON_ID_RE path-traversal guard + validateExplain on load); extension.ts adds explainLessons/explainOpen/explainDelete handlers; webview.tsx bridge (listLessons/openLesson/deleteLesson); QuizPanel LearnLaunchRows shows the library above the create-new flow and fetches it independently of the AI probe (reopen needs no AI). Dedupe by scope+depth via stable filename id. Public atlas.md updated. Extension typechecks clean; 704 tests green

Atlasv0.0.15858108f4e

Explain It + Quiz me are now large centered windows (~92vw x 92vh) that fill most of the screen, for easier reading/engagement. Both were small corner-ish panels (Explain 680px/78vh centered, Quiz 560px/72vh bottom-anchored); now both center at min(1180/1100px,94vw) x min(900/880px,92vh). Content scaled up for legibility: Explain slide title 1.05->1.7rem, bullets 0.86->1.1rem; Quiz question 0.9->1.22rem, options 0.8->1rem, score rank 3.2->5rem, and the score screen is vertically centered. Text sits in a centered ~820-860px reading column so lines stay comfortable in the wide window. Shared btnStyle base bumped (Slack dock buttons override size inline, unaffected). Lecture/exam behavior unchanged (arrow-key paging, camera-tour refs). Release ritual: package.json + page.tsx EXT_VERSION + version json + rebuilt served .vsix. 694 tests green

Atlasv0.0.157ee7ec071

Slow the click-to-focus orbit to 16s/revolution. Previous 4s was FASTER not slower (fewer seconds/lap = quicker spin) — I inverted the user's 'make it slower' intent last round. ORBIT_SECONDS 4->16 = a leisurely turn (~1/4 the speed). Frame-rate-independent update(dt) retained so it circles identically on Mac and Windows, 60Hz and 144Hz (the 'too fast on both' report confirmed that fix landed — the speed was just set too high). Release ritual: package.json + page.tsx EXT_VERSION + version json + rebuilt served .vsix, public atlas.md 4s->16s. 432 atlas tests green

Jul 13, 2026
Atlasv0.0.156f2b88891

Click-to-focus orbit tuning + frame-rate fix. (1) Slowed the click-orbit to one revolution / 4 seconds (was 8). (2) ROOT CAUSE of 'too fast': controls.update() ran with no delta-time, so OrbitControls stepped a fixed angle PER FRAME (~60fps assumption) and spun ~2-2.4x too fast on 120/144Hz displays. Now update(dt) makes autoRotate frame-rate independent — 60/speed seconds is a TRUE period on any refresh rate (three r180 supports update(deltaTime); verified formula 2PI/60*speed*dt). This also brings the idle establishing drift and activity-focus orbit back to their nominal cinematic speeds on high-refresh screens. (3) Click-to-focus frames 25% closer (ZOOM_MARGIN 1.125 vs the neutral 1.5 fit), still floored by minGap so the camera can't enter the object's skin. Release ritual: package.json + page.tsx EXT_VERSION + version json + rebuilt served .vsix, public atlas.md 8s->4s. 694 tests green

Atlasv0.0.15580b5668a

Click-to-focus now keeps circling the clicked object. After a click flies the camera to frame an object, the camera orbits it at one full revolution / 8 seconds (OrbitControls autoRotate, speed 60/8=7.5), so the user sees the object and its neighbours from every side hands-free and can just click the next thing that drifts into view — the map becomes fully navigable by clicking alone, no WASD/orbit fluency needed. New orbitSelected flag set in zoomToNode (resets autoRotatePausedUntil so the spin begins the instant the fly-in lands); cleared on deselect/edge-select/highlightSet/activity-focus and on WASD flight (manual nav takes over). A drag pauses it 6s then it resumes on the still-framed object, matching the focusId orbit. Release ritual: package.json + page.tsx EXT_VERSION + atlas-extension-version.json + rebuilt served .vsix, public atlas.md updated. 694 tests green

Atlasv0.0.1548f3a01fe

Reconcile merged PR #21 (workspace-shadow window-theme fix) with 0.0.153 click-to-focus. PR #21 nailed a deeper root cause of the Mac 'theme not applied' report: workspace-scope workbench.colorCustomizations (a checked-in Peacock .vscode/settings.json coloring title/activity/status bars) out-rank Atlas's global-scope tint PER KEY, so exactly those bars kept old colors while the rest themed — not a Mac-only bug, Mac just hit it. Fix: parkShadowingWorkspaceColors moves colliding workspace keys aside while a theme syncs and restores them verbatim on sync-off; applyWindowTheme now seeds from inspect().globalValue (was leaking workspace keys into user settings); ensureMacTitleBar defers to VS Code's own restart prompt (titleBarStyle needs a full restart, not a reload — my 0.0.152 'Reload Window' button couldn't apply it). The macOS custom-title-bar flip is KEPT (both are needed: custom bar so titleBar.* is honored at all, plus parking so global isn't shadowed). Reviewer additions: extracted the bug-prone parking set-math into pure reconcileParkedColors() + 7 unit tests; bumped to 0.0.154 (both 0.0.153 vsixes collided) and completed the release ritual (page.tsx + version json the PR omitted). 694 tests green

Atlasv0.0.153353e81a0

Click-to-focus camera. Clicking any 3D object now flies the camera to frame it — centered and sized-to-fit via the object's real bounding sphere (a lone component and a skyscraper both fill ~2/3 of the view) — while PRESERVING the current viewing angle (it comes into view from where you are, not a canned angle). Makes the map fully navigable by clicking alone, for users who aren't fluent with the WASD/orbit controls. Reuses the existing camTween Superman-flight rig with a gentler arc; grabbing the mouse or flying with the keys cancels it (onPointerDown already does). Only fires on SELECT (not deselect, not planes, not empty space) and, unlike the Changes-list focusCameraOn, does NOT resume the idle auto-orbit. Frame-to-fit math extracted to pure cameraFraming.frameDistance() + 6 unit tests (687 total green). Public atlas.md updated

Atlasv0.0.153cbff5ceb

Window tint now overrides workspace colorCustomizations; macOS title bar needs a restart, not a reload

Atlasv0.0.15263b2cecf

MacOS window-theme fix. The title bar (and any activity-bar icons relocated into the top strip via compactRail) never followed the Atlas city theme on Mac while Windows/Linux always did. Root cause: macOS defaults window.titleBarStyle to 'native' — the OS draws the bar and VS Code IGNORES every titleBar.* / top-strip colorCustomization while native; Windows/Linux default to the custom bar so the tint applied. Fix: new ensureMacTitleBar() flips window.titleBarStyle to 'custom' (darwin only) while a non-default theme is synced, remembering the prior value so turning syncWindowTheme off / returning to the default theme restores exactly what the user had; a non-blocking 'Reload Window' prompt applies it (titleBarStyle needs a reload). No-op on Windows/Linux. Setting description updated to disclose the behavior. 681 tests green

Atlasv0.0.15117dc498d

Slack overhaul. (1) Dock = one channel of ALL DMs + @s + YOUR replies interleaved (classify emits a 'sent' kind for self-authored DMs; slackAlarm SlackKind+badge exclude 'sent'). (2) Resizable dock — drag the top grip to pull it up (persisted). (3) Soft beep on each new DM/@ (webview, gated by the 🔔). (4) RELIABILITY: multiple editor windows each catch a different subset (Slack fans each event to ONE Socket connection) — windows now POOL received messages to a shared machine-global dir (~/.atlas-slack/pool-*.json) and merge (pure mergeMessages, tested) so every dock shows the union. (5) Setup-once: secrets.onDidChange listener connects other windows when tokens are set anywhere. Panel reads at the 0.83 panel-strong glass. 681 tests green. (Known: 'claude:' phone command still runs in whichever window's connection Slack picked — leader election deferred.)

Atlasv0.0.15020bbe533

Noir theme polish. (1) package-district plates use greyscale (new districtSaturation theme field=0 for noir) instead of the rainbow hash-hue that produced a purple plate. (2) AWS account boundary dashed line + label take theme.containerEdge (grey in noir) instead of a hardcoded blue 0x46618c. (3) building FINISH is now per-theme (new buildingOpacity/buildingRoughness/buildingMetalness fields, applied to module/page/skyscraper/compute materials + applyHighlight on-opacity) — noir set to opaque + low-roughness + metallic for glossy wet-street chrome; other themes keep matte defaults via ??. 676 tests green

Atlasv0.0.1490b24d20f

Noir Terminal theme iteration — restore its 'black-and-white with a single red pulse' identity. The pipe-consolidation work had leaked amber (conduit) + green (statePipe) + amber (component) into the monochrome; now red is the ONLY colour (client 'case-thread' pipes + red S3/page-edge evidence markers), and conduit/state/component are tonal greys (bright/steel/dark) told apart by DEPTH not hue. Deeper black bg, pure-white ink curbs + brighter module edge outlines, lower ambient + stronger key/rim light for edge-lit noir contrast, neutral-grey container tints. 676 tests green

Atlasv0.0.148394d013b

Ship the .vsix + version through the download flow. Prior commit bumped package.json but left public/atlas-architecture-map.vsix at the old 0.0.147 build and EXT_VERSION unbumped, so the served extension lacked the WASD/Space typing fix. Copy the new .vsix into services/web/public and bump EXT_VERSION to 0.0.148 so /atlas serves the fixed extension

Atlasv0.0.148b93827b0

WASD/Space flight controls no longer fire while typing. scene.ts onKeyDown routed every window keydown straight into camera flight — so Space (preventDefault'd as fly-up) got swallowed the instant you typed into the terminal or the file-query box, and W/A/S/D flew the camera mid-keystroke. New typingInField guard skips flight when the key target is an INPUT/TEXTAREA (xterm types into a hidden textarea)/SELECT/contenteditable, so the scene only flies when it truly has focus. Extension repackaged. 676 tests green

Atlasv0.0.1473a0924d9

Map opens as a full editor tab, not the narrow sidebar. The activity-bar view was a WebviewView (sidebar) which forces an un-closeable empty editor beside it (user-reported); it's now a thin launcher whose resolve opens the map via openAtlas. openAtlas reworked: single reusable tab (reveal if open) in ViewColumn.Active (main editor group) instead of ViewColumn.Beside (a split). Session (scene/camera/terminal) unchanged — lives in getSession regardless of surface. 676 tests green

Atlasv0.0.14643a82a61

Clicked-module detail panel less transparent — new --atlas-panel-strong skin var (= the terminal's 0.83 veil, per-theme) applied to the selection card so a selected module reads clearly against the scene, matching the terminal opacity bump

Atlasv0.0.145deb7f19a

Pipes strictly 90 degrees everywhere. Fixed two diagonal stub sources the bundling introduced: bundleRoute emits an orthogonal node->lane bend for ends the wall-approach doesn't reshape (endpoint doors); approachWall inserts a right-angle corner so the anchor(grid crossing)->leadIn join is axis-aligned then perpendicular onto the centre-line, both corners outside the wall. New orthogonality tests (all legs axis-aligned). 676 tests green

Atlasv0.0.1449874b69f

Real pipe consolidation via flow-biased bundling. New pure bundleRoute.ts (+tests): routes utility pipes one at a time on a shared coarse lattice with a per-edge USAGE discount (a used trunk edge costs ~quarter) + turn penalty, so later pipes JOIN existing trunks instead of cutting new lanes — many routes collapse onto a few trunk corridors with short branches (transport network). Longest-first order lays the trunks. Client/state/component all bundle on it; removed the superseded utilityGrid/directIfDetour/pathLength + their tests. 675 tests green

Atlasv0.0.1433b0db4f2

Underground pipes consolidate into a transport network. New pure utilityGrid (routing.ts, +tests) builds one shared orthogonal lattice (bounded to 12 lanes/axis for O(nodes^2) router perf) covering the whole account; client, state, and component pipes all route on THIS grid instead of each going solo-direct, so parallel runs share trunk lanes (overlap -> visually one tube under x-ray normal blending) and branch to nodes. Grid covers everything so no detours; directIfDetour retained as a no-op safety. 679 tests green

Atlasv0.0.142fa8eb8b2

Each shared component runs its OWN pipe. Component pipe network is now per (component,page) usage — gridEdges built as component->page from split.pagesDrawing (was a single synthetic PLANT_ID->page trunk for the whole plant); each pipe rises from that component's plant unit (new plantUnitConnect in pipeConnect, +unit registered in pipeConn) into the page wall. Removed the synthetic PLANT_ID/gridPos + gridMatch/compUsers; power grid now highlights via the standard touches matcher (real cid->page edges), so selecting a component lights its pipes and selecting a page lights its components' pipes. 676 tests green

Atlasv0.0.14126cb9b03

(1) component plant pipes are now a full underground network on their OWN deepest layer (trunkY -16.8, below client -10.4 and state -13.6), matching the pipe grammar (full opacity/radius) instead of thin overhead power lines — three distinct stacked underground networks, each its own theme color; doc updated. (2) terminal veil +50% opacity (0.55->0.83) for readability. 676 tests green

Atlasv0.0.14056eb7197

Direct utility-pipe routes are ORTHOGONAL (single 90 degree bend) not diagonal — directIfDetour now returns an L-path (longer leg first; straight when axis-aligned) instead of a slanted straight line, so pipes that skip a far road stay organized on the grid; tests updated. 676 tests green

Atlasv0.0.13943d1ea67

Underground/overhead utility pipes stop detouring to distant roads. New pure directIfDetour (routing.ts, +tests): if a road-following route is > 1.5x the straight-line distance (+6 slack), the client/state/power-grid pipe goes DIRECT instead of crossing the map to borrow a street and crossing back; data conduits still ride roads by design. Also fixed a strict-mode index type (gridPos: Record<string,Vec3>) the extension tsc caught. 675 tests green

Atlasv0.0.13860f77f08

Pipes are selectable + hoverable. TubeNetwork.pickPath raycasts its x-ray tubes and maps the hit back to the nearest path (edge) via pure pointToSegmentDistance (tested); TubeNetwork.setHover draws a light bright overlay (pipe hover, no beads). Scene: pickPipe across all 4 networks (closest), selectPipe (real edge -> selectEdge, power grid -> select the page node); pointer precedence real-node > pipe > ground/district plane so underground pipes over the ground stay clickable; throttled pipe-hover raycast with pointer cursor. 670 tests green

Atlasv0.0.13796b0693b

Default flight speed = the old Shift-boost speed (90->300); Shift now boosts faster still (300->600); FOV surge renormalized to the new max

Atlasv0.0.136255dba66

Camera/navigation overhaul — (1) starts zoomed in with the orbit target ~4 units ahead so mouse-drag looks around instead of orbiting the whole map; (2) removed the floor lock (maxPolarAngle=PI + dropped the WASD y-floor guard) so you can fly below the world; (3) Space = fly straight up (preventDefault so it never scrolls); (4) doubled cruise speed (45/150 -> 90/300) with a ~1s accel ramp (tau 0.45); (5) faster zoom (controls.zoomSpeed=3, minDistance 0.4); (6) removed the flight wind sound (scene wind dispatch + AtlasViewer wind-audio effect gone); (7) idle auto-orbit: after 30s with nothing selected and no camera input, fly out to a wide establishing shot and slowly orbit the whole scene, cancelled by any interaction. 666 tests green

Atlasv0.0.13596fa1e06

(1) state pipes split out — page<->store reads/writes now render as their own TubeNetwork in a distinct per-theme statePipe color (added to all 10 themes + resolveTheme fallback) at trunkY -13.6, one level below the client API pipes (-10.4), so the two underground paths never blur; wired into select/spotlight/edge highlight + tick + dispose. (2) celebration toasts themed to the active palette (pushed=accent, commit=theme mint) + restyled as skin BracketPanels (glass/brackets/condensed font) instead of fixed green/blue fat text. (3) celebration chime audible again — AudioContext now primed on first pointer/key gesture so background git-triggered chimes aren't blocked by the autoplay policy. 666 tests green

Atlasv0.0.134b5a70d74

Fix selection not de-highlighting the previous plane. Root cause: host ground slab + container district floors are selectable nodeVisuals, but applyHighlight SKIPS host/container ('context platforms stay lit'), so the animate loop's cyan body-emissive crank on them was never reset — clicking another object left the previous plane glowing. Fix: new pure SelectionGlow helper owns the selected body's emissive and restores the previous material on every selection change (cleared in setSelectionVisual, driven in animate, forgotten on rebuild). Unit-tested incl. the exact host/container case. 666 tests green

Atlasv0.0.133a1d3493b

Pipes now TOUCH the object they serve. Root cause: pipes terminated at floor height, but a water tower's tank body sits high on legs (y 4.2-6.8) so a floor pipe connected to nothing; houses connected at the base edge. Fix: new shared pipeConnect module is the single source of truth for WHERE a pipe meets each object (wall radius + body height + overlap), derived from the real mesh geometry — water tower pipe rises to the TANK, house/skyscraper pipes meet the wall part-way up, silo pipes meet the flank, all overlapping slightly into the surface. Rewrote pipe tests to assert the endpoint lands ON the object's real 3D body (pointTouchesBody) — the check the old tests lacked; incl. a regression guard that a floor point does NOT touch the tank. 660 tests green

Atlasv0.0.1323c50a34a

Rewrote pipe terminal-approach geometry — replaced the radial trimPathTail (cut the street path wherever it crossed the wall circle → off-center / short) with approachWall, which enters perpendicular and centered on a face/radius and terminates exactly at the wall for EVERY pipe type (client subways, data conduits, component power grid, datastore silos); unified all four routings onto one pure function; EXTENSIVE new pipe test suite (tubePaths approachWall + full routeEdges→approachWall→verticalProfile pipeline in pipes.test.ts, incl. the building-hugging-its-road bug + all approach directions) — 653 tests green

Atlasv0.0.1318242ef86

Client pipes + component power lines terminate AT the page wall and water-tower base, not through the object's center — generalized the datastore silo-wall trim (new pure trimPathTail in tubePaths.ts with a gap param + 4 unit tests) to pages/stores via a clientStopRadius map, and pipe/grid endY drops to floor level (0.6) at the wall so the pipe leads TO the house/tower instead of rising up inside it; datastore trim now delegates to the shared helper

Atlasv0.0.1306459a482

Selection glow-up — clicked item takes a single signature ice-cyan glow (SELECT_COLOR, same on every theme) with a heavy pulsing+breathing halo hugging the mesh and a heavy signature emissive on its body; connected pipes/conduits/power-grid render in the signature color (thicker) with FLOWING energy beads traveling source→dest (TubeNetwork.tick, world-paced, positionOnPath pure helper); tube highlight recolored white→signature; atlas.md gains a Selecting section

Atlasv0.0.129d68b112e

Endpoint doors theme-tinted — new per-theme door color on all 10 themes (a lit-doorway hue in each palette), replacing the fixed HTTP-method door colors; method still shown on the selection card; legend + ontology updated; default preserves old light-blue for pre-field custom themes

Atlasv0.0.12865c9a4d5

Component plants + state-store water towers now theme-tinted (new per-theme store/component colors on all 10 themes, defaults preserve old custom saves); component→page power lines rebuilt as a real routed overhead grid (trunk out of the plant branching down each drawing page along the street centerlines, x-ray tube grammar) replacing the straight catenary wires; selection/spotlight light the grid via plant-unit→page adjacency; default terminal width +50% (320→480, min clamp too)

Atlasv0.0.12794dc1313

Terminal hide/kill controls moved to the top-right corner (inset beside the resize grip); extension typecheck hardened — tsconfig pins types:[node], @types/vscode + @types/js-yaml declared as root devDeps (were phantom installs pruned by yesterday's reinstall)

Jul 12, 2026
Atlasv0.0.1269aa72f37

3D label v2 — 2x supersampled canvas textures (sprite scale from logical dims so world size unchanged, texture 2x sharper), LinearMipmapLinearFilter + anisotropy 4 (kills the pull-back shimmer the old Linear-only minFilter caused), condensed LABEL_FONT_STACK at weight 400 with 1.2px letterspacing on EVERY theme (labels + panels = one typography), theme-tinted rounded glass chip (bg derived from theme.background at 45% + 0.78 alpha, whisper stroke) replaces the flat dark bar; ctx.letterSpacing/roundRect guarded for older canvases

Atlasv0.0.12503cde146

Terminal window controls — ghost − (hide; display:none, pty lives on) + × (kill: host term:kill disposes the session + clears saved scrollback; xterm reset; reopen spawns fresh via term:start) at the terminal's top-left on hover; new command-prompt SVG icon beside the folder toggle in the Changes panel Row 0 toggles visibility; two-way sync over 'atlas-terminal' window event, persisted in atlas.termOpen

Atlasv0.0.1248dba2cb7

Paper Blueprint v2 — the light pastel version (fought the dark UI system, washed out) becomes a TRUE CYANOTYPE: bg 0x0d2f56 blueprint blue, WHITE drafting linework (curbs/edges/frames/labels eaf4ff), redline conduits 0xff8a5c, white pipes, uniform container fills differentiated by white frames, flat drafting light (ambient 0.85/sun 0.45), white chalk clouds. atlas.compactRail setting: opt-in half-size rail icons via workbench.activityBar.location=top (in-place icon sizing not exposed to extensions); OFF only removes OUR override (inspect() guard — never clobbers a user's own bottom/hidden)

Atlasv0.0.123e3fa785b

Window tint goes FULL WORKBENCH — editor.background, tab strip (active/inactive + group headers), breadcrumbs, sideBar + auxiliaryBar (mac right part), panel/terminal background all follow the active Atlas theme (blend() helper derives darker header shades + whisper accent borders); activity-rail icons GREYED (foreground muted 45% toward bg, inactive 68% — accent reserved for the active border + badges); managed-keys cleanup mechanism unchanged so opting out or going default restores everything; documented mac caveat: native title bar needs window.titleBarStyle custom

Atlasv0.0.12279051f5c

Voidspace v2 — the black-and-white scene gets a palette: quietTubes OFF (pipes visible again), client subways electric cyan 0x35c8ff (radius 0.11, opacity 0.6), data conduits amber 0xf5b04e, component windows warm 0xffd98a (lit city at night), cache/bucket datastores subtly tinted, bloom 0.5/0.65 so neon breathes, rim light up; UI glass pure-black→cool near-black rgba(8,14,24,0.55/0.95) + faint neon hairline borders return at 0.14-0.2 (black-on-black erased panel shapes; well under the old loud 0.30), terminal veil matches

Atlasv0.0.121f5cbb258

Terminal veil universal — new --atlas-term-veil skin var (sleek black glass / classic = theme background at 0.55) painted by the panel ROOT on every theme so the background reaches the brackets and follows resizes; xterm canvas now ALWAYS transparent (paletteFor simplified, gpu param dropped). FileExplorer final color pass: breadcrumb slashes + loading/empty states → ink-dim var, rowpad var, changed-row glow drops its hardcoded black outline (root outline var governs), orphaned outline const removed

Atlasv0.0.120bfe632bf

STRUCTURE IS UNIVERSAL, COLOR IS PER-THEME — uiSkin refactored to a shared STRUCTURE base (condensed font stack, weight 300, rowpad 2px, lh 1.25, icon 0.78em, bracket 11px offset -2px, radius 0, term-fs 11.5 force + narrow mono) merged into both skins; .atlas-title understated titles now on every theme; classic themes keep their atmosphere (transparent panels, TEXT_OUTLINE readability, accent-colored ticks now at 0.9 opacity with tightened glow); sleek keeps black glass + neon blue + no borders

Atlasv0.0.119d51e61e7

React Native parser — packages/atlas/src/reactNative.ts maps mobile apps into the client city: Expo Router file-based screens (app/(tabs)/home.tsx → /home; _layout/+specials excluded) + React Navigation code-registered screens (<X.Screen name component={Y}> resolved via imports to the real file, navigator family in meta), page ids namespaced page:mobile:* (no web collisions), meta.platform=mobile; on-device storage (AsyncStorage/SecureStore/MMKV/expo-sqlite/WatermelonDB/Realm) = client water towers (store kind, reads pipes — NOT backend warehouses), device capabilities (camera/GPS/push/maps/biometrics/BLE/sensors) = externals above their screens; API calls reuse frontend.ts gate matching; monorepo-safe RN root detection; client district sign platform-aware (Next.js / React Native / web + mobile); ontology + docs updated; 11 new tests incl. temp-fixture integration (633 total)

Atlasv0.0.1182d85f6a9

InjectAi submit fix — the prompt entered the terminal but never sent (Slack remote + Quiz + Explain). Cause: 'text\r' written as one chunk; Claude Code's TUI is mid-render and swallows the trailing \r. Fix: write the text, then the Enter as a SEPARATE write 250ms later (atlas pty term.write + integrated terminal sendText(text,false) then sendText('\r',false))

Atlasv0.0.117747f29dd

Mac terminal font fix — sleek themes set --atlas-term-force=1 so the theme size (11.5) WINS over the user's terminal.integrated.fontSize (which was overriding via the userFs|| fallback → 'unchanged on Mac'); term:ready now funnels font through applySkin (single source of truth) instead of setting size directly; classic themes still respect the user size. ATLAS.md: Slack is now documented as a tool the AI has — read slack-inbox.json + reply to the phone via slack-reply.txt (incl. proactive finish-pings)

Atlasv0.0.116d4827b99

Rewrite Slack setup instructions — the old ones were wrong/incomplete (called it read-only, didn't stop users hand-building a scope-starved app, manifest lacked im:write). Now: create FROM THE MANIFEST not from scratch (explicit), correct xapp-/xoxp- order with anti-swap hints, a missing_scope fix-it note (re-apply manifest via App Manifest tab + reinstall + re-copy token), and calls out im:history as the scope that actually delivers messages

Atlasv0.0.1159674ef01

Slack reply path needs only chat:write — client caches the self-DM channel from any self-authored im event and sendToSelf uses it directly (skips conversations.open, which needed im:write); manifest gains im:write as the first-use fallback + updated description. Diagnosis for the user: their hand-built app has only chat:write+users:read, missing im:history (why self-DMs never arrived) — re-apply the full manifest

Atlasv0.0.114db365277

Slack remote-control diagnostics — 'Send test to my self-DM' button (isolates the chat:write reply path) + live 'last Slack event' readout (proves whether self-DM events arrive at all) in the setup panel; sendToSelf returns the Slack error; loud editor notifications on every onSelfCommand branch (remote off / running / no-Claude / send-failed-why incl missing_scope); onEventDebug tap reports every inbound message event's channel_type + fromSelf before any drop

Atlasv0.0.113bbe6f448

Slack token validation hardened — testTokens prefix-checks xapp-/xoxp- and tests the app token via apps.connections.open (not auth.test, which is type-agnostic and let a swapped app field pass then fail at socket open with not_allowed_token_type); clear per-field error messages. Voidspace panels: black glass instead of blue (--atlas-panel/panel-solid/header → rgba(0,0,0,…)), 25% less transparent (0.22→0.28)

Atlasv0.0.112347751df

Slack remote control (opt-in phone->Claude->phone) — self-DM ONLY trigger (pure parseSelfCommand: channel_type im + author===self + claude: prefix, everyone else's messages can never command), gated on atlas.slack.remoteControl (default off) + wizard toggle; command injected via the shared injectAi (no AI = texts back 'no Claude running'); Claude writes .atlas/slack-reply.txt, host watches + sends to self-DM (chat:write scope added to manifest, one reinstall); ATLAS.md phone-task section; loop stays 100% inside the user's own DM-to-self, nothing authored to third parties

Atlasv0.0.111a5ddec5b

Client pages lose roofs + driveways on ALL themes (user rule — they complicated the suburb): house branch is a clean flat-topped box, addDriveway removed from both house and tower branches, method deleted with a note that yard-prop encoding returns only via a deliberate design pass

Atlasv0.0.110e02d6f36

Atlas 0.0.110 fix: jumpTo missing from FileExplorer destructuring (EC2 next build caught what local tsc missed)

Atlasv0.0.1108b8f5d70

Search picks route by truth-test (listDir succeeds = folder → explorer jumpTo prop opens rooted there; else popup editor) with camera flight either way; terminal brackets translateY(-2px) to sit on the glass line and match the explorer frame height; search input muted grey bg + 0.66rem; selection card = header band (kind as atlas-title + close) with name at theme-standard 0.8rem/600, file 0.64 mono, loc 0.66, all 4 section headings atlas-title'd; global auto-hide scrollbars (transparent until container hover, slim theme-tinted thumb, no track) in uiSkinCss both skins

Atlasv0.0.109b2b5f727

Terminal frame restructure — brackets live OUTSIDE the clipping container (overflow:hidden was eating the bottom pair at the -2px offset) and an inner glass div owns clipping so the panel bg aligns exactly with the bracket line; snap gaps 1px→3px everywhere (explorer edge, selection-card/dock seam); standalone 📁 button removed — the Changes panel (now always present on the extension surface) gains a top row with a white SVG folder toggle + project-file search over the graph's file corpus using native datalist autosuggest (pick = popup editor + camera flight)

Atlasv0.0.1081a102e12

Terminal glass full-bleed (root div wears --atlas-panel to the brackets; webgl canvas transparent when a skin glass exists — no stacking; classic keeps canvas veil); FONT ROOT CAUSE — workspace config get() returns schema defaults so terminal.integrated.fontSize=14 always masqueraded as a user choice, blocking skin sizing forever: host now sends only inspect()-explicit values; sleek adds --atlas-term-font (narrow mono stack) applied when no explicit user font; EditorPopup gets the full skin treatment (panel-solid glass, brackets, header band, atlas-title, skin font/weight for chrome — code area stays mono)

Atlasv0.0.107728efe95

Terminal skin race fixed — xterm snapshots skin vars imperatively so mount could miss the injection; AtlasViewer now dispatches 'atlas-skin' after injecting + terminal re-applies on it (plus a deferred kick for the reverse race) → glass veil + --atlas-term-fs actually land. Voidspace borders REMOVED via skin vars (border-line/solid/hover/btn-border transparent; old values kept in comment) — brackets alone frame panels. Selection card width = SLACK_DOCK_W and snaps 1px above the dock (dock 160→200 tall); hamburger lives INSIDE its strip (controls vanish, ☰ + glass + brackets remain)

Atlasv0.0.106255d459d

Terminal glass on non-GPU renderers (root div wears --atlas-panel when webgl absent — the PowerShell missing-blue fix) + skin-driven terminal font size (--atlas-term-fs 11.5 sleek, user terminal.integrated.fontSize wins); voidspace glass 0.44→0.22; LearnLaunchRows = atlas-title style, Quiz→Quiz me; Changes panel + terminal snap 1px against the explorer (leftPad explorerW+1, closed-left 47); top-right controls unified into one BracketPanel menu cluster (slack/theme/improve/sound) collapsible to ☰ hamburger, persisted

Atlasv0.0.105c88b966b

Voidspace evenness pass — brackets offset onto the border line (--atlas-bracket-off); FileExplorer swaps its private bracket copy for the shared cornerBrackets + border-line var; terminal panel fully skinned (bracket size/color/glow/offset vars, hairline border, GPU veil reads --atlas-panel so it wears the same blue glass, xterm fontWeight from --atlas-weight); Changes|Tests tabs get the .atlas-title treatment; global button/select/input font-family inherit (UA stylesheet was the font mismatch); 3D city labels use the condensed face via labels.setLabelStyle when sleekUi

Atlasv0.0.1048c2950e1

Voidspace EVE polish — sharp corners (radius var 0), brackets half-size neon-blue #5ad1ff at full opacity with blue glow + borders in the exact bracket hue, darker header bands rgba(5,12,24,0.78), condensed font applied to every chrome element (buttons/select/pills) at weight 300, .atlas-title skin rule makes panel titles tiny/unbold/uppercase, roads quieted (near-void bed, white curb hairlines), datastores = ghosted bodies + white hoops/rims (scene sleekUi branch incl. selection-dim pass)

Atlasv0.0.103a006c6ed

EVE UI skin for Voidspace (theme.sleekUi → uiSkin.ts CSS vars injected per theme): blue-glass panels + darker header bands, hairline light-blue rest borders, condensed font stack, tighter rowpad/line-height, icon size decoupled from line height, grey ink with white for emphasis, subtle blue-glow brackets; classic themes keep the frameless outline look untouched. Changes|Tests become TABS with full-panel lists + collapse chevron

Atlasv0.0.10202c9c755

Terminal overhaul for Mac feel — WebGL renderer (VS Code parity; DOM+outline stays the fallback, GPU mode wears a faint theme-tinted veil since canvas glyphs can't take the CSS outline); inherits the user's terminal.integrated font settings so powerline/nerd prompts render properly (the 'solid background path' fix); macOS spawns a LOGIN shell (-l) so PATH matches VS Code; scrollback persists across Reload Window (throttled workspaceState saves, pure sanitizeForRestore strips TUI alt-screen frames, 5 tests) with a restored-session divider

Atlasv0.0.1014381b270

Voidspace theme — deep-space reading-first look (waterOpacity 0 floats the city, white edge lines on dark hulls, thin quiet tubes hidden until selection via theme.quietTubes, externals as deterministic starship fleet via theme.ships + props.buildShip, minimal bloom, near-white UI accent); Changes panel splits test files into their own collapsed TESTS section (pure testFiles.ts isTestFile/splitTests, 5 tests)

Atlasv0.0.99b1f4a66f

Slack integration — read-only Socket Mode connector (user's own app via manifest, tokens in SecretStorage, ws bundled, direct client-to-Slack, no server); 💬 button with urgent/unseen badges left of theme picker; bottom-right bracket dock feed; forced acknowledgment of DMs/@mentions (pure slackAlarm escalation: 10min popup, 2min countdown, 60s siren + red strobe every 3min until OK; atlas.slack.alarm opt-out); .atlas/slack-inbox.json for the AI; pure classify/alarm modules with 12 tests. Changes panel flush with top edge

Atlasv0.0.98871920f3

ONE design language — shared BracketPanel (glowing corner brackets, no glass, outlined text, hover border) now frames the Changes list, node detail sidebar, connection card; pills/buttons/captions/banner go transparent; ONLY close-reading surfaces keep the dark background (diff/code, exam, lecture) and the lecture deck is vertically centered

Atlasv0.0.9790093b80

Explain It | Quiz side by side (Learn dropped from the name); exam + lecture panels + state pills restyled to the terminal design language — transparent background, 4-way outlined text, glowing corner brackets, hover border

Atlasv0.0.9694875b60

Terminal lag ROOT CAUSE fixed — .atlas writes re-triggered the workspace watcher causing a perpetual full-extraction loop (WATCH_SKIP guard for .atlas/node_modules/dist/etc); ALL background scanning removed — AI presence + scope enumeration now probe only on click; git milestone polls halved. NEW: Explain It — AI-authored slide-deck lectures played over the map (Quick/Standard/In Depth, per-slide camera flights, Esc/arrow keys) + 3-tier quiz ladder (Apprentice/Engineer/Architect) with S rank at Tier III 93%+, quality rubric mandates structure-over-syntax questions

Atlasv0.0.955da54736

Fix terminal typing lag — AI-presence scan is two-phase on Windows (pid/ppid/name skeleton, command lines only for the few pids under terminal shells), overlap-proof self-pacing loop with slow-machine backoff, adaptive cadence (12s absent / 30s present) + instant re-scan on terminal open/close; wmic transient failures no longer demote to the CIM path

Atlasv0.0.94fa8e5dcc

Learn & Quiz — AI-presence-gated exam flow (process-tree detection under terminals, never auto-starts), quiz protocol over the .atlas bus (request/quiz/status/result + staff-engineer debrief), themed one-question-at-a-time exam panel with per-question camera flights + 82% fireworks, walk command teaches file locations click-by-click in the explorer; pure quiz/procScan/gitParse/walk modules with 25 new tests

Atlasv0.0.93c4243a96

Superman flight — WASD with momentum (accel tau 0.9s, coast-stop 0.16s tau), Shift boost 3x, true look-direction flight (dive on pitch-down, floor guard), FOV speed surge; focus jumps are arced flights (distance-scaled 0.8-2.2s, late-biased easing, swoop landing); synthesized wind follows speed via atlas-wind events, mute-aware

← NewerPage 1 of 4Older →

Generated 2026-08-26 from git across all CommsLink repos · page 1/4, showing 1100 of 328 Atlas ships · complete record: /changelog.txt · /changelog.json.