Skip to content

fix(web): keep thread notification tags within the Windows toast limit - #12289

Merged
juliusmarminge merged 9 commits into
pingdotgg:mainfrom
satyalyadav:fix/windows-notification-tag
Oct 19, 2026
Merged

juliusmarminge merged 9 commits into
pingdotgg:mainfrom
satyalyadav:fix/windows-notification-tag

Conversation

@satyalyadav

@satyalyadav satyalyadav commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Windows drops thread toasts when their tag is the 73-character environment/thread identity. The shared web/Electron notification constructor now hashes that identity to a stable 16-character tag, preserving replacement for repeat alerts and separation between threads and environments. Native click/reveal behavior is unchanged.

Original fix by @satyalyadav in #12289. Contributor history is preserved and main is merged. Scott’s native Windows follow-up independently verified short-tag delivery and A/B/A replacement on the earlier implementation; that is historical evidence, not a new test of this checkout.

Verification at e790dc063a:

  • Focused tests reduced from 42 to 39 across three existing files: removed two helper cases and one duplicate scenario, folding the regression into the existing badge integration scenario. It covers real UUIDs, same-thread replacement, different threads and environments, badge counts, and focus clearing. All five existing sound tests are retained.
  • One independent full-diff review round (Opus 5.5 and GPT-6 Sol) found no blockers in this PR. The separate pre-existing PR-guide notification tag remains outside scope. All current-head CI jobs that ran passed; skipped jobs are non-blocking. Macroscope approved the pushed head, and all historical review threads are resolved.
  • Without the fix, the regression receives the 73-character tag and fails. With it, all 39 tests pass. Web typecheck and scoped lint/format/diff checks pass.
  • Running Linux app with real Codex completions: actual main ab6be13d43 supplied a 73-character tag. Candidate supplied 6c6f3f8f5bf49bc1 twice (16 characters); the old notification closed on replacement and the new one stayed open. Captured before/after API payloads. Capture intercepts the Notification constructor, including its permission gate; native OS presentation is not exercised. No renderer layout changes require visual comparison.
  • macOS, Windows, iOS, Android, and Electron desktop were not run. Fresh native Windows toast delivery and replacement still need platform verification; the separate native reveal bridge is outside this PR.

Tests: Codex gpt-6-astra (high). Implementation and live proof: Codex gpt-6.1-sol (high). Independent full-diff reviews: Claude claude-opus-5-5 and Codex gpt-6-sol. Harness: Codex and Claude Agent through T3 Code.

Windows drops renderer notifications when the tag plus origin exceeds the platform toast budget, and the composite environmentId:threadId tag is 73 characters. Digest the pair into a 16-character tag so background thread alerts reach the Action Center again.

Fixes pingdotgg#12287
Copilot AI lite review requested due to automatic review settings September 17, 2026 18:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:M 30-99 changed lines (additions + deletions). labels Sep 17, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Sep 17, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at e790dc0

Macroscope's review found this PR approvable — This is a small, self-contained web notification bug fix that replaces overlong Windows toast tags with stable 16-character tags while preserving thread replacement and badge behavior. Production and browser-test changes are limited to this notification path, with regression coverage for distinct threads, environments, and repeat alerts.

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

@coderabbitai

coderabbitai Bot commented Sep 17, 2026 •

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 477a1c06-7a41-46a3-8fb1-9ee52b3084b0

📥 Commits

Reviewing files that changed from the base of the PR and between 4749035 and 13ebd25.

📒 Files selected for processing (4)
  • apps/web/src/components/ThreadNotificationCoordinator.test.tsx
  • apps/web/src/components/ThreadNotificationCoordinator.tsx
  • apps/web/src/threadNotifications.test.ts
  • apps/web/src/threadNotifications.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review.

📝 Walkthrough

The change adds a bounded hash-based notification tag helper. Desktop notification coordination now uses explicit generated tags for pending-notification replacement. Tests cover tag generation and updated coordinator expectations.

Changes: Thread notification tags

Layer / File(s) Summary
Bounded tag generation
apps/web/src/threadNotifications.ts, apps/web/src/threadNotifications.test.ts
Adds a typed FNV-1a helper that returns stable 16-character hexadecimal tags. Tests verify length, stability, and distinctness.
Coordinator tag integration
apps/web/src/components/ThreadNotificationCoordinator.tsx, apps/web/src/components/ThreadNotificationCoordinator.test.tsx
The coordinator receives explicit tags, keys pending notifications by those tags, derives tags with the helper, and updates desktop notification assertions.

Priority: ➖ Normal

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

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: bil0000

Merge Risk: ⚪ Minimal · up to 13ebd

Windows notifications now use tags within the stated platform limit while retaining per-environment and per-thread replacement behavior. No actionable merge-blocking risk remains.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 25.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 4 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed [#12287] The coordinator now derives each browser notification tag from threadNotificationTag(environmentId, thread.id). The helper hashes the environmentId:threadId pair and returns a fixed 16-ch…
Out of Scope Changes check Passed All reviewed changes support [#12287]. The helper implements the short digest, the coordinator preserves notification replacement behavior with the digest key, and the tests cover the required propert…
Title check Passed The title clearly and concisely identifies the main change: shortening thread notification tags to remain within the Windows toast limit.
Description check Passed The description explains the problem, implementation, scope, verification results, platform limitations, and test evidence. It provides sufficient context for review, although it does not use the temp…
Full details: Linked Issues check

Explanation

[#12287] The coordinator now derives each browser notification tag from threadNotificationTag(environmentId, thread.id). The helper hashes the environmentId:threadId pair and returns a fixed 16-character hexadecimal value. The coordinator uses the same tag for Notification.tag and the pending-notification map key, so replacement and badge tracking remain scoped per environment and thread. Tests cover the tag length, stability, and distinction for different environments and threads. The reported 32 unit tests and tsc --noEmit also pass.

Full details: Out of Scope Changes check

Explanation

All reviewed changes support [#12287]. The helper implements the short digest, the coordinator preserves notification replacement behavior with the digest key, and the tests cover the required properties. No unrelated UI or platform behavior changes are present in the reviewed changes.

Full details: Description check

Explanation

The description explains the problem, implementation, scope, verification results, platform limitations, and test evidence. It provides sufficient context for review, although it does not use the template section headings explicitly.

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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

@ScottN-PV

ScottN-PV commented Sep 21, 2026 •

Copy link
Copy Markdown
Contributor

I tested this patch on Windows. Completion banners and sound worked after reloading the app, but clicking a notification did not bring T3 to the foreground.

  • Setup: Windows 11 Home 25H2, build 26200.9457; T3 built from source with Electron 44.4.2. The app loaded at t3code-dev://app, using separate test settings and conversations.
  • Code tested: the changes from PR commit 13ebd2589a2970ecd759fc90061e2e3d2d226f30, applied to upstream commit 5781b5240bd5d2e21c651f6b228975ac40cbd67b.
  • Tag-length comparison: I created two notifications through the development app's JavaScript Console. A notification with tag t3-control appeared in Windows Notification Center. A notification with a tag consisting of 73 x characters failed: Electron logged a Windows error, The size of the notification tag is too large. (HRESULT: -2143420138). Windows' notification-history API contained the short-tag notification and no long-tag notification. Do not disturb was On for both tests; I was checking storage in Notification Center, not whether a banner appeared.
  • With the patch and Do not disturb Off, real Codex completion notifications displayed banners. Electron logged the shortened app tag 828d2b52f503fb00. The first test had no audible sound. After reloading T3 with Ctrl+R, both banner and sound worked in two further tests: one with T3 minimized, and one with T3 unminimized behind another application. I have not established why sound was absent on the first attempt.
  • Automated checks: before applying the patch, 16 notification-coordinator tests passed. With the patch, all 19 tests in the coordinator and tag-helper test files passed. Lint on the changed files and the web package's typecheck also passed.

Clicking the banner did not bring T3 to the foreground in either window state. Clicking its Notification Center entry also failed to bring T3 forward in the minimized test. Electron logged Notification clicked, but that does not prove T3's click-handling code ran. I had to click T3's taskbar icon. The agent then appeared to continue for about one second before the final response became visible. I do not know whether the agent was still working or the interface was catching up. This PR does not directly change the code that handles notification clicks. I haven't established whether the click failure existed before this patch.

These results support the tag-length fix and confirm banner/sound delivery with the patch in this development setup. Click-to-open remains unresolved. I have not tested a patched Windows installer build, whether notifications from different conversations remain separate, macOS/Linux, or T3 in a standalone Windows browser. I have no video recording; the evidence consists of manual observations and local diagnostic logs.

AI assistance: OpenAI Codex, using Codex CLI 0.155.1 through its app-server integration in the T3 Code desktop app; model: gpt-6-astra; reasoning effort: medium. Codex assisted with test setup, running automated checks, interpreting diagnostic logs, and drafting this report. I performed the manual Windows checks, reported the visible and audible outcomes, and reviewed the report before posting.

@satyalyadav

Copy link
Copy Markdown
Contributor Author

Thanks for the detailed Windows verification, and for isolating the tag failure with the 73-character tag. On click-to-open: this PR only changes the tag value and the pending-notification map key, so it does not touch click handling, and your report does not establish it as a regression. It is worth checking on unpatched main, and if it reproduces there it belongs in its own issue with that repro. If you have time, the behavior this PR actually changes is replacement, so a check that two different conversations stay separate and that a second completion replaces the first would be useful evidence.

@ScottN-PV

Copy link
Copy Markdown
Contributor

Thanks for the suggested checks. I ran an automated native Windows follow-up using the same isolated source build: PR 13ebd2589a2970ecd759fc90061e2e3d2d226f30 applied to baseline 5781b5240bd5d2e21c651f6b228975ac40cbd67b, Electron 44.4.2.

Real Codex turns were started through the isolated server's local API while the desktop client stayed in the background. Windows' notification-history API showed:

  • First completion in conversation A: one entry for A.
  • Completion in conversation B: two entries, A and B, with distinct tags.
  • Second completion in A: still two entries. A reused its original tag and replaced its previous entry; B's tag and notification XML were unchanged. I changed A's conversation title before the second turn so the replacement could be distinguished in the stored notification body.

The application tags were 7fd41c906aca1aa6 for A and 1436fb8f1893e7c7 for B. Electron's log also recorded the old notification being hidden when A completed again. A local coordinator test covering A → B → A passed alongside the 16 existing coordinator tests.

This verifies separation and replacement in native Windows notification history for that development build. It does not add a visual banner/sound check.

I also tested clean, unpatched main at c26119ada3565dda55bc3e86fdf47c7f9088e4b5, in a separate worktree and copied disposable profile, with Electron 44.4.2. A real turn completed while the renderer was unfocused and notification permission was granted. Electron attempted the original 73-character application tag, and Windows rejected it with The size of the notification tag is too large. (HRESULT: -2143420138). Notification history was unchanged: no entry for that completion appeared. Consequently there was no new notification to click, so this does not establish click-to-open behavior on unpatched main. I agree that the earlier click observation is not evidence of a regression from this PR. No Windows notification settings were changed for these checks.

AI assistance: OpenAI Codex; harness: Codex CLI 0.155.1 app-server integration; host/interface: T3 Code desktop app; model: gpt-6-astra; reasoning/effort: medium. Contribution: local API test setup, automated test execution, Windows notification-history inspection, evidence comparison, and drafting this reply. Human involvement: requested the follow-up and automatic testing, and confirmed that the model, effort, runtime version, and host remained the same as in the earlier verification. These follow-up results are automated observations; no new manual Windows checks were performed. Attribution settings are user-confirmed; runtime metadata was not independently captured again for this follow-up.

@satyalyadav

Copy link
Copy Markdown
Contributor Author

Thanks for the thorough follow-up, Scott. The A to B to A history check plus the unpatched-main control is exactly the evidence this needed, and I appreciate you closing the click-to-open question with it. I have added a summary of your verification to the PR description.

@juliusmarminge juliusmarminge added the macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews label Oct 1, 2026 — with ChatGPT Codex Connector
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 1, 2026 07:36

Dismissing prior approval to re-evaluate 13ebd25

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 1, 2026
AdEx-Partners-DE added a commit to AdEx-Partners-DE/t3code that referenced this pull request Oct 10, 2026
…indows toast limit

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

Copy link
Copy Markdown
Collaborator

Note

Written by claude-opus-5-5 on behalf of Maria

Hi! We are cleaning up open PRs, and this one does not say which model or harness was used to create it. If this change is really important, we recommend rebuilding the PR with a newer model and noting the model and harness in the PR description.

@maria-rcks maria-rcks closed this Oct 11, 2026
@maria-rcks

Copy link
Copy Markdown
Collaborator

Note

Written by claude-opus-5-5 on behalf of Maria

Reopening, this was closed by mistake. Sorry for the noise!

@maria-rcks maria-rcks reopened this Oct 11, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 12, 2026 07:17

Dismissing prior approval to re-evaluate e5e842c

@github-actions github-actions Bot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Oct 12, 2026
Comment thread apps/mobile/src/features/pull-requests/pullRequestDescriptionContent.ts Outdated
Comment thread apps/mobile/src/features/pull-requests/pullRequestList.ts
Comment thread apps/mobile/src/features/pull-requests/PullRequestStackCard.tsx Outdated
Comment thread apps/mobile/modules/t3-markdown-text/src/nativeMarkdownText.ts Outdated
Comment thread apps/mobile/src/features/pull-requests/usePullRequestFilesViewed.ts
Comment thread apps/mobile/src/features/pull-requests/usePullRequestList.ts
@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Oct 12, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 12, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 13, 2026 01:11

Dismissing prior approval to re-evaluate 05c0fe8

@github-actions github-actions Bot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Oct 13, 2026
@satyalyadav satyalyadav changed the title fix(web): keep thread notification tags within the Windows toast limit fix(desktop): deliver and open Windows thread notifications Oct 13, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 13, 2026

Copy link
Copy Markdown
Member

Note

This comment is posted by Julius' dot

The short-tag fix has native Windows verification. The new reveal bridge fixes a separate failure: notifications already arrive, but clicking them doesn't restore the window. Julius's triage asked to leave click handling unchanged. Has a maintainer approved combining these fixes? Otherwise, please keep this PR to the tag repair and split the reveal fix under the one-problem rule. For the reveal fix, attach a short before/after recording of banner and Notification Center clicks; the reported retest currently has no recording, as required for interaction changes.

@satyalyadav satyalyadav changed the title fix(desktop): deliver and open Windows thread notifications fix(web): keep thread notification tags within the Windows toast limit Oct 13, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review October 13, 2026 02:00

Dismissing prior approval to re-evaluate 54a3420

@github-actions github-actions Bot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Oct 13, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Oct 13, 2026
…ows-notification-tag-upstream-merge-20261017
@juliusmarminge juliusmarminge self-assigned this Oct 19, 2026
@juliusmarminge

Copy link
Copy Markdown
Member

Taking over this one. I’m keeping the notification tag fix focused, updating it against main, and retaining the existing Windows verification with fresh focused checks.

@macroscopeapp
macroscopeapp Bot dismissed their stale review October 19, 2026 03:01

Dismissing prior approval to re-evaluate e790dc0

@juliusmarminge
juliusmarminge merged commit 196c397 into pingdotgg:main Oct 19, 2026
31 checks passed
Pipyakas pushed a commit to Pipyakas/t3code that referenced this pull request Oct 19, 2026
pingdotgg#12289)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
(cherry picked from commit 196c397)
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 19, 2026
## What's Changed
* fix(mobile): settings no longer tell you to update when you're up to date by @shivamhwp in pingdotgg/t3code#21688
* test(web): fix the workflow script test that times out on busy CI runners by @shivamhwp in pingdotgg/t3code#21699
* fix(mobile): a file shared into a new task shows in the composer before you send by @shivamhwp in pingdotgg/t3code#21659
* fix(desktop): a cold WSL distro gets 30 seconds to boot instead of 10 by @SunkenInTime in pingdotgg/t3code#21070
* fix(web): detect software keyboard before handling composer Enter by @Yash-Singh1 in pingdotgg/t3code#21763
* fix(mobile): the Git sheet uses the standard list rows by @juliusmarminge in pingdotgg/t3code#21785
* fix(server): changed files keep their real paths for renames and non-ASCII names by @Atharvsinh-codez in pingdotgg/t3code#20175
* fix(server): a message promoted into a stopping run stays queued by @lbgos in pingdotgg/t3code#16926
* perf(mobile): streaming re-renders less on the open thread screen by @juliusmarminge in pingdotgg/t3code#20963
* feat(usage): show even-pace marks on Limits bars by @flamboh in pingdotgg/t3code#14477
* fix(web): Usage hourly labels follow the Time format setting by @mInrOz in pingdotgg/t3code#15575
* fix(web): stop repeating the subagent name in the waiting banner by @saphid in pingdotgg/t3code#16022
* fix(web): Cmd+O no longer opens the editor more than once by @5knnbdwm in pingdotgg/t3code#18983
* fix(web): hoist favorited legacy models to the top of the model picker by @TonybynMp4 in pingdotgg/t3code#11933
* fix(server): a rollback blocked by Git's index lock says so instead of a generic error by @shivamhwp in pingdotgg/t3code#11340
* fix(mobile): expanded tool-call groups keep following new calls by @nekohasekai in pingdotgg/t3code#15747
* fix(web): going back in the command palette keeps the search that led there by @saphid in pingdotgg/t3code#15940
* fix(web): changing a project's model no longer keeps the old model's options by @yaacovcorcos in pingdotgg/t3code#16581
* fix(web): preserve snapshot thumbnail context and detail by @maria-rcks in pingdotgg/t3code#18440
* fix(web): keep expanded tool actions usable from the keyboard by @saphid in pingdotgg/t3code#18831
* fix(usage): Claude usage no longer lists a `<synthetic>` model by @tris203 in pingdotgg/t3code#14672
* fix(server): release webhook claims when acceptance fails by @saphid in pingdotgg/t3code#18820
* fix(desktop): make the annotation editor border and shadow actually render by @PollyGlot in pingdotgg/t3code#9406
* fix(server): Claude follow-ups no longer fail in Auto on models without Auto by @Gigioxx in pingdotgg/t3code#15687
* fix(web): reopening Connections picks up new network addresses by @lnieuwenhuis in pingdotgg/t3code#15840
* fix(client): MCP apps can no longer trap you in full screen; it opens only after a tap by @shivamhwp in pingdotgg/t3code#18548
* fix(web,mobile): disabled provider instances no longer badge their siblings by @tris203 in pingdotgg/t3code#14545
* fix(web): threads open at the newest message, not thousands of pixels above it by @t3dotgg in pingdotgg/t3code#19663
* fix(mobile): report rejected shared settings writes by @juliusmarminge in pingdotgg/t3code#9356
* fix(claude): show automatic compaction while it runs by @maria-rcks in pingdotgg/t3code#15631
* fix(web): keep the parent thread highlighted while viewing its subagent by @saphid in pingdotgg/t3code#15163
* fix(web): show pull request checkout error detail by @saphid in pingdotgg/t3code#15007
* fix(server): mark unvisited thread completions unread by @maria-rcks in pingdotgg/t3code#15607
* fix(web): started threads no longer offer a machine picker that does nothing by @tris203 in pingdotgg/t3code#19900
* fix(web): provider model names no longer get cut off by their slug by @ilyaliao in pingdotgg/t3code#16522
* fix(claude): mid-sentence skill chips keep the full request by @ScottN-PV in pingdotgg/t3code#15253
* fix(web): preserve unsaved keybinding edits when saving another binding by @pnupu in pingdotgg/t3code#11109
* fix(connections): retry unsupported saved direct connections by @none23 in pingdotgg/t3code#15107
* fix(web): show readable messages for structured thread errors by @juliusmarminge in pingdotgg/t3code#21483
* fix(web): custom shortcuts work when Local environment is off by @Mnigos in pingdotgg/t3code#15825
* fix(web): keep thread notification tags within the Windows toast limit by @satyalyadav in pingdotgg/t3code#12289
* fix(web): pinned thread marker stays put when hovering the row by @flamboh in pingdotgg/t3code#11122
* fix(web): keep a typed question answer when you open a new thread by @Gigioxx in pingdotgg/t3code#13865
* fix(web): renumber following items when continuing a plain-Markdown numbered list by @saphid in pingdotgg/t3code#14332
* fix(web): clicking a logged request route no longer opens it in the editor by @lnieuwenhuis in pingdotgg/t3code#15838
* fix(desktop): reject offscreen annotation screenshot crops by @maria-rcks in pingdotgg/t3code#18441
* fix(web): NVDA browse mode reaches the new-thread project picker again by @akj in pingdotgg/t3code#17877
* fix(web): stop composer banner glass overlap by @t3-code[bot] in pingdotgg/t3code#8034
* fix(web): keep pasted decorators as text by @Gigioxx in pingdotgg/t3code#8415
* fix(shell): avoid interactive job control in environment probes by @LouisDeconinck in pingdotgg/t3code#11275
* fix(web): a closed proactive diff stays closed when you return to a thread by @ilyaliao in pingdotgg/t3code#14705
* fix(web): render powerline separators at cell edges by @SadriG91 in pingdotgg/t3code#5607
* fix(server): provider failures say why a turn could not start by @saphid in pingdotgg/t3code#16303

## New Contributors
* @Atharvsinh-codez made their first contribution in pingdotgg/t3code#20175
* @lbgos made their first contribution in pingdotgg/t3code#16926
* @yaacovcorcos made their first contribution in pingdotgg/t3code#16581
* @pnupu made their first contribution in pingdotgg/t3code#11109
* @LouisDeconinck made their first contribution in pingdotgg/t3code#11275
* @SadriG91 made their first contribution in pingdotgg/t3code#5607

**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261019.3360...v0.1.1-nightly.20261019.3373

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261019.3373
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 19, 2026
## What's Changed
* fix(mobile): settings no longer tell you to update when you're up to date by @shivamhwp in pingdotgg/t3code#21688
* test(web): fix the workflow script test that times out on busy CI runners by @shivamhwp in pingdotgg/t3code#21699
* fix(mobile): a file shared into a new task shows in the composer before you send by @shivamhwp in pingdotgg/t3code#21659
* fix(desktop): a cold WSL distro gets 30 seconds to boot instead of 10 by @SunkenInTime in pingdotgg/t3code#21070
* fix(web): detect software keyboard before handling composer Enter by @Yash-Singh1 in pingdotgg/t3code#21763
* fix(mobile): the Git sheet uses the standard list rows by @juliusmarminge in pingdotgg/t3code#21785
* fix(server): changed files keep their real paths for renames and non-ASCII names by @Atharvsinh-codez in pingdotgg/t3code#20175
* fix(server): a message promoted into a stopping run stays queued by @lbgos in pingdotgg/t3code#16926
* perf(mobile): streaming re-renders less on the open thread screen by @juliusmarminge in pingdotgg/t3code#20963
* feat(usage): show even-pace marks on Limits bars by @flamboh in pingdotgg/t3code#14477
* fix(web): Usage hourly labels follow the Time format setting by @mInrOz in pingdotgg/t3code#15575
* fix(web): stop repeating the subagent name in the waiting banner by @saphid in pingdotgg/t3code#16022
* fix(web): Cmd+O no longer opens the editor more than once by @5knnbdwm in pingdotgg/t3code#18983
* fix(web): hoist favorited legacy models to the top of the model picker by @TonybynMp4 in pingdotgg/t3code#11933
* fix(server): a rollback blocked by Git's index lock says so instead of a generic error by @shivamhwp in pingdotgg/t3code#11340
* fix(mobile): expanded tool-call groups keep following new calls by @nekohasekai in pingdotgg/t3code#15747
* fix(web): going back in the command palette keeps the search that led there by @saphid in pingdotgg/t3code#15940
* fix(web): changing a project's model no longer keeps the old model's options by @yaacovcorcos in pingdotgg/t3code#16581
* fix(web): preserve snapshot thumbnail context and detail by @maria-rcks in pingdotgg/t3code#18440
* fix(web): keep expanded tool actions usable from the keyboard by @saphid in pingdotgg/t3code#18831
* fix(usage): Claude usage no longer lists a `<synthetic>` model by @tris203 in pingdotgg/t3code#14672
* fix(server): release webhook claims when acceptance fails by @saphid in pingdotgg/t3code#18820
* fix(desktop): make the annotation editor border and shadow actually render by @PollyGlot in pingdotgg/t3code#9406
* fix(server): Claude follow-ups no longer fail in Auto on models without Auto by @Gigioxx in pingdotgg/t3code#15687
* fix(web): reopening Connections picks up new network addresses by @lnieuwenhuis in pingdotgg/t3code#15840
* fix(client): MCP apps can no longer trap you in full screen; it opens only after a tap by @shivamhwp in pingdotgg/t3code#18548
* fix(web,mobile): disabled provider instances no longer badge their siblings by @tris203 in pingdotgg/t3code#14545
* fix(web): threads open at the newest message, not thousands of pixels above it by @t3dotgg in pingdotgg/t3code#19663
* fix(mobile): report rejected shared settings writes by @juliusmarminge in pingdotgg/t3code#9356
* fix(claude): show automatic compaction while it runs by @maria-rcks in pingdotgg/t3code#15631
* fix(web): keep the parent thread highlighted while viewing its subagent by @saphid in pingdotgg/t3code#15163
* fix(web): show pull request checkout error detail by @saphid in pingdotgg/t3code#15007
* fix(server): mark unvisited thread completions unread by @maria-rcks in pingdotgg/t3code#15607
* fix(web): started threads no longer offer a machine picker that does nothing by @tris203 in pingdotgg/t3code#19900
* fix(web): provider model names no longer get cut off by their slug by @ilyaliao in pingdotgg/t3code#16522
* fix(claude): mid-sentence skill chips keep the full request by @ScottN-PV in pingdotgg/t3code#15253
* fix(web): preserve unsaved keybinding edits when saving another binding by @pnupu in pingdotgg/t3code#11109
* fix(connections): retry unsupported saved direct connections by @none23 in pingdotgg/t3code#15107
* fix(web): show readable messages for structured thread errors by @juliusmarminge in pingdotgg/t3code#21483
* fix(web): custom shortcuts work when Local environment is off by @Mnigos in pingdotgg/t3code#15825
* fix(web): keep thread notification tags within the Windows toast limit by @satyalyadav in pingdotgg/t3code#12289
* fix(web): pinned thread marker stays put when hovering the row by @flamboh in pingdotgg/t3code#11122
* fix(web): keep a typed question answer when you open a new thread by @Gigioxx in pingdotgg/t3code#13865
* fix(web): renumber following items when continuing a plain-Markdown numbered list by @saphid in pingdotgg/t3code#14332
* fix(web): clicking a logged request route no longer opens it in the editor by @lnieuwenhuis in pingdotgg/t3code#15838
* fix(desktop): reject offscreen annotation screenshot crops by @maria-rcks in pingdotgg/t3code#18441
* fix(web): NVDA browse mode reaches the new-thread project picker again by @akj in pingdotgg/t3code#17877
* fix(web): stop composer banner glass overlap by @t3-code[bot] in pingdotgg/t3code#8034
* fix(web): keep pasted decorators as text by @Gigioxx in pingdotgg/t3code#8415
* fix(shell): avoid interactive job control in environment probes by @LouisDeconinck in pingdotgg/t3code#11275
* fix(web): a closed proactive diff stays closed when you return to a thread by @ilyaliao in pingdotgg/t3code#14705
* fix(web): render powerline separators at cell edges by @SadriG91 in pingdotgg/t3code#5607
* fix(server): provider failures say why a turn could not start by @saphid in pingdotgg/t3code#16303

## New Contributors
* @Atharvsinh-codez made their first contribution in pingdotgg/t3code#20175
* @lbgos made their first contribution in pingdotgg/t3code#16926
* @yaacovcorcos made their first contribution in pingdotgg/t3code#16581
* @pnupu made their first contribution in pingdotgg/t3code#11109
* @LouisDeconinck made their first contribution in pingdotgg/t3code#11275
* @SadriG91 made their first contribution in pingdotgg/t3code#5607

**Full Changelog**: pingdotgg/t3code@v0.1.1-nightly.20261019.3360...v0.1.1-nightly.20261019.3373

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.1-nightly.20261019.3373
@satyalyadav
satyalyadav deleted the fix/windows-notification-tag branch October 20, 2026 22:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

macroscope-review Opt PRs made by unvouched contributors in for Macroscope review. Vouched contributors auto-reviews 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.

5 participants