Skip to content

Magic tap first run#5

Merged
SerialForBreakfast merged 7 commits into
mainfrom
magic-tap-first-run
May 1, 2026
Merged

Magic tap first run#5
SerialForBreakfast merged 7 commits into
mainfrom
magic-tap-first-run

Conversation

@SerialForBreakfast

Copy link
Copy Markdown
Owner

feat: First Spell (Magic Tap) onboarding + QuestPaintScreen unification

UI polish pass still pending — layout and flow are functional and accessible, visual refinements are the remaining gap.

First Spell (Magic Tap) onboarding

Adds a new three-stage sub-flow inside iOSFirstRunView before the Basics sequence: entry screen, VoiceOver required gate, and Magic Tap practice surface. The gate screen detects live VoiceOver state, has a re-check button, posts accessibility announcements on state change, and uses @AccessibilityFocusState to land on the Continue button. The practice surface owns .accessibilityAction(.magicTap) at the screen level so no specific element needs focus — casting the spell moves VoiceOver directly to Continue.

Production art shipped: magictap_bg (warm torchlit backdrop, replaces borrowed simon_room_bg on all three first-run screens) and magictap_spellbook_sigil (transparent hero image). Phase 4 prompt sheet, asset pipeline doc, and Phase 3 mockup verification ticket all added. Four new screenshot scenes registered and captured across iPhone and iPad (FirstSpellEntry, FirstSpellVORequired, FirstSpellReady, FirstSpellSuccess).

Basics sequence improvements

Refactored from a static list to selectable step cards with completed/current/locked status badges. Magic Tap launches the selected playable step. launchedStepIndex tracking prevents phantom sequence advancement on back-navigation without completing a game. VoiceOver focus and announcement fire on appear and after selection.

QuestPaintScreen unification

QuestPaintScreen gains optional accessibilityIdentifier and accessibilityLabel parameters — when set, the scaffold owns .accessibilityElement(children: .contain) on the scroll column. The three first-run screens (entry, first spell, basics) now use QuestPaintScreen directly, eliminating their hand-rolled GeometryReader + ScrollView + ZStack layouts.

Banishment (hard-coded 600pt), Dungeon (hard-coded 680pt), and Enchanter L0/L1/L2 (hard-coded 600pt contentMaxWidth with HStack+Spacer centering) prologues now call QuestPaintContentMetrics via GeometryReader. All land at the authoritative 620pt iPad reading column. Dungeon passes gameKind: .scrollHunt for its gutter bonus. Enchanter L3 (timed playfield) is untouched.

Banishment cleanup

Stale "SF Symbol greybox" language removed from doc comments — raster assets are live, SF Symbols are fallback only. gestureZReference clarified as prologue-only reference art excluded from trap heuristics. DesignTicket-BanishmentMockupVerification.txt added to close the Phase 3 paper trail, including inline Lights Off and VoiceOver contract audits (both PASS).

ScreenAuditKit

README rewritten from a 52-line stub into a full reference covering the pipeline, architecture, CLI, contract format, all nine rule IDs, visual inspector algorithms, report schemas, RA11y integration, OCR boundary, severity model, exit codes, test coverage, current state, and roadmap.

Known gaps

Spacing and type hierarchy on the Magic Tap practice surface needs a final pass
Entry screen card styling not yet aligned with v07 mockup
readyCard paragraph spacing to be reviewed

Introduce a new First Spell (Magic Tap) onboarding flow and screenshot coverage. Adds iOSMagicTapFirstSpellView and iOSFirstSpellVoiceOverRequiredView, integrates a FirstSpellStage into iOSFirstRunView, and wires new cases into iOSScreenshotScene and iOSScreenshotRootView. Adds localized strings for the flow, updates UI tests to capture four new screenshot states (entry, VO required, ready, success), and includes screenshot/fastlane assets and memlog design notes. Also implements accessibility magicTap handling and deterministic screenshot states for consistent captures.
Refactor the Basics sequence UI to use selectable step cards with explicit status (completed/current/locked), visual selection state, and Magic Tap support for launching the selected playable step. Track selected and launched indices to correctly advance the sequence after returning from a game and announce/focus the selected step for VoiceOver.

Enhance VoiceOver onboarding screens: add state tracking, status messages, announcement posting, focus management for the Continue button, and a re-check button that verifies VoiceOver before continuing. Update Magic Tap first-spell view to perform the appropriate primary action (cast spell or continue) on Magic Tap and focus the Continue control after learning the spell.

Add and update localized strings for new statuses, accessibility hints, and voiceover messages. (Includes an incidental workspace user state file change.)
Add magictap background and spellbook sigil assets and their Contents.json, replace usages of "simon_room_bg" with "magictap_bg" in first-run views, and swap the SF Symbol placeholder for the imported "magictap_spellbook_sigil" image. Update Fastlane screenshot lane to store Xcode artifacts under build_results/fastlane_screenshots (adjust derived data and xcresult paths and create the artifacts dir). Regenerate screenshots in docs/ and fastlane/screenshots/, add memlog design assets/docs, and apply related script tweaks (extract_screenshots.sh, build_and_test.sh, remove_white_background.py).
Update existing magictap_spellbook_sigil.png in the RA11y-iOS asset catalog and memlog design assets, and add new design variants to memlog/requirements/Design/Assets/magictap: magictap_spellbook_sigil3.png, magictap_spellbook_sigil4.png, magictap_spellbook_sigil5.png, magictap_spellbook_sigil5_llm.png, and magictap_spellbook_sigil_first.png. These additions provide multiple sigil variants for use in the app and design system.
Major expansion of ScreenAuditKit/README.md into a full reference (TOC, pipeline, contract format, visual inspectors, CLI, reports, testing, roadmap, etc.). Updated and refreshed screenshot assets under docs/screenshots/** and fastlane/screenshots/** for multiple device sizes. Added memlog/VOAccessibilityResearch.md. Minor Swift change: added a comment in iOSFirstSpellVoiceOverRequiredView.focusContinueButton noting the 250ms VoiceOver settle delay.
@SerialForBreakfast SerialForBreakfast merged commit bd13da5 into main May 1, 2026
1 check passed
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