Add per-section manual screenshots + iOS 26.5 capture infra#82
Merged
Conversation
|
Caution Review failedAn error occurred during the review process. Please try again later. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
- Add ScreenshotMode router (-screenshotRoute <name>) with 22 routes
covering Settings sub-views, Lap announcer states, OSD layout, timer
states (ready/running/done), and history list/detail
- Add per-route seeds to BluetoothManager / SubscriptionManager /
LapTimer / RaceHistoryStore so each capture renders against
populated fake state without touching real BLE/StoreKit
- Wire programmatic navigation in TimerView / SettingsView /
AudioSettingsView / ConnectionSettingsView / PairingSettingsView so
routes auto-open the right sub-view, plus ScrollViewReader on the
Settings root so iOS 26.5's off-viewport About card can be captured
- Hide DEBUG-only sections (BackpackTelemetry, Premium TTS dev panel)
during screenshot capture so the published manual stays clean
- Add scripts/crop_settings_screenshots.py: detects iOS card
boundaries automatically, crops per-section, adds 80 px white
fade-to-page buffer outside the section content
- Capture full set on iOS 26.5 simulator (matches what most users see),
retune section-detection threshold (95 → 50) for the tighter inter-
section gaps Apple introduced
- Expand docs/manual/{en,ja}.md: 60+ new images, dedicated §10
"Premium voices (subscription)" section, per-iOS-section crops in
§11 Settings reference, screenshot-driven walkthroughs in §5/§6/
§7/§8/§9, mobile-friendly OSD code blocks + responsive YouTube embed
- Update docs/screenshot-capture.md with the new route mechanism,
iOS 26.5 runtime auto-selection, 8 s capture sleep, and fade rules
- Align JA manual terminology with app labels: Premium ボイス, 速度,
ラップ実況, 残り秒数をカウントダウンする, サブスク登録シート
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
c4f72b6 to
5c01394
Compare
Saqoosha
added a commit
that referenced
this pull request
May 24, 2026
- Pulls in PRs #75–#82: paywall polish, Premium TTS countdown latency improvements, audio cancel/leak fixes, mixer for overlapping numbers, Cartesia removal, on-device TTS evaluation, per-section manual screenshots, iOS 26.5 capture infra, manual UX polish, PNG optimization - project.yml: dropped the local storeKitConfiguration scheme override to match develop's Sandbox-by-default policy (Apple Root CA G3 can't verify Xcode-only signatures on the Worker side) - project.pbxproj: took ours; xcodegen will regenerate from project.yml - All paywall-gating wiring for Apple Watch haptics survived the auto-merge: TimerView.publishWatchSnapshot still ANDs subscription.isEntitled, PublishWatchSnapshotModifier still tracks the entitlement flag, WatchSettingsView still swaps the toggle for the paywall card Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
-screenshotRoutemechanism with 22 routes drives screenshot capture of every Settings sub-view, audio engine state, OSD layout card, timer ready/running/done state, and history list/detail — each route auto-opens the target surface and seeds populated fake state (connected bridge, entitled Premium, scrolled About card, success banner) so the published manual reflects real UI rather than empty fresh-install state.scripts/crop_settings_screenshots.py) automatically detects iOS card boundaries, slices per-section, and adds an 80 px white fade-to-page buffer outside the section so embedded crops blend into the white manual page without amputating any section content.docs/manual/{en,ja}.mdnow carries 60+ targeted images, a dedicated §10 Premium voices section, per-iOS-section crops inline in §11 Settings reference, screenshot-driven walkthroughs in §5–§9, mobile-friendly OSD code blocks (centered via<pre style="text-align: center">), and a responsive YouTube embed. JA terminology aligned with the app's exact labels (Premium ボイス, 速度, ラップ実況, 残り秒数をカウントダウンする, サブスク登録シート).Test plan
xcodebuild -configuration Debug -scheme HDZap -destination "platform=iOS Simulator,name=iPhone 16 Plus"succeedsxcodebuild -configuration Release -scheme HDZap -destination "platform=iOS Simulator,name=iPhone 16 Plus"succeeds (verifies no DEBUG-gated symbol leaks)python3 scripts/crop_settings_screenshots.pyend-to-end after recapturing, confirm all expected per-section PNGs land in/tmp/hdzap_crops/with noWARN: expected N sections, got Mwarningsdocs/manual/en.mdanddocs/manual/ja.mdin a markdown previewer, confirm every image resolves and renders centered, OSD code blocks render centered, YouTube embed scales to viewportgrep -nE 'プレミアム音声|レートスライダー|最後の数秒|ペイウォール|ラップ読み上げ' docs/manual/ja.mdreturns nothingSummary by CodeRabbit
リリースノート