chore: forward issue/PR/discussion events to Cursor hygiene - #9518
Conversation
| AUTH: ${{ secrets.CURSOR_T3CODE_WEBHOOK_AUTH }} | ||
| run: | | ||
| set -euo pipefail | ||
| if [ -z "${URL:-}" ] || [ -z "${AUTH:-}" ]; then |
There was a problem hiding this comment.
🟡 Medium workflows/cursor-hygiene-webhook.yml:29
Fork and Dependabot pull requests never reach Cursor hygiene: GitHub withholds CURSOR_T3CODE_WEBHOOK_URL and CURSOR_T3CODE_WEBHOOK_AUTH from these pull_request workflows, so this guard exits successfully and drops the selected PR events. Use a trusted event path such as pull_request_target (without executing fork code) and provide a separate supported path for Dependabot events.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @.github/workflows/cursor-hygiene-webhook.yml around line 29:
Fork and Dependabot pull requests never reach Cursor hygiene: GitHub withholds `CURSOR_T3CODE_WEBHOOK_URL` and `CURSOR_T3CODE_WEBHOOK_AUTH` from these `pull_request` workflows, so this guard exits successfully and drops the selected PR events. Use a trusted event path such as `pull_request_target` (without executing fork code) and provide a separate supported path for Dependabot events.
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
Bugbot Autofix is ON, but a cloud agent failed to start.
Reviewed by Cursor Bugbot for commit cd347dd. Configure here.
|
Pushes to main now forward merge events for fork and Dependabot PRs, where repository secrets are available. I dropped the pull_request closed trigger so team PR merges do not send both a close event and a push event. Opened, reopened, and ready-for-review triggers remain for same-repo attribution. |
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds a new authenticated GitHub Actions integration that forwards raw repository events to Cursor, creating operational and data-handling behavior beyond a minor CI configuration change. Its event coverage also omits fork and Dependabot pull requests when secrets are withheld, so the workflow merits human review. Not approved because:
Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more. |
…hook to prevent stalled t (#9524)
* fix(web): send cited messages with Cmd+Enter (pingdotgg#9307) * fix(web): preserve explicit preview navigation URLs (pingdotgg#8902) * fix(web): prevent loading ssh environments from overriding navigation (pingdotgg#9168) * fix(mobile): skip unsupported shared settings targets (pingdotgg#9381) * fix(web): avoid duplicate Antigravity install status (pingdotgg#9419) * fix(composer): mute fast icon when collapsed (pingdotgg#9451) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): unify skeleton loading animations on one pulse (pingdotgg#9448) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): prioritize authored pull requests (pingdotgg#9453) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): make project icons the default (pingdotgg#9457) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(server): reuse pr state when settling threads (pingdotgg#9459) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): keep agent images collapsed (pingdotgg#9460) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): banner buttons no longer expand the resting composer (pingdotgg#9452) * fix(web): stop clipping the traits chevron on long Codex effort labels (pingdotgg#9433) Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web): make right panel tabs easier to scroll (pingdotgg#9461) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): render transparent previews on white (pingdotgg#9463) * fix(mobile): show loading and syncing in the working pill (pingdotgg#9466) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(server): keep a/ and b/ prefixes in rendered git patches (pingdotgg#9438) * fix(server): full-access OpenCode threads no longer ask for approvals (pingdotgg#9282) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): reuse pull request list data while loading (pingdotgg#9467) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * feat(web): let users turn off composer collapse on blur and scroll (pingdotgg#9469) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(web): move workflow approval beside checks (pingdotgg#9465) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(desktop): refresh generated annotation styles (pingdotgg#9488) * fix(web): let the PR reviewer and label search boxes take keystrokes (pingdotgg#9479) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(web): dont collapse composer when interacting with bottom row (pingdotgg#9490) * fix(desktop): restore second-press quit fallback (pingdotgg#9485) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): keep opencode icon hollow in collapsed composer (pingdotgg#9492) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): keep agent browser preview visible (pingdotgg#9484) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(mobile): keep the machine glyph next to the environment label (pingdotgg#9486) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): let back swipe pop from horizontal scroll edges (pingdotgg#9493) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(antigravity): discover legacy workspace skills (pingdotgg#9410) Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> * fix(mobile): resolve Antigravity provider icon and normalize driver matching (pingdotgg#9495) * fix(antigravity): forward Google sign-in URLs from browser helper (pingdotgg#9425) * feat(desktop): import browser cookies into a profile (pingdotgg#7255) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(desktop): import from Chrome, Edge, Brave, Vivaldi, Opera, Arc and Firefox (pingdotgg#7260) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat(desktop): resolve Chromium cookie keys on Linux (pingdotgg#7261) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(antigravity): allow slow runtime startup during setup (pingdotgg#9510) * fix(antigravity): keep model choices up to date (pingdotgg#9511) * fix(antigravity): handle native sign-in URLs on stderr (pingdotgg#9514) * fix(antigravity): update managed runtime to 1.1.1 (pingdotgg#9509) * fix(desktop): address the browser import review left over from the stack (pingdotgg#9516) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> * feat(antigravity): show subagent calls and results (pingdotgg#9515) * fix(web): let paste expand a resting composer (pingdotgg#9498) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(web): keep the composer open while selecting timeline text (pingdotgg#9499) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(web): return focus to the composer after closing a media preview (pingdotgg#9513) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(server): keep events during thread subscription startup (pingdotgg#9521) * chore: forward issue/PR/discussion events to Cursor hygiene (pingdotgg#9518) Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com> * fix(auth): keep pairing credentials out of access read models (pingdotgg#9523) * chore: drop comment events from Cursor hygiene forwarder (pingdotgg#9527) * feat(codex): support async questions (pingdotgg#9512) * fix(web): keep right panel controls clickable (pingdotgg#9517) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * feat(usage): show Codex and Claude subscription limits on a Limits tab (pingdotgg#9507) Users on Codex or Claude Code subscriptions could not see how much quota was left or when it resets without leaving T3 Code. A user whose CLIs route through a CLIProxyAPI hub could not see it at all. Each driver now returns `usageLimits` on its own snapshot (Codex from `account/rateLimits/read`, Claude from the SDK's `get_usage`), adapters normalise turn-driven rate-limit events at the boundary, and a driver-blind ingestion layer folds them onto the owning instance. The Usage page gains a Limits tab (mobile a card) with a bar per window, elapsed marker, pace, and reset countdown. CLIProxyAPI hubs can be added as read-only usage-limit sources; their accounts show badged "via CLIProxyAPI" with emails blurred. Distilled from pingdotgg#1732 (server model, provider rows) and pingdotgg#9421 (Limits tab, window bars, pace maths). Closes pingdotgg#228. Co-authored-by: Aditya Mer <101453576+Aditya190803@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Claude Code <noreply@anthropic.com> * feat(web): reorganize settings pages (pingdotgg#9354) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(server): settle branch threads immediately on pull request merge (pingdotgg#9528) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(server): back off relay client restarts after rapid exits (pingdotgg#8788) * fix(codex): accept rate limit errors on thread resume (pingdotgg#8897) * fix(desktop): preview CDP sessions no longer hard-crash the app (pingdotgg#9068) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * Fix worktree removal timing out on large install trees (pingdotgg#3902) * fix(web): settle the resting composer layout with a pixel of slack (pingdotgg#9482) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix(web): keep automatic project icons consistent (pingdotgg#9535) * fix(server): include SQLite conditions in persistence errors Include SQLite conditions and schema issue tags without copying query data. Continue @Sy-D's [pingdotgg#4837](pingdotgg#4837). Add the missing Bun error codes and test the real SQL client. Created with GPT-6 Astra (preview) in Codex. Co-authored-by: Sy-D <8460326+Sy-D@users.noreply.github.com> Co-authored-by: Claude Opus 5 <noreply@anthropic.com> * fix(dev): keep shared dev reloads and hot updates working (pingdotgg#9543) * feat(providers): add context compaction command (pingdotgg#9293) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(mobile): keep store screenshots free of system banners and show dictation (pingdotgg#9548) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): restore composer controls as space becomes available (pingdotgg#9539) * fix(web): measure collapsed model labels at their visible width (pingdotgg#9540) * fix(web): close composer menus when their controls hide (pingdotgg#9541) * fix(web): thread error banner no longer shifts the chat (pingdotgg#9473) * fix(server): reveal normalized paths in File Explorer (pingdotgg#9551) * feat(marketing): fresh screenshot and floating marks on the homepage (pingdotgg#9547) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * feat(usage): redeem Codex reset credits from the Limits tab (pingdotgg#9534) Follow-up to pingdotgg#9507, carrying over the reset-credit redemption from pingdotgg#9421. Codex grants a reset credit when it has rate-limited an account unfairly (`"Thanks for using Codex! You've been granted one free rate limit reset."`). Redeeming one clears the current 5h/weekly windows. The Limits tab now shows how many are banked and when the next expires, with a confirmed **Use a reset credit** action. ## How it works - `ServerProviderUsageLimits.resetCredits` carries the count and soonest expiry; the Codex probe reads it from the same `account/rateLimits/read` it already makes. - `ProviderInstance.consumeResetCredit` is a new optional hook — account-level, so it sits beside `refreshModels` rather than on the thread-routed adapter. The Codex driver implements it over a short-lived app-server (via `withCodexAppServerClient`, factored out of the status and skills probes which duplicated the setup), then re-probes. - Single-flight per instance with one idempotency key kept until Codex reports an outcome, so a retry after a timeout does not open a second attempt. - New `provider.consumeResetCredit` RPC under the operate scope; the outcome (`reset` / `nothingToReset` / `noCredit` / `alreadyRedeemed`) is shown inline. Only Codex reports credits today. A provider without the hook gets a clear "does not bank reset credits" error; one without credits shows nothing. ## Screenshots The local Codex row with one banked credit (the same account via the CLIProxyAPI hub above it shows no credit, as expected — the hub does not relay them):  Close-up of the row:  Clicking it opens the confirmation; nothing is sent until **Use credit**:  ## Verification - Mapper tests for the credit summary; provider, contract, and Usage page suites pass; typecheck clean. - Verified against a real Codex Pro account holding one credit: summary and expiry render, the confirm dialog opens. **Not redeemed** — that would spend the credit. Written by Claude Fable 5 via Claude Code; design and single-flight approach from @StiensWout's pingdotgg#9421. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Redemption spends real account credits over a new RPC; correctness depends on per-account locking and idempotency, though disabled instances and non-Codex providers are rejected explicitly. > > **Overview** > Adds **end-to-end redemption of banked Codex rate-limit reset credits** from the Limits UI on web and mobile, backed by a new operate-scoped `provider.consumeResetCredit` RPC. > > **Contracts and server:** `ServerProviderUsageLimits` can include `resetCredits` (count + next expiry). Codex probes attach that from `account/rateLimits/read`. Optional `ProviderInstance.consumeResetCredit` is implemented for Codex via a scoped app-server call to `account/rateLimitResetCredit/consume`, then a limits refresh. `CodexResetCreditCoordinator` serializes redemptions per Codex account directory, reuses one idempotency key until Codex returns an outcome, and times out hung requests. `withCodexAppServerClient` is extracted so status, skills, and redemption share the same short-lived app-server setup. > > **Clients:** Limits rows show banked credits and a confirmed **Use a reset credit** action that calls `serverEnvironment.consumeResetCredit` and surfaces outcomes (`reset`, `nothingToReset`, etc.) or errors. > > **Web usage sources (same PR):** Adding/removing CLIProxyAPI hubs and the add dialog target a **selected connected environment** (with picker when several are connected), gated by operate access—not only the primary environment. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 98f32e6. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Claude Code <noreply@anthropic.com> * fix(server): find newly opened pull requests after agent turns (pingdotgg#9125) Refresh missing PR associations after agent turns on the thread's current branch. Preserve background policy, known PR caches, and failed-lookup backoff. Serialize status loads and refreshes to prevent stale responses from hiding a PR. Find branches pushed under their own name while still tracking the default branch. Original work by Theo Browne with Claude Fable 5.1 in Claude Code. Takeover fixes created with GPT-6 Astra (preview) in Codex. Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * ci: add on-demand Windows test workflow (pingdotgg#9538) Co-authored-by: Claude Code <noreply@anthropic.com> * fix(web): simplify expanded tool details (pingdotgg#9549) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): keep the last message visible when the resting composer expands (pingdotgg#9553) Scrolling a long thread to the end with the composer at rest landed flush against the short composer. The expansion that followed then covered the last rows, because the timeline reserves only the live overlay height and does not move for footer growth. The timeline now keeps the expanded composer's height clear while the composer rests, so expanding it again changes nothing above the composer. The composer reports its resting flag from a layout effect and publishes a fresh overlay height whenever that flag changes, so the reservation is always computed from a height that belongs to the same layout. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * test(web): fix flaky startup and Tailwind tests (pingdotgg#9558) * fix(web): keep codex restart responses continuous (pingdotgg#9560) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): make settings sidebar sub-section buttons full width (pingdotgg#9562) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(web): render settings sidebar immediately (pingdotgg#9563) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * chore: vouch august contributors (pingdotgg#9557) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): stabilize right panel transitions (pingdotgg#9554) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix: better shell syntax handling for labels (pingdotgg#9371) * fix(web): align the sidebar wordmark by baseline (pingdotgg#9578) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(antigravity): keep subagent batches active after launch (pingdotgg#9579) * fix(mobile): render workspace images in markdown file previews (pingdotgg#8769) * fix(usage): deduplicate CLI proxy subscription accounts (pingdotgg#9584) * fix(web): bound disconnected send toasts (pingdotgg#9592) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(desktop): restore panel titlebar interactions (pingdotgg#9591) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(connect): refresh authorization without disconnecting (pingdotgg#9582) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): show context meter in compact composer (pingdotgg#9430) * fix(pull-requests): refresh data after thread turns (pingdotgg#9496) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web): render draft PRs in gray (pingdotgg#9537) * refactor(web): move usage provider controls to settings (pingdotgg#9599) * fix: show idle subagent batches without completion marks (pingdotgg#9616) * fix(web): group image views like other tool calls (pingdotgg#9597) Co-authored-by: Claude Code <noreply@anthropic.com> * fix: preserve tool icons on failed calls (pingdotgg#9606) * fix(connect): diagnose incomplete headless server setup (pingdotgg#9602) * fix(web): keep command palette above composer menus (pingdotgg#9613) * fix(web): snooze menu no longer overlaps thread details (pingdotgg#9601) * fix(web): match composer pull request state icons (pingdotgg#9375) * fix(server): load OpenCode workspace skills via SDK to avoid 64KB CLI pipe truncation (pingdotgg#9585) * fix(web): mute sidebar branch name to match worktree icon (pingdotgg#9622) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * fix(web,mobile): fold context compaction under settled turn folds (pingdotgg#9623) Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> * feat(mobile): make chat text selectable on Android (pingdotgg#8779) Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> * fix(web): toggle a single stashed prompt with Cmd+S (pingdotgg#9644) Cmd+S opened the stash menu even when the composer was empty and only one prompt was stashed. It now restores that prompt directly, so repeated presses toggle between the draft and stash. Multiple entries and images that are still saving open the menu. The stash badge still opens the menu. Validation: 94 focused stash, shortcut, and attachment tests pass. Web typecheck and formatting pass. Targeted lint has no new warnings or errors. Browser checks were skipped at Theo's request. Original implementation by Theo Browne. No code changes were needed during the takeover audit. Audited with GPT-6 Astra (preview) in Codex. * fix(server): prevent duplicate desktop clients after restart Replace stale local desktop sessions in one transaction. Preserve paired clients and browser sessions, and keep the previous credential valid if replacement fails. Closes pingdotgg#6283. Original implementation by seeb1337. Reviewed and verified with GPT-6 Astra (preview) in Codex. Co-authored-by: seeb1337 <63622047+seeb1337@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> * fix(web): resume Antigravity threads without repeated sign-in (pingdotgg#9647) Allow Antigravity threads to resume while saved Google sign-in is unchecked after a server restart. Keep confirmed authentication failures and installation errors visible. Validated with 136 focused tests, web typecheck, targeted lint, and CI. Browser verification was omitted at the maintainer's request. Created with GPT-6 Astra (preview) in Codex. * feat(mobile): paste the phone clipboard into the terminal (pingdotgg#9199) Co-authored-by: Jake Leventhal <jakeleventhal@me.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> * feat(web): show which sidebar threads hold an unsent draft (pingdotgg#9658) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * fix(server): unblock OpenCode approvals and stop (pingdotgg#9653) OpenCode could show an Approval badge with no controls, appear stuck on TodoWrite, and keep showing a running turn after Stop. - Show every permission, including old saved requests. Keep failed replies retryable and close completed requests even when reply events are lost. - Keep OpenCode output pipes drained and automatic replies out of the event loop. Handle disconnects, reconnects, and confirmed stops without stale requests or running states. - Show native task progress and command results. Do not treat TodoWrite or approval history as file edits or executed commands. - Ignore late aborts and task updates after a turn finishes. Fixes pingdotgg#4795 Fixes pingdotgg#7113 Fixes pingdotgg#5760 Created with GPT-6 Astra (preview) in Codex. Reviewed and merged with Claude Fable 5.1 in Claude Code. * fix(desktop): quit immediately on a second shortcut press (pingdotgg#9657) * fix(server): update Claude Agent SDK to 0.3.260 (pingdotgg#9135) Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> * perf(server): stop loading message bodies for thread summaries (pingdotgg#9662) * perf(web): speed up terminal snapshots (pingdotgg#9663) * Complete upstream sync adaptations and validate Claude authentication * Fix reviewed Coder sync regressions and add focused coverage * Include orchestration regression suites in Coder tests --------- Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com> Co-authored-by: Yukun Shan <92423096+nateEc@users.noreply.github.com> Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com> Co-authored-by: Simone <lucenz@proton.me> Co-authored-by: Rakshith Bhat <88523594+RakshithBhat03@users.noreply.github.com> Co-authored-by: maria <maria@kuuro.net> Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Zortos <zortosdev@proton.me> Co-authored-by: Cursor <cursoragent@cursor.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Igor Makowski <56691628+Mnigos@users.noreply.github.com> Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com> Co-authored-by: Invictine <72551038+Invictine@users.noreply.github.com> Co-authored-by: WellyngtonF <59291417+WellyngtonF@users.noreply.github.com> Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: macroscopeapp[bot] <170038800+macroscopeapp[bot]@users.noreply.github.com> Co-authored-by: Aditya Mer <101453576+Aditya190803@users.noreply.github.com> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: Derek Trimm <275381468+derektrimm@users.noreply.github.com> Co-authored-by: Seth Webster <sethwebster@gmail.com> Co-authored-by: Jake Leventhal <jakeleventhal@me.com> Co-authored-by: Matheus Timbó Pereira <matheusfild4@hotmail.com> Co-authored-by: Sy-D <8460326+Sy-D@users.noreply.github.com> Co-authored-by: Yash Singh <saiansh2525@gmail.com> Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com> Co-authored-by: Guilherme Vieira <46866023+GuilhermeVieiraDev@users.noreply.github.com> Co-authored-by: Guillermo Casanova <75276669+Gigioxx@users.noreply.github.com> Co-authored-by: Barry <43803274+BarryHenryJr@users.noreply.github.com> Co-authored-by: seeb1337 <63622047+seeb1337@users.noreply.github.com> Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com>
## What's Changed * fix(web): preserve theme when toggling advanced colors by @StiensWout in https://github.com/pingdotgg/t3code/pull/8500 * fix(chat): keep latest command live between messages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9098 * fix(media): preview host files and stream videos across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9023 * feat(cli): open projects in the running desktop app by @t3dotgg in https://github.com/pingdotgg/t3code/pull/8824 * chore: vouch six repeat contributors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9131 * chore: delete dead code, unused deps, and duplicate helpers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9129 * fix(web): mute routine notices and update actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9063 * perf(provider): bound persisted session lookups by @nateEc in https://github.com/pingdotgg/t3code/pull/8909 * fix(claude): skills picked from the composer now run by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9128 * fix(web): stop highlighter freezes and worker spin by using the Oniguruma WASM engine by @LetZico in https://github.com/pingdotgg/t3code/pull/8360 * perf: make streaming projection and activity appends incremental by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9152 * fix(server): bound orchestration replay payloads by @rcawston in https://github.com/pingdotgg/t3code/pull/8992 * perf(client-runtime): keep turn and checkpoint refs stable while streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9145 * perf(clients): lease sidebar status by visibility by @StiensWout in https://github.com/pingdotgg/t3code/pull/9052 * fix(desktop): show newest changes in nightly previews by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9138 * fix(settings): sync auto-settle and other shared preferences across environments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9147 * fix(server): prevent accidental service downgrades by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5302 * fix(server): keep attachments until the command commits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/7941 * fix(claude): preview images read from the workspace by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9119 * fix(web): keep generated muted foreground dimmer than entered text by @flamboh in https://github.com/pingdotgg/t3code/pull/9113 * fix(clients): stop repeating expanded commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9120 * fix(grok): health check, model selection, and stop all work against the real CLI by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9154 * perf(web): halve the cold-start bundle by splitting Clerk and cold routes by @StiensWout in https://github.com/pingdotgg/t3code/pull/9058 * feat(desktop): update the desktop app on remote Macs from the Update button by @t3dotgg in https://github.com/pingdotgg/t3code/pull/6554 * test(server): measure shell, second client, and reconnect transfer by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9157 * fix(web): project default model works on the hosted app by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9142 * fix(web): darken neutral control surfaces by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9064 * fix(web): preserve panel state across workspace refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8968 * feat(files): open markdown, HTML, and PDF files outside the workspace by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9140 * feat(web): render HTML and PDF files in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9143 * fix(web): compact project settings actions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9160 * fix(web): browse folders from file breadcrumbs by @404khai in https://github.com/pingdotgg/t3code/pull/8910 * feat(pull-requests): copy provider checkout commands by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9086 * fix(web): hide build pill in narrow sidebars by @flamboh in https://github.com/pingdotgg/t3code/pull/9159 * feat(web): cite assistant responses with inline citations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9146 * fix(provider): drop removed custom models from the model picker by @StiensWout in https://github.com/pingdotgg/t3code/pull/9075 * fix(web): align composer notices and stash by @Bil0000 in https://github.com/pingdotgg/t3code/pull/8890 * fix(web): label keybinding condition removal actions by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/8664 * fix(contracts): accept legacy pull request checkout results by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/8238 * fix(desktop): hold-to-quit no longer gets stuck by @saphid in https://github.com/pingdotgg/t3code/pull/9141 * chore: remove unused code and brittle tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9150 * fix(chat): improve tool group summaries and scrolling by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9106 * feat(web): copy the full error report from the error page by @StiensWout in https://github.com/pingdotgg/t3code/pull/9166 * fix(chat): replace failed tools with thinking by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9165 * fix(chat): align failed task progress test by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9172 * fix(web): open PR toast actions in app by @eimexdev in https://github.com/pingdotgg/t3code/pull/9006 * fix(desktop): check artifact build prerequisites by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/8975 * fix(server): discover project skills for Codex and OpenCode by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/8778 * fix(pull-requests): expand code tab diffs by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9174 * chore: bump vendored GhosttyKit and update terminal integration by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9155 * fix(web): copying a code block no longer copies triple backticks by @ipanasenko in https://github.com/pingdotgg/t3code/pull/8448 * fix(models): restore sticky new-thread selections by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9164 * fix(web): model info button opens its details on click by @StiensWout in https://github.com/pingdotgg/t3code/pull/9177 * fix(desktop): skip cached monitor compiler check by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9184 * fix(web): avoid stale file writes on close by @yashranaway in https://github.com/pingdotgg/t3code/pull/8630 * fix(server): bound OpenCode version probes by @yashranaway in https://github.com/pingdotgg/t3code/pull/8750 * fix(server): allow large Azure DevOps PR lists by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8572 * fix(server): allow local-only worktree bases by @yashranaway in https://github.com/pingdotgg/t3code/pull/8751 * fix(web): remove projects with archived threads by @none23 in https://github.com/pingdotgg/t3code/pull/8798 * feat(web): make context window indicator opt-in by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9190 * fix(connect): refresh relay credentials before expiry by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9178 * fix(pull-requests): reuse github api reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9176 * fix(server): stop titling linked PR threads from local git history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9191 * feat(updates): continue active threads across server restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9167 * fix(mobile): prevent message and composer overlap by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9195 * fix(web): preserve composer draft during worktree setup by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9197 * fix(web): prevent two-digit list markers from being clipped by @G-R3 in https://github.com/pingdotgg/t3code/pull/9101 * fix(server): discover project skills for Claude by @anirudhsama in https://github.com/pingdotgg/t3code/pull/9210 * feat(web): redesign provider editor and models list by @StiensWout in https://github.com/pingdotgg/t3code/pull/8508 * fix(web): prevent connection rows from wrapping during removal by @MatthewFeroz in https://github.com/pingdotgg/t3code/pull/8706 * fix(pull-requests): align checkout control with author by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9196 * fix(release): pin patched expo-sharing version by @willsheldon in https://github.com/pingdotgg/t3code/pull/9250 * chore(mobile): update Expo Sharing to 57.0.17 by @StiensWout in https://github.com/pingdotgg/t3code/pull/9248 * fix(web): hide deleted providers with prototype keys by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/8337 * feat(mobile): long-press file references for path and open actions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9258 * fix(desktop): exclude opposite macOS pty prebuilds by @extoci in https://github.com/pingdotgg/t3code/pull/9240 * feat(web): add copy path button to diff headers by @ipanasenko in https://github.com/pingdotgg/t3code/pull/2403 * fix(server): subscribe before provider settings watcher by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9271 * fix(mobile): show filled filter icon on Android when filters are active by @none23 in https://github.com/pingdotgg/t3code/pull/9217 * fix(chat): show single tool calls without summaries by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9267 * fix(web): warn when shared settings have no target environment by @imabdulazeez in https://github.com/pingdotgg/t3code/pull/9207 * fix(web): confirm closing agent-controlled browsers by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9272 * feat(desktop): browser profiles for the preview browser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7254 * refactor(shared): move the node:sqlite Effect SQL client into shared by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7272 * feat(web): add opt-in panel animations by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8830 * feat(projects): automatically pull clean default branches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9277 * fix(web): show pull request state icons in tabs by @flamboh in https://github.com/pingdotgg/t3code/pull/9112 * feat(providers): add context compaction across harnesses by @maria-rcks in https://github.com/pingdotgg/t3code/pull/8808 * feat(web): add proactive panels by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9276 * fix(web): unify control sizing across settings pages by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9281 * fix(web): offer browser profiles from the empty-panel launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9279 * Revert "feat(providers): add context compaction across harnesses" by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9284 * fix(web): show scroll-to-end as soon as the last message slips under the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9280 * fix(cursor): honor auto and full access modes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9283 * fix(desktop): detect installed Spectre libs for Windows builds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9285 * fix(pull-requests): missing features & better behaviour by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9188 * fix(providers): discover workspace skills everywhere by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9180 * fix(server): preserve automatic settlement timestamps by @eimexdev in https://github.com/pingdotgg/t3code/pull/9254 * fix(opencode): show Reasoning selector for OpenCode models by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9287 * feat(web): preview document attachments in the file viewer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9292 * chore(ci): narrow the UI consistency check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9297 * chore(ci): only run check-run agents on vouched contributors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9298 * fix(web): stop remounting markdown on every activity delta by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9306 * fix(pull-requests): keep cached PR chrome on reopen by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9294 * feat(environments): draw each environment as the machine it runs on by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9299 * feat(web): apply and remove labels from the pull request tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9313 * fix(sidebar): collapse settled and snoozed shelves by default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9314 * refactor(media): unify file and media previews across clients by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9253 * fix(chat): keep live tool labels in present tense by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9316 * chore: audit lint directives and move plugin allowlists into config by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9300 * chore(ci): narrow the Effect conventions check-run agent by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9321 * refactor(mobile): style plain views with Uniwind classes instead of the theme bridge by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9322 * fix(dev): share dev servers on the loopback Vite actually binds by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9324 * fix(web): line up the titlebar wordmark label and version pill by @tristanmanchester in https://github.com/pingdotgg/t3code/pull/9255 * fix(web): make the diff layout toggle a persisted setting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9326 * chore: dedupe lightningcss and tailwind node bindings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9331 * chore: upgrade vite-plus to 0.3.0 by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9327 * feat(web): add a file tree to the diff panel and pull request code tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9330 * feat(web): add PageUp/PageDown chat navigation by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9315 * fix(web): collapse PR header actions to icons when narrow by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9334 * fix(web): resolve Vite sourcemap and supports warnings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9343 * feat(web): choose whether links open in the default browser or in T3 Code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9339 * fix(web): add press feedback to buttons by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9349 * feat(web): add customizable project icons by @saphid in https://github.com/pingdotgg/t3code/pull/9137 * fix(mobile): stop indented code overflowing Android chat bubbles by @Adamulek123 in https://github.com/pingdotgg/t3code/pull/9347 * fix(web): let the pull request list use wide screens by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9351 * feat: display native app and browser icons in work logs by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9093 * fix(web): collapse oldest pull request comments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9323 * fix(pull-requests): shared state + not settling? by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9332 * fix(web): stop usage summary requests reporting slow RPCs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9358 * feat(web): suggest ssh hosts in a dropdown under the host field by @flamboh in https://github.com/pingdotgg/t3code/pull/9171 * feat(web): mod+w closes the active right panel tab before the window by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9363 * test(web): remove static markup-only component tests by @t3-code[bot] in https://github.com/pingdotgg/t3code/pull/9364 * fix(environments): draw the machine icon everywhere an environment is named by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9365 * fix(web): settled sidebar rows use the project fallback icon by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9366 * fix(web): match project icon chooser button sizes by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9368 * fix(mobile): pressed and disabled styles no longer apply unconditionally by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9355 * fix(mobile): size expanded tool groups correctly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9359 * fix(web): collapse the resting composer by @chrisdeeming in https://github.com/pingdotgg/t3code/pull/7855 * fix(web): keep trailing tool groups out of "Worked for" accordion by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9384 * feat(marketing): put named-developer quotes on the landing page by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9385 * fix(claude): expand slash commands when a message has attachments by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9122 * fix(web): stop the resting composer layout loop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9393 * fix(web): render assistant images inline in chat by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9126 * feat(providers): add Google Antigravity via the official ACP agent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9348 * fix(mobile): show an error instead of an endless preview spinner by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9123 * fix(usage): price new models without waiting a day for the rate table by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9202 * fix(web): unlock the composer when preview capture fails by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9127 * fix(antigravity): refresh the model manifest so older Gemini models fold as legacy by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9397 * perf(ci): reuse dependency checks in release builds by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9399 * fix(web): send cited messages with Cmd+Enter by @extoci in https://github.com/pingdotgg/t3code/pull/9307 * fix(web): preserve explicit preview navigation URLs by @nateEc in https://github.com/pingdotgg/t3code/pull/8902 * fix(web): prevent loading ssh environments from overriding navigation by @flamboh in https://github.com/pingdotgg/t3code/pull/9168 * fix(mobile): skip unsupported shared settings targets by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9381 * fix(web): avoid duplicate Antigravity install status by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9419 * fix(composer): mute fast icon when collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9451 * fix(web): unify skeleton loading animations on one pulse by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9448 * fix(web): prioritize authored pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9453 * fix(web): make project icons the default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9457 * fix(server): reuse pr state when settling threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9459 * fix(web): keep agent images collapsed by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9460 * fix(web): banner buttons no longer expand the resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9452 * fix(web): stop clipping the traits chevron on long Codex effort labels by @zortos293 in https://github.com/pingdotgg/t3code/pull/9433 * fix(web): make right panel tabs easier to scroll by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9461 * fix(web): render transparent previews on white by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/9463 * fix(mobile): show loading and syncing in the working pill by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9466 * fix(server): keep a/ and b/ prefixes in rendered git patches by @Mnigos in https://github.com/pingdotgg/t3code/pull/9438 * fix(server): full-access OpenCode threads no longer ask for approvals by @shivamhwp in https://github.com/pingdotgg/t3code/pull/9282 * fix(web): reuse pull request list data while loading by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9467 * feat(web): let users turn off composer collapse on blur and scroll by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9469 * fix(web): move workflow approval beside checks by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9465 * fix(desktop): refresh generated annotation styles by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9488 * fix(web): let the PR reviewer and label search boxes take keystrokes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9479 * fix(web): dont collapse composer when interacting with bottom row by @extoci in https://github.com/pingdotgg/t3code/pull/9490 * fix(desktop): restore second-press quit fallback by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9485 * fix(web): keep opencode icon hollow in collapsed composer by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9492 * fix(web): keep agent browser preview visible by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9484 * fix(mobile): keep the machine glyph next to the environment label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9486 * fix(mobile): let back swipe pop from horizontal scroll edges by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9493 * fix(antigravity): discover legacy workspace skills by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9410 * fix(mobile): resolve Antigravity provider icon and normalize driver matching by @Invictine in https://github.com/pingdotgg/t3code/pull/9495 * fix(antigravity): forward Google sign-in URLs from browser helper by @WellyngtonF in https://github.com/pingdotgg/t3code/pull/9425 * feat(desktop): import browser cookies into a profile by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7255 * feat(desktop): import from Chrome, Edge, Brave, Vivaldi, Opera, Arc and Firefox by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7260 * feat(desktop): resolve Chromium cookie keys on Linux by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7261 * fix(antigravity): allow slow runtime startup during setup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9510 * fix(antigravity): keep model choices up to date by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9511 * fix(antigravity): handle native sign-in URLs on stderr by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9514 * fix(antigravity): update managed runtime to 1.1.1 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9509 * fix(desktop): address the browser import review left over from the stack by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9516 * feat(antigravity): show subagent calls and results by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9515 * fix(web): let paste expand a resting composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9498 * fix(web): keep the composer open while selecting timeline text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9499 * fix(web): return focus to the composer after closing a media preview by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9513 * fix(server): keep events during thread subscription startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9521 * chore: forward issue/PR/discussion events to Cursor hygiene by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9518 * fix(auth): keep pairing credentials out of access read models by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9523 * chore: drop comment events from Cursor hygiene forwarder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9527 * feat(codex): support async questions by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9512 * fix(web): keep right panel controls clickable by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9517 * feat(usage): show Codex and Claude subscription limits on a Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9507 * feat(web): reorganize settings pages by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9354 * fix(server): settle branch threads immediately on pull request merge by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9528 * fix(server): back off relay client restarts after rapid exits by @derektrimm in https://github.com/pingdotgg/t3code/pull/8788 * fix(codex): accept rate limit errors on thread resume by @nateEc in https://github.com/pingdotgg/t3code/pull/8897 * fix(desktop): preview CDP sessions no longer hard-crash the app by @sethwebster in https://github.com/pingdotgg/t3code/pull/9068 * Fix worktree removal timing out on large install trees by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/3902 * fix(web): settle the resting composer layout with a pixel of slack by @matheustimbo in https://github.com/pingdotgg/t3code/pull/9482 * fix(web): keep automatic project icons consistent by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9535 * fix(server): include SQLite conditions in persistence errors by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9536 * fix(dev): keep shared dev reloads and hot updates working by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9543 * feat(providers): add context compaction command by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9293 * fix(mobile): keep store screenshots free of system banners and show dictation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9548 * fix(web): restore composer controls as space becomes available by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9539 * fix(web): measure collapsed model labels at their visible width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9540 * fix(web): close composer menus when their controls hide by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9541 * fix(web): thread error banner no longer shifts the chat by @flamboh in https://github.com/pingdotgg/t3code/pull/9473 * fix(server): reveal normalized paths in File Explorer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9551 * feat(marketing): fresh screenshot and floating marks on the homepage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9547 * feat(usage): redeem Codex reset credits from the Limits tab by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9534 * fix(server): find newly opened pull requests after agent turns by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9125 * ci: add on-demand Windows test workflow by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9538 * fix(web): simplify expanded tool details by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9549 * fix(web): keep the last message visible when the resting composer expands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9553 * test(web): fix flaky startup and Tailwind tests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9558 * fix(web): keep codex restart responses continuous by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9560 * fix(web): make settings sidebar sub-section buttons full width by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9562 * fix(web): render settings sidebar immediately by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9563 * chore: vouch august contributors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9557 * fix(web): stabilize right panel transitions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9554 * fix: better shell syntax handling for labels by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/9371 * fix(web): align the sidebar wordmark by baseline by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9578 * fix(antigravity): keep subagent batches active after launch by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9579 * fix(mobile): render workspace images in markdown file previews by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8769 * fix(usage): deduplicate CLI proxy subscription accounts by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9584 * fix(web): bound disconnected send toasts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9592 * fix(desktop): restore panel titlebar interactions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9591 * fix(connect): refresh authorization without disconnecting by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9582 * fix(web): show context meter in compact composer by @GuilhermeVieiraDev in https://github.com/pingdotgg/t3code/pull/9430 * fix(pull-requests): refresh data after thread turns by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9496 * fix(web): render draft PRs in gray by @extoci in https://github.com/pingdotgg/t3code/pull/9537 * refactor(web): move usage provider controls to settings by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9599 * fix: show idle subagent batches without completion marks by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9616 * fix(web): group image views like other tool calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9597 * fix: preserve tool icons on failed calls by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9606 * fix(connect): diagnose incomplete headless server setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9602 * fix(web): keep command palette above composer menus by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9613 * fix(web): snooze menu no longer overlaps thread details by @RakshithBhat03 in https://github.com/pingdotgg/t3code/pull/9601 * fix(web): match composer pull request state icons by @flamboh in https://github.com/pingdotgg/t3code/pull/9375 * fix(server): load OpenCode workspace skills via SDK to avoid 64KB CLI pipe truncation by @BarryHenryJr in https://github.com/pingdotgg/t3code/pull/9585 * fix(web): mute sidebar branch name to match worktree icon by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9622 * fix(web,mobile): fold context compaction under settled turn folds by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9623 * feat(mobile): make chat text selectable on Android by @SunkenInTime in https://github.com/pingdotgg/t3code/pull/8779 * fix(web): toggle a single stashed prompt with Cmd+S by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9644 * fix(server): prevent duplicate desktop clients after restart by @seeb1337 in https://github.com/pingdotgg/t3code/pull/6305 * fix(web): resume Antigravity threads without repeated sign-in by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9647 * feat(mobile): paste the phone clipboard into the terminal by @lnieuwenhuis in https://github.com/pingdotgg/t3code/pull/9199 * feat(web): show which sidebar threads hold an unsent draft by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9658 * fix(server): unblock OpenCode approvals and stop by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9653 * fix(desktop): quit immediately on a second shortcut press by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9657 * fix(server): update Claude Agent SDK to 0.3.260 by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9135 * perf(server): stop loading message bodies for thread summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9662 * perf(web): speed up terminal snapshots by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9663 * fix(web): show machine icons in the environment picker by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9668 * perf(mobile): bound diff syntax highlighting work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9673 * perf(web): keep Markdown mounted during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9677 * perf(mobile): skip unused legacy list work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9679 * perf(marketing): serve images at their display size by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9682 * perf(server): cache and stream static web assets by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9669 * perf(server): batch projector cursor writes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9671 * perf(server): stop retaining unused OpenCode tool history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9684 * perf(mobile): reuse chat feed rows during streaming by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9688 * perf(server): omit repeated OpenCode progress logs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9689 * perf(clients): avoid waiting to read cached relay tokens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9691 * perf(mobile): reuse diff rows during comment edits by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9693 * perf(web): defer composer draft serialization by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9695 * feat(server): measure provider turn token usage by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9132 * perf(marketing): stop continuous homepage motion by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9697 * perf(server): avoid full patches for checkpoint summaries by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9694 * perf(web): defer diff workers until a code view opens by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9692 * perf(marketing): serve website fonts locally by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9701 * perf(server): stop rebuilding terminal history per chunk by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9703 * perf(server): use one query for buffered provider events by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9706 * perf(relay): avoid repeated activity decoding by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9708 * perf(web): stop continuous chat status animations by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9709 * fix(mobile): preserve saved work after storage read failures by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9710 * perf(web): stop replaying terminal buffers on rollover by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9707 * feat(web): preview pull request links by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9631 * perf(client): reduce thread-list update work by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9716 * fix(server): settle inactive threads with open PRs by @Gigioxx in https://github.com/pingdotgg/t3code/pull/9610 * fix(server): bound slow-client event buffers by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9715 * test(server): allow either valid file-search match by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9720 * fix(web): match provider settings layout for disconnected devices by @flamboh in https://github.com/pingdotgg/t3code/pull/9619 * fix(web): keep the slash menu above the composer when vertical space is short by @Mnigos in https://github.com/pingdotgg/t3code/pull/9625 * fix(mobile): remove provider setup by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9721 * perf(web): stop rendering hidden terminals by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9718 * fix(mobile): read file-backed image drafts before enabling them by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9713 * perf(server): replay only the selected thread by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9726 * fix(web): mute composer helper text by @jakeleventhal in https://github.com/pingdotgg/t3code/pull/9654 * feat(web): unpin threads from the sidebar multi-select menu by @gsimone in https://github.com/pingdotgg/t3code/pull/9651 * perf(web): reuse timeline rows while text streams by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9725 * fix(relay): bound stalled push requests by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9734 * perf(server): stop caching unused OpenCode tool parts by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9738 * fix(web): fold single trailing activity by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9739 * fix(web): show project settings for new threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9743 * perf(mobile): bound the parsed review cache by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9749 * perf(web): avoid repeated terminal metadata scans by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9747 * perf(server): bound terminal history by bytes by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9748 * feat(web): link pull request authors to profiles by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9627 * fix(web): refine server update notice by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9744 * perf(client): stop thread streams when unused by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9740 * perf(mobile): defer file preview highlighter startup by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9752 * perf(server): skip history reads for metadata commands by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9758 * perf(web): defer image URL requests for thread history by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9760 * fix(models): make GPT-6-Astra current by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9762 * fix(web): stop empty diffs replacing pull requests by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9753 * fix(sidebar): mute background working threads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9759 * fix(web): reset automatic pull to default by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9763 * fix(web): restore file comment focus in editable preview by @ShpetimA in https://github.com/pingdotgg/t3code/pull/9061 * docs: keep internal guides focused on architecture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9755 * docs: focus user guides on features and workflows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9756 * fix(web): stop panel motion during navigation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9766 * fix(web): open composer selectors below controls by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9767 * perf(server): skip unused Linux process detail reads by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9768 * fix(server): remove retired Codex models after refresh by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9773 * test: stop path and platform tests depending on the host OS by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9564 * test(server): skip posix executable fixtures on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9565 * test: skip symlink fixtures where the host cannot create symlinks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9566 * test(server): run fake provider CLIs through a Node stub on every host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9567 * test(desktop): make path fixtures and timeouts host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9568 * fix(server): tolerate the missing directory fsync on Windows by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9569 * test(server): pin git config for fixtures and compare native realpaths by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9570 * test: skip POSIX mode-bit assertions on a Windows host by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9571 * test(server): keep provider fixture directories host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9572 * test: resolve the Windows temp directory to its long name by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9573 * test(server): run the Antigravity install harness for the host platform by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9574 * fix(server): canonicalise media paths the same way their callers do by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9575 * test(server): make Windows path and async fixtures deterministic by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9576 * fix(server): refuse symlinked theme files on Windows too by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9580 * test(scripts): keep Windows packaging checks host-portable by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9589 * fix(contracts): include tool.denied in runtime event types by @Lucenx9 in https://github.com/pingdotgg/t3code/pull/9770 * feat(mobile): split the usage page into Usage and Limits tabs by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9775 * fix(web): restore the running tool label shine by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9777 * fix(web): align provider controls with machine tabs by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9769 * docs(web): document panel motion during navigation by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9778 * feat(usage): support custom model prices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9774 * fix(web): center pull request link previews by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9794 * fix: address usage limits and merge settlement regressions by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9784 * fix(web): give toggle thumbs consistent inset spacing by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9805 * fix(web): use segmented controls for mode switches by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9781 * fix(server): recover opted-in threads after machine restarts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9803 * fix(web): simplify changed files into a persistent folder tree by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9821 * feat: add custom model names and option descriptors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9807 * fix(cursor): discover symlinked skills as package boundaries by @EzraBuild in https://github.com/pingdotgg/t3code/pull/9420 * fix(ssh): exec managed servers without npm wrappers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9843 * fix(server): detect nested Git workspaces for checkpoints by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9842 * fix(web): keep worktree origin preference visible by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9846 * fix(web): smooth settings sidebar transitions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9811 * feat(web): highlight visible settings sections by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9812 * fix(web): keep the sidebar project filter across navigation by @Mnigos in https://github.com/pingdotgg/t3code/pull/9416 * fix(server): surface Claude safety model fallback notices instead of dropping them by @darahaas15 in https://github.com/pingdotgg/t3code/pull/8853 * fix(web): reload saved colors when reopening the theme editor by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9847 * feat(desktop): import cookies from Safari by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/7262 * fix(web): respect case in POSIX file links by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/9309 * fix(server): surface a missing workspace folder instead of a spawn error by @kakismash in https://github.com/pingdotgg/t3code/pull/5040 * fix: stop favicon requests for private link hosts on web and mobile by @fe-franco in https://github.com/pingdotgg/t3code/pull/5838 * fix(server): preserve native provider executable paths during updates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9850 * fix(web): restore composer expansion after tool calls by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9782 * fix(client): explain possible network blocking for T3 Connect by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9783 * fix(desktop): isolate preview keyboard shortcuts from the host by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9840 * fix(prs): reuse GitHub data and defer optional reads by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9835 * perf(shared): skip duplicate PATH entries and per-probe tracing by @jadeva in https://github.com/pingdotgg/t3code/pull/9618 * fix(web): preserve focus and prioritize picker shortcuts by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9795 * fix(skills): support names beginning with digits by @amiralibg in https://github.com/pingdotgg/t3code/pull/9244 * fix(server): advertise truecolor in the integrated terminal by @shubhxho in https://github.com/pingdotgg/t3code/pull/7680 * fix(claude): surface usage-limit pauses in the thread by @vitalyiegorov in https://github.com/pingdotgg/t3code/pull/7165 * fix: restore UX after performance improvements by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9799 * fix(codex): show what a file-change approval will change by @walid-baharwal in https://github.com/pingdotgg/t3code/pull/8669 * fix(ci): add fallback Ubuntu package mirrors by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9864 * fix(web): copy text over plain HTTP by @Michel-Liao in https://github.com/pingdotgg/t3code/pull/8023 * fix(server): dismiss native questions when their turn ends by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9851 * fix(server): quote copied native provider update commands by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9856 * fix(release): install the correct Windows Spectre component by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9859 * fix(web): show retained runtime diagnostics in the work log by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9870 * fix(web): make sidebar project actions reachable by keyboard and screen reader by @akj in https://github.com/pingdotgg/t3code/pull/5521 * fix(preview): bound automation waits and screenshot captures by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/4685 * fix(web): render and filter usage as environments respond by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9860 * feat(web): edit usage prices across selected environments by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9861 * fix(mobile): keep usage tabs below the header when switching by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9876 * fix(connect): refresh HTTP credentials without reconnecting by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9594 * fix(web): keep file autosaves active after effect replay by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9878 * fix(web): prioritize open panel pull request when copying by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9877 * fix(cli): resolve projects with missing workspace directories by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9885 * fix(web): sort equally merge-ready pull requests by diff size by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9887 * fix(chat): show hours for long runs by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9894 * fix(server): only run provider updates through the installer that owns the binary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9325 * fix(web): discard stale highlights after file edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9902 * feat(web): recall sent prompts with the up arrow by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9173 * fix(server): keep mise-owned npm packages manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9927 * fix(settings): share restart continuation across environments by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9933 * fix(server): capture turn checkpoints after all edits finish by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9841 * fix(web): load file grammar before enabling edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9947 * fix(web): deduplicate PR project filter choices by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9948 * test(web): keep provider field readers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9952 * test(mobile): keep composer selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9953 * test(client-runtime): keep scoped key implementation private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9955 * fix(web): reveal reselected diff files by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9951 * refactor(web): remove obsolete changed-files preview helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9956 * fix(web): give the browser keybinding notice breathing room by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9964 * chore: configure Knip workspace audits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9958 * refactor(web): prune unused UI and provider code by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9959 * chore(mobile): remove obsolete widget wiring script by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9960 * chore: remove redundant root tooling dependencies by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9961 * ci: reject unused files and dependencies with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9962 * test(contracts): keep driver default lookup private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9968 * test(server): remove Azure permissions constant snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9973 * refactor(shared): remove unused viewport formatters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9970 * refactor(mobile): remove unused provider option summary by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9971 * refactor(client-runtime): remove unused connection phase message by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9972 * refactor(mobile): remove unused layout calculations by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9974 * refactor(client-runtime): remove unused file position predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9976 * refactor(mobile): remove unused font size steppers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9975 * test(server): cover thread lookup through command invariants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9978 * test(server): remove provider equality wrapper fixture by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9979 * test(server): assert the dispatched welcome thread model by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9980 * refactor(desktop): remove unused keyring remediation text by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9981 * refactor(desktop): remove test-only Electron error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9982 * refactor(web): remove unused pull request state label by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9984 * perf(web): keep timeline row reuse engaged while text streams by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9909 * fix(web): reset markdown widgets when the previewed file changes by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9910 * fix(mobile): keep highlighting review diffs after a long line by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9911 * fix(marketing): align the endorsement carousel with its heading by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9912 * fix(client): keep warm thread resumes live instead of flashing sync by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9913 * test(server): remove authorization prompt snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9985 * test(server): remove static OAuth page snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9986 * test(server): remove provider label identity assertion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9987 * test(server): consolidate agent activity opt-in coverage by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9988 * refactor(shared): remove unused preview URL predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9989 * refactor(shared): remove unused mention path serializer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9990 * refactor(shared): remove retired PATH capture parser by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9991 * refactor(client-runtime): remove unused subagent selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9992 * refactor(web): test the live usage column builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9993 * refactor(web): remove unused aspect ratio reconciler by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9994 * refactor(web): remove obsolete cloud listing helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9995 * test(web): remove composer control style snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9996 * test(web): keep the preview profile label helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9997 * test(server): cover raw OpenCode deltas through the adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9977 * refactor(web): remove obsolete pull request link opener by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9983 * test(relay): keep the stage slug helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9998 * refactor(mobile): keep project selection helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9999 * refactor(mobile): keep review default ID helper private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10000 * refactor(mobile): remove unused native style constants by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10001 * refactor(mobile): test terminal palettes through public theme API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10002 * refactor(mobile): remove unused file tree walkers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10003 * refactor(shared): keep persisted settings helpers private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10004 * test(mobile): remove mocked UUID shape assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10006 * refactor(mobile): test final connection status presentation by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10007 * test(web): keep pull request menu items private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10016 * refactor(shared): test favicon selection through public API by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10005 * refactor(server): remove test-only pricing normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10017 * refactor(web): remove unused desktop update visibility helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10014 * refactor(web): remove obsolete provider update helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10015 * refactor(web): remove unused terminal context preview formatter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10009 * refactor(web): test environment-scoped draft promotion by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10010 * fix(web): retain wrapped row heights during edits by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10018 * refactor(shared): remove unused Clerk hostname predicate by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10008 * refactor(tailscale): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10011 * ci: reject unused tailscale exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10012 * fix(web): keep chat media at a stable size while it loads by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/9938 * refactor(server): keep manifest age parsing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10028 * refactor(mobile): remove unused awareness relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10029 * refactor(server): remove unused startup heartbeat launcher by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10030 * refactor(shared): keep search ranking comparator private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10031 * refactor(server): keep telemetry identity errors private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10032 * refactor(mobile): test composer persistence through the live decoder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10033 * refactor(web): remove unused sidebar selectors by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10034 * refactor(server): keep Cursor fallback models private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10038 * refactor(web): remove unused xterm link range helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10040 * refactor(mobile): remove obsolete review list builder by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10039 * test(server): remove duplicate VCS error constructor checks by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10042 * refactor(mobile): keep appearance calculations private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10043 * refactor(web): remove unused sidebar menu action by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10044 * refactor(web): test live Ghostty link resolution directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10041 * test(server): exercise Codex prompts through public assembly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10045 * refactor(shared): remove unused elapsed-time adapter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10046 * refactor(web): remove unused preview thread reset helper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10049 * refactor(desktop): remove test-only error predicates by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10047 * refactor(mobile): keep review reset hashing private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10048 * test(web): remove AppRoot element order snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10052 * refactor(codex): keep app-server client internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10035 * ci: reject unused Codex client exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10036 * refactor(server): simplify native telemetry error internals by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10057 * refactor(mobile): remove write-only terminal font cache by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10058 * refactor(web): remove obsolete HSL theme generator by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10061 * refactor(mobile): remove obsolete native diff token stream by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10062 * test(server): remove title prompt editorial snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10063 * test(server): remove repeated runtime prompt interpolation cases by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10059 * refactor(web): observe preview tests through the live registry by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10064 * test(server): remove keybinding default assignment snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10065 * refactor(mobile): remove obsolete whole-file review highlighters by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10067 * test(server): cover CLI runner detection through command suggestions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10066 * refactor(mobile): remove unused cloud relay URL normalizer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10068 * refactor(web): test live keybinding resolvers directly by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10069 * test(server): cover Grok skill parsing through discovery by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10070 * test(web): remove mocked diff view prop snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10073 * test(web): remove mocked annotation options snapshot by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10074 * refactor(web): keep pending action labels private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10075 * refactor(mobile): remove unused cloud pending-status mapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10071 * refactor(web): remove unused model picker hint helpers by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10072 * fix(server): resume checkpointing after git init by @Yash-Singh1 in https://github.com/pingdotgg/t3code/pull/10078 * feat(web): first-run welcome wizard with agent setup and project import by @t3dotgg in https://github.com/pingdotgg/t3code/pull/5362 * fix(server): keep Homebrew mise shims manual-only by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10085 * fix(ssh): report remote package installation failures accurately by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10088 * fix(web): keep bulk thread deletion going after failures by @m-de-graaff in https://github.com/pingdotgg/t3code/pull/4615 * fix(web): scale agent spawn rows with interface font by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10092 * fix(web): prevent sidebar tooltip title clipping by @UtkarshUsername in https://github.com/pingdotgg/t3code/pull/10086 * fix(web): keep the composer expanded until the thread can scroll by @t3dotgg in https://github.com/pingdotgg/t3code/pull/9965 * fix(web): preserve original mention text in the composer by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10100 * refactor(mobile): remove unused pairing redaction wrapper by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10147 * test(web): drop provider banner styling assertions by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10148 * refactor(client-runtime): remove unused relay token waiter by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10151 * test(web): drop sidebar artwork styling snapshots by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10152 * refactor(ssh): keep package internals private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10144 * ci: reject unused SSH exports with Knip by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10145 * refactor(acp): keep protocol implementation exports private by @juliusmarminge in https://github.com/pingdotgg/t3code/pull/10165 * fix(shared): validate cloudflared with the version subcommand by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9880 * fix(desktop): separate LAN and Tailscale pairing endpoints by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9882 * fix(server): install pinned runtime when pnpm node lacks npm by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9923 * fix(web): hide sidebar search shortcut on mobile by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9932 * fix(web): align tool disclosure chevrons with expanded state by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9935 * fix(antigravity): distinguish session initialization auth failures by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9919 * fix(cursor): cache successful model discovery between refreshes by @maria-rcks in https://github.com/pingdotgg/t3code/pull/9918 * fix(opencode): revert from the first removed assistant message by @maria-rcks in https://github.com/pingdotgg/t3code/pull/…

GitHub's native repository webhooks cannot send the
Authorization: Bearer ...header that Cursor's automation endpoint requires. A direct repository webhook therefore receives HTTP 401, and the hygiene automation never sees the event.This adds a GitHub Actions workflow that forwards selected pull request, issue, discussion, issue comment, and discussion comment events to Cursor. The job posts the original GitHub event payload and reads the endpoint and full authorization value from Actions secrets. If either secret is absent, it logs a message and skips the request without failing unrelated repository activity.
After merge, add these Actions secrets:
CURSOR_T3CODE_WEBHOOK_URL: the Cursor automation webhook URLCURSOR_T3CODE_WEBHOOK_AUTH: the fullAuthorizationheader value, includingBearerDo not put either secret in the repository.
Validation:
git diff --checkand manual review of the staged workflow against the requested event list and request headers.Built with GPT-5 Codex in the Codex app.
Note
Low Risk
CI-only outbound forwarding with read-only permissions; no application or auth logic changes, and missing secrets fail open without blocking merges.
Overview
Adds a GitHub Actions workflow (
cursor-hygiene-webhook.yml) so repo activity can reach Cursor’s hygiene automation with a properAuthorizationheader—something native GitHub webhooks can’t send.The workflow runs on pushes to
main, selected PR, issue, discussion, and comment events. A single job POSTs the raw event JSON fromgithub.event_path, setsX-GitHub-EventandX-GitHub-Delivery, and uses Actions secretsCURSOR_T3CODE_WEBHOOK_URLandCURSOR_T3CODE_WEBHOOK_AUTH(full header value, includingBearer). If either secret is missing, it logs and exits 0 so other CI isn’t blocked. Job permissions are limited tocontents: read.Reviewed by Cursor Bugbot for commit 6c7a614. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add
cursor-hygiene-webhookworkflow to forward issue, PR, and discussion eventsmain, selected pull request, issue, and discussion lifecycle events, and creation of issue/discussion comments.forwardjob onubuntu-24.04with contents-read permission POSTs the GitHub event payload fromgithub.event_pathto a Cursor webhook URL, including authorization, event name, and a delivery header built from the workflow run ID and attempt.Macroscope summarized 6c7a614.