Skip to content

(v1) Terminal-forward homepage redesign with nautical motif - #1161

Closed
yamcodes wants to merge 9 commits into
v1from
design/homepage-redesign
Closed

(v1) Terminal-forward homepage redesign with nautical motif#1161
yamcodes wants to merge 9 commits into
v1from
design/homepage-redesign

Conversation

@yamcodes

@yamcodes yamcodes commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Description

This PR implements a complete redesign of the website homepage using a terminal-forward, CLI-first utility style with a subtle nautical/sailing motif, aligning with Arkenv's brand.

Visual & Architectural Changes

  • Design Tokens: Defined a locked design system in design.md utilizing OKLCH colors—anchored on a deep marine navy backdrop (oklch(13% 0.014 225)) and electric cyan accent (oklch(78% 0.16 210)).
  • Relocated Theme Toggle: Relocated the theme switcher from the global header in layout files to a tucked-away setting in the home footer to establish dark mode as the default/primary mode.
  • Terminal Navigation (N8 style): Renders a simulated command prompt header (> arkenv --init) with navigation flags.
  • Workbench Simulation: Implements an interactive step-by-step CLI walkthrough component in the hero section displaying:
    1. Bootstrapping with npx arkenv init.
    2. Defining schema variables in env.ts using ArkType.
    3. Fail-fast error logs showing missing/invalid env variables.
  • Compatibility & Technical Specs: Cleaned up the compatibility rails and specs grid to feel clinical, technical, and precise.

Verification

  • Checked formatting and linting via pnpm check.
  • All 659 unit/integration tests passed successfully.

@changeset-bot

changeset-bot Bot commented Jun 5, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: e849011

The changes in this PR will be included in the next version bump.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added docs Adds or changes documentation, or acts as documentation in and of itself www Improvements or additions to arkenv.js.org labels Jun 5, 2026
@arkenv-bot

arkenv-bot Bot commented Jun 5, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (Asia/Almaty)
arkenv Ready Ready Preview, Comment Jul 31 2026, 12:00 AM (Asia/Almaty)

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

This PR drops homepage <title> and <meta description> metadata and removes the theme toggle from all docs pages.

Reviewed changes — complete homepage redesign with terminal-forward CLI aesthetic, nautical/marine OKLCH design tokens, and a three-tab interactive workbench simulator.

  • New design.md design system — locked OKLCH palette, typography, spacing, motion, and microinteraction rules for the app.
  • Homepage rewrite — terminal header with --docs / --github nav flags, sonar/radar background animation, CTA copy-command chip, interactive workbench simulator with init/schema/validation tabs, and a dense monospace footer colophon.
  • Design token migrationdark.css and light.css migrated to OKLCH colors with marine-cyan accent; AnnouncementBadge and Logo components switched from hardcoded blue to primary CSS variables.
  • Theme toggle relocation — removed from global header in both (home)/layout.tsx and docs/layout.tsx, moved to homepage footer.

🚨 Homepage loses <title> and <meta description> metadata

The page was converted from a server component (which exported metadata: Metadata) to a client component ("use client"), removing the title ("ArkEnv") and description ("Environment variable validation from editor to runtime"). The root layout.tsx does not define a title or description override, so the homepage will have no meaningful <title> or <meta description> tags.

Technical details
# Homepage loses `<title>` and `<meta description>` metadata

## Affected sites
- `apps/www/app/(home)/page.tsx` line 81 — `"use client"` directive prevents `metadata` export
- `apps/www/app/(home)/page.tsx` lines 74–76 — removed `export const metadata: Metadata = { title: "ArkEnv", description: "..." }`

## Required outcome
- The homepage must render with a `<title>` and `<meta name="description">` tag.
- Either restore the page as a server component with `metadata` export, or use `generateMetadata` in a separate `layout.tsx` or co-located file.

## Suggested approach
- Move the client-interactive components (workbench simulator, copy button, etc.) into a child client component, keeping the page as a server component with `metadata` export intact.
- Alternatively, add a `title` and `description` to the root `layout.tsx` metadata object as a fallback.

⚠️ Docs pages have no way to toggle themes

The ThemeToggle was removed from both the desktop header (actions array) and mobile menu (menuActions array) in apps/www/app/docs/layout.tsx. Unlike the homepage (which relocated the toggle to its footer), the docs layout has no fallback toggle, leaving docs pages without any theme-switching UI.

Technical details
# Docs pages have no way to toggle themes

## Affected sites
- `apps/www/app/docs/layout.tsx` lines 557–581 — `ThemeToggle` removed from `actions` (desktop header) and `menuActions` (mobile menu)

## Required outcome
- Docs pages must have a visible theme toggle, either in the header or sidebar.
- If the intent is to keep the global header toggle-free, add `ThemeToggle` to the docs sidebar or a similar persistent UI element.

## Suggested approach
- Restore `ThemeToggle` to the `actions` array in the docs layout header, or
- Add it as a sidebar footer element via Fumadocs' `sidebarFooter` configuration.

ℹ️ Nitpicks

  • useCopyCommand in apps/www/hooks/use-copy-command.ts shows a toast on copy, but design.md specifies "silent success" for clipboard operations — the hook could be updated to match the design system's microinteraction stance.
  • StarUsButton, QuickstartButton, CLICommand, HeroGradientOverlay, and HeroVisual are no longer imported anywhere in the app; their source files and tests can be cleaned up in a follow-up.

Pullfrog  | Fix it ➔View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — the second commit addresses both critical issues flagged in the prior review: restoring homepage metadata and re-adding a theme toggle to docs pages. Client code is cleanly extracted into a new file.

  • Extracted HomePageClient component — moved the full workbench-simulator homepage into apps/www/app/(home)/home-page-client.tsx, keeping page.tsx as a server component that re-exports metadata: Metadata.
  • Restored ThemeToggle to docs sidebar — added as a sidebar footer element in apps/www/app/docs/layout.tsx, with Fumadocs' built-in themeSwitch disabled to avoid a duplicate toggle.
  • Cleaned up unused import — removed the dangling ThemeToggle import from apps/www/app/(home)/layout.tsx.

Pullfrog  | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@yamcodes
yamcodes changed the base branch from dev to v1 June 5, 2026 15:40
@yamcodes yamcodes changed the title design: terminal-forward homepage redesign with nautical motif (v1) Terminal-forward homepage redesign with nautical motif Jun 6, 2026
@yamcodes yamcodes mentioned this pull request Jun 14, 2026
Co-authored-by: Cursor <cursoragent@cursor.com>
@yamcodes
yamcodes force-pushed the design/homepage-redesign branch from c5f9f86 to 83f4b90 Compare July 17, 2026 21:47
yamcodes and others added 3 commits July 20, 2026 23:47
Update homepage selectors for the new docs/GitHub CTAs and darken light primary (plus status colors) so WCAG AA contrast checks pass.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added the tests This issue or PR is about adding, removing or changing tests label Jul 20, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — incremental delta since the prior review: restored Playwright coverage for the redesigned homepage, added Hallmark design-trace artifacts, and fixed light-mode contrast for the OKLCH palette.

  • Restored Playwright homepage coverage — updated apps/playwright-www/tests/homepage.test.ts to match the new terminal-forward nav (--docs link and exact-name GitHub link selectors).
  • Added Hallmark design-trace files.hallmark/log.json and .hallmark/preflight.json capture the Workbench macrostructure, theme axes, and preflight findings.
  • Fixed light-mode contrast — darkened light.css --primary/--ring to oklch(42% ...) for WCAG AA, and adjusted success/error text in home-page-client.tsx to readable text-green-700 / text-red-700 in light mode.

Pullfrog  | View workflow run | Using Kimi K2 (free via Pullfrog for OSS) | 𝕏

@yamcodes yamcodes linked an issue Jul 22, 2026 that may be closed by this pull request
@yamcodes yamcodes added the preview Opt-in gate for PR preview deployments label Jul 22, 2026
<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Merges latest `v1` into the homepage redesign branch and resolves the
single content conflict in `apps/www/app/(home)/page.tsx`.

## Resolution

- Kept the redesign's thin server page that renders `HomePageClient`
(discarded the old hero markup from `v1`).
- Ported the `v1` announcement badge update into `home-page-client.tsx`:
**Next.js, Netlify presets** → `/docs/cli/hosting-presets`.

## Test plan

- [ ] Confirm no conflict markers remain
- [ ] Homepage loads with redesigned UI and updated announcement badge
- [ ] `pnpm check` / relevant www checks pass
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-5540de83-df58-45d8-b811-4844b600c231"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-5540de83-df58-45d8-b811-4844b600c231"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: arkenv-bot[bot] <237618717+arkenv-bot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
@github-actions github-actions Bot added arkenv Changes to the `arkenv` npm package. @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv example Issues or Pull Requests concerning at least one ArkEnv example. (Found in the `examples/` directory) @arkenv/bun-plugin Issues or Pull Requests involving the Bun plugin for ArkEnv playground Issues or Pull Requests concerning a playground. (Found in the `apps/playgrounds/` directory) @arkenv/nextjs Issues or Pull Requests involving the Next.js integration for ArkEnv @arkenv/nuxt Issues or Pull Requests involving the Nuxt integration for ArkEnv labels Jul 22, 2026
Resolve remaining merge conflicts after the prior squash-merge left
Git without a merge parent on v1.

- Keep the redesign thin HomePageClient page (discard old v1 hero markup).
- Keep redesign .changeset/pre.json formatting (identical changeset set).
- Keep example package pins already aligned with Version Packages (alpha).

Co-authored-by: Yam Borodetsky <hi@yam.codes>
@github-actions github-actions Bot removed arkenv Changes to the `arkenv` npm package. @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv @arkenv/bun-plugin Issues or Pull Requests involving the Bun plugin for ArkEnv playground Issues or Pull Requests concerning a playground. (Found in the `apps/playgrounds/` directory) @arkenv/nextjs Issues or Pull Requests involving the Next.js integration for ArkEnv @arkenv/nuxt Issues or Pull Requests involving the Nuxt integration for ArkEnv labels Jul 22, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — merged latest v1 into the redesign branch and ported the upstream announcement badge update into the redesigned homepage.

  • Resolved merge conflict in page.tsx — kept the redesign's thin server page that renders HomePageClient and discarded the old hero markup from v1.
  • Updated homepage announcement badge — changed apps/www/app/(home)/home-page-client.tsx to link to /docs/cli/hosting-presets with the label "Next.js, Netlify presets".

Pullfrog  | View workflow run | Using Kimi K2 (free via Pullfrog for OSS) (GPT Sol not used — the program covers this model; add its provider key to run your pick) | 𝕏

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
## Summary

Resolves the merge conflict between `design/homepage-redesign` and `v1`
(PR #1161).

The only conflict was in `.changeset/pre.json`: `v1` added four
changeset entries that the redesign branch did not have. Resolution
keeps `v1`'s full changeset list:

- `align-missing-schema-host-hints`
- `align-v1-shared-missing-schema-errors`
- `optional-strict-shared-v1`
- `split-help-global-init-options`

Merging this into `design/homepage-redesign` should make #1161 mergeable
into `v1` again.

## Test plan

- [x] Confirmed single conflict file (`.changeset/pre.json`)
- [x] Valid JSON after resolution
- [x] Matching changeset markdown files present from `v1`

<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-8aa99b59-c809-4964-b433-6e2399e9d0ca"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-8aa99b59-c809-4964-b433-6e2399e9d0ca"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: arkenv-bot[bot] <237618717+arkenv-bot[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions github-actions Bot added arkenv Changes to the `arkenv` npm package. @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv github actions Pull requests that update GitHub Actions code @arkenv/bun-plugin Issues or Pull Requests involving the Bun plugin for ArkEnv @arkenv/nextjs Issues or Pull Requests involving the Next.js integration for ArkEnv @arkenv/nuxt Issues or Pull Requests involving the Nuxt integration for ArkEnv labels Jul 30, 2026
@pkg-pr-new

pkg-pr-new Bot commented Jul 30, 2026

Copy link
Copy Markdown

Open in StackBlitz

arkenv

npm i https://pkg.pr.new/arkenv@1161

@arkenv/build

npm i https://pkg.pr.new/@arkenv/build@1161

@arkenv/bun-plugin

npm i https://pkg.pr.new/@arkenv/bun-plugin@1161

@arkenv/core

npm i https://pkg.pr.new/@arkenv/core@1161

@arkenv/fumadocs-ui

npm i https://pkg.pr.new/@arkenv/fumadocs-ui@1161

@arkenv/nextjs

npm i https://pkg.pr.new/@arkenv/nextjs@1161

@arkenv/nuxt

npm i https://pkg.pr.new/@arkenv/nuxt@1161

@arkenv/standard

npm i https://pkg.pr.new/@arkenv/standard@1161

@arkenv/vite-plugin

npm i https://pkg.pr.new/@arkenv/vite-plugin@1161

commit: e849011

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — synced latest v1 into the redesign branch. No homepage files were touched; the merge brings in v1 features that landed in separate PRs.

  • Optional internal/shared.ts in strict layoutisStrictLayoutDir now only requires client.ts + server.ts; findSchemaPath no longer requires shared.ts; Nuxt module aliases #arkenv/shared-schema to the empty stub when the file is omitted; boot-gate skips the shared schema when absent.
  • Standardized missing-schema errorsformatMissingSchemaError in @arkenv/build produces consistent "Could not find schema file … run npx arkenv@latest init" messages across Bun, Vite, Next.js, and Nuxt plugins, without embedding starter env.ts modules.
  • Split CLI --help into Global and init sectionshelp.ts now groups shared flags (--yes, --quiet, --json, --agent) under Global options and scaffolding flags (--example, --force, --no-codegen, --host-preset) under init options.
  • GitHub Actions improvements — new deploy-www-manual.yml (maintainer escape hatch for manual SHA deploys), enhanced preview-www-reusable.yml with git metadata passed to Vercel deploys, and polished preview-www-default.yml fork-PR + label-gate logic.
  • Docs updates for optional shared.ts — Next.js strict layout and Nuxt configuration/validation docs now describe shared.ts as optional throughout.

Pullfrog  | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) (GPT Sol not used — the program covers this model; add its provider key to run your pick) | 𝕏

@yamcodes

Copy link
Copy Markdown
Owner Author

Gonna close this in favor of #1509

@yamcodes yamcodes closed this Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

@arkenv/bun-plugin Issues or Pull Requests involving the Bun plugin for ArkEnv @arkenv/nextjs Issues or Pull Requests involving the Next.js integration for ArkEnv @arkenv/nuxt Issues or Pull Requests involving the Nuxt integration for ArkEnv @arkenv/vite-plugin Issues or Pull Requests involving the Vite plugin for ArkEnv arkenv Changes to the `arkenv` npm package. docs Adds or changes documentation, or acts as documentation in and of itself example Issues or Pull Requests concerning at least one ArkEnv example. (Found in the `examples/` directory) github actions Pull requests that update GitHub Actions code preview Opt-in gate for PR preview deployments tests This issue or PR is about adding, removing or changing tests www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

add news section and redesign homepage

2 participants