Refine cinematic onboarding keyboard - #1240
Conversation
|
Automated review (diff-only; note the supplied diff was truncated after 60000 bytes, so some later hunks were not reviewed). Bug: hardcoded US-QWERTY shift symbols applied regardless of active keymap
This isn't gated to the QWERTY-US preview path. Suggested fix: derive the shifted symbol from the active keymap (if it exposes a shifted-label lookup) instead of a fixed US table, or only apply Minor / lower-confidence observations (not blocking)
I did not find other actionable correctness/reliability/security issues in the supplied portion of the diff. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c1ccbbe0b2
ℹ️ 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".
| if KeyCode.numberRow.contains(key.keyCode), | ||
| let shiftedLabel = shiftedNumberRowLabel(for: label) |
There was a problem hiding this comment.
Derive shifted legends from the selected keymap
When the selected logical keymap is System with a non-US input source, this synthesizes US shifted symbols from the base label—for example, a French or Japanese 2 is shown with @ even though SystemKeyLabelProvider.currentShiftLabels contains the actual shifted character. Use the selected keymap's shifted-label data instead of the hard-coded US mapping so the onboarding keyboard remains consistent with the user's active keymap.
AGENTS.md reference: AGENTS.md:L303-L306
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Fixed in 2b2e33a. Shifted number-row legends now come from the selected LogicalKeymap. The dynamic System keymap carries SystemKeyLabelProvider.currentShiftLabels, QWERTY defines its own US shift map, and layouts without shifted data no longer receive synthesized US symbols. Added scene and provider regression coverage.
c1ccbbe to
2b2e33a
Compare
|
Reviewed the supplied diff (truncated after 60000 bytes — did not see the tail of Possible regression: .onDisappear {
keyboardInput.stop()
}If Everything else in the diff (shader tuning, palette/zoom constants, |
Co-Authored-By: OpenAI Codex <[email protected]>
2b2e33a to
1110428
Compare
|
Addressed the re-presentation concern in the latest commit: the dialog again settles an in-flight keyboard entrance on disappear, while the existing pending-phase guard preserves the first visible-frame animation. |
|
Reviewed the supplied diff (note: it was truncated after 60000 bytes, so Mostly a visual/shader polish pass with matching snapshot + timing test updates (e.g.
No functional/security/reliability issues found in the reviewed portion otherwise (the Metal shader math for the new GGX/Smith/Fresnel specular terms checks out against the standard Cook-Torrance formulas, and divisions are guarded with |
The installed dark hold read as an excellent dark theme rather than a photographed object: every keycap wore an even rim, the deck graze was a uniform tint, legends emitted identically, and a press was a flat accent fill. The reveal also crossed the entire keyboard in ~0.28 s of its 0.75 s travel, spending most of the transition on the copy column. - Mask all additive edge terms by a light-facing directional weight during the dark hold; the lesson key's rim resolves toward a white bevel catch with the blue halo outside. - Broaden, strengthen, and spatially pool the warm deck graze; widen wells and deepen contact/cast shadows in the dark phase only. - Vary legend emission and warmth along the light axis instead of an even backlight panel. - Let a press darken the lower face and catch light on the top bevel. - Ease the light front's travel (pow 1.9) so ~60% of the reveal dwells on the keyboard span; update the entrance contract tests and re-record the directional-light fallback snapshot. - Fade the lesson copy column's bottom edge when it overflows so the launcher step no longer clips its instruction mid-sentence with no affordance. Verified from fresh installed replays: dark hold, feathered front crossing individual keycaps, and an unchanged settled light endpoint (design-qa.md, Iteration 2). Co-Authored-By: Claude Fable 5 <[email protected]>
|
Reviewed the supplied diff (truncated after 60000 bytes, so the AZERTY/Dvorak/Colemak sections of Findings:
No blocking correctness issues found in the visible portion beyond the above; the shader/projection math changes look like deliberate, self-consistent visual tuning. |
MacBook hardware prints word legends on wide edge keys toward the outer edge of the board; the stage centered everything, and the launcher/Rules affordances rendered as keycap look-alikes on the spacebar. - Carry a legend alignment in the scene model, derived from key geometry: row-starting wide word keys set leading, row-ending trailing, letters, symbols, and stacked legends stay centered. The Metal atlas rasterizes edge-aligned cells flush to a fixed padding, the renderer anchors the quad's matching edge at the keycap's inner margin, and the native overlay applies the same alignment for fallback and accessibility. - Render the launcher-choice, application, and Rules-handoff targets as floating chips in both paths: full capsule, flattened bevel, top sheen, reduced contact shadow, and a deeper soft cast shadow, so they read as UI hovering above the spacebar instead of replacing it. Verified via stage suites (46 tests) and re-recorded fallback snapshots; installed Metal capture is queued behind an idle-time guard. Co-Authored-By: Claude Fable 5 <[email protected]>
|
Reviewed the supplied diff (truncated after ~60000 bytes, so No high-confidence correctness/reliability/security bugs found in the reviewable portion. This is mostly Metal shader and layout polish; the logic changes I could trace (easing in One minor, non-blocking observation:
Nothing else stood out as actionable in the visible diff. |
Hands-on feedback: the bottom row sat nearly flush with the deck's bottom edge, and fixing that alone pushed the deck's top edge out of frame — the keys read as sliding off a cropped board. - Widen the deck's aluminum apron below the bottom row to match the reference's grounded composition. - Stop the anisotropic Caps camera from zooming vertically above 1x: the horizontal magnification that matches the reference key width is unchanged, while the vertical always fits the complete board, top edge through bottom apron, with both rounded corners visible in every moment. - Re-record the fallback snapshots for the new framing. Verified from installed replays after each change; the settled Metal capture also confirms edge-anchored legends render correctly on the GPU path (design-qa.md, Iteration 3). Co-Authored-By: Claude Fable 5 <[email protected]>
|
Reviewed the supplied diff (Metal/keyboard-stage visual overhaul + Findings from the visible portion:
No correctness/security issues found in the Metal shader math itself (checked the new |
Summary
Fixes #954
Validation
TEST_FILTER="GenericPackConfigTests/(testCapsLockPackInstallsTheSelectedCatalogConfiguration|testQuickLauncherBuildsOnTheCatalogCapsLockInstall)" ./Scripts/run-tests-safe.shKEYPATH_SNAPSHOTS=1 TEST_FILTER="FirstSuccessOnboardingSnapshotTests" ./Scripts/run-tests-safe.shpython3 Scripts/check-accessibility.py./Scripts/ui-deploy.shplus installed-app replay and exact onboarding visual inspectionREQUIRE_NOTARIZED=0 REQUIRE_STAPLED=0 ./Scripts/verify-installed-app.sh./Scripts/test-full.sh: 5,012 tests passed; three unrelated existing Home Row timing snapshots fail because current output is 1300x586 while their baselines are 1300x638. This branch does not touch those tests or images../Scripts/review-gate.sh: remote review gate selected; GitHubclaude-reviewmust pass before merge