Skip to content

feat(swift-ios): show when a thread title is being regenerated - #10721

Merged
t3dotgg merged 2 commits into
t3code/rebuild-mobile-app-swiftfrom
t3code/swift-title-regeneration-state
Sep 8, 2026
Merged

feat(swift-ios): show when a thread title is being regenerated#10721
t3dotgg merged 2 commits into
t3code/rebuild-mobile-app-swiftfrom
t3code/swift-title-regeneration-state

Conversation

@t3dotgg

@t3dotgg t3dotgg commented Sep 8, 2026

Copy link
Copy Markdown
Member

Tapping "Regenerate title" in the SwiftUI client gave no feedback. The row did not change, the menu item stayed enabled so you could fire it again, and a cached thread detail could republish the old title after the server had already renamed it.

The server already marks a thread with titleRegeneration while it works, and web and React Native drive their pending state from that one field. This does the same in Swift: decode the field, dim the row title and disable the Regenerate title actions while it is set, and copy the shell title into the cached detail when the shell snapshot is at least as new. No client-side request tracking, timers, or synthesized outcomes.

Replaces #8623, which built the same feature with about 1,300 lines of tracker state, request IDs, a 60 second recovery timer, and error-string sniffing on top of a base that has since moved about 1,000 commits.

Tests: a wire fixture decode test for titleRegeneration on shell and detail threads, and a client test that a newer shell title and regeneration state beat a stale cached detail. Ran the touched suites plus HomeThreadSwipeActionTests and FeatureRootModelTests on the iPhone 17 Pro simulator, all green.

Created with Claude Fable 5.1 in Claude Code.

The server marks a thread with titleRegeneration while it generates a new
title, and web and React Native dim the row and disable the menu item from
that field. The SwiftUI client did not decode it, so a tap on Regenerate
title gave no feedback and could be repeated. A cached detail could also
republish the pre-regeneration title because shell merges did not copy the
title.

Decode titleRegeneration on shell and detail threads, expose it as
isRegeneratingTitle on FeatureThread, dim the row title and disable the
Regenerate title actions while it is set, and copy the shell title into the
cached detail when the shell is at least as new.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@cursor

cursor Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@github-actions github-actions Bot added the vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. label Sep 8, 2026
@github-actions github-actions Bot added the size:L 100-499 changed lines (additions + deletions). label Sep 8, 2026
Comment thread apps/swift-ios/App/NativeFeatureClient.swift
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.5 KiB 15.1 KiB
Codex Thread snapshot wire 7.0 KiB 7.3 KiB
Codex Live turn WebSocket wire 6.5 KiB 7.8 KiB
Codex Live turn WebSocket decoded 57.0 KiB 66.4 KiB
Codex Live turn messages 8 21
Claude Total thread wire 13.6 KiB 15.1 KiB
Claude Thread snapshot wire 7.0 KiB 7.3 KiB
Claude Live turn WebSocket wire 6.5 KiB 7.8 KiB
Claude Live turn WebSocket decoded 57.8 KiB 66.4 KiB
Claude Live turn messages 9 21

Baseline: unavailable · PR result: e295851 · 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: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

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

@macroscopeapp

macroscopeapp Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at e295851

Macroscope's review found this PR approvable — This is a focused Swift iOS UI and model-state enhancement for an existing title-regeneration action, with no new integration or infrastructure impact. The additive wire decoding, stale-detail reconciliation, and state-preservation paths are covered by targeted tests.

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

…builds

mergingOlderHistory and the settle/metadata reducers rebuild
OrchestrationThread field by field and left titleRegeneration at its nil
default, so loading an older page or settling a thread cleared the pending
state and re-enabled Regenerate title while the server was still working.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@t3dotgg
t3dotgg merged commit 93ca266 into t3code/rebuild-mobile-app-swift Sep 8, 2026
24 checks passed
@t3dotgg
t3dotgg deleted the t3code/swift-title-regeneration-state branch September 8, 2026 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 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.

1 participant