Rebuild every template as a finished site, not an outline - #374
Merged
Conversation
Measured the library: 88 sections across 21 templates carrying 1,453 words. That is 4.2 sections and 69 words per template, or 17 words a section - a heading and one sentence, in the left third of an empty screen. That is what made them read as slides. Every template is now nine sections and roughly 235 words: 188 sections and 4,940 words across the library. The structure is the one a landing page actually has - open, the problem, two or three capabilities, an objection answered honestly, then the ask - and the existing copy was kept and extended rather than replaced, because the voice in it was already good. Five templates were the exception. aurabeauty, nightrealm, tripvault, greenshift and ember were written in generic marketing language and carried claims the earlier sweep missed: "Over 180,000 happy customers", "Join 8 million warriors", "Series B - $42M raised", "120+ enterprise partners", and worst, "Microsoft, Shopify, and 118 other companies trust GreenShift" - real companies named as customers of a fictional product, which an owner would publish as their own. Those five are rewritten. The claims test that missed them is now stricter: it allows filler words between a number and its noun, covers more nouns, catches funding rounds, and separately refuses any real company name in template copy. Anchoring the number to a digit matters - [\d,.]+ also matches a bare full stop, which made ". Most teams are running their first review" look like a customer count. A depth floor is enforced: six content sections, 150 words, and a body on every section that is not a bare statement. Spacer sections now carry their anchor too, so ids run 1 to 9 with no gaps and the README's "section-2 is the second section" is literally true. Verified by exporting through the real button: nine contiguous anchors, the opening CTA scrolls 0 to 10,400px, 172 words of body copy in the page, footer intact, no invented claims. Lighthouse unchanged at 100 across performance, accessibility, best practices and SEO on mobile and desktop. Suite 365 passed; three of the new tests fail on main.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The screenshot that started this: a heading and two lines of body in the left third of an empty 1440px screen. I measured why.
69 words is a tweet. Every template is now nine sections with the structure a landing page actually has — open, the problem, two or three capabilities, an objection answered honestly, then the ask.
The existing copy was kept and extended, not replaced. It was already good: "We buy the whole lot or none of it, which means the price is agreed before harvest and the farmer is not gambling on us." The problem was never quality, only quantity.
Five templates were different
aurabeauty,nightrealm,tripvault,greenshiftandemberwere written in generic marketing language and carried claims my earlier sweep missed:That last one names real companies as customers of a fictional product. Exported unchanged, the owner publishes it as their own customer list. All five are rewritten in the voice of the other sixteen.
Why the earlier test missed them
[\d,.]+\s*…(teams|customers)failed on "Over 180,000 happy customers" because a word sits between the number and the noun, and "8 million warriors" because that noun wasn't listed. The test now allows filler words, covers more nouns, catches funding rounds, and separately refuses any real company name.Anchoring to a digit turned out to matter:
[\d,.]+also matches a bare full stop, so my first widened version flagged ". Most teams are running their first pipeline review" as a customer count. Three false positives on legitimate new copy caught it.A depth floor is now enforced — six content sections, 150 words, and a body on every non-statement section — so this cannot quietly regress.
One thing the export got wrong
Anchors came out
1,2,3,5,6,7,9— the spacer indices were missing, so the README's "#section-2is the second section" wasn't literally true. Spacers now carry their anchor too: contiguous 1–9.Verified end to end
Exported
tripvaultthrough the real button, unzipped, served, driven in Chrome:Lighthouse on the served export: 100 / 100 / 100 / 100 on mobile and desktop, LCP 1.3s and 0.2s — unchanged.
Deliberately not done
Images. Templates still ship zero, and I think that is correct: an exported ZIP cannot carry a local file,
exportableImagedrops anything that is nothttp(s), so template images would have to be hotlinks to somebody else's server that rot on their schedule. The canvas background is the visual.Scrim. I measured text contrast against the canvas directly behind the glyphs on the two brightest palettes: 11.08–11.2:1 against a 3.0 floor for large text, and 15–18:1 on a mid palette.
scrimbeing unused on all 188 sections is correct, not a gap.Suite 365 passed. Three of the new tests fail on
main.