Skip to content

fix(server): mark unread no longer brings back a dismissed wake - #24080

Merged
maria-rcks merged 3 commits into
pingdotgg:mainfrom
fixfon:fix/24052-mark-unread-expired-snooze
Oct 29, 2026
Merged

maria-rcks merged 3 commits into
pingdotgg:mainfrom
fixfon:fix/24052-mark-unread-expired-snooze

Conversation

@fixfon

@fixfon fixfon commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Problem

After a snooze expires and the Woke badge is dismissed, choosing Mark unread brings the old Woke badge back instead of showing Done (#24052).

Dismissing Woke records a visit at the wake time. Mark unread rewinds lastVisitedAt to just before the latest completion but keeps the expired snoozedUntil/snoozedAt. Clients read snoozedUntil as the wake time, so after the rewind the already-dismissed wake looks unseen again and outranks Done.

Repro (from the issue): finish a run, snooze for 1 minute, let it expire, dismiss Woke, then Mark unread. Expected Done, got Woke.

Change

In the thread.mark-unread case in apps/server/src/orchestration-v2/Orchestrator.ts, if the snooze has already expired (snoozedUntil <= now), clear snoozedUntil and snoozedAt and store the expiry in lastSnoozeWakeAt. Auto-settlement already reads lastSnoozeWakeAt as the wake time after a timer wake, so its timer base does not change.

  • A snooze that has not expired yet is left untouched.
  • updatedAt is not changed, same as before.
  • Side effect: once Mark unread retires an expired snooze, that Woke badge is gone for good. The thread shows Done (unread) until the next snooze/wake cycle. This is the behavior the issue asks for.

Server only, 2 files, +128/-2 (16 lines of source, the rest is tests). No client changes.

Scope and approval

Fixes #24052. The issue has no maintainer triage comment yet. I think this qualifies as a small, focused fix for an obvious bug: Mark unread is meant to mark the latest completion unread, and bringing back a notification the user already dismissed is a side effect, not intended behavior. The fix is the one the reporter described and verified on their own build.

Possible overlap with open PRs, both different bugs:

Verification

Unit tests only. I did not run the UI or do a manual check in the app.

Two new tests in apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts:

  • mark unread retires an expired snooze so a dismissed wake stays dismissed: complete a run, snooze 1 minute, advance 2 minutes, visit at the wake time, then mark unread. Asserts lastVisitedAt is rewound, snoozedUntil/snoozedAt are null, and lastSnoozeWakeAt equals the old expiry.
  • mark unread leaves a future snooze untouched: same flow with a 60-minute snooze. Only lastVisitedAt changes.

Results:

  • vp test run apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts: the expired-snooze test fails on base 12c91aef7a and with the source change reverted; with the change, 13/13 pass.
  • vp test run apps/server/src/orchestration-v2/ThreadSettlementService.test.ts packages/client-runtime/src/state/threadSnoozed.test.ts: 42/42 pass (22 + 20).
  • Lint, format check and server typecheck are clean.

Environment: macOS arm64, Node 25.9.0 (the repo's engines field asks for 26.12.1, so tests did not run on the pinned Node), pnpm 12.14.0.

Claude Sonnet 5.5 (xhigh) via T3 Code.

Mark unread rewinds lastVisitedAt to just before the latest completion but
left an expired snooze in place. Clients read snoozedUntil as the wake time,
so the rewound visit made the already-dismissed Woke badge reappear instead
of Done.

Retire an expired snooze when marking unread: clear snoozedUntil and
snoozedAt and record the expiry in lastSnoozeWakeAt, which auto-settlement
already reads as the wake time. A snooze that has not expired is untouched.

Fixes pingdotgg#24052
@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Oct 23, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at b81ade6

Macroscope's review found this PR approvable — This is a small, focused server bug fix that retires only expired snoozes during Mark Unread, while preserving future snoozes. Regression tests cover both cases, and the change introduces no schema, configuration, or new capability.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between b81ade6 and f25ccc9.

Files selected for processing: 4
  • apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts
  • apps/server/src/orchestration-v2/Orchestrator.ts
  • packages/client-runtime/src/state/threadVisits.test.ts
  • packages/client-runtime/src/state/threadVisits.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 0 remain after this review.

Walkthrough

When thread.mark-unread runs, it clears snooze fields if the snooze deadline has passed and records that deadline as lastSnoozeWakeAt. It preserves future snoozes. Client visit tracking suppresses duplicate visits based on timestamp order.

Changes: Mark Unread and Snooze State

Layer / File(s) Summary
Mark-unread behavior and regression coverage
apps/server/src/orchestration-v2/Orchestrator.ts, apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts
thread.mark-unread clears snoozedUntil and snoozedAt when the deadline has passed, and records the deadline in lastSnoozeWakeAt. Tests cover expired and future snoozes and the lastVisitedAt rewind.
Visit deduplication and regression coverage
packages/client-runtime/src/state/threadVisits.ts, packages/client-runtime/src/state/threadVisits.test.ts
Visit tracking suppresses dispatch when the last dispatched timestamp is greater than or equal to the effective update time. A test covers wake-time visits, timestamp changes, and a later visit.

Priority: Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested labels: bugfix, size:M

Suggested reviewers: juliusmarminge, yash-singh1

Merge Risk: Minimal · up to f25cc

The change appears ready to merge after normal checks; no concrete remaining issue is identified.

Pre-merge checks: Passed 3 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Linked Issues check Warning Issue #24052 requires the expired-snooze thread.mark-unread behavior. Orchestrator.ts clears snoozedUntil and snoozedAt, stores the old expiry in lastSnoozeWakeAt, and preserves future snooz… Add an automated regression test for replaying thread.mark-unread after the thread is snoozed again. Verify that command replay does not retire or alter the new snooze, while the expired-snooze case still records the prior wake in `lastSn…
Passed Passed checks: 3 passed
Check name Status Explanation
Title check Passed The title is concise, specific, and accurately describes the primary fix: Mark unread no longer restores a dismissed wake.
Description check Passed The description includes all required sections. It clearly explains the problem, implementation, scope rationale, affected behavior, focused verification, test results, environment, and unperformed ch…
Out of Scope Changes check Passed The client-runtime changes are directly related to #24052. They prevent the active-thread visit tracker from immediately undoing the server-side unread rewind after the expired wake is retired, and th…
Full details: Description check

Explanation

The description includes all required sections. It clearly explains the problem, implementation, scope rationale, affected behavior, focused verification, test results, environment, and unperformed checks.

Full details: Out of Scope Changes check

Explanation

The client-runtime changes are directly related to #24052. They prevent the active-thread visit tracker from immediately undoing the server-side unread rewind after the expired wake is retired, and the added test verifies that behavior. The remaining changes implement or test the server state transition. No unrelated change is established by the complete PR diff.

Full details: Linked Issues check

Explanation

Issue #24052 requires the expired-snooze thread.mark-unread behavior. Orchestrator.ts clears snoozedUntil and snoozedAt, stores the old expiry in lastSnoozeWakeAt, and preserves future snoozes. The server tests cover the expired and future cases, and threadVisits.ts keeps the unread state sticky after wake retirement. However, the linked issue also requires regression coverage that replays the command after a new snooze. The whole PR diff contains no such test.

Resolution

Add an automated regression test for replaying thread.mark-unread after the thread is snoozed again. Verify that command replay does not retire or alter the new snooze, while the expired-snooze case still records the prior wake in lastSnoozeWakeAt.

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

maria-rcks commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

thanks @fixfon. the expired-snooze cleanup and saved wake timestamp correctly preserve settlement timing. i retained your commit and both regression tests, merged current main, and shortened the source comment.

i also fixed one nearby mobile regression: removing the wake timestamp could make the active visit tracker send an older visit and immediately undo mark unread. the tracker now ignores older watermarks; a regression in its existing test file verifies unread persists until fresh activity.

verification at f25ccc9dac1060afd8877c6e4c2668030656eeb2:

  • reproduced the original regression against current main's implementation: expired-snooze test fails; future-snooze test passes.
  • reproduced the tracker regression before fixing it.
  • blacksmith: 63 focused orchestrator/settlement/client-snooze tests pass. vp run check:changed passes format, lint, knip, graphql, eight affected/dependent package typechecks, and 24 adjacent tests.
  • real chrome client and codex provider: completed a turn, snoozed for one minute, waited for expiry, explicitly dismissed Woke, then chose Mark unread. main restores Woke; the fix shows Done. matching thread and persisted data across server restarts. stored snooze fields clear, while lastSnoozeWakeAt retains the original expiry.
  • all 27 ci checks pass; latest CodeRabbit review has no actionable findings. two independent final-head reviews approve.

unverified: native mobile and electron were not run. the mobile visit behavior is covered through the shared tracker test. no labels changed and no pr merged.

main after mark unread:

main restores the dismissed woke badge

fix after mark unread:

fix shows done after mark unread

short sidebar interaction on the fix:

mark unread keeps the thread done and unread

review note: CodeRabbit's nonblocking linked-issue warning asks for a command-replay test after re-snoozing. the issue describes that coverage in its local workaround; it does not require changing replay semantics. Orchestrator.ts checks the persisted command receipt at lines 11927–11970 and returns it before dispatching any mutation, so replay cannot clear a newer snooze. no replay code changed. the general receipt-replay regression also passes in Orchestrator.control-reads.test.ts; the extra snooze-specific replay scenario remains untested.

media note: git.cafe currently renders these external media references as links. the uploaded images were inspected and the uploaded video was played through and seeked in chrome.

@juliusmarminge juliusmarminge added bugfix Fix PR opened by an issue lead; enters the PR loop pr:needs-julius Needs Julius: route gate, unverifiable surface, or blocked labels Oct 27, 2026

maria-rcks commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

verified as-is at f25ccc9dac1060afd8877c6e4c2668030656eeb2 on this task's linux boat vm. no code changes or pushes were needed.

  • reproduced on fresh github/main (2349c81afc): finish a real codex gpt-6.1-sol turn, snooze for one minute, navigate away, wait for expiry, dismiss woke, then choose mark unread. woke incorrectly returns.
  • stopped main, checked out the exact pr head, installed dependencies, and ran the real dev server against an isolated copy of the same app-created data. repo playwright and /usr/bin/google-chrome drove the web UI. the same mark-unread action shows done. snoozedUntil and snoozedAt clear; lastSnoozeWakeAt retains the original expiry. the matching badge crops below use the same thread and completed run.
  • a future one-hour snooze survives mark unread unchanged. wake now still returns the thread. snoozing again produces a fresh woke badge.
  • mark unread stays done while the thread is open. a subsequent real gpt-6.1-sol turn completes and advances the active visit normally, clearing unread. two fresh provider turns completed on the pr head.
  • blacksmith: all 72 focused orchestrator, settlement, snooze, and visit-tracker tests pass. vp run check:changed 1316d48b0c68151afd8b47eb0c11a114cf0b4daa passes format, lint, knip, graphql, eight affected/dependent package typechecks, and 24 adjacent tests. the worker initially lacked the merge base; fetching the pr history fixed that setup issue. ci currently reports 29 successful checks, none pending or failing.

main after mark unread:

main restores the dismissed woke badge

pr after mark unread:

pr shows done for the same thread and completed run

pr interaction, including mark unread while open (animated copy for github):

dismiss woke and mark unread with done preserved

short runtime transcript and persisted state

captures were inspected, and the uploaded recording was played through and seeked in chrome.

Not verified

native ios/android and electron clients were not launched. macos/windows, relay/tunnel, multi-device flows, other providers, and the specific replay-after-re-snooze scenario were not exercised. this linux pass verifies the web client and real codex provider path; shared mobile visit logic is covered by the existing tracker tests. automatic settlement timing was covered by existing tests, not a long manual wait.

@maria-rcks
maria-rcks merged commit cb5fac9 into pingdotgg:main Oct 29, 2026
37 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 29, 2026
**v0.1.6-nightly.20261029.3892** · 86 changes from 24 contributors

## Highlights
Resize the file explorer to see long paths.

## Fixes
- Commits no longer land on a switched branch (#24473)
- Password-protected OpenCode servers accept configured credentials (#25230)
- Provider errors and logs no longer expose certain credentials (#23313)
- Signed attachment URLs no longer leak into traces (#24556)
- Self-hosted GitLab merge request URLs are recognized (#23848)
- Terminal links with wide characters open correctly (#24013)
- Terminal history survives cancelled control sequences (#25193)
- Review guides use the latest diff (#23225)
- MCP forms appear when tool results report errors (#25225)
- Clearing desktop browser data also clears cached responses (#22002)

<details>
<summary>Full changelog</summary>

## What's Changed
* fix(web): reconnecting notice no longer shifts the new thread composer by @t3dotgg in pingdotgg/t3code#26958
* feat(marketing): homepage looks like the app by @t3dotgg in pingdotgg/t3code#26960
* fix(cli): restore Windows desktop launcher console input by @t3-code-bot[bot] in pingdotgg/t3code#24870
* feat(settings): add and list 1Password secret providers behind T3CODE_FEATURE_SECRETS by @yordis in pingdotgg/t3code#25709
* fix(mobile): use monospace in the Android terminal preview by @only21mil in pingdotgg/t3code#23401
* fix(web): edit from here uses a pencil icon by @voltcrash in pingdotgg/t3code#21878
* fix(desktop): clear Cache Storage when deleting browser profile data by @only21mil in pingdotgg/t3code#22002
* fix(web): respect reduced motion in thread loading controls by @saphid in pingdotgg/t3code#22100
* fix(provider-acp): redact API keys with underscores in ACP stderr logs by @only21mil in pingdotgg/t3code#24015
* fix(provider-core): redact compound credential keys in provider errors by @only21mil in pingdotgg/t3code#23313
* fix(web): show rounded diff counts as 1m instead of 1000k by @only21mil in pingdotgg/t3code#23723
* fix(desktop): a timed-out login-shell probe no longer skips the server's PATH repair by @tiliakoos in pingdotgg/t3code#21771
* fix(server): keep the previous preview browser version on a shared home by @only21mil in pingdotgg/t3code#23771
* fix(settings): servers check secret provider writes and keep unknown configs to themselves by @juliusmarminge in pingdotgg/t3code#27044
* fix(web): keep a closed split terminal's tab in view by @only21mil in pingdotgg/t3code#22106
* fix(web): the ~ breadcrumb opens the home folder by @Onkarj012 in pingdotgg/t3code#22412
* fix(gitlab): accept merge request URLs from self-hosted hosts by @only21mil in pingdotgg/t3code#23848
* fix(server): commits no longer land on a branch switched in mid-action by @only21mil in pingdotgg/t3code#24473
* fix(server): image attachments report their size when the T3 home is behind a symlink by @MarcoDotIO in pingdotgg/t3code#24245
* fix(ssh): skip directories in config includes by @maria-rcks in pingdotgg/t3code#25187
* fix(server): Authorized clients names Edge, Firefox and Opera on phones correctly by @MarcoDotIO in pingdotgg/t3code#23340
* fix(mobile): fork rows show a readable label instead of a thread ID by @JeremiahDJordan in pingdotgg/t3code#22064
* fix(markdown): formulas ending in a comma render by @NikitaMGrimm in pingdotgg/t3code#22883
* fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME by @MarcoDotIO in pingdotgg/t3code#25560
* fix(desktop): keep development protocol requests on the configured server by @only21mil in pingdotgg/t3code#22010
* fix(mobile): apply terminal toolbar modifiers to arrow keys by @only21mil in pingdotgg/t3code#22161
* fix(server): clean old logs and artifacts under a symlinked T3 home by @only21mil in pingdotgg/t3code#24097
* fix(server): preserve URL arguments in Android device actions by @maria-rcks in pingdotgg/t3code#25205
* fix(server): keep terminal history after cancelled sequences by @maria-rcks in pingdotgg/t3code#25193
* fix(auth): accept a typed pairing code regardless of letter case by @only21mil in pingdotgg/t3code#22089
* fix(web): find in thread opens from the thread title menu, so phones can reach it by @mkantautas in pingdotgg/t3code#22352
* fix(desktop): resolve executable commands when checking CLI shadowing by @only21mil in pingdotgg/t3code#22046
* fix(server): SQLite temp files no longer block the event loop by @only21mil in pingdotgg/t3code#24194
* fix(server): a branch named like a tag no longer reads as heads/<name> by @MarcoDotIO in pingdotgg/t3code#24258
* fix(server): cap generated worktree folder names by @maria-rcks in pingdotgg/t3code#25212
* perf(server): checkpoint capture scans the index listing by record instead of by byte by @josephv123 in pingdotgg/t3code#21329
* fix(server): PR discovery sweeps skip hidden subagent threads by @juliusmarminge in pingdotgg/t3code#26983
* fix(shared): stop parsing CLI flags after -- by @maria-rcks in pingdotgg/t3code#25204
* fix(server): remove abandoned v1 database copies on startup by @maria-rcks in pingdotgg/t3code#25301
* fix(web): Enter no longer skips an unanswered question by @mkantautas in pingdotgg/t3code#23626
* fix(web): keep wide characters in terminal links by @only21mil in pingdotgg/t3code#24013
* fix(server): session stops no longer trigger storage sweeps unless a deleted worktree waits by @juliusmarminge in pingdotgg/t3code#26038
* fix(provider-core): subagent threads no longer inherit the parent's pin by @only21mil in pingdotgg/t3code#21271
* fix(device): report failed Android permission changes by @only21mil in pingdotgg/t3code#22358
* fix(server): thread lists load beyond SQLite variable limit by @juliusmarminge in pingdotgg/t3code#25696
* fix(server): allow large git status metadata by @maria-rcks in pingdotgg/t3code#25207
* perf(mobile): flatten large file trees without copying descendants by @luke2x in pingdotgg/t3code#21276
* fix(web): show theme conflicts even when another import fails by @only21mil in pingdotgg/t3code#23223
* fix(usage): reject cyclic model mappings before saving by @only21mil in pingdotgg/t3code#23963
* fix(settings): offer Use existing CLI in managed Codex settings by @only21mil in pingdotgg/t3code#23160
* fix(git): honor project provider settings by @parmartejass in pingdotgg/t3code#23672
* fix(desktop): force-close stalled Linux MIME cache helpers by @maria-rcks in pingdotgg/t3code#25210
* fix(cli): auth pairing create rejects a --base-url without http(s):// by @MarcoDotIO in pingdotgg/t3code#23343
* fix(server): signed asset and upload URLs stay out of HTTP traces by @only21mil in pingdotgg/t3code#24556
* fix(server): clone errors no longer show a token from the URL's query by @only21mil in pingdotgg/t3code#24698
* fix(claude): pass every --add-dir launch directory to Claude by @only21mil in pingdotgg/t3code#23281
* fix(composer): retry expired catalogs after failed discovery by @only21mil in pingdotgg/t3code#23174
* fix(auth): preserve pairing codes after scope rejection by @maria-rcks in pingdotgg/t3code#25222
* fix(mobile): discard unchanged queued edits after starting by @maria-rcks in pingdotgg/t3code#25232
* fix(server): t3 project commands wait for a busy server's reply by @only21mil in pingdotgg/t3code#24090
* fix(web): wait for fresh diff pages in review guides by @only21mil in pingdotgg/t3code#23225
* fix(server): Antigravity stops retrying session startup while signed out by @only21mil in pingdotgg/t3code#24939
* fix(web): create tasks on a permitted connected environment by @only21mil in pingdotgg/t3code#23244
* fix(mobile): recognize this thread's main checkout by @only21mil in pingdotgg/t3code#23764
* fix(web): keep usage hubs that share a host by @only21mil in pingdotgg/t3code#23767
* fix(github): read text and mixed-case pull request templates by @maria-rcks in pingdotgg/t3code#25025
* fix(web): keep HTML prototype selection rings visible by @stevan-borus in pingdotgg/t3code#23745
* fix(mobile): list pull request repositories once per environment by @maria-rcks in pingdotgg/t3code#25219
* fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux by @pujitha24 in pingdotgg/t3code#23416
* fix(server): native Codex subagents no longer show the parent's reasoning effort by @koushikxd in pingdotgg/t3code#24467
* fix(server): mark unread works after an automatic compaction by @flamboh in pingdotgg/t3code#25286
* fix(server): show MCP App forms from failed tool results by @maria-rcks in pingdotgg/t3code#25225
* fix(server): restore Linux session display for editor launches by @maria-rcks in pingdotgg/t3code#25228
* fix(usage): keep host identity across container recreation by @maria-rcks in pingdotgg/t3code#25220
* fix(opencode): authenticate with the resolved server password by @maria-rcks in pingdotgg/t3code#25230
* feat(web): allow resizing the file explorer by @maria-rcks in pingdotgg/t3code#25737
* fix(server): update shared Codex installs from their owning home by @maria-rcks in pingdotgg/t3code#25235
* fix(cli): keep published runtimes in place during installation by @only21mil in pingdotgg/t3code#24092
* fix(web): right panel launcher letters work on non-Latin keyboard layouts by @MarMarLabs in pingdotgg/t3code#21508
* fix(server): report a deleted or replaced ownership lock by @ScottN-PV in pingdotgg/t3code#21886
* fix(server): mark unread no longer brings back a dismissed wake by @fixfon in pingdotgg/t3code#24080
* fix(mobile): stop refreshes in hidden PR Guide panes by @saphid in pingdotgg/t3code#25486
* fix(desktop): installing the t3 command no longer reports its own launcher as another t3 by @Gourav224 in pingdotgg/t3code#22375
* test(mobile): load the branch occupancy test without native sources by @maria-rcks in pingdotgg/t3code#27063
* fix(settings): project edits keep overrides the client does not know by @only21mil in pingdotgg/t3code#24472

## New Contributors
* @parmartejass made their first contribution in pingdotgg/t3code#23672

**Full Changelog**: pingdotgg/t3code@v0.1.5-nightly.20261029.3877...v0.1.6-nightly.20261029.3892

</details>


Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.6-nightly.20261029.3892
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Oct 29, 2026
…dotgg#24080)

Co-authored-by: maria-rcks <maria@kuuro.net>
(cherry picked from commit cb5fac9)
adampeterhiggins added a commit to adampeterhiggins/t3code that referenced this pull request Oct 30, 2026
* feat(antigravity): Claude and GPT models, thinking levels, and diff edits (pingdotgg#26876)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): choose what the thread details card shows (pingdotgg#26904)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(updates): switch your whole fleet between Stable and Nightly in one step (pingdotgg#26288)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(antigravity): file reads no longer show unrelated errors (pingdotgg#26910)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(release): release notes and the update popover open with a short note (pingdotgg#26893)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(cli): t3 starts on a fresh Ubuntu server without libatomic (pingdotgg#26912)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): update everything no longer waits on npm for service hosts (pingdotgg#26917)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* test(web): pin the npm wait floor for update everything (pingdotgg#26921)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(antigravity): served reads stop spinning and duplicate model names are labeled (pingdotgg#26928)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): queue Copilot follow-ups without killing background agents (pingdotgg#26715)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): Antigravity effort no longer shows a speedometer in the composer (pingdotgg#26929)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(release): Linux CLI archives build on runners without package docs (pingdotgg#26932)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): reconnecting notice no longer shifts the new thread composer (pingdotgg#26958)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(marketing): homepage looks like the app (pingdotgg#26960)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* chore(release): prepare v0.1.5

* fix(cli): restore Windows desktop launcher console input (pingdotgg#24870)

Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>

* feat(settings): add and list 1Password secret providers behind T3CODE_FEATURE_SECRETS (pingdotgg#25709)

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): use monospace in the Android terminal preview (pingdotgg#23401)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): edit from here uses a pencil icon (pingdotgg#21878)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): clear Cache Storage when deleting browser profile data (pingdotgg#22002)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): respect reduced motion in thread loading controls (pingdotgg#22100)

Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(provider-acp): redact API keys with underscores in ACP stderr logs (pingdotgg#24015)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(provider-core): redact compound credential keys in provider errors (pingdotgg#23313)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): show rounded diff counts as 1m instead of 1000k (pingdotgg#23723)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): a timed-out login-shell probe no longer skips the server's PATH repair (pingdotgg#21771)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): keep the previous preview browser version on a shared home (pingdotgg#23771)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(settings): servers check secret provider writes and keep unknown configs to themselves (pingdotgg#27044)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): keep a closed split terminal's tab in view (pingdotgg#22106)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): the ~ breadcrumb opens the home folder (pingdotgg#22412)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(gitlab): accept merge request URLs from self-hosted hosts (pingdotgg#23848)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): commits no longer land on a branch switched in mid-action (pingdotgg#24473)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): image attachments report their size when the T3 home is behind a symlink (pingdotgg#24245)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(ssh): skip directories in config includes (pingdotgg#25187)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(server): Authorized clients names Edge, Firefox and Opera on phones correctly (pingdotgg#23340)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): fork rows show a readable label instead of a thread ID (pingdotgg#22064)

Co-authored-by: Jeremiah Jordan <zanson@zanson.org>
Co-authored-by: GPT-6.1-Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(markdown): formulas ending in a comma render (pingdotgg#22883)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(scripts): dev runner expands ~ in --home-dir and T3CODE_HOME (pingdotgg#25560)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): keep development protocol requests on the configured server (pingdotgg#22010)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): apply terminal toolbar modifiers to arrow keys (pingdotgg#22161)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): clean old logs and artifacts under a symlinked T3 home (pingdotgg#24097)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): preserve URL arguments in Android device actions (pingdotgg#25205)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(server): keep terminal history after cancelled sequences (pingdotgg#25193)

Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>

* fix(auth): accept a typed pairing code regardless of letter case (pingdotgg#22089)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): find in thread opens from the thread title menu, so phones can reach it (pingdotgg#22352)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): resolve executable commands when checking CLI shadowing (pingdotgg#22046)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): SQLite temp files no longer block the event loop (pingdotgg#24194)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): a branch named like a tag no longer reads as heads/<name> (pingdotgg#24258)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): cap generated worktree folder names (pingdotgg#25212)

Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>

* perf(server): checkpoint capture scans the index listing by record instead of by byte (pingdotgg#21329)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): PR discovery sweeps skip hidden subagent threads (pingdotgg#26983)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): stop parsing CLI flags after -- (pingdotgg#25204)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(server): remove abandoned v1 database copies on startup (pingdotgg#25301)

Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com>

* fix(web): Enter no longer skips an unanswered question (pingdotgg#23626)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): keep wide characters in terminal links (pingdotgg#24013)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): session stops no longer trigger storage sweeps unless a deleted worktree waits (pingdotgg#26038)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(provider-core): subagent threads no longer inherit the parent's pin (pingdotgg#21271)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(device): report failed Android permission changes (pingdotgg#22358)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): thread lists load beyond SQLite variable limit (pingdotgg#25696)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): allow large git status metadata (pingdotgg#25207)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* perf(mobile): flatten large file trees without copying descendants (pingdotgg#21276)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): show theme conflicts even when another import fails (pingdotgg#23223)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(usage): reject cyclic model mappings before saving (pingdotgg#23963)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(settings): offer Use existing CLI in managed Codex settings (pingdotgg#23160)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(git): honor project provider settings (pingdotgg#23672)

Co-authored-by: Tejas Parmar <parmartejas@vanojay.in>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): force-close stalled Linux MIME cache helpers (pingdotgg#25210)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(cli): auth pairing create rejects a --base-url without http(s):// (pingdotgg#23343)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): signed asset and upload URLs stay out of HTTP traces (pingdotgg#24556)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): clone errors no longer show a token from the URL's query (pingdotgg#24698)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(claude): pass every --add-dir launch directory to Claude (pingdotgg#23281)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(composer): retry expired catalogs after failed discovery (pingdotgg#23174)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(auth): preserve pairing codes after scope rejection (pingdotgg#25222)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>

* fix(mobile): discard unchanged queued edits after starting (pingdotgg#25232)

Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>

* fix(server): t3 project commands wait for a busy server's reply (pingdotgg#24090)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): wait for fresh diff pages in review guides (pingdotgg#23225)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): Antigravity stops retrying session startup while signed out (pingdotgg#24939)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): create tasks on a permitted connected environment (pingdotgg#23244)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): recognize this thread's main checkout (pingdotgg#23764)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): keep usage hubs that share a host (pingdotgg#23767)

Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(github): read text and mixed-case pull request templates (pingdotgg#25025)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>

* fix(web): keep HTML prototype selection rings visible (pingdotgg#23745)

Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(mobile): list pull request repositories once per environment (pingdotgg#25219)

Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>

* fix(shared): Open in Zed prefers zeditor over the ZFS zed on Linux (pingdotgg#23416)

Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): native Codex subagents no longer show the parent's reasoning effort (pingdotgg#24467)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): mark unread works after an automatic compaction (pingdotgg#25286)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): show MCP App forms from failed tool results (pingdotgg#25225)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(server): restore Linux session display for editor launches (pingdotgg#25228)

Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com>

* fix(usage): keep host identity across container recreation (pingdotgg#25220)

Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>

* fix(opencode): authenticate with the resolved server password (pingdotgg#25230)

Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* feat(web): allow resizing the file explorer (pingdotgg#25737)

Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com>

* fix(server): update shared Codex installs from their owning home (pingdotgg#25235)

Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>

* fix(cli): keep published runtimes in place during installation (pingdotgg#24092)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(web): right panel launcher letters work on non-Latin keyboard layouts (pingdotgg#21508)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): report a deleted or replaced ownership lock (pingdotgg#21886)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(server): mark unread no longer brings back a dismissed wake (pingdotgg#24080)

Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(mobile): stop refreshes in hidden PR Guide panes (pingdotgg#25486)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: maria-rcks <maria@kuuro.net>

* fix(desktop): installing the t3 command no longer reports its own launcher as another t3 (pingdotgg#22375)

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* test(mobile): load the branch occupancy test without native sources (pingdotgg#27063)

Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(settings): project edits keep overrides the client does not know (pingdotgg#24472)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>

* fix(client): retry the permissions check after a reconnect (pingdotgg#27008)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): tab bar spans the screen on iOS before 26 (pingdotgg#27089)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): thread recovery reads are 10x faster (pingdotgg#27099)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): source control discovery no longer stalls up to 10s on Bitbucket (pingdotgg#27102)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf: huge checkpoints ship up to 75x smaller to clients (pingdotgg#27110)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): sidebar shell loads 3x faster and startup thread counts 80x faster (pingdotgg#27106)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): preparing a run is 15x faster and uses 200x less memory (pingdotgg#27105)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(server): traces name what grew the heap, for ~0.3µs per span (pingdotgg#27104)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(gitcafe): PR sync makes 2x fewer GitCafe requests for unchanged PRs (pingdotgg#27100)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(shared): SQLite reads stop queueing behind each other, up to 5x faster under load (pingdotgg#27097)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): git status runs in parallel and repo detection spawns 3x fewer git processes (pingdotgg#27103)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(client): dead connection routes are probed 30x less often (pingdotgg#27101)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(server): idle servers run 100x fewer background queries and 4.8M fewer spans a day (pingdotgg#27098)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(devices): support Android EAS Simulator sessions (pingdotgg#26797)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web,mobile): image-only messages show the image, not the placeholder prompt (pingdotgg#26769)

* ci(mobile): production deploys use a Release Manager Expo token (pingdotgg#27285)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* ci(mobile): maintainers can deploy EAS previews for reviewed fork commits (pingdotgg#27292)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): agents yield CPU, tasks, and reclaim to the server under pressure (pingdotgg#27176)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(server): `t3 service protect` keeps the server alive when agents fill memory (pingdotgg#27239)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): held queues release agent and scheduled messages once the thread completes a run (pingdotgg#27221)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): restart continuations retry failed starts and respect a parent's stop (pingdotgg#27222)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Stop during a restart no longer leaves the thread stuck (pingdotgg#27141)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(scripts): bound check:changed concurrency and step time (pingdotgg#27227)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(shared): durations under 10s drop a trailing .0 (pingdotgg#27316)

* feat(web): switch the composer between rich text and Markdown source from a button or mod+/ (pingdotgg#26777)

* fix(server): t3_thread_organize rejects unknown arguments instead of archiving the caller (pingdotgg#26718)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): composer Markdown source button shows the pilcrow again (pingdotgg#27375)

* revert(web): remove the composer rich text toggle button and mod+/ shortcut (pingdotgg#27390)

* fix(server): HTML preview browsers quit when done instead of waiting to be killed (pingdotgg#27224)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(terminal): retain and pace slow fallback process queries (pingdotgg#24640)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): show readable provider runtime failure banners (pingdotgg#24614)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com>

* fix(gitlab): share merge request reads across detail and checks (pingdotgg#24392)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(usage): count Claude advisor calls under the advisor model (pingdotgg#24139)

* fix(web): name the sidebar logo link T3 Code home (pingdotgg#24209)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* fix(server): fail Claude turns waiting for unsupported mod input (pingdotgg#24320)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Stop always completes, and an agent that ignores it can be force stopped (pingdotgg#27252)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix: guest links can load earlier turns (pingdotgg#27354)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(ci): repair main after merge burst

Rename leftover fakeProvider to fakePullRequestProvider, replace the removed
encodeScanCache in the advisor usage test, and drop an issue number from a
ClaudeAdapterV2 comment that lint rejects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): let slow worktree checkouts finish (pingdotgg#23802)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(settings): point provider environment variables at a secret provider (pingdotgg#27115)

Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>

* feat(desktop): back/forward buttons and trackpad swipe navigation (pingdotgg#27430)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* feat(web): review local commits in the Diff pane (pingdotgg#19941)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(relay): show the account's real tunnel cap in T3 Connect settings (pingdotgg#27442)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): streaming replies no longer re-render every visible timeline row (pingdotgg#27420)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): streaming replies re-render only their last Markdown block (pingdotgg#27417)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): the git actions panel no longer re-renders on every streamed update (pingdotgg#27418)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* perf(web): streamed assistant text re-renders only its own row (pingdotgg#27419)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): `t3 service protect` can ask for your sudo password (pingdotgg#27465)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

---------

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
Signed-off-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Theo Browne <me@theo.li>
Co-authored-by: t3-code-bot[bot] <269035359+t3-code-bot[bot]@users.noreply.github.com>
Co-authored-by: Nathan Shan <nathanielcrush51@gmail.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Yordis Prieto <yordis.prieto@gmail.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: maria-rcks <maria@kuuro.net>
Co-authored-by: Lakshmi Tanmay <lakshmi@voltcrash.com>
Co-authored-by: Alex Southwell <saphid@gmail.com>
Co-authored-by: SAPHID <saphid@users.noreply.github.com>
Co-authored-by: tiliakoos <73005126+tiliakoos@users.noreply.github.com>
Co-authored-by: Onkar Pradip Jadhav <118719336+Onkarj012@users.noreply.github.com>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Alex Southwell <4596216+saphid@users.noreply.github.com>
Co-authored-by: Jeremiah Jordan <jeremiah@apache.org>
Co-authored-by: Jeremiah Jordan <zanson@zanson.org>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Aditya Garud <153842990+yashranaway@users.noreply.github.com>
Co-authored-by: Mantas Kantautas <mantas.kantautas@gmail.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: Joseph Vidal <135430578+josephv123@users.noreply.github.com>
Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: Matěj Suchánek <16311043+immakermatty@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: luke <97411838+luke2x@users.noreply.github.com>
Co-authored-by: parmartejas <110296251+parmartejass@users.noreply.github.com>
Co-authored-by: Tejas Parmar <parmartejas@vanojay.in>
Co-authored-by: Tristan Knight <18444302+tris203@users.noreply.github.com>
Co-authored-by: Stevan Borus <steva.borus@gmail.com>
Co-authored-by: Pujitha Paladugu <pujitha.rathna@gmail.com>
Co-authored-by: Pujitha Paladugu <10557236+pujitha24@users.noreply.github.com>
Co-authored-by: Koushik_xd <122906171+koushikxd@users.noreply.github.com>
Co-authored-by: oliver <97427849+flamboh@users.noreply.github.com>
Co-authored-by: Inaya Yousfi <193243337+inayayousfi@users.noreply.github.com>
Co-authored-by: Rishabh Bothra <37180068+07rjain@users.noreply.github.com>
Co-authored-by: Marcel Jiron · MarMarLabs <marmar9615@icloud.com>
Co-authored-by: Scott Norteman <snorteman@gmail.com>
Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gourav Kumar Dhiman <gkrdhiman@gmail.com>
Co-authored-by: Nathan Schroeder <49214985+SchroederNathan@users.noreply.github.com>
Co-authored-by: AdEx-Partners-DE <stark.burns@adexpartners.com>
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bugfix Fix PR opened by an issue lead; enters the PR loop pr:needs-julius Needs Julius: route gate, unverifiable surface, or blocked size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Mark unread restores a dismissed Woke badge instead of Done

3 participants