Fix How It Works branding, screenshot fill, and detail/My Apps touch targets#53
Merged
Conversation
The How It Works onboarding screen still referred to SideStore in all four step strings. Rebrand the visible copy to MiniStore. VPN wording is left untouched (the sanctioned LocalDevVPN redirect flow). https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
The App Detail and Source Detail screens draw their own floating back button (a circular glyph over the artwork). It was a 40x40 circle with a body-weight chevron — under Apple's 44pt minimum touch target and hard to hit. Bump the circle to 44x44 and the chevron to title3 so it is easier to press. backButtonSize (used in the banner-zone layout math) tracks the new size on both screens. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Two carousel issues on the App Detail page: - Black bars: thumbnails were framed to each screenshot's own metadata aspect ratio, so a screenshot whose real image differs from that ratio (or carries baked-in letterbox padding) showed bars even with scaledToFill. Frame every thumbnail to one uniform modern-iPhone portrait ratio and aspect-fill it, so off-ratio content crops to fill instead of letterboxing. A shared width also makes the viewAligned carousel snap cleanly. - Scroll-off: give the horizontal carousel its own .clipped() band so thumbnails can't bleed past the rounded content card during a scroll/overscroll. The fullscreen preview carousel keeps per-image sizing (it should show the whole screenshot, not a cropped fill). https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
The My Apps section-header buttons (Refresh All, and the Inactive info button) were small subheadline labels with only their glyph as the tap target, so they were fiddly to press. Two changes: - Extend each button's hit area toward the title and vertically (padding + contentShape) without moving the visible glyph, so it is easier to tap. - Reserve the Refresh All label's footprint in a ZStack while it spins, so the header's trailing edge no longer jumps when the spinner swaps in — the control stays symmetric across the idle and refreshing states. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Contributor
|
Builds for this Pull Request are available at |
Contributor
|
Download the artifacts for this pull request (nightly.link): |
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.
Changes
InstructionsView). VPN wording left untouched (the sanctioned LocalDevVPN redirect flow).scaledToFill. Every thumbnail is now framed to one uniform modern-iPhone portrait ratio and aspect-filled, so off-ratio content crops to fill instead of letterboxing. The shared width also makes theviewAlignedcarousel snap cleanly. The fullscreen preview carousel is unchanged (it should show the whole screenshot, not a cropped fill).title3chevron on both screens; thebackButtonSizeused in the banner-zone layout math tracks the new size.contentShape) without moving the glyph, and reserved the Refresh All label's footprint while it spins so the header's trailing edge no longer jumps when the spinner swaps in — the control stays symmetric across the idle/refreshing states.Todo before merge
scaledToFill+ clip fixes are already shipped, yet bars persist). Uniform aspect-fill crops off-ratio padding, but if a source image is letterboxed at the same aspect as the display frame, the bars can only be removed by re-exporting that screenshot without padding — flagging in case a source needs updating.🤖 Generated with Claude Code
Generated by Claude Code