Skip to content

Keep Talk controls visible while captions scroll - #18

Open
htuzel wants to merge 1 commit into
Chuloo:mainfrom
htuzel:fix/stable-talk-controls
Open

htuzel wants to merge 1 commit into
Chuloo:mainfrom
htuzel:fix/stable-talk-controls

Conversation

@htuzel

@htuzel htuzel commented Sep 13, 2026

Copy link
Copy Markdown

Long captions on Talk can push the microphone, Meaning, End and secondary actions offscreen. This keeps the controls in a bottom safe-area inset while the conversation content scrolls, addressing #5 on iOS. Secondary actions stack when necessary, and Meaning/Transcript labels wrap at large text sizes. The idle instruction remains in the scrolling content so it does not crowd out the caption.

Adds an offline --preview --preview-long-caption simulator fixture and two UI regressions covering subtitle toggles, scrolling, stable control positions, and opening/dismissing the typed-reply sheet. The fixture initializes outside the static screenshot initializer so interaction does not reset its preferences.

Validation (Xcode 26.5 / iOS 26.5, arm64):

  • Original layout reproduced the failure: microphone not hittable with the long caption.
  • 70 Core tests passed; native simulator builds passed.
  • Both new UI tests passed on iPhone 17 and iPhone SE (3rd generation), including the largest accessibility text size.
  • Greeting/Meaning and ended-conversation/manual-reset checks passed after the final idle-instruction adjustment. Existing open-transcript/automatic-reset and Mandarin transcript/pinyin checks also passed during this change.
  • Reviewed simulator screenshots for long captions and large-text idle/ended states. Verification details and reproduction instructions are included in the docs.

No live voice/provider session was exercised; these are offline UI checks. Audio, learning/persistence behavior and the Android proposal in #9 are unchanged.

Summary by CodeRabbit

  • Improvements

    • Conversation controls now remain pinned at the bottom while longer captions and notices scroll independently.
    • Secondary actions adapt between horizontal and stacked layouts based on available space.
    • Meaning and transcript labels wrap more clearly, including at larger accessibility text sizes.
    • Added support for previewing conversations with extended captions to verify control accessibility and scrolling behavior.
  • Documentation

    • Added guidance for testing long-caption conversations and pinned controls in the simulator.

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: f077749d-14dc-42f3-beda-df32a6ef5c39

📥 Commits

Reviewing files that changed from the base of the PR and between 4aef373 and e18eef3.

📒 Files selected for processing (5)
  • App/ConversationCoordinator.swift
  • App/RootView.swift
  • UITests/MuralUITests.swift
  • docs/build-and-test.md
  • verification/validation.md

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The PR adds a long-caption simulator fixture, moves Talk controls into a bottom safe-area inset, keeps captions scrollable, adapts secondary controls to available space, and adds UI coverage for standard and largest accessibility text sizes.

Changes

Long-caption conversation controls

Layer / File(s) Summary
Long-caption preview fixture
App/ConversationCoordinator.swift, App/RootView.swift
The debug preview recognizes --preview-long-caption, creates repeated Spanish captions and cached English meanings, and prepares conversation preview state when combined with --preview.
Pinned Talk layout
App/RootView.swift
Caption content and notices are scrollable. Conversation controls are placed in a bottom safe-area inset. Secondary controls switch between horizontal and vertical layouts, and Meaning and End/Transcript labels support wrapping.
Pinned-control validation
UITests/MuralUITests.swift, docs/build-and-test.md, verification/validation.md
UI tests verify control position and interaction during scrolling, meaning toggles, type mode, and largest accessibility text size. Documentation records the fixture and verification results.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Suggested reviewers: chuloo

Merge Risk: ⚪ Minimal · up to e18ee

The long-caption fixture and its UI tests use compatible launch arguments, so the intended pinned-control coverage remains effective.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 3 files. (2 skipped: 2 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: keeping Talk controls visible while captions scroll.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 3 files. (2 skipped: 2 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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.

❤️ Share

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant