feat(welcome): chrome reveal intro on load - #52
Merged
Conversation
The show-off brand size must respect the wide lockup aspect ratio so the title does not overflow and clip at welcome window dimensions.
Track intro timing so the welcome screen can ease in header, copy, and CTA chrome while the brand settles into its resting hero size.
Start the intro transformation immediately with a large-to-hero brand scale and opacity reveal for header, copy, and enter CTA.
Request animation frames while the chrome reveal is active and pass intro timing into the welcome view on each render.
Start chrome reveal timing on the first welcome render tick so the animation is not partially consumed during app construction.
Wire accepts_enter to intro animation state so keyboard and command handlers ignore completion until the brand settles at resting size.
Disable the Enter CTA and theme toggle while the brand morph is active and guard theme toggling in the desktop handler.
Add tests for deferred intro clock, accepts_enter blocking, narrow viewport clamping, and show-off brand settling at resting height.
Rely on accepts_enter command gating instead of disabling the button so the CTA keeps its normal appearance while intro is active.
Remove disabled styling from the theme button and rely on handler-side gating while the chrome reveal animation is active.
Model the welcome flex stack (titlebar, header, brand frame, copy, and CTA) so the hero transition overlay starts at the on-screen brand center. Share layout constants between the view and layout math.
Capture the morph start position from the post-resize viewport so the transition overlay matches the welcome brand after the window grows.
Only the transition overlay renders the lockup while morphing so the welcome and animated heroes cannot double up when positions differ.
Capture the morph start from the current welcome viewport and keep the window size stable until the brand finishes moving to the title bar.
Sample the welcome brand image bounds each frame and capture that center and height when the hero morph begins, instead of approximating layout.
Enter now persists onboarding, resizes the window, and routes directly to the shell without the brand overlay animation.
Consolidate welcome completion into a single state transition, remove dead hero layout helpers, and tighten intro input/focus gating.
Size the title and body to the rendered DisplayMd tagline in Space Grotesk so the description no longer sits narrower than the headline.
Share welcome vertical layout budget across show-off height math, cache welcome callbacks, add desktop intro gating tests, and remove unused docked brand export.
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
Test plan
cargo test