What’s new

LinkCode Changelog

Follow every LinkCode release, from focused fixes to major workflow improvements.

v0.25.0

0.25.0 (2026-08-20)

Features

  • providers: allow ordering accounts and selecting default models (#459) (e57e4ab)

Bug Fixes

  • release: preserve reviewed legacy destinations (#448) (4e710cd)
  • workbench: hide disabled harnesses from new tasks (#460) (03a6b01)
  • workbench: require models when adding providers (#458) (41c4fde)

v0.23.0

0.23.0 (2026-08-17)

Features

  • agent-adapter,ui: surface codex skill brand icons and display names in the command catalog (#431) (6785d25)
  • config: generate branded desktop and mobile identity (#428) (a50ea0f)
  • providers,schema,engine,workbench: retire the default model — user-selected model sets from provider model lists (#426) (084933c)
  • release: add provenance verification CLI (cc51e0b)
  • release: bind artifact provenance (047c5b9)
  • release: build isolated brand matrix (7a1ec14)
  • release: consume rendered brand artifacts (44bcf67)
  • release: download deployed config inputs (d2aaa5f)
  • release: enforce store configuration compliance (42a825b)
  • release: gate matrix publication (dd29699)
  • release: render independent config source (7c98411)
  • release: validate brand build matrix (d6817d6)
  • release: validate protected release inputs (e1d037f)
  • ui: dedicated chat components for tool search/select/query (#430) (8a84396)

Bug Fixes

  • agent-adapter: replay codex code-mode MCP calls, Script envelopes, and skill rows (#435) (a2b4e73)
  • config: allow disabled emergency delivery (6ea7f73)
  • release: bind mobile observer identity (547ff17)
  • release: close privileged workflow paths (7c32c92)
  • release: decouple client build from config publication (e79cbf3)
  • release: harden brand matrix trust (8bf90cb)
  • release: harden pilot matrix gates (856c199)
  • release: normalize JSON environment inputs (55b8518)
  • release: require observed config publication (5f8ed5e)
  • release: require observed config publication (#451) (7677211)
  • release: select both config repositories (f91fcbe)
  • release: unify target identity contract (5d6f81b)
  • release: use protected release environment (8a19b05)
  • ui: tighten grouped activity spacing (#446) (65f16cf)

v0.18.0

0.18.0 (2026-08-01)

Features

  • desktop,agent-adapter: API-key / relay login on the signed-out agent card (#350) (39298ae)
  • git: add local branch workflows to new sessions (7a023ef)
  • git: add local branch workflows to new sessions (#376) (200753c)

Bug Fixes

  • desktop: offer the install when an update is already downloaded (#377) (870e1c5)
  • devenv: strip nix toolchain env from the mobile script (d0c4894)
  • providers: authenticate subscription accounts (8f6a3ab)
  • settings: open provider service catalog directly (6a43d51)
  • ui: prevent branch search text overlap (91ccfb5)
  • workbench: preserve subscription login state (9f88a5c)
  • workbench: route signed-out setup through providers (f1839d1)
  • workbench: support completable agent logins (3cbd825)

v0.16.0

0.16.0 (2026-08-01)

Features

  • agent-adapter: report each agent's configured default model and effort (9aab5dc)
  • desktop: show update download progress (#362) (9fe3aa8)
  • resources: show current plan in panel (#358) (a0a7aab)
  • schema: carry the agent's own default model and effort in the start catalog (0c6c7ee)
  • ui: prefer the agent's configured default over the built-in model guess (b72a1aa)

Bug Fixes

  • agent-adapter: read codex config.toml from the app-server environment (9f3161d)
  • daemon: bound AI gateway startup (00608da)
  • ui: keep a catalog effort with the model it belongs to (f8cf515)
  • ui: preserve local font query receiver (b6a5faa)

v0.15.0

0.15.0 (2026-07-31)

Features

  • chat: add conversation minimap geometry (ab99e29)
  • chat: add the conversation minimap rail (5553c1c)
  • chat: expose the conversation virtualizer handle (8c9aa77)
  • mock: seed a long thread in the dev mock host (d72b564)

Bug Fixes

  • chat: steady the minimap rail and its keyboard path (6e27750)
  • chat: tune the minimap rail down to its quiet form (4726df8)
  • desktop: keep the sidebar translucent over the native backdrop (#360) (70b50b6)

v0.14.0

0.14.0 (2026-07-31)

Features

  • desktop: add update polling and sidebar prompt (adda937)

Bug Fixes

  • desktop: settle inactive update checks (78a99d3)
  • release: install both CPU keyring bindings (0bddfce)
  • release: keep builder Linux output layouts (524b76e)
  • release: let staging select builder architecture (24bd573)
  • release: stage desktop dependencies per architecture (735a232)
  • ui,workbench,desktop,webview: swap the thread-title view transition for a header enter animation (#354) (fe034b7)

v0.8.0

0.8.0 (2026-07-29)

Features

  • agent-adapter: complete opencode and Pi slash commands (#242) (176360d)
  • agent-adapter: probe and spawn opencode from the resolved binary (CODE-76) (#244) (fda7e09)
  • daemon: agent input tools — tap, swipe, text, and named keys (2f681a0)
  • desktop,ui: multi-tab Browser panel — tabbed webviews, popup capture, find/zoom/devtools (CODE-266) (#181) (a7c21be)
  • schema,daemon,ui: show where an agent is touching the device (ebe8ead)
  • schema,engine,daemon: describe_ui — the guest UI tree as an agent tool (6bf4297)
  • sim,engine,daemon: shake a device without reversing the motion payload (699c4e4)
  • sim,engine,workbench: guide setup instead of reporting simulators unavailable (e7a6791)
  • sim: event-driven dead-session reap via an isolated state watcher (b33886e)
  • sim: reach the guest accessibility service through AXPTranslator (138345b)
  • sim: walk the guest accessibility tree into tappable nodes (0fc095e)
  • ui,workbench: comfortable/compact list density preference (6529181)
  • ui: 2xs type token, semantic label tiers, tabular numerals (bf0945a)
  • ui: motion duration tokens and the shared spring (0a98ed4)
  • ui: press feedback on custom tabs, close buttons, and chat rows (4fd9a4d)
  • ui: squircle corner-shape on xl+ radius faces (40e0bd8)

Bug Fixes

  • agent: align effort schema with provider-specific capabilities (#234) (a2cf3de)
  • desktop,workbench: share the e2e wire pin and bind the capture chords (a86b941)
  • desktop: don't persist ephemeral preview-proxy URLs (CODE-373) (#241) (ae0117e)
  • e2e: deterministic maximize checks in the window-bounds suite (#283) (3725a94)
  • sim: honor the HID send verdict instead of assuming every injection landed (78401de)
  • sim: keep the send acknowledgement's block alive and stop retrying unanswered sends (1d4467a)
  • sim: re-warm the HID client for streamed touch and pinch too (ce39cfc)
  • sim: re-warm the HID client when a device reboots out from under it (d66b742)
  • sim: reap a stream and its HID client when the device leaves Booted (7ecdbe3)
  • ui,agent-adapter: show nearby rows and line numbers in the inline diff card (CODE-399) (#304) (b5e0150)
  • ui: drive thread-row height from the density var, not padding (b9c6be8)
  • ui: squircle the logical-corner cells of card-variant tables (8baf4c0)

v0.7.0

0.7.0 (2026-07-25)

Features

  • agent-adapter,engine,daemon: simulator MCP tools for every MCP-capable agent (9bf470d)
  • agent-adapter,engine,daemon: simulator MCP tools for every MCP-capable agent (CODE-395) (5311e50)
  • client-core: simulator control surface (e446d1b)
  • composer: serialize file mentions as markdown links (6797c14)
  • daemon,desktop: wire the sim sidecar client into the engine (0e2e9d1)
  • desktop,ui: simulator as an on-demand right-panel section (c477228)
  • desktop,workbench,ui: iOS Simulator panel — on-demand section with live co-driving stream (CODE-397) (34d0b1b)
  • desktop: allow google favicon hosts in renderer csp (771adf9)
  • engine: simulator tap/swipe/button + framebuffer stream in the backend port and service (9257071)
  • engine: simulator wire request handler (d2407e1)
  • engine: SimulatorBackend port and per-session device registry (8828cd3)
  • schema,engine,client-core: H.264 stream codec plumbing (wire 47) (4a7e54e)
  • schema,engine,client-core: simulator screen-mask wire (wire 46) (e4e1faf)
  • schema,engine,client-core: simulator wire contract — availability, device commands, screenshot (CODE-394) (ebfa242)
  • schema,transport,engine,client-core: simulator interactive + stream wire (wire 45) (4f9ddf2)
  • schema: add normalized plugin model (#263) (558e6ba)
  • sim-sidecar: hardware H.264 streaming via VideoToolbox (zero-copy IOSurface) (c0aee6d)
  • sim-sidecar: screenMask op rendering the devicetype framebuffer mask (9af3b83)
  • sim,engine: @linkcode/sim SDK + SimulatorBackend with per-session device ownership (CODE-393) (b857f9d)
  • sim,schema,engine,client,ui: streamed touch, wheel scroll, HID keyboard (wire 48) (09410ba)
  • sim,schema,engine,client,ui: two-finger pinch + IME pasteboard input (wire 49) (e4c6bb4)
  • sim: @linkcode/sim typed sidecar client (87d842d)
  • sim: bench-encode subcommand for the capture encode ceiling (97f63b3)
  • sim: configurable capture scale (default 1.0) to unlock 60fps (b791d5e)
  • sim: default stream to 60fps and document the encode benchmark (6c1cc87)
  • sim: device rotation via GraphicsServices GSEvent (CODE-408) (e40179a)
  • sim: interface-orientation injection via GraphicsServices GSEvent (7c70014)
  • sim: linkcode-sim iOS Simulator sidecar — P0 simctl lifecycle (CODE-392) (87e0f4a)
  • sim: P1 private-API framebuffer streaming + HID injection, crash-isolated (5fc8439)
  • sim: P1 private-API framebuffer streaming + HID injection, crash-isolated (CODE-396) (363d606)
  • sim: panel rotate button cycling interface orientation (91486d0)
  • sim: stream frames + interactive ops in the @linkcode/sim client (c79ebaa)
  • sim: thread rotate through wire/SDK/engine/client-core + sim_rotate MCP tool (wire 50) (c6e70aa)
  • ui,i18n: simulator screen canvas + optional panel-section vocabulary (a610778)
  • ui,workbench: decode H.264 simulator streams with WebCodecs (29a27b8)
  • ui: add link target classifier, icons, and chip (166b968)
  • ui: composite a realistic device chassis in canvas native space (f5489c6)
  • ui: device-style bezel around the simulator screen (1ed8033)
  • ui: render favicons and link chips in chat markdown (9234b45)
  • workbench,ui: clip the simulator screen with the real device mask (cbcc70e)
  • workbench: restage simulator panel to match reference layout (#267) (b4d664b)
  • workbench: restage simulator panel with text device picker and toolbar island (58d17fa)
  • workbench: simulator stream registry + panel container (45b5aa5)

Bug Fixes

  • desktop: gate the Browser pane's media pause on dom-ready (c8b5a5d)
  • release: preserve release merge validation (4f4c168)
  • release: trust only protected automation (14c3431)
  • sim,engine,ui,schema: resolve iOS Simulator panel review findings (wire 51) (b575f2c)
  • sim: close the worker pid-publication race so a drop during spawn still kills the child (1c9eee7)
  • sim: guard stale sidecar-child events, fail writes fast, fix boot/reclaim ownership races (1d23526)
  • sim: harden P0 sidecar — scrub Apple SDK env, guard oversized frames, bound + drain workers (c639e5c)
  • sim: kill a stuck capture worker on stop, fix ABA frame dedup + silent-worker fallback (f82366b)
  • sim: re-plant the wheel-scroll finger at screen edges so long scrolls don't stall (769d9ac)
  • sim: reconcile boot ownership on failure, guard resume during reclaim, declare foxts dep (abc79e1)
  • sim: reject unknown sessions and roll back claims from failed commands (d5c2466)
  • sim: release MCP token on failed start, don't shadow user servers, cap MCP body (wire 45) (90abf33)
  • sim: resolve device-rotation review findings (f4133a0)
  • sim: stable headless framebuffer capture on Xcode 26 (dae9a83)
  • ui: grow the chassis from the real mask for even band and matching curvature (3b76326)
  • ui: improve inline file detector detectInlineFilePath (79e46c2)
  • ui: preserve absolute file links (61baa4e)
  • ui: restore dual-source favicons (723a80f)
  • ui: secure chat link handling (eca8f74)

Performance Improvements

  • sim: 30fps stream + fire-and-forget touch/pinch move to kill per-move round-trip stutter (09152d4)
  • sim: layer static chassis + per-frame screen so 60 fps stays smooth (b4ec389)
  • sim: precise frame pacing via mach_wait_until (062a950)

v0.6.3

What's Changed

  • fix(agent-adapter): reconcile Claude messages on reseed by @Zerlight in #240
  • ci: adopt org-level fast-forward merge by @AprilNEA in #248
  • fix(ui): align markdown rendering with coss-ui and fix fragment anchors (CODE-378) by @Zerlight in #243
  • ci: repin fast-forward so the bot replies in English by @AprilNEA in #250
  • feat(agent-adapter): enhance normalized event semantics by @AprilNEA in #253
  • chore: make eslint happy by @SukkaW in #257
  • refactor(ui): frame chat flow cards with coss-ui Frame headers (CODE-381) by @Zerlight in #256
  • feat(telemetry): add privacy-safe analytics and performance tracing by @AprilNEA in #258

Full Changelog: v0.6.1...v0.6.3

v0.6.0

What's Changed

  • feat(mobile): project-grouped Threads inbox — workspace groups, host bar, sheet creation (CODE-276) by @AprilNEA in #192
  • feat(mobile): UI foundation — icon system, native stack headers, typography tokens (CODE-275) by @AprilNEA in #187
  • feat(mobile): conversation rework — native markdown pipeline, bubbles, seeded history (Batch 2) by @AprilNEA in #195
  • feat(desktop): themed depth for the sidebar/content seam by @AprilNEA in #197
  • feat(mobile): add legal and support links by @AprilNEA in #198
  • feat(composer): add structured directives and startup controls by @Zerlight in #203
  • feat(ui): refine git diff controls by @Yidadaa in #204
  • fix(agent-adapter): harden turn lifecycle and protocol recovery by @AprilNEA in #205
  • fix(ui): restore Tailwind sources after package restructure by @Zerlight in #212
  • fix(engine): preserve invalid UTF-8 file bytes by @AprilNEA in #221
  • feat(ui): close file tabs with middle click by @AprilNEA in #222
  • refactor(tests): establish test module boundaries by @AprilNEA in #226
  • chore(ci): bump the actions-all group with 3 updates by @dependabot[bot] in #213
  • fix(sidebar): use disclosure chevrons by @AprilNEA in #228
  • feat(agent-adapter): bring Pi adapter to capability parity (CODE-248) by @AprilNEA in #223
  • fix(ui): refresh imported history when switching agent tabs by @AprilNEA in #206
  • refactor(tests): continue test module governance by @AprilNEA in #227
  • test: gate real application boundaries by @AprilNEA in #229
  • fix(ui): support scoped Markdown heading anchors by @Zerlight in #219
  • test(e2e): gate app lifecycle boundaries by @AprilNEA in #230
  • chore(deps): bump @types/node from 24.13.2 to 26.1.1 by @dependabot[bot] in #216
  • chore(deps): bump the npm-minor-patch group across 1 directory with 7 updates by @dependabot[bot] in #214
  • fix(ui): replace hand-rolled components with shared coss-ui primitives by @AprilNEA in #233
  • feat(ui,workbench,daemon): highlight video file paths and play them in the Browser pane by @lucas77778 in #224
  • feat(ui): import chat history by directory by @AprilNEA in #209
  • chore(orb): manage toolchain with devenv by @AprilNEA in #231
  • chore(deps): bump react-router from 7.18.0 to 8.2.0 by @dependabot[bot] in #218
  • chore(deps): bump @anthropic-ai/claude-agent-sdk from 0.3.206 to 0.3.207 by @dependabot[bot] in #217
  • feat(settings): manage provider accounts in dialogs (CODE-329) by @AprilNEA in #232
  • chore(deps): bump @anthropic-ai/sdk from 0.110.0 to 0.111.0 by @dependabot[bot] in #215
  • feat(ui): import all scanned local conversations by @AprilNEA in #210
  • fix(agent-adapter,ui): render Codex user images by @AprilNEA in #208
  • feat(ui): polish agent selector by @AprilNEA in #236
  • refactor(schema): centralize fork-renamable filesystem identity by @AprilNEA in #237
  • ci(workflows): select runners via repo vars with hosted fallbacks by @AprilNEA in #235

New Contributors

Full Changelog: v0.5.1...v0.6.0

v0.5.1

What's Changed

  • feat(workbench): Automations surface usability pass (CODE-264) by @AprilNEA in #171
  • feat(files): workspace file tree — file.list wire contract, engine listing, right-panel tree browser (CODE-263) by @AprilNEA in #172
  • fix(daemon,agent-adapter,engine,assets): hide win32 console windows on daemon child spawns (CODE-236) by @PeronGH in #170
  • feat(ui,workbench): collapse the error banner into a title-side badge, card-style conversation errors, clear on navigation (CODE-239) by @AprilNEA in #169
  • fix(workbench): let long viewer lines scroll instead of clipping at the Files panel edge (CODE-263) by @AprilNEA in #173
  • feat(settings): fold Connection into a Developer tab with a caution notice (CODE-238) by @AprilNEA in #174
  • feat(ui,workbench,desktop): syntax-highlight the Files viewer via @pierre/diffs File (CODE-269) by @AprilNEA in #178
  • feat(mobile): terminal appearance settings (theme + font size) by @AprilNEA in #176
  • fix(agent-adapter): drop codex 0.144 AGENTS.md/env-context injection from history replay (CODE-235) by @AprilNEA in #177
  • fix(engine,common): resolve gh via PATH scan + fallback install locations (CODE-271) by @lucas77778 in #182
  • feat(ui,desktop): auto-seed a terminal session when the Terminal section opens + strip inset alignment (CODE-230) by @AprilNEA in #183
  • fix(agent-adapter,engine,common): normalize MSYS drive-form paths from Windows agents (CODE-237) by @PeronGH in #180
  • feat(ui): group opencode models by provider in the model picker (CODE-270) by @Zerlight in #179
  • fix(client-core): keep live events a mid-turn transcript reseed does not cover (CODE-272) by @Zerlight in #185
  • fix(agent-adapter): request summarized thinking display from claude-code (CODE-273) by @lucas77778 in #184
  • feat(ui): context compact component (CODE-142) by @AprilNEA in #186
  • feat(daemon,assets): pi runs from the managed npm-closure download (CODE-219, part 2) by @AprilNEA in #189
  • feat(ui): animate the in-progress compaction row (spinner + shimmer + elapsed) (CODE-280) by @AprilNEA in #191
  • fix(schema): renumber wire protocol to 39 after parallel 38 bumps by @AprilNEA in #193
  • fix(pty,engine,client-core): end-to-end terminal output flow control (CODE-231) by @AprilNEA in #194
  • fix(transport): avoid zod double parse by @SukkaW in #190
  • feat(desktop): size first launch from the work area, persist window bounds, align pane defaults by @AprilNEA in #196

Full Changelog: v0.5.0...v0.5.1

v0.5.0

What's Changed

  • chore(deps): bump @moeru/eventa from 1.0.0-beta.10 to 1.0.0-beta.11 by @dependabot[bot] in #93
  • chore(ci): bump azure/login from 2 to 3 in the actions-all group across 1 directory by @dependabot[bot] in #89
  • chore(deps): hold vite on major 7 until electron-vite supports vite 8 by @AprilNEA in #112
  • build(desktop): replace electron-vite with plain Vite orchestration; bump to Vite 8 by @AprilNEA in #117
  • chore(ci): bump the actions-all group across 1 directory with 2 updates by @dependabot[bot] in #113
  • feat(engine,workbench): keep agent auth status fresh and add in-session sign-in recovery (CODE-172) by @lucas77778 in #110
  • feat(agent-adapter): opencode history (list/read/resume) via shared history server by @lucas77778 in #109
  • feat(workbench,i18n): let claude login auto-complete via the CLI's own loopback tab (CODE-175) by @lucas77778 in #114
  • feat(workbench,ui): ⌘1–⌘9 jumps to recent threads with palette row hints by @AprilNEA in #118
  • chore(deps): bump npm minor/patch group (manual, supersedes #115) by @AprilNEA in #120
  • chore(deps): hold @sentry/* — bump in lockstep with @sentry/electron by @AprilNEA in #122
  • chore(mobile): upgrade to Expo SDK 57 (RN 0.86, reanimated 4.5, worklets 0.10) by @AprilNEA in #121
  • fix(ui): prioritize shell output over raw tool metadata by @Zerlight in #116
  • feat(composer): drag-and-drop / paste / picker image attachments + live @-file mentions by @lucas77778 in #105
  • fix(desktop): split linkcode:// deep-link scheme per channel by @AprilNEA in #125
  • feat(mobile): OTA-first native readiness — expo-updates + native capability baseline by @AprilNEA in #126
  • fix(desktop): ship multi-size Linux icon set for GNOME launcher by @AprilNEA in #130
  • feat(mobile): account login system — account-first onboarding, account & device screens, my-machines connect by @AprilNEA in #124
  • ci(release): bump Homebrew cask on desktop release by @AprilNEA in #129
  • fix(ui): stabilize and unify chat action previews by @Zerlight in #134
  • feat(mobile): interactive terminal pane via expo-libghostty by @AprilNEA in #131
  • feat(settings): dedicated Terminal appearance tab — font family, font size, color scheme by @AprilNEA in #133
  • feat(settings): Appearance tab — code syntax theme, UI text size, reduce motion by @AprilNEA in #132
  • feat(terminal): support mobile takeover by @AprilNEA in #128
  • feat(mobile): android terminal pane via expo-libghostty 0.3.0 by @AprilNEA in #139
  • build(desktop): shrink packaged app (CODE-215) by @AprilNEA in #138
  • chore(deps): upgrade restty to 0.2.3, drop obsolete font workarounds by @AprilNEA in #142
  • fix(ui): optimize prompt interaction logics by @Zerlight in #146
  • fix(ui): simplify sidebar and add hover preview cards by @Zerlight in #147
  • chore(deps): bump restty to 0.2.5 for the VS16 emoji fix by @AprilNEA in #149
  • feat(daemon): prompt-first managed agent installs (CODE-221) by @AprilNEA in #140
  • feat(agent-adapter): opencode set-model + agent-mode switching (CODE-224) by @lucas77778 in #143
  • fix(daemon): bind listeners before the boot agent probe (CODE-225) by @AprilNEA in #141
  • feat(schema,agent-adapter,engine,ui): dynamic model catalog — opencode desktop model picker (CODE-226) by @lucas77778 in #145
  • refactor(daemon): Effect v4 boot orchestration (CODE-244, Phase 1) by @AprilNEA in #152
  • feat(chat): smooth streamed message rendering by @AprilNEA in #150
  • feat(schema,agent-adapter,client-core): expose structured /usage data to the frontend view-model by @lucas77778 in #135
  • feat(automation): Schedule — cron/interval agent runs (CODE-203) by @AprilNEA in #136
  • feat(mobile): android terminal nerd-font glyphs and cursor blink by @AprilNEA in #153
  • feat(ui): richer tool-call details and stored-session time/model fidelity by @Zerlight in #160
  • fix(agent-adapter): probe scans PATH before fallback install locations (CODE-220) by @PeronGH in #157
  • feat(automation): Loop — iterate-until-verified agent runs (CODE-204) by @AprilNEA in #137
  • feat(mobile): android terminal touch selection, clipboard, and interaction polish by @AprilNEA in #158
  • chore: condense verbose comment blocks to load-bearing points (repo-wide) by @AprilNEA in #144
  • feat(mobile): terminal pinch-to-zoom and fontSize prop (expo-libghostty 0.7.0) by @AprilNEA in #161
  • feat(assets): npm-closure install pipeline for the pi tree (CODE-219, part 1) by @AprilNEA in #151
  • feat(agent-adapter): add Grok Build via headless CLI by @AprilNEA in #154
  • ci(release): use homebrew-tap bump-cask action by @AprilNEA in #163
  • feat(settings): agent runtime install & management in Settings → Agents (CODE-249) by @AprilNEA in #155
  • feat(observability): wire Sentry DSNs across desktop daemon, webview, mobile by @AprilNEA in #166
  • feat(mobile): terminal theme prop and iOS-aligned accessory bar (expo-libghostty 0.8.1) by @AprilNEA in #162
  • perf(ui): virtualize conversation timeline (virtua) + incremental per-event derivations by @AprilNEA in #165
  • feat(assets): managed downloads follow the OS system proxy (CODE-222) by @PeronGH in #164
  • fix(schema,assets,daemon): ship codex win32 sandbox helpers next to the managed binary (CODE-234) by @PeronGH in #159
  • test(perf): conversation hot-path timing harness by @AprilNEA in #168
  • feat(ui): add GPT-5.6 Sol/Terra/Luna to the codex static model table by @lucas77778 in #167

New Contributors

Full Changelog: v0.4.2...v0.5.0

v0.4.2

What's Changed

  • chore(desktop): bump version to 0.4.1 by @AprilNEA in #86
  • chore: monorepo eslint typecheck setup by @SukkaW in #77
  • feat(agent-adapter): opencode permission/question round-trip, error surfacing, non-blocking prompt by @lucas77778 in #75
  • fix(assets): keep boot garbage collection best-effort on directory errors by @AprilNEA in #85
  • chore: node 26 toolchain by @Zerlight in #88
  • feat: implement a global keyboard shortcut registry by @Zerlight in #87
  • chore(deps): add Dependabot for pnpm catalog, cargo, and GitHub Actions by @AprilNEA in #82
  • feat(transport): tunnel token + subprotocol + auto-reconnect in WsTransport (CODE-92 phase 1) by @AprilNEA in #64
  • chore(deps): adopt native TypeScript 7 for typecheck by @AprilNEA in #70
  • feat: LinkCode Cloud tunnel — device identity, HQ uplink, mobile remote access by @AprilNEA in #81
  • feat(im): IM Channel client chain — wire contract, scoped subscriptions, im-render, Telegram settings UI by @AprilNEA in #95
  • fix(desktop): eliminate dock toggle frame drops by @Zerlight in #96
  • fix(ui): cap composer input height by @Zerlight in #97
  • fix(daemon): self-heal drizzle migration ledger on timestamp drift by @AprilNEA in #100
  • fix(desktop): resolve cloud-auth storage path lazily and prune undecryptable entries by @AprilNEA in #101
  • feat(daemon,schema,common): profile-scoped state dirs and profile-aware daemon discovery by @AprilNEA in #103
  • feat(desktop): channel/profile identity applied as first import; thread profile to daemon by @AprilNEA in #104
  • feat(agent): add first-class slash and shell commands by @lucas77778 in #99
  • fix(ui): remove truncate and add tooltip to prompt by @Zerlight in #102
  • feat(ui): icon-based sidebar host footer by @AprilNEA in #106
  • feat(settings): Codex-style grouped settings nav + General/Appearance split by @AprilNEA in #107
  • feat(settings): live settings search over the grouped sidebar nav by @AprilNEA in #108

New Contributors

Full Changelog: v0.4.1...v0.4.2

v0.4.1

What's Changed

  • feat(desktop,workbench,engine): OS notifications for background sessions by @AprilNEA in #57
  • feat(workbench,ui): navigation system and browse provider history import by @Zerlight in #69
  • fix(desktop): center macOS traffic lights on Tahoe by @Zerlight in #72
  • feat(ui): improve cmdk UI by @Zerlight in #74
  • fix(desktop): improve sidebar and add history import shortcut by @Zerlight in #80
  • fix(ui): terminal CJK/emoji font fallbacks + restty 0.2.0 migration by @AprilNEA in #79
  • feat: Account system — multi-account switching, provider conversion, AI gateway, Providers settings UI by @AprilNEA in #71
  • fix(agent-adapter): handle claude-code compaction so history isn't lost on auto-compact by @lucas77778 in #76
  • fix(agent-adapter): replay codex tool calls in history so they survive a session switch by @lucas77778 in #73
  • fix(desktop,transport): centralize daemon connection recovery by @AprilNEA in #83
  • chore(deps): bump agent SDKs — claude 0.3.206, codex 0.144.1, opencode 1.17.18, pi 0.80.6 by @AprilNEA in #84

Full Changelog: v0.4.0...v0.4.1

v0.4.0

What's Changed

  • feat(workbench,desktop): discover online cloud hosts in the footer (CODE-91) by @AprilNEA in #47
  • fix(ui): collapse right-panel section tabs to icons when narrow by @AprilNEA in #65
  • fix(desktop): Windows/Linux window controls + taskbar icon identity by @AprilNEA in #66
  • feat(desktop,agent-adapter): detect claude-code logged-out state and add in-app login by @AprilNEA in #68

Full Changelog: v0.3.0...v0.4.0

v0.3.0

What's Changed

  • feat(daemon): detect installed agent CLIs and serve runtime availability (CODE-110) by @AprilNEA in #49
  • feat(desktop): drop builtin agent binaries — 425 MB → 158 MB zip (CODE-114) by @AprilNEA in #50
  • fix(daemon): spawn the default terminal shell as a login shell on macOS by @AprilNEA in #51
  • fix(workbench): creating a new conversation briefly flashes the previous conversation by @lucas77778 in #45
  • chore(ui): add Fable 5 to the claude-code model options by @AprilNEA in #53
  • feat(agent-adapter): drive codex via app-server by @lucas77778 in #40
  • managed assets: download, verify, and install agent CLI pairs and toolchains (CODE-111) by @AprilNEA in #54
  • fix(preview): open agent-produced files outside the workspace by @AprilNEA in #55
  • feat: wire claude-code AskUserQuestion end-to-end into the prompt dock (CODE-118) by @AprilNEA in #56
  • feat(ui,workbench): agent runtime onboarding — guided managed downloads (CODE-112) by @AprilNEA in #59
  • feat: reflect the session's actual model/effort in the composer by @AprilNEA in #60
  • feat(desktop): manage account via the IdP account center (CODE-90) by @AprilNEA in #39
  • fix(engine,client-core): replay live status and open asks on session.attach (CODE-119) by @AprilNEA in #58
  • build(desktop,daemon): package from a prod-deploy staging dir; fix Windows daemon crash (CODE-107) by @AprilNEA in #62
  • chore(desktop): bump version to 0.3.0 by @AprilNEA in #63

Full Changelog: v0.2.1...v0.3.0

v0.2.1

What's Changed

  • fix(desktop): treat unpackaged production runs as dev shell (CODE-102) by @AprilNEA in #44
  • refactor(desktop): JSON-import package.json in electron.vite config + typecheck the config by @AprilNEA in #43
  • feat: subagent (Task/Agent tool) support — nested transcript card + viewer (CODE-80) by @AprilNEA in #37
  • fix(desktop): packaged agents fail with spawn ENOTDIR; ship the claude CLI outside the asar by @AprilNEA in #48

Full Changelog: v0.2.0...v0.2.1

v0.1.1

What's Changed

  • feat(ui): implement unified new session uiux by @Zerlight in #35
  • feat: Artifacts P1+P2 — inline artifacts, files viewer, preview proxy, browser pane, sandboxed hosting (CODE-58..62) by @AprilNEA in #36
  • feat(desktop): LinkCode Cloud sign-in in the sidebar footer by @AprilNEA in #38
  • fix(desktop): packaged app crashes on launch — bundle workspace deps + pin userData by @AprilNEA in #42

Full Changelog: v0.1.0...v0.1.1

v0.1.0

What's Changed

  • chore(license): adopt BUSL-1.1 with brand and third-party licensing by @AprilNEA in #7
  • feat: interactive PTY terminals via Rust sidecar by @AprilNEA in #8
  • fix(agent-adapter): rebuild claude-code on streaming input for live m… by @lucas77778 in #10
  • feat(ui): wire per-adapter model switching into the composer by @lucas77778 in #11
  • feat(ui): render chat markdown with streamdown by @AprilNEA in #12
  • chore(deps): clear npm audit vulnerabilities (FOSSA Security) by @AprilNEA in #13
  • feat(agent-adapter,ui): composer reasoning-effort selector for claude-code by @lucas77778 in #16
  • feat(workbench): frontend mock data host for dev by @Zerlight in #14
  • feat(ui): implement session approval policy selection in composer by @Zerlight in #20
  • fix(agent-adapter): guard opencode consumeEvents against unhandled rejections by @AprilNEA in #22
  • fix(daemon,engine): silent failures & dead safety nets — persistence, provider config, PTY sidecar, process bulwark by @AprilNEA in #23
  • refactor(ui): dedupe repeated visual recipes — copy button, tooltip button, panel tabs, git cards, thread-nav props by @AprilNEA in #27
  • chore: audit misc — dead exports, misplaced helpers, small dedups by @AprilNEA in #28
  • fix(desktop): lock down window navigation for agent-authored links + single-instance lock by @AprilNEA in #24
  • refactor(settings): sink the duplicated settings surface into packages/ui by @AprilNEA in #25
  • fix(tooling,docs): restore the lint gate and re-sync docs with reality by @AprilNEA in #26
  • refactor(agent-adapter): lift duplicated segment/delta machinery into BaseAgentAdapter by @AprilNEA in #29
  • refactor(client-core,engine): split god files, PendingRegistry, options-object Engine ctor by @AprilNEA in #30
  • refactor(transport,schema): collapse hand-copied contract tables by @AprilNEA in #31
  • fix(workbench,ui): sidebar loading skeleton + composer caret layout effect by @AprilNEA in #32
  • feat(ui): improve conversation UI by @Zerlight in #33
  • feat(agent-adapter): parse claude-code Edit/Write input into structured diff content by @lucas77778 in #21
  • feat(sessions): sidebar close stops the session and deletes its record by @lucas77778 in #18

New Contributors

Full Changelog: https://github.com/arcboxlabs/linkcode/commits/v0.1.0