feat(web): downloads page with OS detection + wire account download card #158

Open
will.anderson wants to merge 1 commits from feat/downloads-page into main
Owner

What

Adds the customer downloads surface. The funnel previously dead-ended at "we'll email you" — there was no downloads page, and the account dashboard download card was hardcoded disabled.

1. New /downloads page (src/downloads.el)

  • Landing-template styled: reuses shared nav() + footer() + page shell (page_open_seo/page_close), matching src/main.el's homepage assembly.
  • Client-side OS detection via navigator.platform — highlights the visitor's platform and updates a detected-OS banner.
  • macOS featured as the shipping build (Apple Silicon .dmg, primary download button).
  • Windows (.msi) and Linux (.deb/.AppImage) linked but marked "Coming soon" — matches current product state: Windows chat isn't enabled and the Linux soul backend isn't finished yet, so they are not presented as fully working. The Windows .msi link is included per spec and may 404 until the Windows build lands.
  • All four installers link the public bucket objects at https://downloads.neurontechnologies.ai/installers/.
  • Route wired in src/main.el (/downloads, indexable, canonical set).

2. Un-break the account download card (src/account.el)

  • Was hardcoded download-btn-disabled / "Shipping within 30 days" / "Download arriving soon".
  • Now links the live macOS installer plus an "All platforms" link to /downloads.

Verification

  • Built locally with the native El toolchain (elb + elc): all 26 modules compile and link.
  • Server renders /downloads → HTTP 200 (~70KB); all four installer URLs, OS-detection script, three platform cards, nav and footer, and correct <title>/canonical present.
  • OS-detection JS logic unit-checked (mac/windows/linux resolve correctly; mobile safely defaults).
  • Inline JS and scoped CSS verified un-mangled by the elc tokenizer (var()-based CSS, single-quoted JS).
  • Account card change confirmed compiled into dist/account.c; old disabled markers removed.

Note: the local mac /account route segfaults at runtime on both this branch and the unmodified baseline — a pre-existing mac-build quirk unrelated to this change (Linux CI serves /account fine). This PR does not touch that route's logic.

Stage only — not deployed to Cloud Run.

## What Adds the customer downloads surface. The funnel previously dead-ended at "we'll email you" — there was no downloads page, and the account dashboard download card was hardcoded disabled. ### 1. New `/downloads` page (`src/downloads.el`) - Landing-template styled: reuses shared `nav()` + `footer()` + page shell (`page_open_seo`/`page_close`), matching `src/main.el`'s homepage assembly. - Client-side OS detection via `navigator.platform` — highlights the visitor's platform and updates a detected-OS banner. - **macOS featured as the shipping build** (Apple Silicon `.dmg`, primary download button). - **Windows (`.msi`) and Linux (`.deb`/`.AppImage`) linked but marked "Coming soon"** — matches current product state: Windows chat isn't enabled and the Linux soul backend isn't finished yet, so they are not presented as fully working. The Windows `.msi` link is included per spec and may 404 until the Windows build lands. - All four installers link the public bucket objects at `https://downloads.neurontechnologies.ai/installers/`. - Route wired in `src/main.el` (`/downloads`, indexable, canonical set). ### 2. Un-break the account download card (`src/account.el`) - Was hardcoded `download-btn-disabled` / "Shipping within 30 days" / "Download arriving soon". - Now links the live macOS installer plus an "All platforms" link to `/downloads`. ## Verification - Built locally with the native El toolchain (`elb` + `elc`): all 26 modules compile and link. - Server renders `/downloads` → HTTP 200 (~70KB); all four installer URLs, OS-detection script, three platform cards, nav and footer, and correct `<title>`/canonical present. - OS-detection JS logic unit-checked (mac/windows/linux resolve correctly; mobile safely defaults). - Inline JS and scoped CSS verified un-mangled by the elc tokenizer (var()-based CSS, single-quoted JS). - Account card change confirmed compiled into `dist/account.c`; old disabled markers removed. Note: the local mac `/account` route segfaults at runtime on **both** this branch and the unmodified baseline — a pre-existing mac-build quirk unrelated to this change (Linux CI serves `/account` fine). This PR does not touch that route's logic. Stage only — not deployed to Cloud Run.
will.anderson added 1 commit 2026-07-14 17:18:50 +00:00
The funnel dead-ended at "we'll email you" — there was no downloads
surface. Add a real /downloads page in the landing template style
(shared nav + footer + page shell) with client-side navigator.platform
OS detection. macOS (Apple Silicon .dmg) is featured as the shipping
build; Windows (.msi) and Linux (.deb/.AppImage) are linked but clearly
marked "coming soon" to match current product state — Windows chat and
the Linux soul backend are not yet ready, so presenting them as fully
working would overpromise.

Also un-break the account dashboard download card, which was hardcoded
disabled ("Shipping within 30 days"). It now links the live macOS
installer plus the full /downloads page.
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feat/downloads-page:feat/downloads-page
git checkout feat/downloads-page
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: neuron-technologies/neuron-web#158