fix: restore automatic thread settling defaults - #8596
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
| changeRequestByKey, | ||
| autoSettleAfterDays: autoSettlePreferences.autoSettleAfterDays, | ||
| autoSettleMode: autoSettlePreferences.autoSettleMode, | ||
| autoSettleOnMerge, |
There was a problem hiding this comment.
🟡 Medium home/HomeScreen.tsx:681
HomeScreen no longer passes the persisted autoSettleAfterDays value to buildThreadListV2Items, so the function always falls back to 3 days. This causes users who disabled inactivity settling (null) or selected another duration to have threads settled after three days; pass the resolved persisted value through this call.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/mobile/src/features/home/HomeScreen.tsx around line 681:
`HomeScreen` no longer passes the persisted `autoSettleAfterDays` value to `buildThreadListV2Items`, so the function always falls back to 3 days. This causes users who disabled inactivity settling (`null`) or selected another duration to have threads settled after three days; pass the resolved persisted value through this call.
| parsed.autoSettleAfterDays <= MAX_SIDEBAR_AUTO_SETTLE_AFTER_DAYS | ||
| ) { | ||
| preferences.autoSettleAfterDays = parsed.autoSettleAfterDays; | ||
| if (typeof parsed.autoSettleOnMerge === "boolean") { |
There was a problem hiding this comment.
🟡 Medium persistence/mobile-preferences.ts:170
sanitizePreferences drops persisted autoSettleMode and autoSettleAfterDays values without translating them, so users with autoSettleMode: "never" reload with the defaults autoSettleOnMerge: true and autoSettleAfterDays: 3 and threads begin settling automatically. Preserve the legacy fields long enough to map them to the new preferences before applying defaults.
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/mobile/src/persistence/mobile-preferences.ts around line 170:
`sanitizePreferences` drops persisted `autoSettleMode` and `autoSettleAfterDays` values without translating them, so users with `autoSettleMode: "never"` reload with the defaults `autoSettleOnMerge: true` and `autoSettleAfterDays: 3` and threads begin settling automatically. Preserve the legacy fields long enough to map them to the new preferences before applying defaults.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 241e0f2. Configure here.
| }, | ||
| { | ||
| id: "auto-settle-merged-threads", | ||
| title: "Auto-settle merged threads", |
There was a problem hiding this comment.
Settings search catalog order mismatch
Low Severity
The search catalog lists auto-settle-inactive-threads before auto-settle-merged-threads, but General settings renders the merge row first. Search results follow catalog order, so matches for these settings appear in the opposite order from the page.
Additional Locations (1)
Triggered by learned rule: Restore defaults on General settings page is intentionally global — not scoped per-page
Reviewed by Cursor Bugbot for commit 241e0f2. Configure here.
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
## What's Changed * fix(grok): improve skills, plans, usage, and turn reliability by @t3dotgg in pingdotgg/t3code#8358 * fix(server): recover stale Codex approval callbacks by @luckyPipewrench in pingdotgg/t3code#5195 * test(server): remove duplicate missing worktree test by @t3-code[bot] in pingdotgg/t3code#8252 * fix(server): replay all un-applied events during projection bootstrap by @krutftw in pingdotgg/t3code#7538 * test: remove low-signal test files by @t3-code[bot] in pingdotgg/t3code#8397 * test: prune trivial error and layout tests by @t3-code[bot] in pingdotgg/t3code#8400 * Fix Android adaptive launcher icon by @colonelpanic8 in pingdotgg/t3code#4332 * feat(web): split provider settings into list and editor by @t3dotgg in pingdotgg/t3code#8380 * fix(codex): accept Codex 0.150 account plans by @gsimone in pingdotgg/t3code#8447 * fix(tooling): allow ignored-only staged changes by @juliusmarminge in pingdotgg/t3code#8468 * fix(mobile): keep iOS home header stable by @juliusmarminge in pingdotgg/t3code#8467 * fix(web): stop showing red x summaries for ordinary tool failures by @t3dotgg in pingdotgg/t3code#8395 * fix(mobile): refine Git action toast glass styling by @juliusmarminge in pingdotgg/t3code#8399 * fix(desktop): allow preview automation in agent-created threads by @t3dotgg in pingdotgg/t3code#8483 * test(web): remove redundant cache key test by @t3-code[bot] in pingdotgg/t3code#8484 * fix(release): move nightly schedule to minute 38 by @t3dotgg in pingdotgg/t3code#8509 * fix(web): stabilize the provider settings editor by @t3dotgg in pingdotgg/t3code#8472 * fix(web): open GitHub pull requests in browser when loading fails by @t3dotgg in pingdotgg/t3code#8507 * fix(codex): show sub-agent models by @t3dotgg in pingdotgg/t3code#8502 * feat(analytics): report connected client platforms by @t3dotgg in pingdotgg/t3code#8481 * feat(server): accept PDF, ZIP, and other file uploads up to 50MB by @t3dotgg in pingdotgg/t3code#8235 * feat(web): toggle a thread's pin from the keyboard by @ipanasenko in pingdotgg/t3code#8440 * fix(web): add back button to project settings by @StiensWout in pingdotgg/t3code#8168 * refactor(mobile): compile semantic themes for Uniwind by @juliusmarminge in pingdotgg/t3code#7327 * fix(desktop): Cache Runtime locally on WSL Filesystem, dramatically improving launch times by @ikifar2012 in pingdotgg/t3code#5769 * fix(mobile): show OpenCode model sources in picker by @juliusmarminge in pingdotgg/t3code#8573 * fix(clients): honor project default models in new threads by @anirudhsama in pingdotgg/t3code#6011 * fix(mobile): show file actions on Android by @none23 in pingdotgg/t3code#8215 * fix(connect): explain DPoP connection failures by @extoci in pingdotgg/t3code#8351 * feat(web): make the sidebar project filter a searchable combobox by @SunkenInTime in pingdotgg/t3code#5931 * fix(server): a draft can retry its first send after a failed bootstrap by @shivamhwp in pingdotgg/t3code#8226 * fix(desktop): stop hidden previews draining battery by @Bil0000 in pingdotgg/t3code#8567 * fix(desktop): oauth popups open from the browser preview by @walid-baharwal in pingdotgg/t3code#8435 * fix(web): keep long task drawers usable on small screens by @shivamhwp in pingdotgg/t3code#8313 * fix(opencode): handle child approvals, stops, and model catalogs by @t3dotgg in pingdotgg/t3code#8480 * fix: make thread auto-settling opt-in by @shivamhwp in pingdotgg/t3code#8321 * fix(web): stop session activity timing test from blocking releases by @t3dotgg in pingdotgg/t3code#8585 * fix(mobile): show composer menus when starting a task by @juliusmarminge in pingdotgg/t3code#8587 * fix(web): show the configured stash shortcut by @UtkarshUsername in pingdotgg/t3code#8437 * feat(web): add toggleable confirmation before unpinning a thread by @UtkarshUsername in pingdotgg/t3code#7313 * fix: restore automatic thread settling defaults by @t3dotgg in pingdotgg/t3code#8596 * fix(mobile): restore composer glass and rounded shadows by @juliusmarminge in pingdotgg/t3code#8597 ## New Contributors * @luckyPipewrench made their first contribution in pingdotgg/t3code#5195 * @krutftw made their first contribution in pingdotgg/t3code#7538 * @colonelpanic8 made their first contribution in pingdotgg/t3code#4332 * @ikifar2012 made their first contribution in pingdotgg/t3code#5769 * @walid-baharwal made their first contribution in pingdotgg/t3code#8435 **Full Changelog**: pingdotgg/t3code@v0.0.35...v0.0.36 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.36
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Merges 58 upstream commits (`badae6a5c` → `6a9d9f988`, upstream v0.0.34 → v0.0.36) through the `fork-upstream-merge` skill. `merge-stats.mjs` reconciles exactly: **431 files landed** against **431 in the upstream range**, no gap to explain. Fork delta is 611 files. ## Conflicts Three, plus one git resolved silently and wrongly. - **`Sidebar.tsx`** — upstream replaced the project picker's `Menu`/`MenuRadioGroup` with a searchable `Combobox` (pingdotgg#5931). Took upstream's structure and re-applied only the `FEATURES.projectManagement` gate on "New project", now carrying the `// Fork:` marker it had been missing. Upstream has since grown the mobile touch-target span itself, so the Mobile Touch Delta has nothing left to re-apply here — one convergence, unprompted. - **`ProviderSettingsPanel.tsx`** — upstream split provider settings into list and editor (pingdotgg#8380, pingdotgg#8472), moving `ProviderLastChecked` and the refresh button out of `headerAction` into the list footer. Took upstream's and re-applied the gate as `!readOnly && FEATURES.serverAdministration`. - **`pnpm-lock.yaml`** — took upstream's and re-ran `vp i`, which restored the fork's `@t3tools/moatless-api` workspace edge. - **`packages/contracts/src/orchestration.test.ts`** — auto-merged, no marker, broken. Both sides appended `OrchestrationMessage` to the same import list and the same `decodeOrchestrationMessage` const at different offsets, so git took both. Surfaced as a parse error in lint, typecheck and test at once. This is the case `merge-stats.mjs`'s conflict-candidate list exists to catch. `HostedBrowserFrame.tsx` (fork-only) also needed the `renderingActive` prop pingdotgg#8567 made required. Upstream suspends a parked webview unless background audio, PiP or a recording still needs it painted; a frame has none of those to read and is the app's only copy of the preview page, so it passes `true` and keeps today's behavior. ## Sweep Five keyword hits, all false positives: - `apps/web/src/connection/clientMetadata.ts` + test — reports the client's OS/browser/device on connect (pingdotgg#8481). Auth-adjacent, but it rides `ClientPresentation` on the relay and remote-bearer bootstraps; the fork's primary environment sends none of it. - `packages/client-runtime/src/relay/errorPresentation.ts` + test, `connection/errors.test.ts` — explain DPoP failures (pingdotgg#8351). Relay only, and T3 Connect is decided out. ## Feature classification **Usable as-is** - Searchable project-filter combobox in the sidebar (pingdotgg#5931). - Long task drawers stay usable on small screens (pingdotgg#8313) — directly relevant, the fork's phone story is `apps/web` in mobile Safari/Chrome. - Toggleable confirmation before unpinning a thread (pingdotgg#7313); toggle thread pin from the keyboard. - Back button in project settings (pingdotgg#8168); the configured stash shortcut is shown (pingdotgg#8437). - No more red-x summaries for ordinary tool failures (pingdotgg#8395); PRs open in the browser when loading fails (pingdotgg#8507). - Project default models are honored in new threads (pingdotgg#6011). - Provider settings split into list and editor (pingdotgg#8380, pingdotgg#8472) — landed, though `/settings/providers` is itself gated behind `serverAdministration`. **Unsupported in Moatless / needs implementation** - **Non-image file attachments** (pingdotgg#8235) — a turn may now carry any file up to 50MB, advertised as `capabilities.fileAttachments.maxUploadBytes` and sized by `PROVIDER_SEND_TURN_MAX_FILE_BYTES`. Moatless advertises neither this nor `attachmentUploads`, so the composer's attach affordance stays off. Costs nothing today (upstream's own web composer offers images only; `ChatAttachment` widened just far enough to typecheck), but it is the second capability key to report when uploads land. Extends the existing **Attachment uploads** entry in `docs/fork/gaps.md`. - **Connected-client platform analytics** (pingdotgg#8481) and **DPoP failure explanations** (pingdotgg#8351) — relay and T3 Connect surfaces, already decided out of the fork. No new WS methods entered the contract in this range, so no new `UnsupportedMethodError` union entries. `unsupported-methods.mjs` reports `ADD 0`, `DROP 1` (`scripts.run`), `KEEP 2`. The `scripts.run` DROP is **not** actioned — it is the documented exception in the gaps register: that union entry answers for `apps/server`, which still stubs the method (verified surviving in `ws.ts`), not for Moatless. **Backend behavior to consider reproducing in Moatless** - **Replay all un-applied events during projection bootstrap** (pingdotgg#7538) — a one-line pipeline fix upstream; Moatless runs its own projection and the same class of bug applies. - **A draft can retry its first send after a failed bootstrap** (pingdotgg#8226) — Moatless owns turn start, and a draft wedged by a failed bootstrap is the same dead end here. - **Recover stale Codex approval callbacks** (pingdotgg#5195) — Moatless owns the agent runtime in the sandbox. - **Stop querying Claude context usage after turns** (pingdotgg#8610) — a cheap correctness/cost fix in the same place Moatless polls. - **Server-side accept and size-limit non-image uploads** (pingdotgg#8235), the other half of the gap above. - Auto-settling churn (pingdotgg#8321 made it opt-in, pingdotgg#8596 reverted) nets to no change — noted so the next merge does not re-derive it. ## Verification `verify.mjs`: `tripwires`, `fmt:check`, `lint`, `typecheck` pass. `test` reports `@t3tools/web` **flaky, passed alone** — in the full run `MessagesTimeline.test.tsx` skipped all 34 tests on a 30s module-import timeout under `ChatMarkdown.tsx`; alone the package is 297 files / 3117 tests green. Load, not the merge. `inventory-check.mjs` clean. Model: Claude Opus 5, via Claude Code in a Moatless sandbox. --- Moatless task: https://moatless.soaplabstest.com/tasks/a0c041bb-1426-4591-9296-6a4b0cfa2eff
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix(grok): improve skills, plans, usage, and turn reliability (pingdotgg#8358) Co-authored-by: Dara Adedeji <daraadedeji07@gmail.com> Co-authored-by: Ahmed Besic <ahmed-besic@users.noreply.github.com> Co-authored-by: Michael Brown <michaeltbrown.mtb@gmail.com> Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com> Co-authored-by: Guilherme Barros <gbarros1095@gmail.com> Co-authored-by: PC <pc@localhost> Co-authored-by: 1xpixi <157762409+1xpixi@users.noreply.github.com> * fix(server): recover stale Codex approval callbacks (pingdotgg#5195) * test(server): remove duplicate missing worktree test (pingdotgg#8252) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> * fix(server): replay all un-applied events during projection bootstrap (pingdotgg#7538) Co-authored-by: Theo Browne <me@t3.gg> * test: remove low-signal test files (pingdotgg#8397) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> * test: prune trivial error and layout tests (pingdotgg#8400) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> * Fix Android adaptive launcher icon (pingdotgg#4332) Co-authored-by: Yash Singh <saiansh2525@gmail.com> * feat(web): split provider settings into list and editor (pingdotgg#8380) * fix(codex): accept Codex 0.150 account plans (pingdotgg#8447) * fix(tooling): allow ignored-only staged changes (pingdotgg#8468) * fix(mobile): keep iOS home header stable (pingdotgg#8467) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(web): stop showing red x summaries for ordinary tool failures (pingdotgg#8395) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(mobile): refine Git action toast glass styling (pingdotgg#8399) * fix(desktop): allow preview automation in agent-created threads (pingdotgg#8483) * test(web): remove redundant cache key test (pingdotgg#8484) Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> * fix(release): move nightly schedule to minute 38 Recent scheduled nightlies have been delayed or skipped. Move the nightly cron from minute 7 to minute 38. Keep the existing three-hour interval. This tests a different point in each three-hour window without claiming it will fix GitHub schedule delivery. Authored by GPT-5.6 Sol with the Codex harness. * fix(web): stabilize the provider settings editor (pingdotgg#8472) * fix(web): open GitHub pull requests in browser when loading fails (pingdotgg#8507) * fix(codex): show sub-agent models (pingdotgg#8502) * feat(analytics): report connected client platforms (pingdotgg#8481) * feat(server): accept PDF, ZIP, and other file uploads up to 50MB (pingdotgg#8235) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * feat(web): toggle thread pin from the keyboard Add a mod+shift+p shortcut that pins or unpins the active thread. Ignore the shortcut during terminal focus and when the server does not support thread pinning. * fix(web): add back button to project settings (pingdotgg#8168) * refactor(mobile): compile semantic themes for Uniwind (pingdotgg#7327) Co-authored-by: codex <codex@users.noreply.github.com> * fix(desktop): Cache Runtime locally on WSL Filesystem, dramatically improving launch times (pingdotgg#5769) Co-authored-by: Claude Opus 5 <noreply@anthropic.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> * fix(mobile): show OpenCode model sources in picker (pingdotgg#8573) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(clients): honor project default models in new threads (pingdotgg#6011) Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> * fix(mobile): show file actions on Android (pingdotgg#8215) Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> * fix(connect): explain DPoP connection failures (pingdotgg#8351) Co-authored-by: Julius Marminge <julius0216@outlook.com> * feat(web): make the sidebar project filter a searchable combobox (pingdotgg#5931) * fix(server): a draft can retry its first send after a failed bootstrap (pingdotgg#8226) Co-authored-by: Claude Fable 5 <noreply@anthropic.com> * fix(desktop): stop hidden previews draining battery (pingdotgg#8567) * fix(desktop): oauth popups open from the browser preview (pingdotgg#8435) Co-authored-by: Julius Marminge <julius0216@outlook.com> * fix(web): keep long task drawers usable on small screens (pingdotgg#8313) * fix(opencode): handle child approvals, stops, and model catalogs (pingdotgg#8480) * fix: make thread auto-settling opt-in (pingdotgg#8321) * fix(web): stop session activity timing test from blocking releases (pingdotgg#8585) * fix(mobile): show composer menus when starting a task (pingdotgg#8587) Co-authored-by: Julius Marminge <julius@mac.lan> * fix(web): show the configured stash shortcut (pingdotgg#8437) Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> * feat(web): add toggleable confirmation before unpinning a thread (pingdotgg#7313) Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> * fix: restore automatic thread settling defaults (pingdotgg#8596) * fix(mobile): restore composer glass and rounded shadows (pingdotgg#8597) Co-authored-by: Julius Marminge <julius@mac.lan> * Remove Messages Glass Lab experiment (pingdotgg#8599) * chore(release): prepare v0.0.36 --------- Co-authored-by: Theo Browne <me@t3.gg> Co-authored-by: Dara Adedeji <daraadedeji07@gmail.com> Co-authored-by: Ahmed Besic <ahmed-besic@users.noreply.github.com> Co-authored-by: Michael Brown <michaeltbrown.mtb@gmail.com> Co-authored-by: Lars Nieuwenhuis <35393046+lnieuwenhuis@users.noreply.github.com> Co-authored-by: Guilherme Barros <gbarros1095@gmail.com> Co-authored-by: PC <pc@localhost> Co-authored-by: 1xpixi <157762409+1xpixi@users.noreply.github.com> Co-authored-by: Josh <gitlucky@pipelab.org> Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com> Co-authored-by: Tradi3 <56069280+krutftw@users.noreply.github.com> Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Co-authored-by: Ivan Malison <IvanMalison@gmail.com> Co-authored-by: Yash Singh <saiansh2525@gmail.com> Co-authored-by: Gianmarco <gianmarcosimone89@gmail.com> Co-authored-by: Julius Marminge <julius0216@outlook.com> Co-authored-by: Julius Marminge <julius@mac.lan> Co-authored-by: Claude Fable 5 <noreply@anthropic.com> Co-authored-by: Illia Panasenko <hello@ipanasenko.me> Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com> Co-authored-by: codex <codex@users.noreply.github.com> Co-authored-by: Matheson Steplock <ikifar2012@users.noreply.github.com> Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com> Co-authored-by: Anirudh Coontoor <anirudh@gosupernova.live> Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com> Co-authored-by: Nick Anisimov <n.anisimov.23@gmail.com> Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com> Co-authored-by: Dara Adedeji <76637177+SunkenInTime@users.noreply.github.com> Co-authored-by: Bilal Bakr <62337003+Bil0000@users.noreply.github.com> Co-authored-by: Muhammad Waleed <114993336+walid-baharwal@users.noreply.github.com>
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
(cherry picked from commit 3815438)
Round-13 rebase onto main (2 commits). Main reverted the auto-settle opt-in (#8596 undoing #8321), so the branch drops the ported autoSettleMode machinery and returns to sidebarAutoSettleOnMerge with settling-by-default, keeping only the v2 shell-shape delta in threadSettled. The unpin confirmation (#7313) merges into the v2 thread-actions hook, and the mobile list tests re-sync to main's reverted semantics in v2 shapes. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>


#8321 changed the default auto-settle policy to
Never, including for existing users.This reverts that change. It restores the independent merge and inactivity controls, with merged or closed pull requests settling by default and inactive threads settling after 3 days. The prior behavior is restored across web, desktop, and mobile.
Verification:
Browser verification was not run.
Built with GPT-5.6 Sol in T3 Code using the Codex harness.
Note
Medium Risk
Changes default and persisted settling behavior across web, desktop, and mobile thread lists; users upgrading from the exclusive-mode schema get new defaults rather than preserved mode choices.
Overview
Replaces the exclusive Thread settling mode (
never/ PR / inactivity) with two independent controls, undoing the prior default of manual-only settling.Settings & contracts:
sidebarAutoSettleModeis removed in favor ofsidebarAutoSettleOnMerge(default on) andsidebarAutoSettleAfterDays(default 3 days, or null to turn off inactivity settling). Web Settings → General gets separate switches for merged threads and inactive threads; mobile drops the Thread Settling screen and adds an Auto-settle merged threads toggle on the main settings list.Settling logic (
effectiveSettled): Merge and inactivity can both apply—closed PRs still auto-settle; merged PRs settle only when the merge toggle is on.changeRequestAutoSettlesrespectsautoSettleOnMergeand falls back to settling when PR timestamps are missing (restoring older behavior).Sidebar, chat, thread menus, and mobile thread list v2 all pass the new flag through; docs and tests are updated to match.
Reviewed by Cursor Bugbot for commit 241e0f2. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Replace
sidebarAutoSettleModewithsidebarAutoSettleOnMergeboolean across client settingsSidebarAutoSettleModeenum and replaces it with a booleansidebarAutoSettleOnMerge(defaults to true) in settings.ts.sidebarAutoSettleAfterDaysis retained for inactivity-based auto-settle.effectiveSettledandchangeRequestAutoSettlesin threadSettled.ts so merged PRs settle by default unlessautoSettleOnMergeis false; closed PRs always settle.changeRequestAutoSettlesnow returns true (settle) whenchangeRequest.updatedAtorthreadtimestamps are missing or malformed; previously returned false. This may cause threads with missing timestamp data to settle unexpectedly.📊 Macroscope summarized 241e0f2. 16 files reviewed, 3 issues evaluated, 1 issue filtered, 2 comments posted
🗂️ Filtered Issues
docs/user/thread-sidebar.md — 0 comments posted, 1 evaluated, 1 filtered
sidebarAutoSettleAfterDays: null, andeffectiveSettledreturnsfalsefor the inactivity path in that case, so the documentation will incorrectly tell those users that their inactive pinned threads still move to Settled. [ Out of scope (post-validation triage) ]