Skip to content

feat(den-web): rework "Continue on your computer" install step - #3099

Merged
benjaminshafii merged 1 commit into
devfrom
feat/install-step2-clarity
Jul 25, 2026
Merged

feat(den-web): rework "Continue on your computer" install step#3099
benjaminshafii merged 1 commit into
devfrom
feat/install-step2-clarity

Conversation

@benjaminshafii

Copy link
Copy Markdown
Member

What

Reworks step 2 of the organization install guide (/install) around the fresh-install case, matching the approved Paper design (02B — Desktop Expanded, macOS + Windows artboards).

Left column, top to bottom: eyebrow "NEXT, ON YOUR COMPUTER" → "Open the file you just downloaded" → file chip with the real installer filename → two numbered actions → calm amber OS trust note → blue handoff note → OR divider → demoted already-installed row with the single dark primary button → quiet "Nothing happening on your computer?" disclosure with the manual paste link.

Right column: existing installer preview, with the fake CTA flattened (transparent, hairline border, muted label, no shadow), the badge relabelled PREVIEW · WHAT YOU'LL SEE ON YOUR COMPUTER with a neutral grey dot, and the column stretched so both columns end level.

Two things worth reviewing carefully

Real filename, no invented version. The Paper design showed OpenWork-1.4.2-arm64.dmg, which is fictional. The chip now shows the actual published asset name from genericInstallerArtifactName() (OpenWork-Installer-mac-arm64.dmg, …mac-x64.dmg, …win-x64.exe). It prefers the platform the user actually downloaded and otherwise uses browser platform detection. Linux has no stable name (its setup script embeds the org slug, which this page never receives), and macOS with an undetectable arch is also ambiguous — in both cases the chip is omitted and the copy does not name a file. No version number is displayed anywhere.

Auto-advance: chose option (b), softened copy. The design promised "this page moves to step 3 on its own". That is not implementable safely today, so the copy was changed rather than faked. The installer resolves its own activation grant from the same install-link token, so the web page's code is a different code and /v1/install-connect/status can never observe the installer's grant. A token-scoped "was a grant minted recently" endpoint would be cheap to add, but it cannot distinguish the installer from a second browser tab or a colleague opening the same link, and step 3 polls a code the installer never uses — so it would auto-advance the user to a step that cannot confirm anything. The blue row now states what actually happens: <App> continues from here — The moment it opens, it brings up a sign-in page in your browser so you can approve this computer.

No den-api changes.

Files

  • ee/apps/den-web/app/(den)/_components/install-screen.tsx — new step 2 body, per-OS guidance copy, platform/filename resolution, platform-by-href map, step 2 subtitle.
  • ee/apps/den-web/app/(den)/_components/installer-preview.tsx — flattened fake CTA, relabelled neutral badge, h-full stretch, badge sits at the top on Windows.
  • ee/apps/den-web/app/(den)/_lib/install-download.tsinstallerFileName() mirroring den-api's genericInstallerArtifactName().
  • evals/flows/org-install-activation.flow.ts, evals/flows/org-download-handoff.flow.mjs — updated for the new copy and for opening the manual-paste disclosure before reading its text.

Validation

  • cd ee/apps/den-web && pnpm typecheck → pass
  • pnpm evals:typecheck (repo root) → pass
  • pnpm lint skipped: next lint was removed in Next 16 and the script is broken on dev.
  • Drove the real page against a mock den-api (/v1/install-config + /v1/install-connect/status) with pnpm dev:den:web, at 1440×1000 and 900px wide, capturing macOS, Windows, Linux-fallback and clicked-platform variants. One dark primary button, both columns end level, nothing clips or overflows.

Known gaps: the preview illustration still renders macOS chrome for Linux visitors (pre-existing — it only models macOS and Windows), and the "Already have … on this computer?" line wraps to two lines at the narrower real column width where the design showed one.

Rebuilds step 2 of the organization install guide around the fresh-install
case, matching the approved Paper design:

- Eyebrow, "Open the file you just downloaded" heading, a file chip naming
  the real installer artifact, two numbered actions, a calm amber OS trust
  note, a handoff note, an OR divider, the demoted already-installed row
  with the single dark primary button, and a quiet manual-paste disclosure.
- Copy is per-OS (macOS / Windows / Linux) and follows the platform the user
  actually downloaded, falling back to browser platform detection.
- The file chip shows the real published artifact name from
  genericInstallerArtifactName() (no version, because the published assets
  carry none) and is omitted when the platform or arch is unknown, so the
  page never invents a filename.
- The handoff note describes what the installer really does instead of
  promising that this page auto-advances to step 3, which it cannot observe:
  the installer resolves its own activation grant from the install token, so
  the web page's code is a different code.
- Installer preview: fake CTA flattened to a hairline outline, badge
  relabelled "PREVIEW · WHAT YOU'LL SEE ON YOUR COMPUTER" with a neutral
  dot, and the column stretches to match the left column height.

Eval flows are updated for the new copy and for the manual-paste disclosure.

Co-authored-by: Cursor <cursoragent@cursor.com>
@vercel

vercel Bot commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

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

Project Deployment Actions Updated (UTC)
openwork-app Ready Ready Preview, Comment Jul 25, 2026 10:45am
openwork-den Ready Ready Preview, Comment Jul 25, 2026 10:45am
openwork-den-worker-proxy Ready Ready Preview, Comment Jul 25, 2026 10:45am
openwork-diagnostics Ready Ready Preview, Comment Jul 25, 2026 10:45am
openwork-landing Ready Ready Preview, Comment, Open in v0 Jul 25, 2026 10:45am

@benjaminshafii

Copy link
Copy Markdown
Member Author

Independent verification

Reviewed and re-ran this branch locally rather than relying on the implementing agent's report.

Commands

  • pnpm typecheck (ee/apps/den-web) — passes
  • pnpm evals:typecheck — passes
  • pnpm test (ee/apps/den-web) — 45 pass / 3 fail / 2 errors. All pre-existing on dev: a stale expected string in install-errors.test.ts and an unbuilt @openwork-ee/utils module. Nothing in the touched files.

Driven in a real browser against a mocked /v1/install-config, at 1440 / 1024 / 768 / 390 px:

  • No horizontal overflow at any width (document.documentElement.scrollWidth === clientWidth), including with the "Nothing happening on your computer?" disclosure open, where the tokenised URL truncates inside its row.
  • Columns stack at narrow widths with the illustration dropping below rather than squashing.
  • Step 1's expanded download card also checked at 390 px: the platform grid stacks cleanly and still marks the detected build "For your device".

Both OS branches asserted from the DOM

  • Windows client hints → chip OpenWork-Installer-win-x64.exe, SmartScreen trust note, data-preview-os="windows".
  • Forced macOS hints → chip OpenWork-Installer-mac-arm64.dmg, Gatekeeper trust note, data-preview-os="macos".

Worth noting for reviewers: a headless Chromium can advertise userAgentData.platform: "Windows" while carrying a Mac UA string. The page correctly trusts client hints over the UA string, so a Windows render on a Mac test host is the browser lying, not a detection bug.

Not verified: the eval flows were type-checked but not executed end to end.

@benjaminshafii
benjaminshafii merged commit 0c75029 into dev Jul 25, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant