Part of #6.
A visitor's first question is whether Uplink will run on their Mac, and the page answers it in fragments, in five different components, with the two facts most likely to produce a bad first run sitting the furthest down. The Mac has to stay awake and a self-text may never touch the satellite link, and both of those are collapsed FAQs at the bottom. The CPU architecture of the DMG is not stated anywhere in the repository at all.
What is there today
- macOS 13 or later exists only inside a generated caption string,
resources/views/index.stx#L50, which renders as monospace metadata beside the download button atresources/views/index.stx#L326. - The Claude Code CLI and a plan are named once, in the download subhead at
resources/views/index.stx#L320, which sits below both hero buttons (resources/views/index.stx#L183andresources/views/index.stx#L198). - Full Disk Access is the second of six FAQs,
resources/views/index.stx#L65-L66, inside a collapsed<details>rendered atresources/views/index.stx#L361. - Permission to control Messages is the third install step,
resources/views/index.stx#L55, which is below the download button rather than above it (resources/views/index.stx#L329-L336). - The Mac staying awake is the last FAQ,
resources/views/index.stx#L81-L82: "A laptop with its lid closed still sleeps unless it is on power with a display attached." - Nothing says whether the DMG is Apple Silicon, Intel or universal. A grep for
Apple Silicon,Intel,arm64,x86anduniversalacrossresources/returns no matches, andapp/Commands/Uplink.ts#L208-L215hands the build tobuild:desktopandbuild:dmgwithout naming a target. - Satellite is the load-bearing claim: the
<title>atresources/views/index.stx#L16, the description atresources/views/index.stx#L17which the og tag atresources/views/index.stx#L99renders, the premise of the h1 atresources/views/index.stx#L192, the hero subhead atresources/views/index.stx#L195, and the first how-it-works step atresources/views/index.stx#L33. - The qualification of that claim is the first FAQ,
resources/views/index.stx#L61-L62: "try it once before you rely on it. If it does not arrive, sign the Mac into a second Apple ID and text that instead."README.md#L87-L90says the same thing more bluntly, and both are below the download button. - The page never uses the words free, open source or MIT. A grep for them in
resources/views/index.stxreturns nothing, whilepackage.json#L7declares MIT andLICENSE.md#L1is an MIT license. The only source reference is one footer clause atresources/views/index.stx#L376, plus a build-from-source link atresources/views/index.stx#L339. - The nav at
resources/views/index.stx#L180-L184holds two same-page anchors and the download button. There is no GitHub link, and nothing on the page links the releases page. - All three download links point at
release.url(resources/views/index.stx#L49), which is the floating latest URL atresources/data/release.json#L5, while the version in the caption is hand maintained:release.jsonis written only byuplink:releaseatapp/Commands/Uplink.ts#L223, under a comment atapp/Commands/Uplink.ts#L222that tells the maintainer to commit it. It currently says0.1.0(resources/data/release.json#L2) whilepackage.json#L4says0.1.1. CHANGELOG.md#L1is the heading# Uplink Changelogand nothing else.LICENSE.md#L3reads "Copyright (c) 2023 Open Web Foundation".
Proposal
- Add a requirements block to the download section's left column,
resources/views/index.stx#L318-L341, immediately above the button atresources/views/index.stx#L322. Six items: macOS 13 or later, the CPU architecture, the Claude Code CLI and a plan, Full Disk Access for Uplink.app, permission to control Messages, and a Mac that stays awake. Drive it from a new array in the<script server>block besideinstallatresources/views/index.stx#L52-L56, rendered with@foreach. - Put one plain line about satellite in the same block: try a self-text in satellite mode once before relying on it, and if it does not arrive sign the Mac into a second Apple ID. Link it to the full answer in the first FAQ, which needs an
idon thefaqsentries atresources/views/index.stx#L59-L84and on the<details>element atresources/views/index.stx#L361, since neither is addressable today. - State that Uplink is free, open source and MIT next to the version metadata at
resources/views/index.stx#L326, and linkLICENSE.mdfrom there. - Add a GitHub link to the nav at
resources/views/index.stx#L180-L184, before the download button atresources/views/index.stx#L183. - Link https://github.com/stacksjs/uplink/releases from the download section, and settle the version label while doing it: either derive it at deploy time from the releases API, or drop
release.versionout ofdownloadMetaatresources/views/index.stx#L50and let the releases link carry it. A hand-committed number beside a floating URL cannot be kept honest. - Fix
LICENSE.md#L3while in the file. Do not build a changelog page:CHANGELOG.md#L1is a bare heading, and a second place to forget is worse than the releases link.
Requirements
- Confirm the architecture against the shipped DMG, do not guess it. The answer is not written down anywhere in the repository, so read it off the artifact that
https://github.com/stacksjs/uplink/releases/latest/download/Uplink.dmgserves and write what is true. If it is Apple Silicon only, the block has to say so, because that is the one requirement an Intel Mac owner cannot discover by trying. - The block goes above the button, not below it. Everything listed here is already somewhere on the page. The finding is placement, so moving a fact past the download button at
resources/views/index.stx#L322does not fix it, and adding a seventh copy in the install steps atresources/views/index.stx#L329-L336makes it worse. - Reference the facts, do not duplicate them. Once macOS 13 is in the block,
downloadMetaatresources/views/index.stx#L50should not also state it, and the FAQ answers atresources/views/index.stx#L65-L66andresources/views/index.stx#L81-L82stay as the long form rather than being trimmed. - Write the satellite line as a qualification, not a disclaimer. It is one sentence in the page's own voice, matching
README.md#L87-L90. It is not fine print, not a warning icon, and it does not go in a box styled to be skipped. - Keep the page's data-driven shape. New copy lives in typed arrays in
<script server>besideinstallandfaqs, rendered with@foreachas atresources/views/index.stx#L330, not as hand-written repeated markup. - No new routes and no new views. This is copy inside
resources/views/index.stxplus one line inLICENSE.md. - No em-dashes and no en-dashes.
resources/views/index.stxhas none today and a reviewer will check, perAGENTS.md.
Acceptance
- The download section, read on its own without opening a single
<details>, answers all six requirements: macOS version, CPU architecture, the CLI and a plan, Full Disk Access, control of Messages, and staying awake. - A grep for the architecture across
resources/returns a match, and it agrees with the DMG the latest release actually serves. - The satellite qualification is visible without expanding anything, appears above the download button, and links to the first FAQ's full answer.
resources/views/index.stxcontains the words free, open source and MIT beside the version metadata, with a working link to the license.- The nav contains a GitHub link, and the download section links the releases page.
- Either no version number renders on the page, or the number that renders is produced by something that cannot go stale, and the mechanism is stated in
app/Commands/Uplink.tsnext to therelease.jsonwrite atapp/Commands/Uplink.ts#L223. LICENSE.md#L3carries the correct holder and year.- No new file under
routes/orresources/views/, andCHANGELOG.mdis unchanged. ./buddy lintand./buddy typecheckpass, and a grep for the em-dash and the en-dash acrossresources/views/index.stxreturns nothing.