Skip to content

fix(web): stop the page saying two things twice, in all four languages - #14

Merged
YunyueLi merged 4 commits into
mainfrom
claude/landing-copy
Jul 30, 2026
Merged

fix(web): stop the page saying two things twice, in all four languages#14
YunyueLi merged 4 commits into
mainfrom
claude/landing-copy

Conversation

@YunyueLi

Copy link
Copy Markdown
Owner

The measurement first, because it corrects an earlier claim of mine

The page carries 594 words of body copy across 24 blocks, mean 24.8. That is lean for seven sections. I had said twice that the copy was too wordy; that was wrong.

The problem was repetition, and it was countable — two clauses appeared twice each, word for word:

clause where
claim carries an evidence_span, a literal substring of the source the hero lead and the rule section's lead
source text stays in its original script the alias card and the reference-set card

Each clause keeps one home

The rule section owns the definition — defining the rule is what that section is for. The hero states the consequence instead, which also folds its third sentence into its second: those two said the same thing, once abstractly ("carries an evidence_span, a literal substring of the source") and once concretely ("click any relation and you land on the sentence it came from").

The reference-set card owns "original script, nothing transliterated", because that is a fact about the corpus. The alias card was using it as a run-up to its own subject and now starts on that subject.

Two more, not about repetition

The engineering lead's colon promised one thing and delivered another. "researched against Splink, ComEM and GraphRAG:" was followed by four features of LoreGraph, not four points of comparison. Naming what the list is fixes the grammar without touching the hedge — the project read those papers, it does not implement them. Each language's list has exactly four items; each language's new opener says four.

The reference set localised four of its five titles per language but left 西游记 in Chinese on the English and French pages, while translating Crime and Punishment out of Russian on both. Five titles, two different rules. The other three pages localise all five, so the exception joins them: Journey to the West, La Pérégrination vers l'Ouest. Nothing is lost by not proving the multilingual claim with a book title — the English page already demonstrates CJK where it earns its place: "forget the Elizabeth Bennet or 孫悟空 it already knows".

Result

0 duplicated clauses of 6+ words on any of the four pages, down from 2 on each. English body copy 594 → 546 words.

The assertion earned its keep

Each replacement must match exactly once on its page, not merely once somewhere in the bundle — these are sentences, and a near-miss would ship half an edit. It caught two mistakes while this was being written:

  • a guard that mistook the four credits pages for landing pages (they carry a .lead of their own, so the hero section is the marker)
  • a French colon preceded by U+202F, the narrow no-break space French typography wants, rather than the plain space I had typed

Where this belongs

Upstream, more than any other patch in this file. The copy deck is a single JSON file of {en, zh, ja, fr} strings; these are exact-string replacements standing in for it. Move them into the deck and delete the patch.

Verified

390 / 768 / 1440 on all four languages: no overlapping glyph ink, nothing clipped, no horizontal scroll. ruff check clean, 103 unit tests pass.

🤖 Generated with Claude Code

The measurement first, because it corrects an earlier claim of mine: the page
carries 594 words of body copy across 24 blocks, mean 24.8 words. That is lean
for seven sections. "Too wordy" was wrong. The problem was repetition, and it
was countable — two clauses appeared twice each, word for word:

  "claim carries an evidence_span, a literal substring of the source"
      the hero lead, and the rule section's lead
  "source text stays in its original script"
      the alias card, and the reference-set card

Each clause keeps one home. The rule section owns the definition, because
defining the rule is what that section is for; the hero states the consequence
instead, which also folds its third sentence into its second — those two said
the same thing, once abstractly and once concretely. The reference-set card
owns "original script, nothing transliterated", because that is a fact about
the corpus; the alias card was using it as a run-up to its own subject.

Two more, not about repetition.

The engineering lead's colon promised one thing and delivered another:
"researched against Splink, ComEM and GraphRAG:" followed by four features of
LoreGraph, not four points of comparison. Naming what the list is fixes the
grammar without touching the hedge — the project read those papers, it does not
implement them. Each language's list has exactly four items; each language's
new opener says four.

And the reference set localised four of its five titles per language but left
西游记 in Chinese on the English and French pages, while translating Crime and
Punishment out of Russian on both. Five titles, two different rules. The other
three pages localise all five, so the exception joins them: Journey to the
West, La Pérégrination vers l'Ouest. Nothing is lost by not proving the
multilingual claim with a book title — the English page already demonstrates
CJK where it earns its place, "forget the Elizabeth Bennet or 孫悟空 it already
knows".

Result: 0 duplicated clauses of 6+ words on any of the four pages, down from 2
on each. English body copy 594 -> 546 words.

The replacements assert exactly-once per page, not merely once somewhere,
because these are sentences and a near-miss would ship half an edit. That paid
for itself twice while being written: it caught a guard that mistook the four
credits pages for landing pages (they carry a .lead of their own), and a French
colon preceded by U+202F, the narrow no-break space French typography wants,
rather than the plain space I had typed.

This belongs in the copy deck upstream — one JSON file of {en, zh, ja, fr}
strings — more than any other patch in this file. It is here because the deck
lives outside the repo. Move it there and delete the patch.

Verified at 390 / 768 / 1440 on all four languages: no overlapping glyph ink,
nothing clipped, no horizontal scroll.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 30, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loregraph 8a56061 Commit Preview URL

Branch Preview URL
Jul 30 2026, 02:56 AM

YunyueLi and others added 3 commits July 30, 2026 10:39
…stops

"Closed world. Literal match. Multilingual. Resumable." is four fragments,
none of them a sentence, each given a full stop — the same tic as the
interpuncts removed earlier, with a different glyph. Spacing separates them
now, the way it already does in the header, the section rules and the footer.
All four languages.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nine h4s and four h5s sat directly under an h2 with no h3 between them: the
five reading-room cards, the four pipeline steps, the four footer columns.
Navigating by heading gave a tree with levels missing.

An earlier pass left this alone on the grounds that the styling is bound to the
tag name, so moving the tag would mean copying its declarations into the
corrections sheet — a copy that goes stale silently the next time the export
changes them. That reasoning was wrong: the stylesheet is inline in the same
file this patch already rewrites, so the selector moves with the tag and
nothing is duplicated.

Outline is now h1 / h2 / h3 with no skips on all four languages. The three
renamed selectors resolve to the same declarations as before, verified on the
rendered page: 18px 700 for the cards, 30px 800 flex for the steps, 11px 700
at 0.18em for the footer columns, and the step arrow still absent on the last
step.

Verified at 390 / 768 / 1440 on all four languages: no overlapping glyph ink,
nothing clipped, no horizontal scroll.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…per texture

The page's ground is not the paper colour. body::before is a fixed layer of
noise and two soft gradients at z-index 1, multiply, 0.92 — and .shell sits at
z-index 2. So everything read as "background" is paper seen through that
texture, a few units darker and warmer, and anything inside .shell that fills
itself with plain #efe7d2 comes out as the one flat, undarkened patch on the
page.

Two places did.

The pipeline numerals painted a paper swatch to knock a hole in the rule
threaded across the row, and the hole read as a pale box behind every numeral.
Nothing can match it back: the texture varies across the page, so no flat
colour is right in more than one spot. The hole goes and the rule stops short
instead — each step draws its own segment from a fixed 110px in, clear of the
widest numeral at 95px, across the 50px gap into the next column. Segments
start at the same x in every column, which is steadier than a line hugging
four glyphs of different widths.

The sticky header filled itself the same way, a whole band of it, with a hard
tone seam along its bottom edge at rest. It has to stay opaque because content
scrolls under it, so it takes the texture instead: the same three layers,
background-attachment: fixed so the noise tiles and both gradients line up with
the page's frame rather than restarting inside the header, and z-index: -1
inside .nav's own stacking context so the overlay lands above the header's
background and below its content — the wordmark, the links and the filled
button are not multiplied along with it.

I had looked at the numerals earlier in this pass, noted the hard edges, and
filed them as intentional. They were not.

Verified on all four languages plus the credits page at 390 / 900 / 1440: no
overlapping glyph ink, nothing clipped, no horizontal scroll, no numeral still
painting a fill.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@YunyueLi
YunyueLi merged commit 2179b40 into main Jul 30, 2026
4 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