feat(landing): adapt copy to visitor OS + interactive looping demo#36
Merged
Conversation
Two landing improvements driven off client-side OS detection.
OS detection (src/lib/use-client-os.ts):
- `detectOS(ua, platform)` — pure, unit-tested classifier returning
macos / windows / linux / unknown.
- `useClientOS()` — resolves after hydration (starts 'unknown' to match
the static-export server HTML, avoiding a hydration mismatch).
- `osMeta(os)` — label, record-hotkey key tokens (⌘⇧Space on macOS,
Ctrl+⇧Space elsewhere), and the manifest field for that OS.
Hero:
- Primary CTA now reads "Download for macOS/Windows/Linux" based on the
detected OS ("Download for your OS" until resolved / when unknown). The
link still points at #download — we adapt the copy, never gate the
platform, so a mac visitor can still grab the Windows build.
Interactive demo (replaces the static demo.tsx mockup):
- A faux app window that loops through the real UX beats — idle →
recording (waveform pill) → transcribing → word-by-word paste → done →
back to idle — instead of shipping a GIF. The idle prompt shows the
OS-correct shortcut glyphs. Honors prefers-reduced-motion by rendering
the finished state statically, and exposes an `initialPhase` test seam
so the auto-cycle timers stay out of unit tests.
Tests: 15 new (10 detectOS/osMeta, 5 demo phases). Full landing suite
50/50, typecheck + build + lint clean.
Co-Authored-By: WOZCODE <contact@withwoz.com>
|
Landing preview will be available at https://bluemacaw.com/previews/pr-36/ once AWS infra lands (Plan D). |
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.
Two landing improvements driven off client-side OS detection.
OS detection (src/lib/use-client-os.ts):
detectOS(ua, platform)— pure, unit-tested classifier returning macos / windows / linux / unknown.useClientOS()— resolves after hydration (starts 'unknown' to match the static-export server HTML, avoiding a hydration mismatch).osMeta(os)— label, record-hotkey key tokens (⌘⇧Space on macOS, Ctrl+⇧Space elsewhere), and the manifest field for that OS.Hero:
Interactive demo (replaces the static demo.tsx mockup):
initialPhasetest seam so the auto-cycle timers stay out of unit tests.Tests: 15 new (10 detectOS/osMeta, 5 demo phases). Full landing suite 50/50, typecheck + build + lint clean.
Summary
Test plan
Documentation update obligations (per CONTRIBUTING.md trigger table)
Did this PR trigger any of the following? If yes, the relevant docs are updated in this PR.
docs/providers.md, provider grid in landing,pricingentriesdefaultModels+pricing.lastUpdatedpricing.lastUpdateddocs/architecture.mddocs/development-workflow.md, rootCLAUDE.mddocs/permissions.md,docs/install-<platform>.md,docs/build-and-release.md,docs/ci-cd.mddocs/architecture.mddocs/build-and-release.md,docs/ci-cd.mddocs/secrets.md,packages/landing/src/app/privacy/page.tsxdocs/build-and-release.md,docs/ci-cd.mdBreaking changes