Skip to content

Cut the landing page back to a landing page - #25

Merged
okcodes merged 4 commits into
mainfrom
landing-page
Sep 10, 2026
Merged

okcodes merged 4 commits into
mainfrom
landing-page

Conversation

@okcodes

@okcodes okcodes commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

The first version of the page restated the documentation. Refusals with their
reasoning, the version state machine, eleven exit codes, the safety guarantees,
the argument for one vump.toml per repository — all lifted from README.md
and DESIGN.md. That is two copies of the same claims to keep true, and a
first-time visitor reading a specification before learning what the tool is.

This cuts it back to a landing page: what does it do, does it handle my files,
how do I start. Everything deeper is a link to the repository, which stays the
only place the behaviour is written down.

What went

The defect essay, the prompting rule in long form, the transition table, the
"Refused, deliberately" cards, the exit-code grid, the safety guarantees, the
lock-file and .NET explanations, and the numbered sections — numbering reads as
a document, and this is not one.

Monorepos survive as a single block, because "does it handle my repo" is a
question someone evaluating the tool actually has.

What is there now

Four sections. Three cards saying what it does, a file picker showing the one
line that changes in your own file, a workflow snippet with the failure it
catches, and a three-step start. The page is 4,400px instead of 10,000, and the
headline commits to a plain claim — one command — instead of a promise about
tags that means nothing before you know what the tool is.

Two bugs fixed along the way

The social card was rendering from corrupted fonts. The three woff2 files
were decompressed with Promise.all, a change made earlier to satisfy
no-await-in-loop. The decompressor is a single emscripten module with one
heap, so overlapping calls corrupt each other's output — two of the three fonts
came back as invalid TrueType, differently on each run. The renderer falls back
silently rather than reporting a font it cannot parse, so the only symptom was
an image that rendered every line in whichever face survived. Sequential
decompression, with the rule disabled on those lines and the reason above them.

Layout items sized to their scrolling content. A grid or flex item defaults
to min-width: auto and will not shrink below its content, so an item holding a
terminal or snippet dragged the document wider than a phone screen. Fixed once
per item in the first branch and back immediately with the monorepo block, so it
is now the default for children of grid and flex containers, written with
:where() so anything that wants a minimum still overrides it.

pnpm

Both lockfiles were in the tree after pnpm-lock.yaml landed on main.
package-lock.json is gone, Prettier no longer checks the lockfile, and the
commands and the deployment workflow in website/README.md are pnpm.

Still not deployed

Unchanged from the last branch: the base path is baked into every asset URL at
build time and the domain is not settled. website/README.md has the table of
what to set and the workflow ready to paste.

okcodes and others added 4 commits September 10, 2026 02:12
Two lockfiles for one package cannot both be right, and the one that is not
installed from is the one that goes stale without anybody noticing. pnpm-lock
is the one in use, so package-lock goes.

Prettier no longer checks the lockfile: it is generated, and reformatting it
would only make the next install rewrite it back.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The first version restated the documentation. Refusals with their reasoning,
the version state machine, eleven exit codes, the safety guarantees, the
argument for one vump.toml per repository — all of it lifted from README.md
and DESIGN.md, which means two copies of the same claims to keep true and a
first-time visitor reading a specification before learning what the tool is.

The page now answers three questions and stops: what does it do, does it
handle my files, how do I start. Eight sections become four. Everything
deeper is a link to the repository, which stays the only place the behaviour
is written down.

Gone: the defect essay, the prompting rule in long form, the transition
table, the refusals, the exit codes, the safety grid, the lock-file and
.NET explanations. Monorepos survive as a single block, because "does it
handle my repo" is a question someone evaluating the tool actually has.

What replaced them is shorter and aimed outward: three cards saying what it
does, a file picker showing the one line that changes, a workflow snippet,
and a three-step start. The page is 4,400px instead of 10,000, and the
headline commits to a plain claim — one command — rather than a promise
about tags that means nothing before you know what it is.

Section numbering went with it. Numbered sections read as a document, and
this is not one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The three woff2 files were being decompressed with Promise.all, which was a
change made to satisfy no-await-in-loop. The decompressor is a single
emscripten module with one heap, so overlapping calls corrupt each other's
output: two of the three fonts came back as invalid TrueType, differently on
each run.

The renderer does not report a font it cannot parse — it silently falls back
— so the failure showed up only in the image, which rendered every line in
whichever face survived. One run produced an all-sans card, the next an
all-mono one.

Sequential decompression is the fix, with the rule disabled on those three
lines and the reason written above them. Same hashes every run.

The card also takes the new headline, so it still matches the page it
advertises.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A grid or flex item defaults to min-width:auto, so it refuses to shrink below
its content. An item holding a pane that scrolls sideways — a terminal, a
snippet, the file strip — therefore sizes its track to the pane's full width
and drags the document, fixed masthead included, wider than a phone screen.

This was fixed once per item and came straight back with the monorepo block,
which is the argument for making min-width:0 the default for children of grid
and flex containers instead. It is written with :where(), so anything that
genuinely wants a minimum still overrides it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@okcodes
okcodes merged commit d018353 into main Sep 10, 2026
8 checks passed
@okcodes
okcodes deleted the landing-page branch September 10, 2026 08:20
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