Skip to content

ios: preview the walk's moves in onboarding - #152

Merged
AidenJohnston merged 3 commits into
betafrom
t3/85-onboarding-moves
Sep 27, 2026
Merged

AidenJohnston merged 3 commits into
betafrom
t3/85-onboarding-moves

Conversation

@AidenJohnston

@AidenJohnston AidenJohnston commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator

Fixes #85

What the old code did

Onboarding had three pages: the walk and its length, the haze (with a line about the ring from #81), and safety. Nothing before the camera named the moves the walk asks for: tilting down or up, a second look from a step to the side, following the ring and its edge arrow, and marking where the wall ends. In the 4.1 field test, testers met each move for the first time as a card they couldn't decode (#77, #81, #63).

What changed

  • OnboardingScreen.swift gets a fourth page, "What the walk asks for", between the walk page and the haze page. It lists five numbered moves. The first two are in the order the walk asks for them (GuidancePlanner.preferredTask asks for the ground by the meter before either side's walk); the page body says that after those, the card asks for whatever the walk still needs:
    1. Aim at your meter. "Your phone takes the photo by itself."
    2. Tilt down at your meter. ""Tilt down to show the ground." Later the card may ask for this again, or say "Tilt up to show more wall." Some spots need a second look from a step to the side."
    3. Walk along the wall. "Keep the wall and the ground in view. If you're too close, the card says "Take a step back.""
    4. Follow the blue ring. "Put it on the spot the card names. An arrow at the screen edge means the spot is off screen."
    5. Tap where the wall ends. "Aim where the wall stops or turns a corner, and tap Wall ends here. The walk asks at both ends."
  • The quoted card words come from ScanCopy.guidance(...) at build time instead of being retyped, so the page and the cards can't drift apart. "Wall ends here" is the button label in WallWalkScreen.
  • The picture uses the onboarding WallDrawing. It adds the path dots as WayfindingOverlay draws them, a marked wall end as WallMarksOverlay draws one, the button's flag, and the ring and edge arrow. The ring and arrow are TargetMarker itself, so any change to the camera's ring (The target ring and arrows show no progress, aren't explained, and the arrow can contradict the card #81, ios: aim ring fills as its stretch is captured, with a legend and an unambiguous arrow #117) shows up here too. The ring fills, turns green and starts again every 6 s. With Reduce Motion it stays half full.
  • Accessibility: the picture is hidden, as it is on the other pages. Each move is one element (onboarding.move.1 … .5), and the number circle grows with Dynamic Type.
  • Skip still jumps to the safety page, and "Allow camera" is still on the last page. Both use pages.count - 1.
  • ScreenStatesUITests.swift:
    • A new onboarding-moves state is audited at the default size and at AX5. It taps Next, waits for the page to slide into view, and checks that each move element carries the cards' words.
    • testWholeFlowThroughTheButtons taps Next three times instead of two.
    • SourceRestartUITests and the practice-meter tests use Skip, so they needed no change.

This adds to #117 (now on beta), which rewrote the haze page's ring line, without changing it. git merge-tree --write-tree origin/beta origin/t3/85-onboarding-moves merges cleanly. The APIs this page uses (the ScanCopy.guidance cases and TargetMarker(placement:progress:)) are the same on beta. Only ScreenStatesUITests taps Next through onboarding; the other UI tests on beta use Skip.

Known gaps

Tests

Round 1 (b2d80e8, the move reorder from review): g2-tf1 on the Mac mini. Drift, swift test and the device build are running; the UI results aren't in yet.

No server or web files changed, so make server and make web weren't run. iOS was checked on the Mac mini with ~/hs-ci/ci-local.sh, which replicates ios.yml. Both runs are at e085372:

  • g2-onboarding-r1 ran the default UI suite, which skips the every-state audit. The xcodegen drift check, HouseScanKit swift test with -warnings-as-errors, and the device build passed. Of 24 UI tests, 22 passed, 1 was skipped and 1 failed. The passes include testWholeFlowThroughTheButtons, which now taps Next three times. The failure was AuditIssueKeyTests.testAGoneElementIsReadWithoutRecordingAFailure: on the overloaded Mac mini, the tap on the ground question's "Gravel" answer didn't register, so ground.change never appeared. This branch doesn't touch that screen or that test.
  • g2-onboarding-r1-full ran the full UI suite, including the every-state audit. Drift, swift test and the device build passed. testAGoneElementIsReadWithoutRecordingAFailure passed this time, so the earlier failure was a flake. The every-state audit checked onboarding-moves and onboarding-moves-AX5 and reported no issues on either. Two tests failed, both outside this change:

UI tests on the branch merged with beta, including the every-state audit under full-ui, are pending on GitHub CI.

Needs the full-ui label, because it changes a screen and its copy.

🤖 Generated with Claude Code

Adds a page between the walk page and the haze page that lists the five
moves the walk asks for, in order: aim at the meter, walk along the wall,
tilt down or up (with a second look from a step to the side), follow the
blue ring and its edge arrow, and tap where the wall ends. Each step quotes
the walk's cards from ScanCopy, and the picture draws the ring and the edge
arrow with TargetMarker itself on the onboarding wall.

The screen-state audit gains an onboarding-moves state (default and AX5)
that pages to it and checks each move's words; the button-flow test taps
Next once more.

Fixes #85

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

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: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 45035587-e6a9-4deb-b6b6-30d7cbc5fbea

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

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.

@github-actions github-actions Bot added the size:L 100-499 effective changed lines. label Sep 27, 2026
@AidenJohnston
AidenJohnston marked this pull request as ready for review September 27, 2026 09:35
@codemetrics-ai

Copy link
Copy Markdown

Note

Review skipped

Codemetrics is installed on this repository, but it hasn't been added to your team yet.

To enable AI code reviews for this repo, go to your dashboard and add house-scanning-master to your team's repositories.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e085372d90

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +122 to +124
Instruction(
title: "Walk along the wall",
detail: sentences(walk.detail, "If you're too close, the card says \"\(stepBack.title).\"")

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preview the ground tilt before walking

When the wall walk begins near the meter and its ground is not already covered, GuidancePlanner.preferredTask returns .aimAtGround before considering either side's .walk task. This numbered preview instead puts “Walk along the wall” before “Tilt down or up,” contradicting the stated request order precisely on the normal first-run path; reorder these items or stop presenting them as a sequence.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

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

@AidenJohnston Confirmed at e085372: GuidancePlanner.preferredTask:239-241 asks for ground near the meter before the side walk at246 onward, while OnboardingScreen.moves lists walking before tilt. Please present these as possible moves without a numbered sequence, or put the initial ground request before walking and avoid implying a fixed order for later requests. Preserve the new page, Skip-to-safety and the matching UI expectations. This is a guidance-copy correction, not a blanket blocker for controlled testing; physical comprehension remains unverified.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Fixed in b2d80e8. The moves page now lists them in the order GuidancePlanner.preferredTask asks for them at the start: 1. Aim at your meter, 2. Tilt down at your meter ("Tilt down to show the ground." Later the card may ask for this again, or say "Tilt up to show more wall." ...), 3. Walk along the wall, 4. Follow the blue ring, 5. Tap where the wall ends. The page body now says "After the first two, it asks for whatever the walk still needs", so no fixed order is implied for later requests. The new page and Skip are unchanged; the onboarding-moves UI expectations swap move 2 and move 3.

AidenJohnston and others added 2 commits September 27, 2026 04:54
GuidancePlanner.preferredTask asks for the ground by the meter before
either side's walk, so the moves page now lists the tilt second and
stops promising a fixed order after the first two moves.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	ios/HouseScanUITests/ScreenStatesUITests.swift
@AidenJohnston
AidenJohnston merged commit 73f3288 into beta Sep 27, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 effective changed lines.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants