feat(mobile): regenerate a thread title from the row menu - #5657
feat(mobile): regenerate a thread title from the row menu#5657sideeffffect wants to merge 2 commits into
Conversation
Add a capability-gated "Regenerate title" item to the thread row long-press
menu, matching the web per-thread action menu. Shown only when the server
advertises the threadTitleRegeneration capability (like settle/snooze/pin).
- useThreadListActions gains regenerateThreadTitle: dispatches
thread.meta.update { regenerateTitle: true } via the existing updateMetadata
command, with a per-thread in-flight Set guard (same pattern as the snooze
actions) so a rapid second tap can't start duplicate generation work.
- Both the v1 (ThreadListRow) and v2 (ThreadListV2Row) row menus render the
item across every variant; the capability is threaded through as
titleRegenerationSupported alongside the existing settle/snooze/pin flags.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
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:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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 6eec3ce. Configure here.
ApprovabilityVerdict: Needs human review This PR adds a new user-facing feature (regenerate thread title action in row menus) rather than a bug fix or mechanical change. New features introducing new user capabilities warrant human review. You can customize Macroscope's approvability policy. Learn more. |
While a title regeneration is running (thread.titleRegeneration != null), the menu item now disables itself and reads "Regenerating…" instead of staying enabled as "Regenerate title" — so a second long-press reads as inert rather than actionable, matching web's action menu. The handler's in-flight guard already no-oped the duplicate; this adds the missing visual feedback. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Regenerate title already landed on |

What changed
Adds a capability-gated Regenerate title item to the thread row long-press menu, matching the web per-thread action menu. Selecting it dispatches
thread.meta.update { regenerateTitle: true }. Shown only when the environment's server advertises thethreadTitleRegenerationcapability (same gating web uses).Appears across both list implementations (v1
ThreadListRowand v2ThreadListV2Row) and both surfaces (Home list + iPad sidebar).Why
Regenerating a thread's title is available on the web client but was unreachable in the mobile app.
How
useThreadListActionsgainsregenerateThreadTitle, reusing the existingupdateMetadatacommand. It carries a per-thread in-flightSetguard (same pattern as the snooze actions) so a rapid second tap can't start duplicate title-generation work before the shell'stitleRegenerationflag lands.titleRegenerationSupported, alongside the existing settle/snooze/pin flags; the item only renders when supported.No server, contract, or shared-runtime changes.
Scope
Split out of the original combined PR per request. Sibling PRs: Rename (#5648) and Unarchive.
Testing
tsc --noEmit,vp fmt --check,vp lint: cleanScreenshots
No Android device/emulator available here for before/after images (per
CONTRIBUTING.md) — happy to add. The change adds "Regenerate title" to the row long-press menu on capable servers.🤖 Generated with Claude Code
Note
Low Risk
Mobile-only UI and metadata command wiring; capability-gated with existing duplicate-request guards and no server or contract changes.
Overview
Brings Regenerate title to mobile thread lists so it matches the web per-thread menu on capable servers.
useThreadListActionsaddsregenerateThreadTitle, which callsupdateMetadatawithregenerateTitle: true, checksthreadTitleRegeneration, blocks duplicate taps with an in-flight guard andthread.titleRegeneration, and surfaces failures via alerts. Home and the iPad sidebar pass the handler through and derivetitleRegenerationSupportedfrom server capabilities like settle/snooze/pin.v1 (
ThreadListRow) and v2 (ThreadListV2Row) long-press menus prepend the action when supported; while regeneration is in progress the item shows Regenerating… and is disabled.Reviewed by Cursor Bugbot for commit 89ee435. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add 'Regenerate title' action to thread list row menus on mobile
regenerateThreadTitleaction inuseThreadListActions.tsthat callsupdateMetadatawithregenerateTitle: true, deduplicates concurrent requests per thread, and shows an alert on failure.thread-list-items.tsx) and v2 (thread-list-v2-items.tsx) row components conditionally show the menu item when the server reportscapabilities.threadTitleRegeneration === true.thread.titleRegenerationis set), the menu item is disabled and relabeled 'Regenerating…'.Macroscope summarized 89ee435.