fix(web,mobile): per-thread auto-settle menu says what it does#29025

merged1
main
GitHub fork: fix/28707-auto-settle-menu-labels
opened8d agobyIiamabhishekt
View on GitHubTwo-way sync enabledPR last imported 1d ago

The thread menu's Auto-settle behavior offered Enabled and Disabled. Enabled only meant "follow this environment's rules". With auto-settle turned off in Settings → Threads, Enabled stayed checked and the thread never settled, so the menu said the opposite of what happened.

Summary

diff
1 Auto-settle behavior
2- ✓ Enabled # read as "this thread auto-settles"
3- Disabled
4+ ✓ Follow settings # what it actually does: use Settings → Threads
5+ Never
  • Web: threadActionMenu.logic.ts holds the labels for both the sidebar context menu and the thread header menu.
  • Mobile: the same submenu in thread-list-v2-items.tsx.
  • Docs: docs/user/thread-sidebar.md now says that Follow settings does nothing while the rules are off.

The action ids, the stored autoSettleDisabledAt field, and server behavior are unchanged.

Product choice to review: the issue suggests two fixes:

  • A three-way per-thread setting (Use global / Always / Never). This needs a new per-thread opt-in field in contracts and a ThreadSettlementService rule that settles a thread when no environment or project rule applies, plus a definition of what "always" means with no inactivity window.
  • At minimum, rename Enabled to something like Follow settings.

This PR does the rename only. That makes the menu accurate without new data on the wire. If we want per-thread opt-in, that's a separate feature PR. I didn't show the effective on/off state either: project-scoped sidebarAutoSettleAfterDays overrides would mean resolving settings per thread on every client.

Evidence

  • Before: with auto-settle rules off in Settings → Threads, the menu shows Enabled checked (from the issue):
  • After (web, sidebar right-click menu): the same submenu shows Follow settings checked and Never: AFTER_IMAGE
  • Mobile uses the same two labels in thread-list-v2-items.tsx; not captured on a device.
  • This is a copy-only change, so I added no test (AGENTS.md: no tests for copy text). threadActionMenu.logic.test.ts still passes (3/3). vp run check:changed passed: format, lint, knip, typecheck (3 packages), tests, react compiler.

Merge Danger

Door: two-way

Only labels and docs change. Ids and persisted state are the same.

Blast Radius: tiny

Open PR #26110 (agents can disable auto-settle through MCP) edits the same paragraph in docs/user/thread-sidebar.md. Whichever lands second gets a small text conflict, and should name the options Never / Follow settings. #24051, #28359 and #18937 change no files that this PR touches.

Fixes #28707

Model: Claude Opus 5.5, harness: Claude Code in T3 Code

Checks

24 successful · 12 skipped
All checks passed
162f5ca

Added 1 commit

  • fix(web,mobile): per-thread auto-settle menu says what it does162f5ca
Synced from GitHub

Approvability

Verdict: Approved at 162f5ca

Macroscope's review found this PR approvable — This updates web and mobile auto-settle labels to “Follow settings” and “Never,” with matching documentation. Existing settings, defaults, and settlement behavior are unchanged.

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

Synced from GitHub

Review in Change Stack →

No actionable comments were generated in the recent review.

External image Recent review info
External image Run configuration
External image Commits

Reviewing files that changed from the base of the PR and between 4a5251b1c4b867ad2d89bf59d7a062ca8c40f2a6 and 162f5caeb012a1b6f865cbabc7b42e7565e01eed.

External image Files selected for processing: 3
  • apps/mobile/src/features/threads/thread-list-v2-items.tsx
  • apps/web/src/components/threadActionMenu.logic.ts
  • docs/user/thread-sidebar.md

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

Walkthrough

The mobile and web auto-settle menus now show “Follow settings” and “Never” instead of “Enabled” and “Disabled.” The documentation describes the updated labels and clarifies that “Follow settings” follows the global rules.

Changes: Auto-settle option labels

Layer / File(s)Summary
Update menu labels and documentation
apps/mobile/src/features/threads/thread-list-v2-items.tsx, apps/web/src/components/threadActionMenu.logic.ts, docs/user/thread-sidebar.md
The mobile and web menus use “Follow settings” and “Never.” The checked-state logic is unchanged. The documentation explains that “Follow settings” follows global rules and that manual settle, snooze, and archive remain available with “Never” selected.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix · Severity of issue fixed: Low

Suggested reviewers: t3dotgg

Merge Risk: External image Minimal · up to 162f5

No merge-blocking risk was identified.

Pre-merge checks: Passed 4
Check nameStatusExplanation
Title checkPassedThe title clearly identifies the web and mobile auto-settle menu label change. It is concise and related to the main change.
Description checkPassedThe description explains the problem, change, scope, linked issue, verification results, and merge considerations. It includes before-image evidence and reports that mobile evidence was not captured, …
Linked Issues checkPassedIssue #28707 permits a minimum label fix. The web menu changes Enabled to Follow settings and Disabled to Never. The mobile menu applies the same labels. The documentation explains that `Follo…
Out of Scope Changes checkPassedThe pull request changes only the two auto-settle menu label sets and the related thread-sidebar documentation. These changes directly support issue #28707. No unrelated behavior, persistence field, s…
Full details: Description check

Explanation

The description explains the problem, change, scope, linked issue, verification results, and merge considerations. It includes before-image evidence and reports that mobile evidence was not captured, while the after-image entry is a placeholder rather than an embedded screenshot.

Full details: Linked Issues check

Explanation

Issue #28707 permits a minimum label fix. The web menu changes Enabled to Follow settings and Disabled to Never. The mobile menu applies the same labels. The documentation explains that Follow settings uses Settings → Threads and does not settle a thread when those rules are off. The diff preserves the existing action IDs and checked-state logic. The issue's suggested three-way per-thread opt-in is not required for the minimum fix.

Full details: Out of Scope Changes check

Explanation

The pull request changes only the two auto-settle menu label sets and the related thread-sidebar documentation. These changes directly support issue #28707. No unrelated behavior, persistence field, server rule, or API change appears in the reviewed diff.

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

Note

Written by gpt-6.1-sol on behalf of Maria

Verified in a real dev environment

verified unchanged head 162f5caeb012a1b6f865cbabc7b42e7565e01eed on a disposable linux vm. installed with vp i, ran one background vp run dev at a time, and drove the actual web client with repository playwright and /usr/bin/google-chrome. created a project pointing at the real checkout and sent real codex gpt-6.1-sol turns through the composer on main and the pr. both completed. no mocks or seeded fixtures.

  • reproduced on github/main (cbd3e149a1): both auto-settle rules off in settings, yet both header and sidebar menus showed "Enabled" checked.
  • on the pr, the same app-created thread shows "Follow settings" and "Never" in both menus. copied the stopped main dev state into isolated pr dev state for matching data.
  • selected "Never", reloaded, and confirmed it stayed checked. selected "Follow settings" from the header, reloaded, and confirmed it was checked in the sidebar. selected "Never" in the sidebar and confirmed it in the header.
  • manual settle moved the opted-out thread into the settled shelf; un-settle restored it to the inbox with "Never" still checked. both auto-settle rules remained off.
  • existing vp test run apps/web/src/components/threadActionMenu.logic.test.ts passed 3/3 through blacksmith-check. current github checks: 23 successful, 6 skipped, none failing or pending. no source changes or pushes needed.

settings with both rules off:

auto-settle rules disabled in the real app

before, main:

main header menu shows Enabled checked with rules off

after, pr, same thread and turn:

pr header menu shows Follow settings checked and Never

menu selection, reload persistence, manual settle and restore (loading screens trimmed):

real app auto-settle menu selection and manual settle restore

Not verified

native ios/android menus and the electron shell were not run on this linux vm. automatic settlement after days of inactivity or a real pull request merge/close was not exercised; this pr only renames labels and preserves the server behavior. no claim that this adds per-thread opt-in or an "always" mode.