Skip to content

Releases: darkrun-ai/darkrun

v0.15.1

Choose a tag to compare

@jwaldrip jwaldrip released this 25 Aug 03:57
Immutable release. Only release title and notes can be modified.
cca35b3

0.15.1 (2026-08-08)

Bug Fixes

  • ci: scope the release changelog to the commits since the last release (31923c9)
  • ci: scope the release changelog to the commits since the last release (#274) (87e90f2)
  • the operator surfaces are branch-scoped — main is never on a run (f278f6f)

v0.15.0

Choose a tag to compare

@jwaldrip jwaldrip released this 06 Aug 05:41
Immutable release. Only release title and notes can be modified.
b8180f0

0.15.0 (2026-08-06)

Features

  • api: add PickerKind::Size (a5c9e9c)
  • api: local-first connect selection — detect local vs remote (7a6d04c)
  • api: shared tunnel protocol — the durable, local/remote contract (d3a00e2)
  • app: set the darkrun app icon in the bundle (ships via fastlane) (79db09d)
  • app: web push registration — the client half of notify-on-tick (72a5365)
  • app: wire the Firebase web config (login now functional) (2af84d6)
  • app: wire the Web Push VAPID key — remote push fully configured (9d0750c)
  • cli: darkrun statusline --explain says why the line is blank (2b57a6e)
  • cli: darkrun login — enable remote access (closes the engine-side loop) (39d99b5)
  • cli: darkrun statusline --explain says why the line is blank (#270) (f0238e1)
  • cli: engine-data write guard redirects each artifact to its own tool (bf6f206)
  • cloud: Firebase-native foundation — Firestore data model, rules, project config (b97cfa4)
  • core+mcp: fan the SHA write-guard out to units and briefs (b4fea39)
  • core+mcp: SHA optimistic-concurrency guard on artifact writes (knowledge first) (138fb1e)
  • deeplinks: add iOS associated-domains entitlement (capability now enabled) (0b4cb23)
  • deeplinks: fill the AASA appID + wire associated-domains (macOS) (0df6bc4)
  • desktop: auto-detect + drive the installed app from a dev-checkout engine (275cdaf)
  • desktop: auto-detect run history as projects + Finder-pick local repos (8e07c6b)
  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (a529aeb)
  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (#241) (5f84ab9)
  • desktop: read a run offline from .darkrun when no engine is connected (5a8a490)
  • desktop: read a run offline from .darkrun when no engine is connected (#239) (0683311)
  • desktop: readable question prompts — markdown, text-only cards, real mockups (d71321a)
  • desktop: request changes offline; a resuming engine picks them up (88a4c4e)
  • desktop: request changes offline; a resuming engine picks them up (#240) (eefcb4a)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (f51a536)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (#223) (dae755d)
  • engine+desktop: questions surface on the run + persist across restarts (598d98e)
  • engine+desktop: sessions materialize on demand; chrome is not selectable (c3c2395)
  • engine: engine-driven run-setup elicitation (factory/mode/size pickers) (905e8ca)
  • engine: mode-gate questions + scope interactive sessions per station (e990bd4)
  • engine: pull fable from the model selector (Anthropic removed support) (38a4c80)
  • engine: spawn the host connector + advertise reachability (fab84f3)
  • engine: the desktop surfaces with the work, not at the first gate (299011a)
  • gates: await_decision primitive + SessionPayload::resolved() (eadcea7)
  • infra: capture Firebase Auth sign-in config as code (79ed568)
  • ios: MATCH_NUKE — one-command cert-slot reset (bb82760)
  • ios: RC build numbering for TestFlight (increment until release is cut) (d49a487)
  • ios: safe-area edge-to-edge (toolbar + drawer) + "Darkrun AI" name (791ceab)
  • ios: universal app (iPhone/iPad/Mac) with mobile content mode (0db7104)
  • login: relay-token broker carries a browser-minted token to the engine (b7e2082)
  • mas: Phase 1 — shared data root for the Mac App Store app group (36b51c5)
  • mas: Phase 2 — App Sandbox entitlements + macOS .pkg packaging (2a82f53)
  • mcp: fall back to the app.darkrun.ai deep link when no desktop can open (29b7830)
  • mcp: live-mirror the run payload after every mutating tool (7542bfe)
  • mcp: local OS notification when a run reaches a gate (8c15fdf)
  • relay: remote reachability (Wave 2 crit #5) (463654a)
  • relay: remote-push spine — FCM fan-out + device registration (d3f15c3)
  • relay: self-refreshing relay credential (Wave 2 crit #6) (aea50fd)
  • remote: Decide command, direction/picker routing, exactly-once client retry (ae69714)
  • sim: protocol-fidelity harness — a dumb agent that must follow rendered prompts (ffe29d5)
  • site: 'Open app' link in the header (#185) (8c16e14)
  • site: add 'Open app' link to the header nav (9cfbf4a)
  • site: Claude Code's boxed session-start banner on the statusline demo (5963c7c)
  • site: render the statusline demo in situ, under Claude Code's prompt box (6c42eab)
  • site: social card (Open Graph / Twitter) — the factory-l...
Read more

v0.14.0

Choose a tag to compare

@jwaldrip jwaldrip released this 06 Aug 05:15
Immutable release. Only release title and notes can be modified.
084048b

0.14.0 (2026-08-06)

Features

  • api: add PickerKind::Size (a5c9e9c)
  • api: local-first connect selection — detect local vs remote (7a6d04c)
  • api: shared tunnel protocol — the durable, local/remote contract (d3a00e2)
  • app: set the darkrun app icon in the bundle (ships via fastlane) (79db09d)
  • app: web push registration — the client half of notify-on-tick (72a5365)
  • app: wire the Firebase web config (login now functional) (2af84d6)
  • app: wire the Web Push VAPID key — remote push fully configured (9d0750c)
  • cli: darkrun statusline --explain says why the line is blank (2b57a6e)
  • cli: darkrun login — enable remote access (closes the engine-side loop) (39d99b5)
  • cli: darkrun statusline --explain says why the line is blank (#270) (f0238e1)
  • cli: engine-data write guard redirects each artifact to its own tool (bf6f206)
  • cloud: Firebase-native foundation — Firestore data model, rules, project config (b97cfa4)
  • core+mcp: fan the SHA write-guard out to units and briefs (b4fea39)
  • core+mcp: SHA optimistic-concurrency guard on artifact writes (knowledge first) (138fb1e)
  • deeplinks: add iOS associated-domains entitlement (capability now enabled) (0b4cb23)
  • deeplinks: fill the AASA appID + wire associated-domains (macOS) (0df6bc4)
  • desktop: auto-detect + drive the installed app from a dev-checkout engine (275cdaf)
  • desktop: auto-detect run history as projects + Finder-pick local repos (8e07c6b)
  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (a529aeb)
  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (#241) (5f84ab9)
  • desktop: read a run offline from .darkrun when no engine is connected (5a8a490)
  • desktop: read a run offline from .darkrun when no engine is connected (#239) (0683311)
  • desktop: readable question prompts — markdown, text-only cards, real mockups (d71321a)
  • desktop: request changes offline; a resuming engine picks them up (88a4c4e)
  • desktop: request changes offline; a resuming engine picks them up (#240) (eefcb4a)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (f51a536)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (#223) (dae755d)
  • engine+desktop: questions surface on the run + persist across restarts (598d98e)
  • engine+desktop: sessions materialize on demand; chrome is not selectable (c3c2395)
  • engine: engine-driven run-setup elicitation (factory/mode/size pickers) (905e8ca)
  • engine: mode-gate questions + scope interactive sessions per station (e990bd4)
  • engine: pull fable from the model selector (Anthropic removed support) (38a4c80)
  • engine: spawn the host connector + advertise reachability (fab84f3)
  • engine: the desktop surfaces with the work, not at the first gate (299011a)
  • gates: await_decision primitive + SessionPayload::resolved() (eadcea7)
  • infra: capture Firebase Auth sign-in config as code (79ed568)
  • ios: MATCH_NUKE — one-command cert-slot reset (bb82760)
  • ios: RC build numbering for TestFlight (increment until release is cut) (d49a487)
  • ios: safe-area edge-to-edge (toolbar + drawer) + "Darkrun AI" name (791ceab)
  • ios: universal app (iPhone/iPad/Mac) with mobile content mode (0db7104)
  • login: relay-token broker carries a browser-minted token to the engine (b7e2082)
  • mas: Phase 1 — shared data root for the Mac App Store app group (36b51c5)
  • mas: Phase 2 — App Sandbox entitlements + macOS .pkg packaging (2a82f53)
  • mcp: fall back to the app.darkrun.ai deep link when no desktop can open (29b7830)
  • mcp: live-mirror the run payload after every mutating tool (7542bfe)
  • mcp: local OS notification when a run reaches a gate (8c15fdf)
  • relay: remote reachability (Wave 2 crit #5) (463654a)
  • relay: remote-push spine — FCM fan-out + device registration (d3f15c3)
  • relay: self-refreshing relay credential (Wave 2 crit #6) (aea50fd)
  • remote: Decide command, direction/picker routing, exactly-once client retry (ae69714)
  • sim: protocol-fidelity harness — a dumb agent that must follow rendered prompts (ffe29d5)
  • site: 'Open app' link in the header (#185) (8c16e14)
  • site: add 'Open app' link to the header nav (9cfbf4a)
  • site: Claude Code's boxed session-start banner on the statusline demo (5963c7c)
  • site: left/right stepper on the statusline demo (d9c1c07)
  • site: left/right stepper on the statusline demo ([#50](https://github.com/darkrun...
Read more

v0.13.0

Choose a tag to compare

@jwaldrip jwaldrip released this 06 Aug 04:45
Immutable release. Only release title and notes can be modified.
da9ca68

0.13.0 (2026-08-04)

Features

  • cli: darkrun statusline --explain says why the line is blank (2b57a6e)
  • cli: darkrun statusline --explain says why the line is blank (#270) (f0238e1)

Bug Fixes

  • api,desktop: send the run's mode over the wire and stop nagging dark runs (fbdb9f0)
  • api,desktop: send the run's mode over the wire and stop nagging dark runs (#261) (d0eaa58)
  • cli: the engine roots at the project, not the worktree it booted in (ec17657)
  • cli: the engine roots at the project, not the worktree it booted in (#268) (a197a83)
  • cli: the statusline reads the project's state, not a worktree's stale copy (eec5f59)
  • cli: the statusline reads the project's state, not a worktree's stale copy (#266) (e3f83fb)
  • core: require every declared Pass beat to settle before a unit completes (96e3ef6)
  • core: require every declared Pass beat to settle before a unit completes (#259) (532d3df)
  • core: StateStore resolves to the project by construction (b8c2f43)
  • core: StateStore resolves to the project by construction (#269) (55a7b87)
  • desktop,cli: keep the station rail whole, open past stations, resolve the statusline absolutely (7afde25)
  • desktop,cli: whole station rail, navigable past stations, a status line that resolves (#257) (8eef6df)
  • desktop: the engine's worktree pool is not a checkout to read state from (311df71)
  • desktop: the engine's worktree pool is not a checkout to read state from (#267) (7a5f46f)
  • desktop: the review pane opens on what is waiting, and says why (9d9c3f6)
  • desktop: the review pane opens on what is waiting, and says why (#264) (50871a4)
  • mcp: a run that cannot get its own branch refuses to start (d18484d)
  • mcp: engine state commits land in the darkrun/ branch space or nowhere (48e8e1b)
  • mcp: engine state commits land in the darkrun/ branch space or nowhere (#260) (a2a8acc)
  • mcp: the engine's own state never counts as the operator's dirty work (4b11496)
  • mcp: the engine's own state never counts as the operator's dirty work (#265) (780e877)

v0.12.2

Choose a tag to compare

@jwaldrip jwaldrip released this 29 Jul 06:23
Immutable release. Only release title and notes can be modified.
1de885f

0.12.2 (2026-07-19)

Bug Fixes

  • ci: ship macOS release candidates to TestFlight via pilot (e9545dd)
  • ci: ship macOS release candidates to TestFlight via pilot (#252) (eebdd38)
  • desktop: surface the engine's refusal reason instead of a bare HTTP code (9527a92)
  • desktop: surface the engine's refusal reason instead of a bare HTTP code (#253) (897a025)

v0.12.1

Choose a tag to compare

@jwaldrip jwaldrip released this 19 Jul 08:07
Immutable release. Only release title and notes can be modified.
1c6aa16

0.12.1 (2026-07-17)

Bug Fixes

  • desktop: one checkpoint decision surface; stack cramped text artifacts (81816bc)
  • desktop: one checkpoint decision surface; stack cramped text artifacts (#245) (f25c812)
  • desktop: resolve repo identity in the sandbox; show version + build (1c265dd)
  • desktop: resolve repo identity in the sandbox; show version + build (#244) (a9a4fb0)
  • desktop: show the git repo at the top level, worktrees as subnavs (d669618)
  • desktop: show the git repo at the top level, worktrees as subnavs (#243) (ac9d6e2)

v0.12.0

Choose a tag to compare

@jwaldrip jwaldrip released this 15 Jul 02:49
Immutable release. Only release title and notes can be modified.
eb887aa

0.12.0 (2026-07-15)

Features

  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (a529aeb)
  • desktop: auto-surface provider repos with darkrun artifacts (clone-on-open) (#241) (5f84ab9)
  • desktop: read a run offline from .darkrun when no engine is connected (5a8a490)
  • desktop: read a run offline from .darkrun when no engine is connected (#239) (0683311)
  • desktop: request changes offline; a resuming engine picks them up (88a4c4e)
  • desktop: request changes offline; a resuming engine picks them up (#240) (eefcb4a)
  • vcs: detect darkrun artifacts on a remote repo without cloning (bc40375)
  • vcs: detect darkrun artifacts on a remote repo without cloning (#237) (e0a3148)

Bug Fixes

  • desktop: stop auto-listing every local repo that ran an engine (f605aa7)
  • desktop: stop auto-listing every local repo that ran an engine (#236) (75a203d)

v0.11.0

Choose a tag to compare

@jwaldrip jwaldrip released this 14 Jul 06:19
Immutable release. Only release title and notes can be modified.
f77bf77

0.11.0 (2026-07-14)

Features

  • desktop: auto-detect run history as projects + Finder-pick local repos (8e07c6b)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (f51a536)
  • desktop: sign in with GitHub/GitLab and pick a permitted repo (authenticated clone) (#223) (dae755d)

Bug Fixes

  • app: render markdown, add offline state, stop dropping payloads (609a64c)
  • close from-scratch gap-report findings (gate surfacing, review markdown, evidence gates, web app, site, infra) (#216) (8bcbf63)
  • core: route the annotation leaf through the containment backstop too (af3867e)
  • desktop: close the operator-surface gaps (markdown browsing, replies, proof at the gate, archive) (8ee5e6c)
  • desktop: match the drift-chip run by (slug, port), not project name (347d0fa)
  • engine: close evidence + correctness holes at the checkpoint gates (da2fbf4)
  • engine: close the B+D audit residuals (UserGate-at-Spec, drift re-orient cascade + over-broad trigger) (ca674f9)
  • engine: land station work onto run-main (the manufactured code never reached the base branch) (#219) (22b7270)
  • engine: land station work onto run-main (worktree_is_dirty ignored .darkrun-only dirt) (f2506c7)
  • engine: let non-dark runs reach Reflect+Checkpoint; gate checkpoint_decide to a real hold (d80b18a)
  • engine: narrow the UserGate-at-Spec hold to the early-stamp race only (6ecc9ee)
  • engine: require evidence (or an explicit override) at the human Prove gate (d1e3f1d)
  • engine: unify feedback ids, wire annotation-close, retire sessions on reset, re-orient on drift close (4c7401d)
  • engine: unwedge non-dark runs (Reflect+Checkpoint), gate checkpoint_decide, unify feedback ids, wire annotation-close, retire sessions on reset, safe drift re-orient (#221) (ec5c83b)
  • gate hold + sandbox registry + dev-bundle seal + 3 gap-close bundles (discovery, operator surface, platform edges, vcs extraction) (#218) (17e69c0)
  • gates+desktop: hold at every operator gate; sandbox-proof the registry; seal the dev bundle (aeee7a0)
  • gate: surface gates to a running app via deep link + engine-follow (40a08c6)
  • git: satisfy clippy 1.97 question_mark in the remote_status fixture parser (dbbad70)
  • git: satisfy clippy 1.97 question_mark in the remote_status fixture parser (b9b5cc9)
  • http: surface a refused gate decision (no false success); read agent-attached proof from disk (479edf9)
  • http: surface refused gate decisions (no false success) + read agent-attached proof from disk (#222) (7074e37)
  • infra: resolve relay. dial + deploy GitHub App creds (2deaf6f)
  • ios: full-bleed app icon (stop iOS double-masking the rounded tile) (#234) (44e8395)
  • ios: use a full-bleed app icon so iOS stops double-masking it (5512d65)
  • low-severity UX residuals (drift-chip slug collision + escalated count, visible archive errors, non-macOS window guard) (#224) (da670a9)
  • merge: unify frontmatter rendering + never-drop guarantee + drop vulnerable quick-xml (c4dc2cd)
  • platform: legacy-tree discovery, warm-app deep link, per-run presence, TestFlight idempotency (067805a)
  • release+site: unblock the release pipeline, per-route canonicals, honest statusline + verify/bench (9dc7c8b)
  • review: render markdown for all review artifacts, not raw source (14b9331)
  • security+release: reject path-traversal slugs + escape OAuth callback; unblock release, per-route canonicals, honest statusline/verify/bench (#220) (340c0f6)
  • security: reject path-traversal slugs at the route + store; escape the OAuth callback (e5656aa)
  • site: make /preview and /review showcases deliver their pitch (2236db8)
  • statusline+relay: keep review chips live at the UserGate; point remote access at a host that exists (0e7263f)
  • the low-severity UX residuals from the bundle audits (3f43e9a)
  • ui: move CSS doc comment onto its const (empty-line-after-doc lint) (82d135c)

v0.9.0

Choose a tag to compare

@jwaldrip jwaldrip released this 07 Jul 19:01
Immutable release. Only release title and notes can be modified.
096d2d9

0.9.0 (2026-07-07)

Features

  • infra: capture Firebase Auth sign-in config as code (79ed568)
  • relay: remote reachability (Wave 2 crit #5) (463654a)
  • relay: self-refreshing relay credential (Wave 2 crit #6) (aea50fd)
  • remote: Decide command, direction/picker routing, exactly-once client retry (ae69714)
  • sim: protocol-fidelity harness — a dumb agent that must follow rendered prompts (ffe29d5)
  • tunnel: host-side command dedupe (Wave 2 Step 1d) (c6395bf)
  • web/server: Firestore session registry (Wave 2 Step 1b) (44f2db3)
  • web/server: Firestore-backed relay-token broker (Wave 2 Step 1a) (5c1da13)
  • web/server: Pub/Sub cross-instance frame bus (Wave 2 Step 1c) (f61b54c)

Bug Fixes

  • auth: refresh hosted GitLab tokens via a website broker route (1c03df1)
  • engine: close engine-minor gap findings (mode-picker copy, await/pure-read docs) (8983893)
  • prompts: drop the dead darkrun_checkpoint_choose reference (ad3c911)
  • vcs: refresh GitLab OAuth token before hosting/PR requests (b1f0edc)
  • web: paginate portfolio + run discovery so >100 items aren't dropped (6bfcab2)
  • web: serve robots.txt + sitemap + feeds (run the SEO generator in the image) (03da11f)
  • web: serve robots.txt + sitemap + feeds (run the SEO generator in the image) (#203) (5acc680)

v0.8.0

Choose a tag to compare

@jwaldrip jwaldrip released this 06 Jul 18:37
Immutable release. Only release title and notes can be modified.
v0.8.0
ac12c72

0.8.0 (2026-07-06)

Features

  • api: add PickerKind::Size (a5c9e9c)
  • api: local-first connect selection — detect local vs remote (7a6d04c)
  • api: shared tunnel protocol — the durable, local/remote contract (d3a00e2)
  • app: set the darkrun app icon in the bundle (ships via fastlane) (79db09d)
  • app: web push registration — the client half of notify-on-tick (72a5365)
  • app: wire the Firebase web config (login now functional) (2af84d6)
  • app: wire the Web Push VAPID key — remote push fully configured (9d0750c)
  • cli: darkrun login — enable remote access (closes the engine-side loop) (39d99b5)
  • cli: engine-data write guard redirects each artifact to its own tool (bf6f206)
  • cloud: Firebase-native foundation — Firestore data model, rules, project config (b97cfa4)
  • core+mcp: fan the SHA write-guard out to units and briefs (b4fea39)
  • core+mcp: SHA optimistic-concurrency guard on artifact writes (knowledge first) (138fb1e)
  • deeplinks: add iOS associated-domains entitlement (capability now enabled) (0b4cb23)
  • deeplinks: fill the AASA appID + wire associated-domains (macOS) (0df6bc4)
  • desktop: live per-tick session mirror (a9f565d)
  • desktop: live per-tick session mirror (#46) (ac76fe0)
  • desktop: readable question prompts — markdown, text-only cards, real mockups (d71321a)
  • engine+desktop: questions surface on the run + persist across restarts (598d98e)
  • engine+desktop: sessions materialize on demand; chrome is not selectable (c3c2395)
  • engine: composite runs — multi-factory topology with sync points (adcfef6)
  • engine: engine-driven run-setup elicitation (factory/mode/size pickers) (905e8ca)
  • engine: mode-gate questions + scope interactive sessions per station (e990bd4)
  • engine: pull fable from the model selector (Anthropic removed support) (38a4c80)
  • engine: reject-escalation up the model ladder (4b7ce33)
  • engine: reject-escalation up the model ladder (#49) (b63792b)
  • engine: save_wip clean-tree gate + unit-scope enforcement at completion (603c106)
  • engine: session-event stream + OTLP telemetry export (17873e5)
  • engine: spawn the host connector + advertise reachability (fab84f3)
  • engine: station drop — the keep-or-drop offer at arrival (e55f7fb)
  • engine: the desktop surfaces with the work, not at the first gate (299011a)
  • factory: runtime-verifier run reviewer (the predecessor's strongest gate) (08d8e45)
  • gates: await_decision primitive + SessionPayload::resolved() (eadcea7)
  • git: complete Phase 1 gix reads — ls_tree, unresolved_paths, list_worktrees (b33e131)
  • git: gix add_paths + checkout_paths — Phase 2 complete (47ff4b3)
  • git: gix create_branch (Phase 2 start) — idempotent ref write (b5d7267)
  • git: gix engine-protected three-way merge (Phase 4 — the core safety net) (5346434)
  • git: gix linked-worktree create/remove (Phase 3 — first gitoxide gap) (233a16b)
  • git: gix native fetch (Phase 5) — pure-Rust transport, C-free (6955549)
  • git: gix reads — is_ancestor, refs_have_identical_trees, merge_in_progress (c074ed0)
  • git: hand-rolled write-tree + gix commit (fork-A internals) (a7e01b6)
  • git: scaffold pure-Rust gitoxide backend (Phase 1 foundation) (885462d)
  • hosting: run-level draft PR with ready-at-seal flip + compare-URL fallback (08d8e45)
  • ios: MATCH_NUKE — one-command cert-slot reset (bb82760)
  • ios: RC build numbering for TestFlight (increment until release is cut) (d49a487)
  • ios: safe-area edge-to-edge (toolbar + drawer) + "Darkrun AI" name (791ceab)
  • ios: universal app (iPhone/iPad/Mac) with mobile content mode (0db7104)
  • login: relay-token broker carries a browser-minted token to the engine (b7e2082)
  • mas: Phase 1 — shared data root for the Mac App Store app group (36b51c5)
  • mas: Phase 2 — App Sandbox entitlements + macOS .pkg packaging (2a82f53)
  • mcp: fall back to the app.darkrun.ai deep link when no desktop can open (29b7830)
  • mcp: live-mirror the run payload after every mutating tool (7542bfe)
  • mcp: local OS notification when a run reaches a gate (8c15fdf)
  • providers: behavior contracts spliced into prompts + schema-validated settings (99f2687)
  • relay: remote-push spine — FCM fan-out + device registration (d3f15c3)
  • site: 'Open app' link in the header (#185) (8c16e14)
  • site+desktop: refreshed desktop screenshots + the harness that makes them reproducible (7df1a90)
  • site: add 'Open app' link to the header nav (9cfbf4a)
  • site: Claude Code's boxed session-start banner on the statusline demo ([5963c7c](https://github.com/darkrun-ai/darkru...
Read more