fix(web): unify focus ring styles across sidebar and app#1079
fix(web): unify focus ring styles across sidebar and app#1079juliusmarminge merged 1 commit intopingdotgg:mainfrom
Conversation
The sidebar components used `ring-sidebar-ring` which was never defined in the theme CSS, causing focus rings to fall back to `currentColor` (grey) instead of the app's blue `--ring` token. Thread rows had their focus ring explicitly suppressed with `focus-visible:ring-0`. - Replace `ring-sidebar-ring` with `ring-ring` in all sidebar UI primitives (SidebarGroupLabel, SidebarGroupAction, SidebarMenuButton, SidebarMenuAction, SidebarMenuSubButton) - Restore focus visibility on thread rows with `ring-1 ring-inset` to avoid clipping on first/last items Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
While I was continuing with better sidebar navigation. I thought it might make sense to actually keep the difference in focus-color: My preference would be: So if you're open for proper keyboard navigation in the projects treeview, i'd partly reverse my own PR before it's even merged 😂 |
commit cc2ab000745f71a07220d1ad620b1f23b4f6f430
Author: Stefan Wintergerst <wintergerst.stefan@googlemail.com>
Date: Sat Mar 14 17:03:35 2026 +0100
chore: add .idea/ to .gitignore (#1077)
commit 8b8e8b38e57ab782d085e5ecf2ae970f6e796a3f
Author: Xanacas <53140620+Xanacas@users.noreply.github.com>
Date: Sat Mar 14 16:51:37 2026 +0100
fix(web): unify focus ring styles across sidebar and app (#1079)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
commit 46ea594f02fb5f1e0b82430ddbd07ccf41a77a0d
Author: Vitor Buzinaro <funny.hc@gmail.com>
Date: Fri Mar 13 22:05:12 2026 -0300
Actions dialog: autofocus script-name field (#912)
commit 790fda1a97476e4d7048a521651180ed0ba811c3
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Sat Mar 14 05:29:22 2026 +1100
feat(github): add issue templates for automatic triage (#896)
commit 89ffcf42eb781eddf357c07199607e3d7bccf0c5
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 23:24:42 2026 -0700
Upgrade oxfmt and oxlint tooling versions (#1010)
commit 876bbd715ae6aa8e1d663455747e17c92e0a287c
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 21:03:21 2026 -0700
Extract reusable clipboard hook and standardize media queries (#1006)
Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
commit ac0d1f52a087c63819b2b032ac4535d18d3c23af
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Fri Mar 13 14:47:29 2026 +1100
fix(web): defer diff worker startup until diff opens (#934)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit d0ae0adc9923e51f7027ee16afedb14b3ae7779c
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Fri Mar 13 14:18:20 2026 +1100
fix(web): add default thread env mode setting (#892)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 995a26660edbce7cca15da812972c23151a35f3d
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Fri Mar 13 16:18:03 2026 +1300
chore: Upgrade marketing app to Astro 6 (#1005)
commit dfd62cfb868935787560b88b0c399f0ce9081a9f
Author: dpav02 <dpav02@gmail.com>
Date: Thu Mar 12 22:43:07 2026 -0400
fix(desktop): show dialog after "Check for Updates" menu action (#955)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
commit 64dc07a8e5a6d7e34de4e85a07126a9c04e462d3
Author: Zortos <zortosdev@proton.me>
Date: Fri Mar 13 03:42:59 2026 +0100
Add compact Codex tool-call icons and details to the chat timeline (#988)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit ae4ae9973cd6cebc7d557e64e876534f15c916fd
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Fri Mar 13 15:30:47 2026 +1300
chore: update @vitejs/plugin-react to 6.0.0 (#1002)
commit 36473f7de6f32bb2765e0ad2b08e2a0c2e737d63
Author: Zortos <zortosdev@proton.me>
Date: Fri Mar 13 03:26:14 2026 +0100
feat: replace worktree toggle with discoverable Select dropdown (#1001)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit a14debc83e04ee4b28d9e3eb830f0cf74d489f93
Author: (CJ) Chukwudi Nwobodo <142016413+chuks-qua@users.noreply.github.com>
Date: Fri Mar 13 00:24:53 2026 +0000
fix: block image uploads during plan mode questions (#621)
commit 71a7473a81c75a70bef55844a410e5d7f1e5de10
Author: (CJ) Chukwudi Nwobodo <142016413+chuks-qua@users.noreply.github.com>
Date: Thu Mar 12 23:33:37 2026 +0000
fix: composer @file autocomplete cursor and spacing bugs (#936)
commit 5c03fb62c4ede0a347938b796a611d5f6b9d61fb
Author: WilgotM <wilgot10@yahoo.com>
Date: Fri Mar 13 00:28:32 2026 +0100
Add Antigravity to supported editors in Open menu (macOS, Windows, and Linux) (#841)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 727c0cfcbf1733edd9f23974f67c755ccbf6eee5
Author: Hugo Blom <6117705+huxcrux@users.noreply.github.com>
Date: Thu Mar 12 23:58:51 2026 +0100
feat: Allow Overriding Timestamp Format in Settings (#855)
commit dcd2e5c34fbbf6cba7cdb23caef86568771a78d4
Author: Noah Gregory <noah@wts.dev>
Date: Thu Mar 12 16:03:55 2026 -0400
fix: don't restart the app on normal exists in dev runner (#986)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 1e276573c2925827691bb9840c21e8e130834aad
Author: Kiyotaka <maskdotdev@gmail.com>
Date: Thu Mar 12 15:00:08 2026 -0500
feat: add fuzzy workspace entry search (#256)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit db17ff332307e6c80d034e6c13932d4bc253bca3
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 12:40:08 2026 -0700
fix syntax errors from bad merge
commit b496ae839529b910d5a35e9e05d6be704a41b5a5
Author: Qiaochu Hu <110hqc@gmail.com>
Date: Fri Mar 13 03:35:21 2026 +0800
fix: add error logging for code highlighting failures (#951)
commit 724f54c2c1f4a1efcd7423a5ff0e3db625629815
Author: Qiaochu Hu <110hqc@gmail.com>
Date: Fri Mar 13 03:32:00 2026 +0800
fix: clean up timeout in PlanSidebar to prevent memory leaks (#949)
Co-authored-by: hobostay <hobostay@users.noreply.github.com>
commit b6eba3347d7a4153981269b064c4cee3b0166ebb
Author: Qiaochu Hu <110hqc@gmail.com>
Date: Fri Mar 13 03:31:19 2026 +0800
fix: add logging for WebSocket errors (#948)
Co-authored-by: hobostay <hobostay@users.noreply.github.com>
commit 74c22628b3f94b10cf9cef275fef19c5d210deb4
Author: Adam Naji <110662505+Bashamega@users.noreply.github.com>
Date: Thu Mar 12 21:29:07 2026 +0200
chore: update actions/checkout and actions/github-script (#956)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 224acebb57815193ef93c2d1861e606a626d23b3
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Fri Mar 13 06:15:01 2026 +1100
fix(web): add pointer cursor to running stop-generation button (#900)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 85c174a6cac04b4fda68f311a904af0435c85807
Author: Alex Schwartz <alexschwartz01@gmail.com>
Date: Thu Mar 12 15:09:41 2026 -0400
fix: Linux icon now shows up (#807)
commit 581d242925f80079b8add8433e0b1614bd362d88
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 12:01:55 2026 -0700
remove triggers
commit d9d0216e98062bb69c0b3f7cb67cd9a3c5742216
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 12:01:27 2026 -0700
fix pr size workflow
commit c52ad29b31e890164d0e22443f36c1e39483d3bc
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 11:41:13 2026 -0700
Fix mod+N new thread flow and terminal split limits
- ensure `chat.new` creates a fresh draft after a promoted draft thread
- enforce terminal cap per split group (4) while allowing additional terminal groups
- refine sidebar row selected/active styling via shared class-name logic and tests
commit fcbf3f3c225ab41c44af3759ae27d8520ced61a4
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 12 11:19:55 2026 -0700
Fix new-thread shortcuts when terminal is focused
- move chat-wide key handling into `_chat` route-level shortcut handler
- extract reusable `useHandleNewThread` hook and `isTerminalFocused` helper
- update browser WS fixture to support `terminalOpen` RPC shape
commit ab0002f99d6fb5555c57bc91f696e6a9f8f4dfd7
Author: Donald Silveira <donaldsilveira@gmail.com>
Date: Thu Mar 12 15:48:23 2026 -0300
update project removal copy (#981)
commit f63cda22fa6e9b98de1caec057960dce28248d37
Author: Noah Gregory <noah@wts.dev>
Date: Thu Mar 12 14:24:10 2026 -0400
fix: improve business logic in prompt editor and fix cursor bugs in Plan mode (#867)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit b60a34eba46ffb3e97d90a644280ba743870d85d
Author: Noah Gregory <noah@wts.dev>
Date: Thu Mar 12 14:13:37 2026 -0400
fix: fix logo aligment regression on macOS (#960)
commit ed4be2c849c56c105dd7ccef6b3b5908ebbc2acd
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Fri Mar 13 07:12:18 2026 +1300
fix: Fix response duration for agent to no longer always be 1ms (#866)
commit 5e23e9c7c744724b3d17d4562aa01ce64d25066b
Author: Noah Gregory <noah@wts.dev>
Date: Thu Mar 12 14:10:58 2026 -0400
add Ymit24 to vouched list (#959)
commit c3bfcc36b870adbdb01552a7c6b9313a836d7d75
Author: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com>
Date: Thu Mar 12 17:50:49 2026 +0000
feat: add selective file staging to commit dialog (#872)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit a33cc8c75874bf89050ae90c58c5b6227debd4e2
Author: eggfriedrice <eggfriedricew.g.o@gmail.com>
Date: Thu Mar 12 17:44:16 2026 +0000
fix: diff panel unclosable after retainSearchParams middleware (#937)
commit a01d712751f8103001b5e728d64c12bc7c3d652a
Author: Magnus Buvarp <magnus.buvarp@gmail.com>
Date: Thu Mar 12 18:42:17 2026 +0100
fix(web): resolve preferred editor from available editors & introduce `useLocalStorage` helper (#662)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 774cff9a74bbd937021e27da524b96dbb7319a7c
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Fri Mar 13 03:10:07 2026 +1100
ci(github): add pull request size labels (#901)
commit e3d46b687ce2537b4761ab9ae1c50db6708d3948
Author: Ymit24 <christianryansmith@gmail.com>
Date: Wed Mar 11 21:21:22 2026 -0500
feat: split out components from ChatView.tsx (#860)
Co-authored-by: Christian Smith <chris@Christians-MacBook-Air.local>
commit 8636ea0ec4163714a445cf4b11d53bbf88fd9ee7
Author: Theo Browne <me@t3.gg>
Date: Wed Mar 11 17:16:51 2026 -0700
Add maria-rcks to the list of contributors
commit ff6a66dcabfcfcf28c8c8feb126a7b90842d6368
Author: David Balderston <dbalders@gmail.com>
Date: Wed Mar 11 14:05:17 2026 -0700
Use live thread activities for sidebar status pills (#919)
commit 2ac735657e2ecf8b227c5e7685d2606063f055cf
Author: maria <maria@kuuro.net>
Date: Wed Mar 11 18:03:49 2026 -0300
chore(release): align package versions before building artifacts (#933)
commit bbab1fc891650bcd303f69f873b609ab295b7f4c
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Wed Mar 11 17:27:36 2026 +0000
chore(release): prepare v0.0.10
commit 82a50da8b1f72da407a0c596a7be6b62e2ead284
Author: Julius Marminge <julius0216@outlook.com>
Date: Tue Mar 10 18:49:04 2026 -0700
revert formatting on mockServiceWorker.js
commit 7ddcb239c5ce4031653afbc404a860ccf5606549
Author: eggfriedrice <eggfriedricew.g.o@gmail.com>
Date: Wed Mar 11 01:42:39 2026 +0000
feat: persist diff panel state across thread navigation (#875)
commit 9e4e22197045a2d2ba7ba7d7813054e49234f6f1
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Wed Mar 11 11:55:36 2026 +1100
chore: added `eggfriedrice24` to vouched list (#869)
commit e8b0126371a0d72b2a2ad71a4829e452a109a566
Author: eggfriedrice <eggfriedricew.g.o@gmail.com>
Date: Tue Mar 10 23:54:47 2026 +0000
fix: checkpoint diffs never resolve (shared PubSub subscription) (#595)
commit 90d9a2ad1f1810b27d88f0dfc38304ec5b1de566
Author: ranvier2d2 <155869139+ranvier2d2@users.noreply.github.com>
Date: Tue Mar 10 20:50:18 2026 -0300
fix: map gitignore to ini for Shiki syntax highlighting (#848)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
commit 065ef922bdd29693738cd72f6e5e737bd93133f8
Author: Julius Marminge <julius0216@outlook.com>
Date: Tue Mar 10 16:21:28 2026 -0700
Require bun fmt for completion and clarify Electron history
- Update AGENTS.md task completion requirements to include `bun fmt`
- Add an inline note explaining why Electron uses hash history
commit 7d115334902046e42e843779f91e275ff1c96a27
Author: Jason Laster <jason.laster.11@gmail.com>
Date: Tue Mar 10 15:54:34 2026 -0700
Stabilize runtime orchestration and fix flaky CI tests (#488)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 1031a226f8cf90d358d9768fc0842dcdae61a315
Author: Julius Marminge <julius0216@outlook.com>
Date: Tue Mar 10 15:05:41 2026 -0700
Fix cross-repo PR detection and push remote selection (#788)
commit ddd98876b5fe3dcb789a36ab799e6e211a1bcb5a
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Wed Mar 11 08:42:39 2026 +1100
fix: invalidate workspace entry cache after turn completion and revert (#796)
commit dfd41da2fdc7e9268fe0e46d3ab29d1f2161b3a2
Author: Adam Naji <110662505+Bashamega@users.noreply.github.com>
Date: Tue Mar 10 23:41:02 2026 +0200
Fix Windows keybindings for font size: use Ctrl+ to increase (#786)
commit b37279ca2117a8de4d14256c0c29c4d4429e6aa7
Author: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Date: Wed Mar 11 00:16:49 2026 +0530
fix: prevent Codex overrides footer overflow with long binary paths (#707)
commit 13eeb07f5f4b582e2ff824db382ff8917489c5c6
Author: Julius Marminge <julius0216@outlook.com>
Date: Tue Mar 10 10:38:11 2026 -0700
prevent squashing some know errors
commit 1e9bac7f6e783fe0498ddeb8392c5f4b50aad19d
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Wed Mar 11 06:23:52 2026 +1300
Sync desktop native theme with web theme setting (#800)
commit 1c290767f22f9d8c7d3fa378d9450c8f48184679
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Wed Mar 11 04:16:37 2026 +1100
fix: use commit as the default git action without origin (#642)
* fix(web): avoid push and PR defaults without origin
* fmt
* object here too
---------
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 9becb3f40af504244f85823bb19f18bfe507ca49
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Wed Mar 11 04:14:58 2026 +1100
fix(server): skip auth check when Codex CLI uses a custom model provider (#649)
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 2c351726ae21a73ac0549500783d5a4de6394214
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Wed Mar 11 03:46:24 2026 +1100
fix(contracts): align terminal restart input type across IPC, WS, and server (#597)
commit 9e891d2e97d65a6e211e3da8ee95807b9a091563
Author: Weld <WeldFire@users.noreply.github.com>
Date: Tue Mar 10 11:45:39 2026 -0500
Display application version in sidebar and settings (#720)
commit b8d07eb852e5ea30717f4079595eb68515e930cf
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Wed Mar 11 05:18:22 2026 +1300
Add downloads page and shared marketing layout (#802)
commit 223c3dc8005b583b19c502320f5de929958a7efd
Author: Jason Laster <jason.laster.11@gmail.com>
Date: Tue Mar 10 00:17:18 2026 -0700
chore(ci): add and apply `fmt:check` script (#779)
* Add formatting conventions
* Add a fmt lint check
* rely on defaults
---------
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit afb6e89bfdd9164c142162597bb865540b1909d2
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Tue Mar 10 18:03:37 2026 +1100
feat(web): add shift-click multi-select for sidebar threads (#651)
* feat(web): add shift-click multi-select for sidebar threads
Add support for selecting multiple threads in the sidebar via
Cmd/Ctrl+Click (toggle) and Shift+Click (range select), with
bulk context menu actions for Delete and Mark Unread.
- New threadSelectionStore (Zustand) for ephemeral selection state
with anchor-based range selection and no-op guards
- Platform-aware modifier detection (Cmd on Mac, Ctrl elsewhere)
matching existing isMacPlatform pattern in terminal-links
- Extracted deleteThread helper from handleThreadContextMenu for
reuse by bulk delete, with deletedThreadIds set for correct
fallback navigation during batch operations
- Selected threads share the active thread highlight style
- Escape key clears selection; plain click clears and navigates
- Right-click on selected thread shows bulk menu; right-click on
unselected thread clears selection and shows single-thread menu
- 22 unit tests covering toggle, range select, clear, remove,
and edge cases (cross-project fallback, anchor stability)
* fix(web): filter deleted threads from worktree orphan check during bulk delete
When bulk-deleting threads that share a worktree, the stale threads
closure caused getOrphanedWorktreePathForThread to see the other
threads-being-deleted as still alive, suppressing the orphaned
worktree cleanup prompt. Filter out deletedThreadIds (keeping the
current thread) so the check correctly identifies worktrees that
will have no surviving references.
* fix(web): fix shift-click range selection, distinct selection styling, and deselect on click away
* Preserve thread multi-select on safe sidebar control clicks
- avoid clearing selection on mousedown for thread items and marked safe controls
- centralize the selection-safe selector and add logic tests for clear vs preserve behavior
- simplify thread selection store typing by merging state/actions interface
---------
Co-authored-by: Julius Marminge <julius0216@outlook.com>
commit 9309edf4f42c59de6489f0ea1a6b72578d637b9d
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 22:41:22 2026 -0700
rm test
commit d28ced8fd7471302d42e2e272fcbd62f9b1404c8
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 22:36:22 2026 -0700
Move PR checkout flow to dialog and drop /checkout-pr command
- Replace the inline composer PR menu with a dedicated `PullRequestThreadDialog`
- Remove `/checkout-pr` from composer slash-command parsing and tests
- Fix branch selector virtualization sizing for the checkout-PR row
commit 076608021c89afb294f4bdc75d99018936540c95
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 17:30:17 2026 -0700
Namespace PR worktree branch names under t3code
- Change local PR worktree branch format from `pr/<number>-<head>` to `t3code/pr-<number>/<head>`
- Update GitManager tests to assert the new branch naming convention
commit fb4f9aa58ef67d192c7692dcfcb58c00a8fb7705
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 17:09:08 2026 -0700
Use repo initial branch in GitCore PR fetch integration test
- Return `initialBranch` from test repo setup helper
- Replace hardcoded `main` checkout/push/assertions with detected branch name
commit de21f4dcd74037dc48d255e06ec27fd58187367b
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 16:56:48 2026 -0700
Use GitHubCliLive as default test layer
- Wire `it.layer` to `GitHubCliLive` in `GitHubCli.test.ts`
- Remove redundant `Effect.provide(GitHubCliLive)` calls in individual tests
commit 442bc9540ea52e82ad15aee06e52da2c5e16f948
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 16:52:28 2026 -0700
Normalize remote URL matching and migrate GitHubCli tests
- Treat remotes that only differ by trailing slash after `.git` as the same remote
- Add a GitCore regression test for trailing-slash remote reuse
- Refactor `GitHubCli` tests to `@effect/vitest` layer-based effect tests with reset cleanup
commit f7570712a741136999a77d5a8f6490a8c7d9e249
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 16:46:53 2026 -0700
Avoid fork PR head branch collisions when creating worktrees
- create a unique local branch name for cross-repo PR worktrees (`pr/<number>-<head>`)
- fetch/set upstream against that local branch instead of overwriting local `main`
- add regression tests for fork PRs where head branch is `main`
commit 2847655a1a1f8f45d64224ee45b9262a1fc14dfc
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 16:35:04 2026 -0700
Validate GitHub CLI JSON with Effect Schema decoders
- Replace manual JSON parsing with shared schema-based decoding helpers
- Normalize PR and repository payloads after decoding for safer typed outputs
- Improve invalid JSON error mapping with operation-specific GitHubCliError details
commit 268016d872e724bd996fcd585835d169db903814
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 16:00:02 2026 -0700
Fix PR thread upstream tracking for fork branches
- Restore/set upstream tracking when preparing local and reused PR worktrees
- Derive fork `owner/repo` from PR URL when GitHub omits `headRepositoryNameWithOwner`
- Expand GitManager tests to cover local mode, URL-derived fork identity, and reused worktree upstream recovery
commit ac3f22c274e5b116b04220b29d1470e9d39bd0f2
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 14:57:59 2026 -0700
Inline branch picker filtering and drop PR-only shortcut
- move branch filtering logic into `BranchToolbarBranchSelector`
- remove unused `filterBranchPickerItems` helper and related tests
- keep create-branch option pinned while filtering by query
commit b36888e9cc3692f931081a4d09bd58438d5f06eb
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 12:24:28 2026 -0700
Preserve fork PR upstreams when preparing local and worktree threads
- add GitCore helpers to ensure remotes, fetch remote branches, and set upstreams
- extend GitHub CLI parsing to include cross-repo PR metadata and repo clone URLs
- update GitManager flow and tests to materialize fork heads and keep tracking on fork remotes
commit 9bb9023009b0c45c66a609c386cd233855043caf
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 12:03:24 2026 -0700
Handle branch selection across main and secondary worktrees
- add `resolveBranchSelectionTarget` to unify checkout cwd/worktree decisions
- reuse existing worktrees when available, including switching back to main repo
- update branch selector to use shared logic and add targeted unit tests
commit f70cb5de4517e55f62ed2c71e49291d97a7dc927
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 11:56:11 2026 -0700
Refine branch picker behavior and gate /checkout-pr by thread type
- Add shared branch picker filtering logic and tests, including PR-reference-only results
- Improve branch selector UX/perf with deferred query filtering, conditional virtualization, and status-based current branch resolution
- Only expose and handle `/checkout-pr` for local draft threads in chat and toolbar UI
commit 3d3586800ebfbefb97a4a782dae3439e90ba9065
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 11:00:23 2026 -0700
Add pull-request thread setup for local and worktree modes
- Add git APIs to resolve PR refs and prepare PR thread workspaces
- Support fetching PR head refs into local branches and reusing existing worktrees
- Wire new websocket/contracts/web composer flows for PR-based thread creation
- Expand server/web/contracts tests for PR routing and branch/worktree behavior
commit 767de271e972b38de0633c04efcd62a929790b3e
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 22:46:38 2026 -0700
Use Effect UUID generator as randomUUID fallback
- Replace manual UUID byte formatting fallback in `apps/web/src/lib/utils.ts`
- Use `Effect.runSync(Random.nextUUIDv4)` when `crypto.randomUUID` is unavailable
commit 9d2c2cae375b6dfc7469c1ada07a109779364846
Author: Hiram Chirino <hiram@hiramchirino.com>
Date: Mon Mar 9 07:30:00 2026 -0400
fix(web): polyfill crypto.randomUUID for non-secure HTTP contexts
Replace direct crypto.randomUUID() calls with a randomUUID() helper in
utils.ts that falls back to crypto.getRandomValues() when the browser
is not in a secure context (e.g. plain HTTP on a non-localhost address).
Signed-off-by: Hiram Chirino <hiram@hiramchirino.com>
commit dcccca3f7b5d089f9946b866c9a149e94fd4c616
Author: David Balderston <dbalders@gmail.com>
Date: Mon Mar 9 19:38:51 2026 -0700
Fix UI Overflow when Github Action is 'Commit, Create & Push PR'
Fixes: #769
* Updated wording for label from 'Commit, Create & Push PR' to 'Commit, Create & PR' to allow for it to fit within the current UI size constraints.
wording change
commit 4ed89e4ba72e47f7919b3b8e08d375bc912d89e4
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 17:16:44 2026 -0700
Treat retryable Codex errors as runtime warnings
- Map Codex `error` notifications with `willRetry: true` to `runtime.warning`
- Keep active turns/sessions running during reconnect warnings
- Add adapter and ingestion tests for retry-warning behavior
commit 99dbe4ff02d9ee8e5450e96d84e8f96170c64a71
Author: Satyam Bansal <sbansal1999@gmail.com>
Date: Tue Mar 10 00:41:17 2026 +0530
fix(web): disable add project button for empty path
commit 2fc0b01c18ab8ec92eaabb56cfdd92d070cd9a35
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 15:16:16 2026 -0700
fmt
commit 3a86b60680f147ef1420558548354bbfa0253f5b
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 15:12:42 2026 -0700
Render collapsed plan preview directly as markdown
- remove deferred collapsed preview state in `ProposedPlanCard`
- always render collapsed preview with `ChatMarkdown` for simpler, consistent display
commit eb7c428a2d3438f2ba72fb83c5df750236517a77
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 15:09:04 2026 -0700
Defer proposed plan rendering until expand in ChatView
- Keep long plan cards collapsed with lightweight preview text by default
- Render full plan markdown only after explicit expand to reduce thread open slowness
- Add tests for preview/strip helpers and browser coverage for expand behavior
commit 9fb9467ed1cf296c964a7a7d7a99ab1ad4e5e422
Author: Cursor Agent <cursoragent@cursor.com>
Date: Mon Mar 9 22:04:02 2026 +0000
fix: keep suppressProjectClickAfterDragRef true on drag cancel to prevent unintended toggle
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
Applied via @cursor push command
commit e42036485fd7fe19c8536ba3fd59573ebf592349
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 14:25:06 2026 -0700
Improve project drag collision detection in sidebar
- Prefer pointer-based hit testing during project reordering
- Fall back to corner-based collision to make drop targeting more reliable
commit f9c3aff294e7493751f36504f65089fd2d5586fd
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 14:13:55 2026 -0700
no longer need experimental for tsconfig aliases
commit 3503dbc7d5b22d9947744ee4e2ee2324d9303825
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 14:12:19 2026 -0700
pin vite
commit b5dde6b9d865930bc2b981816dde3f614e892813
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 11:42:13 2026 -0800
Prevent stale click suppression after project drag cancel
- Reset post-drag click suppression when drag is canceled
- Consume only the synthetic click after drag release, then clear suppression
commit a6b22ec1c9b247536111dd2c2e8682f9b3f550c5
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 11:39:29 2026 -0800
Fix project drag clicks and sidebar collapse/scroll behavior
- prevent accidental project toggles after drag operations
- switch project rows to Collapsible for stable expand/collapse animation
- add optional hidden scrollbar mode to ScrollArea and apply it in SidebarContent
commit bb49ebf6e54a078f9937f85de338ac5c8fc4a236
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 10:48:07 2026 -0800
Add drag-and-drop project reordering in the sidebar
- wire project list to dnd-kit sortable with vertical drag constraints
- prevent accidental expand/collapse clicks during drag gestures
- update store logic/tests and add dnd-kit dependencies
commit 2f5e62602948ba624fa470ea8c9f6e9dc1cb0557
Author: Levi <levicrider08@gmail.com>
Date: Mon Mar 9 13:55:22 2026 -0500
Fix project name badge truncation in chat header
Remove the hard max-w-28 (112px) cap and shrink-0 on the project name
badge so it uses available flex space instead of aggressively truncating.
commit 82c0a45ea0334a8ffd5747e080ca693f54921d66
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 13:00:27 2026 -0700
Use Debouncer for composer draft persistence writes
- Replace manual timeout/pending-value debounce logic with `@tanstack/react-pacer` `Debouncer`
- Keep `removeItem`/`flush` behavior while simplifying and standardizing persistence timing
commit e765051f148bf6006e30118eb47f5d33ea9e32be
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 12:45:34 2026 -0700
Use React Pacer throttler for domain event snapshot sync
- Replace manual timeout-based domain event batching with `Throttler`
- Keep provider query invalidation batched with trailing 100ms flushes
- Cancel throttler and reset invalidation flag during EventRouter cleanup
commit f5e4df5cab247021501876358fd72c7196cd96b9
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 12:28:26 2026 -0700
Use Debouncer for store state persistence
- Replace manual timeout debounce logic with `@tanstack/react-pacer`'s `Debouncer`
- Persist updates via `maybeExecute` to reduce localStorage write thrashing
- Flush pending persistence on `beforeunload` to avoid losing recent state
commit 1f47cc6f4e51d236421d45bafabaa3bbf2576c3f
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 12:23:33 2026 -0700
Remove ProviderHealth onReady callback from service interface
- Drop the unused `onReady` hook from `ProviderHealthShape`
- Keep startup health status access focused on `getStatuses`
commit 074d3af79c3a19e7fc0d4c3ec2f3a6c6b6e46d55
Author: Tim Smart <hello@timsmart.co>
Date: Mon Mar 9 12:18:33 2026 -0700
cleanup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
commit 6593645c8092696403f39e7d6eeebeec190385dc
Author: Chukwudi Nwobodo <cjnwob@gmail.com>
Date: Sun Mar 8 06:22:26 2026 +0000
perf: run provider health checks in background, notify clients on ready
The ProviderHealth layer blocked server startup with two sequential CLI
spawns (codex --version + codex login status), each with a 4-second
timeout, delaying startup by up to 8 seconds.
Run health checks in the background via Effect.runPromise so the layer
resolves immediately with a placeholder status. Add an onReady callback
to ProviderHealthShape so wsServer can push the resolved statuses to
connected clients once checks complete, preventing early-connecting
clients from showing "Checking..." indefinitely.
commit 296eb82c312b3c36237b51870b9a87249f5c6d83
Author: Chukwudi Nwobodo <cjnwob@gmail.com>
Date: Sun Mar 8 06:22:14 2026 +0000
perf: throttle domain event processing with 100ms batch window
During active sessions, every domain event triggered a full
syncSnapshot (IPC fetch + state rebuild + React re-render cascade) and
sometimes a provider query invalidation. Events fire in rapid bursts
during AI turns.
Replace per-event processing with a throttle-first pattern: schedule a
flush on the first event, absorb subsequent events within a 100ms
window, then sync once. Provider query invalidation is batched via a
flag. Since syncSnapshot fetches the complete snapshot, no events are
lost by skipping intermediate syncs.
commit 7a377fc5e4d607a475a7d36957689562d5dcccb9
Author: Chukwudi Nwobodo <cjnwob@gmail.com>
Date: Sun Mar 8 06:22:02 2026 +0000
perf: debounce Zustand store persistence and deduplicate legacy cleanup
The useStore subscriber called persistState on every state mutation,
triggering JSON.stringify + localStorage.setItem synchronously. It also
ran 8 localStorage.removeItem calls for legacy keys on every fire.
Wrap the subscriber with a 500ms debounce so rapid state changes batch
into a single write. Move legacy key cleanup behind a one-time flag so
it runs only once per page load. Add a beforeunload handler to flush
the final state.
commit 90e0c2ab15e7034d8e6e0688b3996fd905c03017
Author: Chukwudi Nwobodo <cjnwob@gmail.com>
Date: Sun Mar 8 06:21:52 2026 +0000
perf: debounce composer draft localStorage writes
Every keystroke triggered full JSON serialization of all composer drafts
(including base64 image attachments) and a synchronous localStorage
write. At normal typing speed this caused 5+ writes/sec, blocking the
main thread and creating noticeable input lag.
Wrap the Zustand persist storage with a 300ms debounce. In-memory state
updates remain immediate; only the serialization and storage write are
deferred. A beforeunload handler flushes pending writes to prevent data
loss. The removeItem method cancels any pending setItem to avoid
resurrecting cleared drafts.
Adds unit tests for the DebouncedStorage utility covering debounce
timing, rapid writes, removeItem cancellation, flush, and edge cases.
commit 7a3d4d1f31e4316eb832f820012bf575aa57669a
Author: Cursor Agent <cursoragent@cursor.com>
Date: Mon Mar 9 18:57:17 2026 +0000
fix: stabilize onToggleRuntimeMode with useCallback to preserve memo
Co-authored-by: Julius Marminge <juliusmarminge@users.noreply.github.com>
Applied via @cursor push command
commit e354e8697f490c729d7022b28e921f4c12e0a8ae
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 11:17:43 2026 -0700
Prevent compact diff sidebar from breaking chat composer layout
- Add composer footer/action data attributes for targeted width measurement
- Enforce a minimum composer width before allowing inline diff sidebar
commit 993b5785121765a56628bfd4852591f672b743af
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 11:13:09 2026 -0700
Use form clientWidth for composer compact footer checks
- Measure composer width from the form element in initial and resize paths
- Avoid relying on ResizeObserver contentRect width for compact footer layout decisions
commit ed518ef19f33bf073f48fe9b24442f063fa1bee7
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 11:08:07 2026 -0700
Fix provider picker after rebase
Co-authored-by: codex <codex@users.noreply.github.com>
commit 47117a7d85b6696e3ad3ae7d59303b3a60e9eea5
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 10:56:56 2026 -0700
Inline SidebarInset base classes and remove dead sidebar logic
- Replace `SIDEBAR_INSET_BASE_CLASSNAME` with an inline class string in `sidebar.tsx`
- Delete the now-unused `sidebar.logic.ts` helper and its focused unit test
commit f62381090323ae15ffab480bdeeb868e61274fbf
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 10:45:16 2026 -0700
Adapt composer footer to compact controls on narrow widths
- add shared footer layout breakpoint helper with tests
- switch chat composer footer to compact menu when width is constrained
- preserve plan sidebar toggle behavior while consolidating footer actions
commit e9ffd5752bb56854f8693f4a37dee3b3b7afcd3e
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 10:01:33 2026 -0700
Fix plan composer layout and sidebar flex shrink behavior
- add `min-w-0` to chat/flex containers to prevent composer/sidebar overflow
- move `BranchToolbar` into the chat column so layout stays aligned with plan sidebar
- extract sidebar inset base classes to shared logic and add a regression test for `min-w-0`
commit 24122b17629451e4614d34f3b771769e87b99d79
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:28:30 2026 -0700
Stabilize toast stacking offsets to prevent hover flicker
- derive toast indices and Y offsets from the filtered visible toasts
- pass frontmost height and per-toast layout vars to the viewport/item styles
- add unit tests for visible toast layout calculations and height normalization
commit 081a6dacdbb623da0b560360384d58cb95a484e5
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:29:20 2026 -0700
Remove fast-tier icons from model selection UI
- delete `shouldShowFastTierIcon` and its test
- remove Zap icon badges from slash model commands and provider model picker
- simplify related ChatView props and memo dependencies
commit 9fdb45be1efb0e0b542a0dd78d868de6f71d7d4a
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:13:52 2026 -0700
Remove service tier setting from Codex flow and contracts
- Drop `serviceTier` from orchestration/provider contracts and server dispatch paths
- Remove service-tier app setting/UI and related resolver logic
- Keep fast badge behavior tied to explicit fast-mode boolean
commit b946f00f1a31f16a51f9bd1f579baf40c8eaed83
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:42:19 2026 -0700
Show Plan Ready status pill for settled plan threads
- add "Plan Ready" sidebar status when a plan-mode turn is settled with a proposed plan
- update sidebar logic tests to cover the new status and expanded thread inputs
commit b030f69a833802fae9222781ef2dc822dfe81aac
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:14:08 2026 -0700
Show Awaiting Input status in sidebar and extract status logic
- add `Sidebar.logic.ts` to centralize thread status pill resolution
- show `Awaiting Input` when plan mode is blocked on user responses
- add unit tests for unseen completion and status-priority behavior
- prevent plan collapse/expand clicks from triggering chat scroll anchoring
commit b0e1b3368e47c8b470f988312309a9784421b69a
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:21:32 2026 -0700
Show toast when immediate project add fails
- Use a toast error for add-project failures during immediate folder browse
- Keep inline add-project error state for non-immediate flows
- Include `shouldBrowseForProjectImmediately` in callback dependencies
commit ce7b24bfb151cc5dfee54d669c3490611e74119e
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:14:18 2026 -0700
Inline Electron project picker check in Sidebar
- Replace `shouldOpenProjectFolderPickerImmediately` with direct `isElectron` usage
- Remove obsolete `Sidebar.logic.ts` and its tests
commit 5c286cab8b87fa5055533c54721cca52ec32050d
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:10:37 2026 -0700
Open project folder picker immediately in Electron
- remove mobile-width gating from sidebar project picker behavior
- simplify picker logic/tests to depend only on Electron runtime
commit 75ca0d4fa41a4b5a85a6aa852dad813fbcbb94db
Author: Julius Marminge <julius0216@outlook.com>
Date: Mon Mar 9 09:02:56 2026 -0700
Open folder picker immediately on desktop Electron
- add `shouldOpenProjectFolderPickerImmediately` to centralize Sidebar behavior
- trigger folder browse directly when adding a project in desktop Electron
- keep manual path entry for mobile layouts and non-Electron, with tests for all cases
commit 8282b11fb55e50147a33e476ee8563ceaf1e75d7
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Tue Mar 10 02:29:49 2026 +1100
refactor(contracts): remove unused OrchestrationPersistedEvent schema (#601)
commit 45744cc7893243b5ad17b153fb250d50ce87d80c
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon Mar 9 11:17:07 2026 +0000
chore(release): prepare v0.0.9
commit 4b6a0c433cb808a0ebdd30ec48e799b6543d2cc9
Author: Sai Shankar <saishankar2803@gmail.com>
Date: Mon Mar 9 16:33:13 2026 +0530
fix(web): fix native scrollbar being intercepted by sidebar rail on windows and linux (#618)
the rail's 16px hit area at z-20 sits right where the native os scrollbar
lives when the sidebar is in offcanvas mode and collapsed. this causes clicks
and drags on the scrollbar to toggle the sidebar instead on windows and linux.
scoping pointer-events-none to [data-collapsible=offcanvas][data-state=collapsed]
fixes the interception without affecting icon mode where the rail needs to stay
clickable.
commit 304a14de7d6f0b9977c8ecc4bced5b5f359ce02e
Author: Theo Browne <me@t3.gg>
Date: Mon Mar 9 04:01:23 2026 -0700
Fix users who installed intel builds on arm macs (#641)
commit c585128bbe0311615c58921909467f49600cb85f
Author: Theo Browne <me@t3.gg>
Date: Mon Mar 9 01:20:14 2026 -0700
ARM ALWAYS FUCK YOU INTEL
commit acd92f9b061b8638ef9cfe974dad19042b3762e8
Author: Theo Browne <me@t3.gg>
Date: Mon Mar 9 01:12:55 2026 -0700
include sourcemaps
commit 4088b7ac3cddc1fc92ccf3f99e7a844c629ebad0
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 16:02:15 2026 +1100
fix(desktop): use filesystem-friendly userData directory name (#607)
Electron derives the userData path from productName in package.json,
which produces directories with spaces and parentheses on all platforms
(e.g. ~/.config/T3 Code (Alpha) on Linux). This is hostile to shell
usage and violates Linux XDG naming conventions.
Override the userData path via app.setPath() before the ready event to
use a clean lowercase name (t3code). If the legacy directory already
exists it is used as-is so existing users keep their Chromium profile
data (localStorage, cookies, sessions, cache).
This follows the same pattern VS Code uses — keeping productName for
display purposes while explicitly setting the data directory path.
Closes #578
commit 8e8904a159e3b29fa1eae0e6f023872ef03a3f63
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 15:55:09 2026 +1100
refactor(web): remove redundant double parse of diff route search params (#598)
`rawSearch` is already the output of `parseDiffRouteSearch` via the
`useSearch` select transform. The `useMemo` at line 760 re-parsed it
through the same function with an unsafe `as Record<string, unknown>`
cast, producing an identical result. Use `rawSearch` directly instead.
commit 16f3490aee9ab9928ae7ac084117517495155e96
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 15:53:26 2026 +1100
fix(ci): handle draft PR conversions in pr-vouch (#611)
commit 651084e8c05bf6da329108b098e4fd81322ee785
Author: Jono Kemball <Noojuno@users.noreply.github.com>
Date: Mon Mar 9 17:43:35 2026 +1300
fix: fix external link opening in desktop (#599)
fixes #434
commit 812bb99f5c182351d0d899c9a88033d61fd7370a
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 21:43:17 2026 -0700
Add Noojuno to vouched
commit 5bc79807ec33f0b7f3633ad6dc54fcedf0de3a73
Author: Jason Laster <jason.laster.11@gmail.com>
Date: Sun Mar 8 22:40:44 2026 -0600
Add an encyclopedia of common terms (#613)
commit 8fe21d7583a21a19c98b0e24a64dd0d7029b41b0
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Mon Mar 9 03:43:56 2026 +0000
chore(release): prepare v0.0.8
commit 412331aa61a9a38d61f17755d67ed0f8212920d2
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 14:39:41 2026 +1100
fix(web): add missing v7 key to legacy localStorage cleanup list (#594)
When the persisted state key was bumped from v7 to v8 in 689dda59,
the v7 key was not added to LEGACY_PERSISTED_STATE_KEYS. Users who
ran the app during the ~3-week v7 window retain a stale
`t3code:renderer-state:v7` entry in localStorage that is never
cleaned up.
commit cd1c3df89cfa681622292f7f2a9777f81f8e2f10
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 20:36:37 2026 -0700
Add PR vouch workflow with trust-status labels (#602)
* Add PR vouch workflow and trust-status labeling
- Add `.github/workflows/pr-vouch.yml` to label PRs as trusted, unvouched, or denounced
- Add `.github/VOUCHED.td` trust-list file for external contributors
- Document automatic `vouch:*` labels and contributor expectations in `CONTRIBUTING.md`
* Add vouch entries for trusted GitHub contributors
- Append 16 GitHub accounts to `.github/VOUCHED.td`
- Update trusted-voucher list used for PR labeling workflows
commit 3738373aa5ff0fff074ecb95686ef952c209957e
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 14:36:03 2026 +1100
fix(server): use waitForPush in terminal event broadcast test to prevent flaky failure (#606)
The terminal RPC test used raw waitForMessage to receive the expected
terminal.event push, but a server.configUpdated push from the
keybindings file watcher can arrive first depending on OS timing.
Replace with the existing waitForPush helper that filters by channel.
commit 9b9006fed571dbeb1c810493500a679a49a2ba38
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 20:30:01 2026 -0700
Fix release finalize lockfile refresh (#608)
* Add checkout and Node setup to release updater publish job
- Ensure the updater publish job checks out the target ref
- Initialize Node using the repository's package.json version file before downloading artifacts
* Fix release finalize lockfile refresh
commit 42234b8f7cbe4465370fa0511f3fe26df2a2ae2e
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 20:12:31 2026 -0700
fix: plan mode ui overhaul (#596)
* new plan mode started
* review comments
* more fixes
commit 39f65703e7bd97df787ba45373ed75dddae9bb2f
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 20:00:15 2026 -0700
Add checkout and Node setup to updater publish workflow job (#605)
- Ensure the updater publish job checks out the target ref
- Initialize Node using the repository's package.json version file before downloading artifacts
commit b7f954a9041ee4524552ad0993e8b7711c86ff8a
Author: (CJ) Chukwudi Nwobodo <142016413+chuks-qua@users.noreply.github.com>
Date: Mon Mar 9 01:58:25 2026 +0000
Fix ChildProcess.spawn failing on Windows for .cmd shims (#495)
* fix(scripts): enable shell mode on Windows for .cmd shim resolution
On Windows, tools like `bun`, `npm`, `turbo`, and `bunx` are installed
as `.cmd` shims. Node's `child_process.spawn` cannot resolve these
without `shell: true`, causing `PlatformError: NotFound` on fresh
builds where there is no Turbo cache.
Add `shell: process.platform === "win32"` to all ChildProcess.make
calls in cli.ts, dev-runner.ts, and build-desktop-artifact.ts.
Closes #474
* docs: add comments explaining Windows shell spawn requirement
* docs: add shell spawn comments to remaining call sites
commit a20815ece6ea877a2b82072339f4bced98d757f7
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 12:56:29 2026 +1100
fix(web): align sidebar logo with macOS traffic light buttons (#586)
Adjust the Electron sidebar header to properly center the T3 wordmark
with the native window controls. The logo was sitting ~2px too low and
~8px too close to the traffic lights.
- Reduce wordmark container top margin from mt-2 (8px) to mt-1.5 (6px)
- Increase Electron header left padding from 82px to 90px for proper
traffic light clearance
- Match the desktop update button margin to stay aligned
Closes #564
commit 1c43bad705bd1d953fd168aa0b852c8b2d83ee84
Author: Mubin Ansari <mubinansari910@gmail.com>
Date: Mon Mar 9 07:21:55 2026 +0530
Add `delete` option for project actions (#223)
Adds a delete button to the action edit dialog with a confirmation
alert. Fixes pingdotgg/t3code#208.
commit 18b6590d2e490bd73ba968b094dc221ffb7c0f67
Author: (CJ) Chukwudi Nwobodo <142016413+chuks-qua@users.noreply.github.com>
Date: Mon Mar 9 01:36:52 2026 +0000
feat(desktop): add spellcheck suggestions to context menu (#500)
Wire up Electron's context-menu event on webContents to surface
dictionary suggestions for misspelled words. Standard edit actions
(Cut, Copy, Paste, Select All) appear in all context menus.
Related to #473
commit d62ffa7560bffeb2509ed115eed31dd5bc231ca6
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 18:27:04 2026 -0700
pr changes pt2
commit 59e2944fb72d8ef8c3b55fec3be766abe48df820
Author: 0x1f99d <crazywolf132@gmail.com>
Date: Mon Mar 9 12:24:56 2026 +1100
fix(web): add dismiss button to thread error banner (#588)
The thread error banner had no way to be dismissed. Users hitting
unrecoverable errors (e.g. missing gh CLI during PR creation) were
stuck with a persistent error banner and no way to clear it.
Add a dismiss (X) button to ThreadErrorBanner using the existing
AlertAction component, wired to clear the thread error via
setThreadError(id, null).
Closes #496
commit 17942787aa06070aa21ad6ae357e08f674383c4d
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 18:21:31 2026 -0700
fix: settings in sidebar, better add project flow (#584)
* improvements
* sidebar ui pt2
* back flow
* fix back flow
commit 5815ba24e2478b2801fab98163e72dd476e5c280
Author: Theo Browne <me@t3.gg>
Date: Sun Mar 8 18:20:05 2026 -0700
Add pull request template with contribution notice and review checklist (#582)
* Add PR template with contribution notice and review checklist
- Add `.github/pull_request_template.md`
- Set expectations that external PRs may not be reviewed or merged
- Require clear change rationale plus UI before/after media when applicable
* Add contribution policy notice and link detailed guidelines
- add CONTRIBUTING.md with clear expectations for external PRs
- update README to direct would-be contributors to CONTRIBUTING.md first
commit 5de8e9d1ae5dfae3e7ea2bb64c9ecd1420d63821
Author: Noah Gregory <noahmgregory@gmail.com>
Date: Sun Mar 8 21:03:18 2026 -0400
fix: properly emit update metadata for intel macs (#446)
* fix: properly emit update metadata for intel macs
* refactor: fix broken parsing of quoted values
commit 96e1e3db5eab48d641c80b0af009f2743b585535
Author: Aditya Vardhan Sharma <adityaradhika13@gmail.com>
Date: Mon Mar 9 00:45:40 2026 +0000
feat(marketing): add platform detection for download button (#558)
commit 5dd36bc5ad8a1cfdae54005ea5723bc19528cdc5
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sun Mar 8 23:52:20 2026 +0000
chore(release): prepare v0.0.5
commit 6271b989bc72a255483aa96ccb2868ef4655341d
Author: Patrick Bauer <patrick.jean.bauer@gmail.com>
Date: Mon Mar 9 00:30:25 2026 +0100
fix(web): use wss:// when page is served over HTTPS (#391)
When T3 Code web mode is accessed via HTTPS (e.g. through a reverse proxy
or Tailscale Serve), the WebSocket connection must use wss:// instead of
ws://. Browsers block mixed content — an insecure ws:// connection
initiated from an HTTPS page.
Fix: derive the WebSocket protocol from window.location.protocol.
Co-authored-by: PatrickBauer <patrick@patrickbauer.dev>
commit 57aa6bf16cd0dcfbe9037a5ca29ad61bdd2a857e
Author: James <105842516+jamesx0416@users.noreply.github.com>
Date: Mon Mar 9 10:29:34 2026 +1100
fix: avoid duplicating streamed assistant completion text (#465)
commit 40a7f4b4b1780c24db24a201f5b0860ce9763028
Author: Kainoa Newton <k@kainoa.me>
Date: Sun Mar 8 16:27:39 2026 -0700
Rename Open PR action label to View PR (#467)
- Update GitActionsControl quick/menu action text for existing pull requests
- Align unavailable-state copy and tests with the new label
commit cba0f23a9e003a522c0f92f5391f15f0879a98f2
Author: Kainoa Newton <k@kainoa.me>
Date: Sun Mar 8 16:27:03 2026 -0700
Remove extra dot from working indicator (#481)
- Drop the redundant static bullet before the working status text in `MessagesTimeline`
- Keep the animated dots indicator as the sole working-state visual cue
commit a7ec0179fb42b12ab7e1fd4c2cabd508c8f8de67
Author: (CJ) Chukwudi Nwobodo <142016413+chuks-qua@users.noreply.github.com>
Date: Sun Mar 8 22:55:49 2026 +0000
Fix codex binary path setting having no effect (#493)
* refactor(contracts): export ProviderStartOptions schema
* feat(contracts): add providerOptions to ThreadTurnStartCommand
* feat(web): send codex binary/home path settings to server
* feat(server): thread providerOptions through to session startup
* fix(contracts): define ProviderStartOptions inline to avoid circular dep
The import from provider.ts caused a ReferenceError at runtime because
of module initialization order in the bundled output.
* fix(server): preserve providerOptions across runtime mode changes and session recovery
Runtime mode toggles and server restarts silently dropped the custom
codex binary/home path, falling back to the default binary. Cache
providerOptions per thread in ProviderCommandReactor and persist it in
the session binding's runtimePayload so recovery can restore it.
Closes #486
commit c97c6b7836ce888b24a157de8eb4aea761028979
Author: Jason Laster <jason.laster.11@gmail.com>
Date: Sat Mar 7 14:12:11 2026 -0700
Enforce minimum Codex CLI version (≥0.37.0) before starting sessions (#404)
Add a pre-flight version check that runs `codex --version` and blocks
session startup with a clear upgrade message when the installed CLI is
below v0.37.0. The check runs both synchronously at session start
(codexAppServerManager) and during provider health probes
(ProviderHealth), so users get fast feedback in the UI.
Introduces `codexCliVersion.ts` with semver parsing, comparison, and
formatting helpers shared by both call sites.
commit 59b0527c38905784a04bd530f2a4a7d38073c72c
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 7 12:19:51 2026 +0000
chore(release): prepare v0.0.4-alpha.1
commit b74c7a79abbfbb7f6e8c5c4affb20784cea2b11c
Author: Theo Browne <me@t3.gg>
Date: Sat Mar 7 04:05:36 2026 -0800
Handle prerelease tags in GitHub release publishing (#344)
* Handle prerelease tags when publishing GitHub releases
- Derive `is_prerelease` and `make_latest` from the version format in preflight
- Mark suffixed versions (for example `1.2.3-alpha.1`) as prereleases
- Keep only plain `X.Y.Z` releases marked as latest
- Document prerelease/latest behavior in `docs/release.md`
* Force desktop auto-updates to stable latest channel
- set Electron updater channel to `latest`
- disable prerelease and downgrade updates regardless of app version
commit f772720d8c2a90448154271d7e4623f40cdf83fc
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 7 10:38:31 2026 +0000
chore(release): prepare v0.0.4
commit 0763a35fbc60d6209209a5545ab64e1631f43d48
Author: Hwanseo Choi <electricvoxel@gmail.com>
Date: Sat Mar 7 19:20:17 2026 +0900
Fix `bun run dev:desktop` from not terminating properly on SIGINT/SIGTERM/SIGHUP (#305)
* fix: handle turbo shutdown in dev runner
* refactor: rely on effect child process shutdown
* refactor: inline turbo shutdown timeout
* add back sigint sigterm sighup handling
* refactor: tighten turbo signal forwarding
* refactor: inline dev runner errors
* fix: use detached false instead of manual signal forwarding
Effect defaults to detached: true on non-Windows, putting turbo in a
new process group where terminal signals (Ctrl+C) never reach it.
Setting detached: false keeps turbo in the same group, eliminating
the need for ~130 lines of manual signal forwarding.
* Update scripts/dev-runner.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
commit e1c33dcd33949c18eb30986ba513c1334064677c
Author: Guilherme Barros <gbarros1095@gmail.com>
Date: Sat Mar 7 11:14:30 2026 +0100
Fix Fish shell PATH detection and clean up lint warnings (#323)
* Fix Fish shell PATH detection for Codex
* refactor(provider): resolve lint warnings in provider layers
* refactor(terminal): simplify thread lock release initialization
* test(git): simplify fetch release callback initialization
commit 0a902790cacb20d38c6f36fe331ac283a2c74b0f
Author: Ahmed R. <realahmedroach@gmail.com>
Date: Sat Mar 7 04:12:54 2026 -0600
Fix crash when rendering code blocks with unsupported languages (#266 & #210) (#279)
The app crashed when displaying code blocks with language identifiers
not bundled in Shiki (e.g. "env" from .env file edits). The language
string was cast to SupportedLanguages without validation, causing
resolveLanguage to throw an unhandled error that killed the thread.
Three layers of defense added:
- getHighlighterPromise falls back to "text" when Shiki rejects
- codeToHtml call wrapped in try/catch with "text" fallback
- CodeHighlightErrorBoundary prevents component tree crashes
Closes #266
Co-authored-by: Ahmed R <Ahmed@Ahmeds-MacBook-Pro.local>
commit 0837c8b639f3fb54c155d824c308c6b03038fa9c
Author: Theo Browne <me@t3.gg>
Date: Sat Mar 7 02:06:55 2026 -0800
fix: everything AICodeKing reported (#320)
* Guard non-git projects and improve send and diff UX
- Skip checkpoint capture/revert and turn diff ingestion for non-git workspaces
- Normalize project workspace roots and return clearer request/error messages
- Show "No Git" state in chat/diff UI and enrich work log with commands/files
- Track send start time so working status shows elapsed duration consistently
* Format active working timer in concise h/m/s units
- add `formatWorkingTimer` for human-friendly durations in ChatView
- show active "Working for" time as `0s`, `1m 5s`, or `2h 3m` instead of ms
* more cleanup
* Fix active work timing and use temp git workspaces in tests
- derive active work start from unsettled turn state instead of always latest turn
- update chat view to use shared deriveActiveWorkStartedAt helper
- make server/ws tests create temporary workspace roots with .git for project creation
commit 5a90b6be9c902df934bada91b543865c197cfb2d
Author: JoeEverest <42711226+JoeEverest@users.noreply.github.com>
Date: Sat Mar 7 04:51:44 2026 +0300
Tailwind v4 Preflight resets list-style to none on ul/ol elements.
Restore disc/decimal markers and add nested list style variants
(circle, square, lower-alpha, lower-roman) for visual distinction.
commit 42675571c94ef07040f9016df35236d83f26f037
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 7 00:57:40 2026 +0000
chore(release): prepare v0.0.3
commit e9f00f65caf765239acc713b7c05dd177c3a2983
Author: Theo Browne <me@t3.gg>
Date: Fri Mar 6 16:56:10 2026 -0800
Update README command and support link
- switch quickstart command from `npx t3@alpha` to `npx t3`
- fix wording in desktop app sentence
- replace "Discord link coming soon" with invite link
commit 04b95e37c582c81c3fd67748dcae40f4b0a56b90
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 16:27:42 2026 -0800
Change CLI package publish tag from alpha to latest
commit 5820e1b6fff6a8ca2a5d9cc1626dfd7bd8dc61fc
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Sat Mar 7 00:17:26 2026 +0000
chore(release): prepare v0.0.2
commit 8c904ffe340e6a915676fd9b944eeb9366f849f3
Author: Theo Browne <me@t3.gg>
Date: Fri Mar 6 15:53:32 2026 -0800
Add production favicon set for marketing page (#196)
- add 16x16, 32x32, and Apple touch icon assets
- update `index.astro` head links to reference size-specific favicons
commit 9fa9cb4b31766eed28b9a6319ee7f88a52798f71
Author: Theo Browne <me@t3.gg>
Date: Fri Mar 6 15:53:12 2026 -0800
Soften chat composer focus border color (#188)
- Reduce focused composer border intensity using `focus-within:border-ring/45`
- Keeps drag-over styling behavior unchanged
commit 24599aaeed1090d9b1f6529d3a75e71c5ce591e5
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri Mar 6 23:08:37 2026 +0000
chore(release): prepare v0.0.0-alpha.22
commit f403b23e9af62e31b05c3444c47fa8762fd82c46
Author: Theo Browne <me@t3.gg>
Date: Fri Mar 6 14:55:24 2026 -0800
Add Shift+Tab shortcut to toggle composer plan mode (#186)
- add Shift+Tab keyboard handling in composer to switch chat/plan modes
- refactor mode toggle into shared callback used by hotkey and button
- add browser test to verify toggling only works when composer is focused
commit 39c71a0394ac5fead439ac0cec4a89ef1f6b9389
Author: Theo Browne <me@t3.gg>
Date: Fri Mar 6 14:45:41 2026 -0800
Redesign marketing site with Astro (#187)
* marketing site
* redesign 1
* more
* Redesign marketing site: port to Astro, minimal dark homepage
Replace the React/Vite marketing site with a single static Astro page.
Dark theme matching the app aesthetic, featuring the production glossy
T3 icon, app screenshot, and a clean minimal layout.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix GitHub link to pingdotgg/t3code
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
commit d249e628eef2cd8dcd4c5b9c79c443b77ca4a851
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 13:54:31 2026 -0800
Stage production icons for desktop builds and publish (#168)
* Stage production icons for desktop builds and publish
- add shared brand asset paths and a Windows .ico asset
- stage Linux/Windows icons in desktop artifact builds
- override and restore publish favicon during server CLI publish
* 'blip'
* Fix PR review issues for publish icon staging
* Refactor brand assets and harden Windows desktop build setup
* Apply remaining server orchestration updates
* Fix production mac icon asset
Co-authored-by: Theo Browne <t3dotgg@users.noreply.github.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Theo Browne <t3dotgg@users.noreply.github.com>
commit 40fcb6bdf8d726f35c6d3aec82d0cce6345c9dcd
Author: Yash Singh <saiansh2525@gmail.com>
Date: Fri Mar 6 15:48:37 2026 -0600
fix: restrict spark to non-plus users & fast mode gpt5.4 (#180)
* fix: restrict spark to non-plus users & fast mode gpt5.4
* nit
* tests
* tests
---------
Co-authored-by: Theo Browne <me@t3.gg>
commit d58ff5de26b9753c3dbd13cb55e532ccd44ba0d2
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 09:01:10 2026 -0800
Streamline composer behavior during pending approvals
- Treat pending approvals as a dedicated composer state
- Disable prompt input and hide command menu/image chips while approval is active
- Move approval decision buttons into footer actions and simplify the header panel
commit e28ad181066edece29f98aa717c01fc9f347e33a
Author: Julius Marminge <julius0216@outlook.com>
Date: Fri Mar 6 08:59:10 2026 -0800
Inline pending approvals in composer header
Co-authored-by: codex <codex@users.noreply.github.com>
commit 525411101dc6c2f68e4950875bebb001c80b90f8
Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Date: Fri Mar 6 08:08:47 2026 +0000
chore(release): prepare v0.0.0-alpha.21
commit 0f208447ed78ba3bc7a3d7cee17f516bd18a67f2
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 5 23:52:14 2026 -0800
Prefer base HTML icon for .html files
- Override `.html` language mapping to use the generic HTML icon
- Add test coverage asserting `index.html` resolves to `file_type_html.svg`
commit 71e057345902d9301f9b9d8956f4cf764a6d7fd8
Author: Theo Browne <me@t3.gg>
Date: Thu Mar 5 23:48:17 2026 -0800
@alpha
commit c63ea8d25b4d05d32fc061736bc6a0934ac682fb
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 5 23:22:32 2026 -0800
Use project cwd when opening draft threads without worktree
- Pass resolved `openInCwd` from ChatView into OpenInPicker
- Fall back to project `cwd` when draft thread has no `worktreePath`
- Add browser test covering Open action for draft-only snapshot
commit b9e529e0b56b995728ff10cd1b643df63b436258
Author: Julius Marminge <julius0216@outlook.com>
Date: Thu Mar 5 23:20:56 2026 -0800
Preserve draft terminal state during snapshot cleanup
- add `collectActiveTerminalThreadIds` to keep non-deleted server threads plus local draft threads
…
Summary
ring-sidebar-ringwithring-ringin all sidebar UI primitives —--sidebar-ringwas never defined in the theme CSS, causing focus rings to silently fall back tocurrentColor(grey) instead of the app's blue--ringtokenfocus-visible:ring-0suppressing the indicator entirely — now usesring-1 ring-insetto avoid clipping on first/last itemsDetails:
Unified focus-ring colors
Everywhere except in the sidebar, the focus ring in the app is shown blue. In the sidebar, the shadcn components were using a different css class for the focus-ring (
ring-sidebar-ring), which had no color configured and was therefore falling back to current color which is grey instead of blue.Threads
Threads didn't show they were focused. Pressing Tab after the "new" button of a project seemed to "vanish" any focus, because threads didn't show a focus state
Even though these are two "different" changes, I thought they might be small enough and and not questionable, so i made just one pr
Note
Unify focus ring styles across sidebar components and thread rows
Replaces
ring-sidebar-ringwith the genericring-ringTailwind variable across multiple sidebar components in sidebar.tsx, and adds a visiblefocus-visible:ring-1 focus-visible:ring-insetring to thread rows in Sidebar.logic.ts, which previously hadring-0. This makes focus ring styling consistent across the sidebar and the rest of the app.Macroscope summarized c9c4a4a.