Skip to content

fix(web): unify focus ring styles across sidebar and app#1079

Merged
juliusmarminge merged 1 commit intopingdotgg:mainfrom
Xanacas:fix/unify-focus-ring-styles
Mar 14, 2026
Merged

fix(web): unify focus ring styles across sidebar and app#1079
juliusmarminge merged 1 commit intopingdotgg:mainfrom
Xanacas:fix/unify-focus-ring-styles

Conversation

@Xanacas
Copy link
Contributor

@Xanacas Xanacas commented Mar 14, 2026

Summary

  • Replace ring-sidebar-ring with ring-ring in all sidebar UI primitives — --sidebar-ring was never defined in the theme CSS, causing focus rings to silently fall back to currentColor (grey) instead of the app's blue --ring token
  • Restore focus visibility on thread rows which had focus-visible:ring-0 suppressing the indicator entirely — now uses ring-1 ring-inset to avoid clipping on first/last items

Details:

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-ring with the generic ring-ring Tailwind variable across multiple sidebar components in sidebar.tsx, and adds a visible focus-visible:ring-1 focus-visible:ring-inset ring to thread rows in Sidebar.logic.ts, which previously had ring-0. This makes focus ring styling consistent across the sidebar and the rest of the app.

Macroscope summarized c9c4a4a.

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>
@coderabbitai
Copy link

coderabbitai bot commented Mar 14, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 7095ba8c-e260-4094-bf5e-30dee12a689f

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
📝 Coding Plan
  • Generate coding plan for human review comments

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot added size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list. labels Mar 14, 2026
@Xanacas
Copy link
Contributor Author

Xanacas commented Mar 14, 2026

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:
Tab just focuses the project-list, not an individual entry. switching "focus" between projects happens then by standard WAI-ARIA Treeview pattern (up,down,left,right arrow keys). This would make tab navigation much more practical especially if there are a lot of projects/threads in the sidebar.
Color wise I then would prefer to have the current focused projects/threads ring being the grey tone it currently had accidentally.
Following this concept, there is a minor change that could matter for some users. currently I can tab to the "new thread" butten behind the project name. this would work anymore. My perspective: If I am using keyboard shortcuts to navigate, I can easily learn (or would have learned already) that mod+shift+n does the same thing. I'd probably just add a "n" keyboard shortcut that works when on a project to create a new thread even if I'm not on a thread of the current focused project.

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 😂

@juliusmarminge juliusmarminge enabled auto-merge (squash) March 14, 2026 15:49
@juliusmarminge juliusmarminge merged commit 8b8e8b3 into pingdotgg:main Mar 14, 2026
10 checks passed
@Xanacas Xanacas deleted the fix/unify-focus-ring-styles branch March 14, 2026 17:04
atscub added a commit to atscub/t3code that referenced this pull request Mar 14, 2026
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
   …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants