Expiry countdown stability, flush App Detail screenshots, and PR template#54
Merged
Conversation
The active-app banner showed the days-remaining text by feeding the raw now→expirationDate interval to a maxUnitCount=1 DateComponentsFormatter. That truncates to the largest unit and rolls the day count over at a 24h-from-now boundary, so reopening the app later the same day could show one fewer day even though no calendar day had passed — and it disagreed with the color thresholds, which already use calendar days. Compute the day text from whole calendar days (start-of-day to start-of-day) so it only changes at midnight and matches the color logic. Under a day remaining still shows the finer hours/minutes countdown. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Replace the minimal two-section template with a professional layout: Summary, Type of change, Changes, Testing, Screenshots, Related issues, and a merge checklist (targets develop, CLAUDE.md conventions, build/behavior, device check, no secrets). Guidance is kept in HTML comments so it does not render in the submitted description. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
The App Detail screenshot thumbnails read as separate cards hovering above the page: a hairline tertiaryLabel border outlined each one and the tile backing used secondarySystemBackground (lighter than the card). Remove the stroked border (keep the corner rounding, App Store style) and change the tile backing to altBackground so thumbnails sit flush with the detail card. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Contributor
|
Download the artifacts for this pull request (nightly.link): |
Contributor
|
Builds for this Pull Request are available at |
Enlarging a screenshot opened a blank fullscreen preview that never loaded. The preview used .sheet(isPresented:) driven by a bool while reading a separate previewScreenshot optional, both written in the same tap. That is racy — SwiftUI can build the sheet before the optional commits, so the if-let fails and the sheet is empty. Switch to .sheet(item:) with a small Identifiable wrapper so presentation is bound to the screenshot itself and it is always available when the sheet content builds. https://claude.ai/code/session_01PT8zpkUrgTRaGeKmbvVyNe
Contributor
|
Builds for this Pull Request are available at |
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
Three follow-ups: stabilize the My Apps expiry countdown so it no longer appears to lose a day within the same calendar day, make the App Detail screenshots sit flush with the page instead of reading as raised tiles, and replace the minimal pull request template with a professional layout.
Type of change
Changes
now → expirationDateinterval to amaxUnitCount = 1DateComponentsFormatter, which truncates to the largest unit and rolls the day count over at a 24h-from-now boundary. Reopening the app later the same day could therefore show one fewer day even though no calendar day had passed, and it disagreed with the color thresholds (which already use calendar days). The text is now computed from whole calendar days (start-of-day to start-of-day), so it only changes at midnight and matches the color logic; under a day remaining still shows the finer hours/minutes countdown.tertiaryLabelborder outlined each one and the tile backing usedsecondarySystemBackground(lighter than the card). Removed the stroked border (keeping the corner rounding, App Store style) and switched the tile backing toaltBackground, so thumbnails sit flush with the detail card.Testing
Build and upload MiniStore) is the compile check. The countdown and screenshot changes are self-contained view-layer edits; the countdown fix reuses the existing calendar-day helper already used by the banner color thresholds.Screenshots
Not attached — no capture device available in this environment. Both visual changes were made against the reported behavior (screenshots flush with the card; countdown stable within a calendar day).
Checklist
develop(nevermain)CLAUDE.md🤖 Generated with Claude Code
Generated by Claude Code