Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Jun 13:04
· 1103 commits to main since this release

What's Changed

🚀 Features

  • docs/183 Phase 2: daemon-overlay mount subsystem by @nicolasalt in #1136
  • docs/183 Phase 3: rolling-base publish CAS (overlay-base.ts) by @nicolasalt in #1139
  • Fix Codex completed-only tool call rendering by @nicolasalt in #1141
  • docs/183 Phase 3: stamped install-done marker by @nicolasalt in #1142
  • docs/183 Phase 3: worker-exported merged-workspace snapshot (.git excluded) by @nicolasalt in #1149
  • Show a navigation card when the agent views an issue by @nicolasalt in #1163
  • shipit issue: --label and --priority on create/edit (SHI-92) by @nicolasalt in #1167
  • Present from a file: file-based present tool (tracked + ephemeral) by @nicolasalt in #1165
  • Default new installs to Opus, not Sonnet, for Claude by @nicolasalt in #1169
  • Redesign the preview Services drawer (card-based UI + cheap functional wins) by @nicolasalt in #1170
  • Overlay dep store: daemon-overlay + publish-CAS foundation (flag-gated, default off) by @nicolasalt in #1155
  • Tell agents to put any drafted prompt in a code block by @nicolasalt in #1177
  • feat(183): Phase 1 — parse + validate agent.dep-dirs config by @nicolasalt in #1178
  • feat(183): Phase 2 — per-dep-dir scope key, buildOverlaySpecs, GC live-set by @nicolasalt in #1179
  • Inline single-issue detail view (docs/189) by @nicolasalt in #1182
  • feat(183): Phase 3a — N-spec container plumbing for nested dep-dir overlays by @nicolasalt in #1183
  • Issue-write provenance card redesign — content-led, attribution dropped (docs/189) by @nicolasalt in #1188
  • feat(183): Phase 3b — overlay spec populator + contextual validation + flag-gated wiring by @nicolasalt in #1189
  • Show presented file path (and name) in the Present tab header by @nicolasalt in #1185
  • feat(183): Phase 4a — per-dep-dir snapshot producer + transport by @nicolasalt in #1196
  • Separate pinned from unpinned sessions in the sidebar by @nicolasalt in #1198
  • Inline issue comments: read + post on the issue detail page (docs/189) by @nicolasalt in #1199
  • feat(183): Phase 4b — per-dep-dir publish-after-install orchestration by @nicolasalt in #1200
  • feat(183): Phase 5 — compose services at dep-dir overlay subpaths by @nicolasalt in #1203
  • Inline issue status & priority editing (docs/191) by @nicolasalt in #1204
  • feat(183): Phase 7 — overlay enable-path wiring (warm-pool standby) by @nicolasalt in #1209
  • perf(chat): stop re-parsing every message's markdown on each streamed token by @nicolasalt in #1219
  • Move New session button below the pinned sessions section by @nicolasalt in #1220
  • feat(logs): unified durable, searchable container logs (agent + services) by @nicolasalt in #1228
  • Cap services list width in the preview drawer by @nicolasalt in #1237
  • Support Claude Fable model in ShipIt by @nicolasalt in #1243
  • Surface an approve/deny prompt for sensitive-file edits (SHI-112) by @nicolasalt in #1244
  • Open a doc's linked issue inline instead of linking out by @nicolasalt in #1249
  • Issue lifecycle workflow: auto-started on seed, auto-completed on merge (docs/194) by @nicolasalt in #1250
  • Sub-agent spawning primitive (docs/144) by @nicolasalt in #1251
  • Remove Escape-key agent cancellation by @nicolasalt in #1254
  • Beautify the Issues list and show labels under each title by @nicolasalt in #1226
  • Plumb real label colors through the Issues tab + add available-labels endpoint (foundation) by @nicolasalt in #1263
  • Standardize button heights: text buttons → 32px, icon buttons → 28px by @nicolasalt in #1265
  • Async notify-on-merge watch for spawned child sessions by @nicolasalt in #1269
  • Issue Tracker: filter by label + on-page label editor by @nicolasalt in #1273
  • feat(183): wire SESSION_WORKER_IMAGE_ID for overlay scope rotation by @nicolasalt in #1275
  • Idle eviction: 10-min grace period + honest 'shut down' wording + agent docs by @nicolasalt in #1274
  • feat(197): content-keyed install skip (depsHash in the install marker) by @nicolasalt in #1278
  • feat(197): shared pnpm store volume; skip overlay for pnpm repos by @nicolasalt in #1279
  • feat(155): per-repo Claude memory sharing by @nicolasalt in #1282
  • Add Codex skill marketplace install support by @nicolasalt in #1283
  • Auto-link bare repo/doc paths in markdown (issue bodies, chat, PRs) by @nicolasalt in #1284
  • Anchor inline issue detail to a specific comment (SHI-103) by @nicolasalt in #1293
  • Default-deny the orchestrator API for session containers (SHI-129) by @nicolasalt in #1303
  • Explicit session-agent permissions policy (SHI-36) by @nicolasalt in #1297
  • Outbound egress allowlist for session containers (Gap 1, SHI-90) by @nicolasalt in #1301
  • Non-root session worker runtime (SHI-31) by @nicolasalt in #1302
  • Egress enforcement — Tier A: default-deny firewall via netns sidecar (SHI-90) by @nicolasalt in #1310
  • Non-root session worker runtime (SHI-31) by @nicolasalt in #1312
  • Egress enforcement — Tier B: controlled DNS resolver (SHI-90) by @nicolasalt in #1313
  • Non-root session worker runtime (SHI-31) by @nicolasalt in #1314
  • Remove global auth overlay — point unauthenticated agents to Settings by @nicolasalt in #1319
  • Overlay dep store: default-on with OVERLAY_DEP_STORE=0 kill switch (SHI-127) by @nicolasalt in #1321
  • Linkify file paths inside inline-code spans by @nicolasalt in #1328
  • Re-arm a merged session for a new PR after rebase (docs/202) by @nicolasalt in #1329
  • Open Linear/GitHub issue links inline instead of linking out by @nicolasalt in #1330
  • shipit issue view --comments: brokered, read-only issue comment thread (SHI-137) by @nicolasalt in #1331
  • Teach the agent to delegate to Task subagents by pointer, not pasted diffs by @nicolasalt in #1335
  • gh pr edit: support --add-label / --remove-label for relabeling a PR by @nicolasalt in #1343
  • Document cross-agent consultation (shipit agent run) in the agent system prompt by @nicolasalt in #1340
  • Tune voice cleanup prompt for coding terminology by @nicolasalt in #1341
  • PR-scoped changed-docs strip on the PR card (docs/205) by @nicolasalt in #1344
  • Egress Tier C: transparent SNI proxy + allow-once card for hostname-level HTTPS policy (SHI-90) by @nicolasalt in #1334
  • File tree: start fully collapsed by @nicolasalt in #1356
  • Egress Tier C Phase 2: SNI-scoped identity validation for multi-tenant hosts by @nicolasalt in #1361
  • Egress: durable allowlist store + containment Settings UI (SHI-90) by @nicolasalt in #1363
  • Voice notes: question headlines voice the actual choice, not 'options are on screen' by @nicolasalt in #1370
  • PR-card issue chips: surface related issues inline (docs/206) by @nicolasalt in #1374
  • Android app: allow cleartext HTTP for Tailscale (*.ts.net) hosts by @nicolasalt in #1376
  • Design: nested issues + two-level sorting (prototype) by @nicolasalt in #1373
  • Inline issue badges for bare Linear keys in markdown by @nicolasalt in #1379
  • Persist Present-tab artifacts across reload, session switch, and container restart by @nicolasalt in #1384
  • Single-service focus card + left-grouped controls for the services drawer by @nicolasalt in #1368
  • Action checklist cards (propose_actions tool) — SHI-153 by @nicolasalt in #1395
  • Create a repository in an organization by @nicolasalt in #1409
  • Untrusted-input lens: provenance envelope for uploads / repo files / web / MCP (SHI-98) by @nicolasalt in #1299
  • Prefer short-lived, repo-scoped GitHub App tokens in the git credential broker (SHI-79) by @nicolasalt in #1300
  • Android: remove the top toolbar (full-bleed WebView) by @nicolasalt in #1413
  • Add an empty repository template (blank repo + README) by @nicolasalt in #1414
  • Harden archived-session invariant: never receive updates from children or anything else by @nicolasalt in #1454
  • Raise sub-agent (shipit agent run) wall-clock cap from 5 to 30 minutes by @nicolasalt in #1456
  • Spawn: validate + derive agent/model, and surface them in session view by @nicolasalt in #1458
  • Sandbox sessions: foundation (kind + capabilities, creation path, sidebar/tab UI) by @nicolasalt in #1459
  • Sandbox Phase 2 — capability runtime wiring (SHI-161) by @nicolasalt in #1462
  • Sandbox sessions: repo-aware PR brokering + credential-broker capability gate by @nicolasalt in #1463
  • Sandbox sessions (SHI-161): repo-less, capability-gated workspaces by @nicolasalt in #1464
  • Android: build signed AAB for Play Store + auto-increment versionCode by @nicolasalt in #1460
  • Action checklist: Add comment… seeds only selected actions by @nicolasalt in #1473
  • PR card: surface changed/added images in the changed-docs strip by @nicolasalt in #1475
  • Android: target API 35 (Android 15) + edge-to-edge inset handling by @nicolasalt in #1477
  • PR card: expand the changed-docs strip by default on desktop by @nicolasalt in #1482
  • Secret-scan guard in post-turn auto-commit by @nicolasalt in #1479
  • Egress containment ON by default (fail-closed) + install preflight + policy-vs-enforcement UI by @nicolasalt in #1485

🐛 Fixes

  • Fix stale model label on session switch by @nicolasalt in #1132
  • Manual 'Fix CI' is a plain agent turn — no auto-fix status line by @nicolasalt in #1135
  • Fix: voice-note card vanished mid-turn when the agent kept replying by @nicolasalt in #1137
  • Fix: quick-capture leaves URL stuck on /{slug}/new when it reuses that page's session by @nicolasalt in #1140
  • Fix closed-PR icon weight to match Phosphor siblings by @nicolasalt in #1147
  • Fix mobile right-panel tab collapse (lazy-mount ref) + scroll fallback by @nicolasalt in #1150
  • Expose agent CLI binaries on PATH by @nicolasalt in #1152
  • Show Codex web fetch tool calls by @nicolasalt in #1153
  • Fix Codex new-file diff stats by @nicolasalt in #1154
  • Fix autonomous plan mode state sync by @nicolasalt in #1168
  • Persist all at-rest transcript cards & notices (survive reload/switch) by @nicolasalt in #1164
  • Fix: clear transient compacting spinner on session switch by @nicolasalt in #1171
  • Strip Linear title slug from agent-returned issue URLs by @nicolasalt in #1172
  • Fix rewind handle hugging long user bubbles by @nicolasalt in #1176
  • Fix sidebar 'needs attention' staleness on turn send and completion by @nicolasalt in #1186
  • Shrink 'Start session from this issue' button by @nicolasalt in #1197
  • Align issue-row caret with title baseline by @nicolasalt in #1201
  • Persist transcript cards on emit, not at the next boundary (fixes card flicker) by @nicolasalt in #1202
  • Fix: gated compose service stuck in error after a post-gate-open crash by @nicolasalt in #1180
  • Don't clear GitHub token implicitly on transient failures (outage-safe) by @nicolasalt in #1218
  • fix(ServiceList): remove grey sliver left of the service status rail by @nicolasalt in #1224
  • Fix .claude/skills/** edit-permission glob (relative anchor never matched the absolute path) by @nicolasalt in #1223
  • Show dotfiles in the file tree by default (invert allow-list → deny-list) by @nicolasalt in #1229
  • fix(voice): don't stop dictation when preview iframe steals focus by @nicolasalt in #1238
  • fix(140): re-queue a live steer lost in the turn-end gap by @nicolasalt in #1240
  • feat(183): overlay dep store — live hardening on real Docker (6 fixes + base-hit pre-stamp) by @nicolasalt in #1241
  • Align local main with origin/main on session create (docs/194) by @nicolasalt in #1248
  • Fix model selector stale 'needs auth' after OAuth token recovery by @nicolasalt in #1252
  • Remove the Present pane's dismiss button so artifacts can't vanish by @nicolasalt in #1247
  • fix(compose): keep the post-gate recovery window open until the service is stably running by @nicolasalt in #1253
  • Fix Claude usage badge showing 100% at low session usage by @nicolasalt in #1255
  • Don't gate AskUserQuestion/ExitPlanMode behind the permission prompt by @nicolasalt in #1260
  • Hide duplicate-status issues from the open Issues list by @nicolasalt in #1261
  • Don't fire a needs-attention chime when a CI-green managed auto-merge succeeds by @nicolasalt in #1266
  • fix(spawn): don't let a child spawn hijack a user's /{repo}/new draft session by @nicolasalt in #1262
  • Fix file-row hover height shift in Files tab by @nicolasalt in #1268
  • fix(183): distrust matching install marker over an empty dep dir regardless of mount type by @nicolasalt in #1276
  • Restore issue-list scroll position when returning from an issue by @nicolasalt in #1280
  • fix(198): pnpm store — mount at pnpm 11's relocation target, git-exclude it, skip publish for pnpm repos by @nicolasalt in #1285
  • fix(198): content-key the pre-stamp — propagate depsHash into base pointers and widen the stamp gate by @nicolasalt in #1286
  • Fix compound plan-mode/permission bug: preserve plan mode on answers, resilient permission round-trip, cross-session signal by @nicolasalt in #1287
  • Precompile internal MCP bridges to fix agent failures at 0.5-CPU defaults by @nicolasalt in #1288
  • fix(198): recognize uv venv / uv pip install -r / uv pip sync in the deps-hash allowlist by @nicolasalt in #1289
  • fix(SHI-112): make the issue-write relay idempotent across crash/retry by @nicolasalt in #1291
  • Precompile + consolidate internal MCP bridges (SHI-126, SHI-128) by @nicolasalt in #1294
  • Reset mobile tab to chat on session switch by @nicolasalt in #1306
  • Switch to workspace view on mobile when opening PR details by @nicolasalt in #1308
  • Fix duplicate issue-status cards on PR merge (docs/194) by @nicolasalt in #1309
  • Fix notify-on-merge wake-turn stranded by an orchestrator restart by @nicolasalt in #1311
  • Fix duplicate-PR loop after a session's PR merges (docs/129) by @nicolasalt in #1317
  • Egress Tier B fix-cycle: REDIRECT agent DNS + spare resolver from stale-sweep (SHI-90) by @nicolasalt in #1320
  • Docker proxy: enforce network ownership at container-create time (SHI-135) by @nicolasalt in #1324
  • Persist the sub-agent 'Consulted Codex' card inline (docs/144) by @nicolasalt in #1325
  • Fix dubious-ownership git failures + finish chown wiring under SHIPIT_SESSION_WORKER_UID (SHI-31 activation blocker) by @nicolasalt in #1323
  • Egress Tier B follow-up: couple resolver allowlist to SHIPIT_HOST + dev-compose parity (SHI-90) by @nicolasalt in #1326
  • Capture sub-agent (reviewer) usage tokens and refresh the bill live by @nicolasalt in #1337
  • Fire post-merge handler exactly once per merge (pr-poller) by @nicolasalt in #1318
  • Fix shipit config permission deny rule typo by @nicolasalt in #1351
  • Fix permission card reverting to pending after switch/reload (mid-turn resolution clobber) by @nicolasalt in #1352
  • Overlay dep store × non-root: hand overlay node_modules to the worker uid (SHI-145) by @nicolasalt in #1354
  • Egress Tier C: fix three live-host defects (route_localnet, DROP'd REDIRECT, guard 403) by @nicolasalt in #1358
  • gh pr create: open a new PR when a merged branch has progressed (#1357) by @nicolasalt in #1359
  • Add gap between queued-message card and input on desktop by @nicolasalt in #1362
  • Dispatch live steering: a spawned session's first turn streams so follow-up messages steer by @nicolasalt in #1365
  • Dispatch: preserve partial turns on no-result exit (stop erasing OOM/SIGHUP'd work) by @nicolasalt in #1367
  • Fix: uploaded file re-appears as an input chip on the next turn by @nicolasalt in #1364
  • Fix non-root Playwright MCP browser launch (EACCES on read-only browser store) by @nicolasalt in #1372
  • Fix post-merge follow-up PR push: stale force-with-lease + orchestrator credential-helper noise by @nicolasalt in #1377
  • Self-update: rewrite github.com SSH remotes to HTTPS in the orchestrator by @nicolasalt in #1381
  • Reclaim chat-input focus only on iframe load, not on every iframe focus by @nicolasalt in #1383
  • Archive a repo's sessions (and reclaim their disk) when the repo is removed by @nicolasalt in #1386
  • Fix inconsistent card styling for Linear vs GitHub in Integrations settings by @nicolasalt in #1385
  • Fix vertical alignment of label and identifier in issue-detail back header by @nicolasalt in #1393
  • Fix: image attached in a quick session never reaches the agent by @nicolasalt in #1394
  • Self-heal PR merge detection after a GitHub repo transfer by @nicolasalt in #1398
  • Restore issue cards on phone-width panels by @nicolasalt in #1405
  • Fix Android Cloudflare Access auth in WebView by @nicolasalt in #1404
  • Fix: PR card changed-docs strip goes stale after PR creation by @nicolasalt in #1411
  • Switch right panel to Issues tab when clicking a PR card issue chip by @nicolasalt in #1416
  • Closing a PR demotes the session into Recently resolved live by @nicolasalt in #1418
  • Render the present card as its own standalone chat element by @nicolasalt in #1420
  • Fix: allowlist propose_actions so the action-checklist card stops hanging (SHI-153) by @nicolasalt in #1440
  • Fix dispatched-turn double-spawn that strands a live streaming turn's events (docs/146) by @nicolasalt in #1447
  • Ops prompt: document the read-only shipit source privilege pillar by @nicolasalt in #1450
  • Fix recreate-after-idle leaving a root-owned workspace that wedges the session (SHI-31 §7) by @nicolasalt in #1451
  • fix: notify-on-merge re-fires duplicate notifications after orchestrator restart by @nicolasalt in #1452
  • Android: remove pull-to-refresh that hijacked chat scrolling by @nicolasalt in #1455
  • Fix duplicate doc chips on the PR card's changed-docs strip by @nicolasalt in #1461
  • Fix: agent-shim stdin read hangs forever on empty/TTY stdin by @nicolasalt in #1467
  • Fix shipit agent run: route unbounded sub-agent spawn legs over Node http (undici headersTimeout false 'fetch failed') by @nicolasalt in #1474
  • Fix stray vertical scrollbar in sibling doc tab strip by @nicolasalt in #1481
  • Sidebar: match advanced-session button color to its toolbar siblings by @nicolasalt in #1480
  • Fix modified document detection in PR panel by @nicolasalt in #1483

📝 Documentation

  • docs/183 Phase 1: delete the nm-store fast path by @nicolasalt in #1133
  • Make in-app bug reporting the primary issue path in CONTRIBUTING by @nicolasalt in #1134
  • Agent issue creation via shipit issue create (do-then-surface) by @nicolasalt in #1138
  • Fix architecture diagram alignment in CONTRIBUTING.md by @nicolasalt in #1151
  • Add npm v12 readiness assessment doc by @nicolasalt in #1162
  • docs/187 + implement right-edge rail+trail for needs-attention sessions by @nicolasalt in #1146
  • Add SECURITY-MODEL.md documenting ShipIt's security posture by @nicolasalt in #1161
  • docs(183): reconcile overlay checklist to dep-dir design + nested-overlay host spike by @nicolasalt in #1174
  • README: lead with the glass-box positioning by @nicolasalt in #1173
  • docs(183): re-cut dep-dir work into 7 thin per-PR phases by @nicolasalt in #1175
  • docs(189): issue-write card redesign — content-led, attribution dropped by @nicolasalt in #1184
  • docs(110): per-repo pinned sessions, no limit, reconcile with codebase by @nicolasalt in #1181
  • Remove Linear as a built-in MCP OAuth preset (docs/190) by @nicolasalt in #1195
  • feat(183): Phase 6 — overlay disk-cleanup GC-correctness gate (N>1 tests + docs) by @nicolasalt in #1205
  • Guard Codex Playwright MCP worker wiring by @nicolasalt in #1208
  • Harden public release install docs and labeler by @nicolasalt in #1207
  • feat(183): overlay warm-install measurement instrumentation (flag-gated) by @nicolasalt in #1216
  • docs(192): persistent container logs design by @nicolasalt in #1221
  • Remove redundant in-bubble typing dots by @nicolasalt in #1222
  • docs(193): pnpm migration plan by @nicolasalt in #1225
  • docs(194): issue lifecycle workflow — auto started/completed by @nicolasalt in #1246
  • docs(144): generalize cross-agent review into a sub-agent spawning primitive by @nicolasalt in #1245
  • docs(183): production canary results — measurements, depth sweep, flip preconditions by @nicolasalt in #1259
  • docs(183): hardlink-dedup live verification + pnpm/Python canary results by @nicolasalt in #1272
  • Review claude-memory-per-repo plan via subagent by @nicolasalt in #1281
  • docs(183): point the flip item at SHI-127 (flag-retirement rollout tracker) by @nicolasalt in #1290
  • docs(200): benchmark git fetch overhead before session creation (SHI-76) by @nicolasalt in #1292
  • docs(ops-session): add required --title to fix-session spawn example by @nicolasalt in #1295
  • docs(201): large-file split & architectural tech-debt plan by @nicolasalt in #1305
  • docs(201): Integrations settings tab design + mockup by @nicolasalt in #1304
  • Repo trust gate (SHI-96): land warm pre-install test + tracker linkage by @nicolasalt in #1298
  • feat(201): nested child session visibility via rootSessionId by @nicolasalt in #1307
  • docs: re-arm a merged session for a new PR after rebase (SHI-134) by @nicolasalt in #1322
  • Design: plain-text AI review + cross-agent reviewer (docs/203) by @nicolasalt in #1327
  • Plain-text AI review + cross-agent reviewer (docs/203) by @nicolasalt in #1333
  • Design: PR-scoped quick access to changed docs (docs/205) by @nicolasalt in #1342
  • Design doc: quick session optimistic start (docs/205) by @nicolasalt in #1339
  • Detached session spawn (--detached) — SHI-141 by @nicolasalt in #1345
  • docs/150: link SHI-143 cleanup follow-up + mark standing-default flip done by @nicolasalt in #1348
  • Hand .git back to the worker uid on the rebase path (SHI-144) by @nicolasalt in #1350
  • docs: clarify checklist-vs-issue altitude split in CLAUDE.md by @nicolasalt in #1353
  • Hand the worktree back after fork-merge (SHI-144 analog) by @nicolasalt in #1355
  • docs/172: Tier C verified on live host — mark verification complete (#1358) by @nicolasalt in #1360
  • Non-root: hand the worktree (not just .git) back on session setup (SHI-145) by @nicolasalt in #1366
  • Egress Phase-2 wiring: thread SNI identity rules into the Tier C proxy launch (SHI-90) by @nicolasalt in #1369
  • CLAUDE.md: clarify checklist vs plan.md vs Linear tracking by @nicolasalt in #1371
  • Drop literal-wording prompt tests; add prompt conventions to CLAUDE.md by @nicolasalt in #1375
  • Move prompt text into .md files; keep composition + cache in code by @nicolasalt in #1378
  • Design: composer quote rendering investigation by @nicolasalt in #1382
  • Design: action checklist cards (batch-resolved optional-action proposals) by @nicolasalt in #1380
  • Trim CLAUDE.md under the 40k perf cap; document cross-agent skill disclosure by @nicolasalt in #1397
  • Egress: build the SNI sidecar on every dev boot + prod deploy (SHI-90) by @nicolasalt in #1400
  • Fix merged PR detection after repo move to nikzlabs by @nicolasalt in #1401
  • Gap 5 kernel-tier container hardening: gVisor / seccomp / ReadonlyRootfs (SHI-97) by @nicolasalt in #1410
  • Wrap fetched issue content in the untrusted-input envelope (SHI-85) by @nicolasalt in #1412
  • Fix ro-rootfs entrypoint credential-symlink rehydration (SHI-97 live-host verify) by @nicolasalt in #1415
  • Gap 6: make /uploads read-only + scope the blocked /credentials :ro prerequisite (SHI-45) by @nicolasalt in #1419
  • refactor(P1): split ws-server-messages.ts by domain by @nicolasalt in #1422
  • refactor(P2): split domain-types.ts by domain by @nicolasalt in #1421
  • Sandbox sessions: design doc + UI mockup (SHI-161) by @nicolasalt in #1417
  • refactor(P5): split disk-janitor into startup-janitor/tier-escalation/disk-utils by @nicolasalt in #1423
  • P6: split agent-listeners.ts into focused concern modules by @nicolasalt in #1425
  • refactor(P3): extract shared agent-auth-base.ts by @nicolasalt in #1424
  • refactor(P8): extract compose-cli from service-manager by @nicolasalt in #1426
  • docs(201): mark large-file refactor checklist complete by @nicolasalt in #1448
  • Update repo references after move to nikzlabs/shipit by @nicolasalt in #1449
  • docs: document non-root session worker hardening in security model + README by @nicolasalt in #1453
  • Design doc: ephemeral orchestrator (scale-to-zero) by @nicolasalt in #1472
  • Android: auto-publish AAB to Google Play + commit Play listing icon by @nicolasalt in #1465
  • Egress settings: split global vs per-session controls by @nicolasalt in #1484

⬆️ Dependencies

  • Update agent CLIs to v2.1.161 by @renovate[bot] in #1148
  • Build(deps-dev): Bump @tailwindcss/vite from 4.1.18 to 4.3.0 by @dependabot[bot] in #1160
  • Build(deps-dev): Bump vitest from 4.1.0 to 4.1.8 by @dependabot[bot] in #1159
  • Build(deps-dev): Bump @types/node from 22.19.11 to 25.9.1 by @dependabot[bot] in #1158
  • Build(deps-dev): Bump globals from 17.3.0 to 17.6.0 by @dependabot[bot] in #1157
  • Build(deps-dev): Bump vite from 7.3.3 to 8.0.16 by @dependabot[bot] in #1156
  • Build(deps-dev): Bump tailwindcss from 4.1.18 to 4.3.0 by @dependabot[bot] in #1192
  • Build(deps): Bump react and @types/react by @dependabot[bot] in #1194
  • Build(deps-dev): Bump @eslint/js from 9.39.2 to 10.0.1 by @dependabot[bot] in #1190
  • Update agent CLIs to v2.1.162 by @renovate[bot] in #1233
  • fix(deps): update agent clis to v0.137.0 by @renovate[bot] in #1242
  • Update agent CLIs to v2.1.163 by @renovate[bot] in #1264
  • Build(deps): Bump @grpc/grpc-js from 1.14.3 to 1.14.4 by @dependabot[bot] in #1258
  • Build(deps): Bump better-sqlite3 from 12.6.2 to 12.10.0 by @dependabot[bot] in #1213
  • Build(deps-dev): Bump jsdom from 28.1.0 to 29.1.1 by @dependabot[bot] in #1212
  • Build(deps): Bump zustand from 5.0.11 to 5.0.14 by @dependabot[bot] in #1214
  • Build(deps-dev): Bump tsx from 4.21.0 to 4.22.4 by @dependabot[bot] in #1211
  • Build(deps-dev): Bump typescript-eslint from 8.56.0 to 8.60.1 in the eslint group by @dependabot[bot] in #1210
  • fix(deps): update agent clis to v2.1.165 by @renovate[bot] in #1271
  • Update agent CLIs to v2.1.167 by @renovate[bot] in #1296
  • Build(deps-dev): Bump @types/react from 19.2.16 to 19.2.17 in the react group by @dependabot[bot] in #1387
  • Build(deps): Bump @radix-ui/react-tabs from 1.1.13 to 1.1.14 by @dependabot[bot] in #1389
  • Build(deps-dev): Bump @types/node from 25.9.1 to 25.9.2 by @dependabot[bot] in #1390
  • Build(deps): Bump @radix-ui/react-tooltip from 1.2.8 to 1.2.9 by @dependabot[bot] in #1391
  • Build(deps): Bump @radix-ui/react-dropdown-menu from 2.1.16 to 2.1.17 by @dependabot[bot] in #1388

🧰 Maintenance

  • Render agent tool calls as icons + short verbs by @nicolasalt in #1144
  • Drop the provenance-card line from issue-write shim output by @nicolasalt in #1166
  • Group vite toolchain bumps in Dependabot by @nicolasalt in #1187
  • Group react and eslint toolchains in Dependabot by @nicolasalt in #1206
  • Fix revoked Claude auth state propagation by @nicolasalt in #1215
  • Fix uploaded file disappearing after re-upload (stale tombstone) by @nicolasalt in #1217
  • fix(overlay): match directory-only gitignore patterns for absent dep dirs by @nicolasalt in #1256
  • fix(install): don't synthesize install completion from a pre-POST status probe by @nicolasalt in #1257
  • feat(overlay): hardlink-dedup base generations against their predecessor by @nicolasalt in #1267
  • Optimize expensive GitHub Actions runs by @nicolasalt in #1270
  • ci: bump GitHub Actions off deprecated Node.js 20 runtime by @nicolasalt in #1315
  • Activate non-root session worker (SHIPIT_SESSION_WORKER_UID=1000) — SHI-31 by @nicolasalt in #1336
  • docs/150 §10: drop DAC_OVERRIDE + NET_BIND_SERVICE from session container caps by @nicolasalt in #1349
  • .github/workflows: Migrate workflows to Blacksmith runners by @blacksmith-sh[bot] in #1392
  • Surface "Clear saved credentials" when Claude auth is stale by @nicolasalt in #1407
  • Fix: require fresh credentials before completing Claude OAuth login by @nicolasalt in #1406
  • Fix: repos with URLs >100 chars are silently undeletable by @nicolasalt in #1402
  • CI: right-size Blacksmith runners to conserve free-tier minutes by @nicolasalt in #1408
  • refactor(P7): split session-credentials into scaffold/agent-creds/token-sync/repo-memory by @nicolasalt in #1428
  • refactor(P9): split pr-status-poller into supervisor/session-tracker/global-gate by @nicolasalt in #1430
  • refactor(P11): split session-container into config-builder/overlay-provisioner by @nicolasalt in #1429
  • refactor: split api-routes-session.ts into focused route modules by @nicolasalt in #1432
  • refactor(P12): split shipit.ts + gh.ts, extract shim-common by @nicolasalt in #1433
  • refactor(P14): split codex adapter into event-handler/tool-normalizer/rate-limits by @nicolasalt in #1434
  • refactor(P17): split SessionSidebar into item/group/indicators + hooks by @nicolasalt in #1436
  • refactor(P16): split App.tsx into bootstrap + hooks by @nicolasalt in #1437
  • refactor(P15): split Settings.tsx into tab modules by @nicolasalt in #1438
  • refactor(P18): split MessageList into scroll hook + tool-use/media/cards by @nicolasalt in #1439
  • refactor(P19): split MessageInput into hooks + autocomplete/voice by @nicolasalt in #1441
  • refactor(P21): split PrLifecycleCard into phases + indicators by @nicolasalt in #1442
  • refactor(P20): split PreviewFrame into pool/health hooks + device/toolbar/errors by @nicolasalt in #1443
  • refactor(P22): split SessionHealthStrip into poll hook + summary/details/recovery by @nicolasalt in #1444
  • refactor(P23): split MarkdownSelectionComments into hooks + utils + UI by @nicolasalt in #1445
  • refactor(P24): split McpServerSettings into form/oauth hooks + row/form by @nicolasalt in #1446

Other Changes

  • Clarify Phase-2 egress identity rules are global-only, not per-session by @nicolasalt in #1396
  • Refactor P4: split orchestrator index.ts by @nicolasalt in #1427
  • Refactor P13: split session-worker.ts into controllers by @nicolasalt in #1431

New Contributors

Full Changelog: v0.1.0...v0.2.0