Skip to content

feat(swift-ios): show how long completed threads have been done - #7399

Open
saphid wants to merge 2 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue119-done-for-duration
Open

feat(swift-ios): show how long completed threads have been done#7399
saphid wants to merge 2 commits into
pingdotgg:t3code/rebuild-mobile-app-swiftfrom
saphid:feat/issue119-done-for-duration

Conversation

@saphid

@saphid saphid commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Problem

Completed threads on SwiftUI Home used the thread's last-update time. A task updated after it finished could therefore look newer than its actual completion.

Implementation

Rich completed rows now use the existing latest-turn completion timestamp for their compact age and VoiceOver text. Invalid or missing completion timestamps keep the existing last-update fallback. Slim rows, non-completed states, the server, and other clients are unchanged.

Verification

  • Current-head GitHub checks passed, including the focused SwiftUI native tests.
  • Swift parsing passed for the five changed files.
  • git diff --check upstream/t3code/rebuild-mobile-app-swift...HEAD passed.
  • Diff remains limited to five SwiftUI files.

Evidence

Current-head proof is prepared but not attached yet. The exact-head native build was refused before Xcode started because another delivery lane holds the native-build lease. Older captures are intentionally omitted.

Implemented with GPT-5.6 Sol in the Codex harness.

@coderabbitai

coderabbitai Bot commented Aug 18, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 5509fbc0-8a7f-4c66-a205-0332acb8ac74

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 18, 2026
macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 18, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 8c177b5

Macroscope's review found this PR approvable — This is a focused iOS Home metadata adjustment that uses an existing completion timestamp, preserves slim-row and fallback behavior, and adds targeted formatting tests. Its runtime impact is limited to display and accessibility text, with no schema, workflow, infrastructure, or sensitive-data implications.

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

@t3dotgg
t3dotgg force-pushed the t3code/rebuild-mobile-app-swift branch from 1f39d72 to fce7740 Compare August 18, 2026 21:35
@saphid
saphid force-pushed the feat/issue119-done-for-duration branch from 7b1393e to c618327 Compare August 18, 2026 22:23

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit c618327. Configure here.

Comment thread apps/swift-ios/Features/Workspace/HomeThreadCollectionView.swift
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 19, 2026 05:05

Dismissing prior approval to re-evaluate 6d7966c

@saphid

saphid commented Aug 19, 2026

Copy link
Copy Markdown
Contributor Author

Updated after on-device review: the wording is gone.

Completed rows now show the bare elapsed time since completion15m, 2h 43m, 1d 2h — in the same slot and style as every other row's age label, instead of the earlier Done for <duration> sentence. Verdict from testing on device was simply "I just want how long since it was there".

What did not change is the substance of the feature: the age is still measured from latestTurnCompletedAt (when the task finished), not from last activity. A thread touched a minute ago but finished hours ago reads as hours, not as a minute.

Also in this update:

  • Sub-minute completions read now, matching the existing age vocabulary rather than inventing a <1m form.
  • VoiceOver keeps a full sentence and now substitutes it for the bare status word: "Completed 2 hours, 43 minutes ago" / "Completed just now".
  • Threads with no completion timestamp still fall back to the last-activity age, unchanged.

Same four files, apps/swift-ios only. Focused suite T3CodeTests/HomeThreadMetadataTests: 13/13 passed, 0 failures on this head, and the tree was verified in the simulator — a fixture whose last activity was 9 minutes old but whose completion was 2h 44m old renders 2h 43m, confirming the label follows completion rather than activity.

Coordination trace: T3 thread 50F4FC2B-6485-41E5-80DA-BDCD2BE20428 · saphid/t3code-personal#119

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 19, 2026
@saphid

saphid commented Aug 21, 2026

Copy link
Copy Markdown
Contributor Author

Exact-head visual proof refreshed

Captured from PR head 6d7966cd75219e37c1ed98b48fb4b6530e30989e on the canonical proof simulator after installing the Debug app produced by the focused exact-head test build.

The completed Publish the migration guide row shows a multi-hour completion age even though its last activity was only minutes earlier; Sketch the settings redesign is the non-completed control row.

Light Dark
Light mode exact-head completion-age proof Dark mode exact-head completion-age proof
  • Focused tests: 13/13 passed, exit 0, ** TEST SUCCEEDED **.
  • Light SHA-256: f2031e76b835c22b61ec0791de103824580bf2356c07b24a7ce3776c5fcd6ea2
  • Dark SHA-256: e3d5b5df753c65d4ca2626aec188668f48e093170bd04c8c33f0b141d64e18a5
  • Proof manifest

No video is needed because this change has no interaction or motion behavior.

@saphid
saphid force-pushed the feat/issue119-done-for-duration branch from 6d7966c to b49d8b3 Compare August 26, 2026 23:20
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 26, 2026 23:20

Dismissing prior approval to re-evaluate b49d8b3

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 26, 2026
@saphid
saphid force-pushed the feat/issue119-done-for-duration branch from b49d8b3 to c61c020 Compare August 27, 2026 05:17
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 27, 2026 05:17

Dismissing prior approval to re-evaluate c61c020

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Aug 27, 2026
# Conflicts:
#	apps/swift-ios/App/NativeFeatureClient.swift
@macroscopeapp
macroscopeapp Bot dismissed their stale review August 28, 2026 12:43

Dismissing prior approval to re-evaluate 8c177b5

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