v0.2.0
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-dirsconfig 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
errorafter 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 sourceprivilege 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
- @blacksmith-sh[bot] made their first contribution in #1392
Full Changelog: v0.1.0...v0.2.0