Site: OS-aware chrome, per-platform downloads, and nav cleanup - #88
Merged
Conversation
The shared AppWindow bar only ever drew the Windows caption block, but the app does not: paintsWindowControls is Windows-only, and macOS keeps the real NSWindow traffic lights on the left with a title-bar inset reserved for them. A mac reader was being shown a window they will never see. Both spellings now ship in the markup and a data-os attribute, set pre-paint by an inline script in the head, reveals one. Apple UAs (macOS, iOS, iPadOS in desktop mode) get the traffic lights; everything else, including Android and any no-JS render such as the OG screenshot, keeps the Windows controls.
…ework The hero and closing band now offer Windows/macOS/Linux download buttons that reveal the reader's own build via data-os (Base.astro's OS sniff now also detects Linux), all routed through a new /download/started confirmation page that fires the actual artifact download and orients the reader (setup guide, star-the-repo ask), keyed on the ?platform= it was asked for rather than the visitor's own OS. get-started.astro gained anchor ids so the confirmation page's step cards land on the right instruction; the sitemap excludes both og-card and download/started since neither is meant to be indexed. Nav: dropped Sign in and Features (both stay reachable from the footer), renamed the CTA from Start free to Download free (the free plan's pricing-card CTA deliberately keeps Start free), added Escape-to-close and current-page indication, and unified the desktop/mobile item lists into one array. Footer gained the mark+wordmark lockup (previously wordmark-only) and a bare GitHub link. Eyebrow labels dropped their accent rule for a neutral terminal-cursor mark that blinks once on arrival. Tests updated to match; get-started.spec.ts's coverage folded into contracts.spec.ts.
Below the download button: dropped the VPN/port-forwarding line (redundant with the security page's own argument) and collapsed the OS-availability sentence into a plain builds link, so the subtext reads End-to-end encrypted / See all builds. Reworded the Handler line — 'a phase held until the evidence is there' assumed the reader already knew what a phase gate was. Now: hand off a session on your instructions, wakes you only when the call is truly yours — same honesty constraint (Handler never runs unsupervised, see Phases.astro), plainer language.
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.
The shared
AppWindowbar only ever drew the Windows caption block, but the app does not:paintsWindowControlsis Windows-only, and macOS keeps the realNSWindowtraffic lights on the left withtitleBarLeftInsetreserved for them. A mac reader was being sold a window they will never see.Both spellings now ship in the markup and a
data-osattribute — stamped pre-paint by an inline script in<head>— reveals one:is:inlineon that script is load-bearing: Astro would otherwise defer it as a module and the swap would land a frame after paint, as a flicker in the hero. Display is toggled from unlayered CSS rather than Tailwindhidden/flexutilities, so there is no cascade-layer fight like the one that recently flattened the rail.Per-platform downloads
The same
data-osattribute now also picks the hero's download button (Windows/macOS/Linux, all three shipped and revealed by CSS — no post-load label rewrite on the primary CTA). Every download, hero and closing band alike, routes through a new/download/started?platform=<id>confirmation page instead of the raw artifact: it fires the actual download, then orients the reader (link to the setup guide, a GitHub-star ask) keyed on the platform the URL asked for rather than the visitor's own OS.get-started.astrogained anchor ids so the confirmation page's step cards land on the right instruction, and the sitemap excludes bothog-cardanddownload/startedsince neither is meant to be indexed.Nav cleanup
Sign inandFeaturesfrom the top nav — both stay reachable from the footer.Sign inserved the smallest audience on the site;Featureswas a scroll-link into the middle of one of six home sections and was disorienting from anywhere else.aria-current. Desktop and mobile now share onenavItemsarray instead of two lists that could drift.Also
Verification
win, macOS →mac, Android →win, iPadOS →mac, Linux →linux; all chrome variants and download buttons visually checked.bunx astro check— 0 errors, 0 warnings, 0 hints.bun run build— 11 pages, clean.bun run test— 68 passed.