Skip to content

Add per-section manual screenshots + iOS 26.5 capture infra#82

Merged
Saqoosha merged 1 commit into
developfrom
manual-section-screenshots
May 23, 2026
Merged

Add per-section manual screenshots + iOS 26.5 capture infra#82
Saqoosha merged 1 commit into
developfrom
manual-section-screenshots

Conversation

@Saqoosha
Copy link
Copy Markdown
Owner

@Saqoosha Saqoosha commented May 23, 2026

Summary

  • New -screenshotRoute mechanism 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.
  • Cropping script (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}.md now 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" succeeds
  • xcodebuild -configuration Release -scheme HDZap -destination "platform=iOS Simulator,name=iPhone 16 Plus" succeeds (verifies no DEBUG-gated symbol leaks)
  • Run python3 scripts/crop_settings_screenshots.py end-to-end after recapturing, confirm all expected per-section PNGs land in /tmp/hdzap_crops/ with no WARN: expected N sections, got M warnings
  • Open docs/manual/en.md and docs/manual/ja.md in a markdown previewer, confirm every image resolves and renders centered, OSD code blocks render centered, YouTube embed scales to viewport
  • On a real iPhone (Safari): open the published Pages manual, verify §1 YouTube embed fits screen, §8 OSD code blocks fit screen without horizontal scroll
  • Sanity: grep -nE 'プレミアム音声|レートスライダー|最後の数秒|ペイウォール|ラップ読み上げ' docs/manual/ja.md returns nothing

Summary by CodeRabbit

リリースノート

  • Documentation
    • ユーザーマニュアルを拡充:Bluetooth設定、ブリッジ設定、デバイスペアリング、OSDレイアウト、レース実行手順に詳細なスクリーンショットと説明を追加
    • 新たに「Premium ボイス(サブスクリプション)」セクションを追加:AWS Polly/Azure の試聴方法、加入・復元手順を記載

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 23, 2026

Caution

Review failed

An error occurred during the review process. Please try again later.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch manual-section-screenshots

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 and usage tips.

- 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>
@Saqoosha Saqoosha force-pushed the manual-section-screenshots branch from c4f72b6 to 5c01394 Compare May 23, 2026 16:04
@Saqoosha Saqoosha merged commit ebb2ec3 into develop May 23, 2026
3 checks passed
@Saqoosha Saqoosha deleted the manual-section-screenshots branch May 23, 2026 16:12
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>
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