Repository navigation
Publish Omni's measured numbers, and unstick three version badges - #26
Merged
Merged
Conversation
The card claimed Omni "cuts a real command mix by 58.9%" and the site description repeated it. That figure has no corpus behind it any more. The measured aggregate, replayed over 6,656 recorded commands, is 14.9% with the ledger and 2.7% from filters alone, and it is published in the repo's own README and manual. Omni spent several releases removing inflated savings claims from its own output; the shop window kept one. The card now leads with what the ledger does, since that is where the win comes from: 97.2% off the second read of a file, 14.9% across the mix. Version badge was seven releases behind at v0.6.6; current is v0.7.3. Bubo was one behind at v1.2 against v1.4, which is outside what I was asked to look at but is the same defect on the next card. Not built or previewed: these are three string literals in existing props, no structure changed.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Same sentence the repository leads with, so the card and the product now say one thing rather than two. It also frames the win where it comes from, the ledger, instead of a single aggregate. Kept at 14.9%. The copy supplied for this change read 74.9%, and no source carries that: the README, the manual and the benchmark table all state 14.9% with the ledger against 2.7% for filters alone. Swapping one unsupported number for another is the defect this branch exists to remove.
…th the proof The hero claimed six tools in production, free to use, open source under MIT and Apache 2.0. Four of those are: omni is Apache-2.0, heimsense, ai-pr-describer and the design system are MIT, all public. Bubo and ForgePod ship as products but their repositories are private, and Bubo's licence file reads as Other rather than either of the two named. So the licence sentence was false for a third of what it covered, and "in production" sat next to a card whose own badge says Beta MVP. Counting four is not a retreat. Four open-source tools under permissive licences is a stronger claim than six with an asterisk, and the hero now has room for the thing that actually sells: figures a reader can reproduce. 97.2% off a second read and 14.9% across 6,656 commands are Omni's published numbers, and the sentence says they replay on your own corpus, which is the one claim here a competitor cannot copy without opening their data. `hero-count.test.js` used to bind the spelled number to the count of <Card> elements. That invariant is what allowed the false claim: every card counted, including the private ones. It now binds to OPEN_SOURCE_TOOLS, so the number tracks what the sentence is really about, and a second test pins the two figures so a future edit has to re-measure rather than reword. Proven by changing four to five, which fails with expected 'four', actual 'five'. brand.test.js fails on this branch and fails identically on main with these changes stashed. Untouched here.
…annot drift The previous commit declared OPEN_SOURCE_TOOLS for a test to read by regex and never used it in the file, so the Vercel build failed on `'OPEN_SOURCE_TOOLS' is assigned a value but never used`. That is the direct cost of shipping the last two commits without running the build, which I said at the time I had not done. The fix is not to silence the lint. The hero now renders COUNT_WORD[OPEN_SOURCE_TOOLS.length], so the number is computed from the list it describes and the two cannot disagree by construction. That is strictly better than the test I wrote to check they matched. hero-count.test.js drops that comparison, since it is now impossible to fail, and guards what is still possible: that nobody replaces the derivation with a hardcoded word, and that the two published figures stay in the sentence.
The hero listed four tools and then proved one. A visitor who does not care about agent context met two figures that were not about anything they were looking at, and the sentence dated itself to Omni's next release. The promise generalises cleanly because it was never really a fact about Omni: every number we publish is measured on a real corpus and replays on yours. As a product claim that is one tool's benchmark. As a company claim it is a position, and a competitor cannot copy it without opening their data. Omni's 97.2% and 14.9% still stand, on the pages about Omni. hero-count.test.js pinned those two figures. It now pins the promise instead, which is the part that must not quietly disappear; a figure moving to a product page is an edit, the promise going missing is a different company. Verified with `npx next lint` before pushing this time, not after: the previous build failure was an unused constant that a green test suite could not see.
fajarhide
added a commit
that referenced
this pull request
Aug 23, 2026
Seven equal cards said every product gets the same attention this month, which is not true. Selat and Omni get a pair of large cards under an "In focus" label with a live dot, their install commands sit directly underneath, and the other five drop to a bordered list of rows. Rows rather than a third row of cards. Seven items never divide evenly into two or three columns, so the grid always ended on a hole, and five equal cards under two large ones only blurs which is which. A list cannot leave a hole and reads as what it is: shipped, maintained, not where the week goes. Omni's card gets its pre-#26 clause back, that a failing command is passed through untouched. It is the part of the promise the compression numbers do not cover, and there is room for it now. Card loses the `status` prop it briefly had. The live dot labels the group, so repeating it on both cards was the same claim twice.
fajarhide
added a commit
that referenced
this pull request
Aug 23, 2026
The count has been wrong twice. #3 hardcoded it and it went stale, #26 derived it from a list and it went stale again the moment a product was added, because the list is edited by hand too. A number in this sentence is a claim that has to be re-checked forever, and it buys nothing a visitor wanted. The enumeration goes with it. Five named categories was already a list the grid below repeats, and it only gets longer. The sentence now says what the tools are, and the grid says which ones exist. hero-count.test.js inverts: it used to demand the derivation, it now fails if any count comes back, spelled or derived. OPEN_SOURCE_TOOLS and COUNT_WORD are deleted, with PRODUCT_REPOS carrying the public-repo note they held.
fajarhide
added a commit
that referenced
this pull request
Aug 23, 2026
* feat(site): lead with Selat, and quiet everything around it
Selat is the seventh product and the one being built now, so it takes the first
row of the grid at full width with a live status badge. That also leaves six
cards, which divide evenly at every breakpoint.
The rest is the grid earning its keep. Every card opened with a brand pill
reading SHIPPED, true of all of them and so worth nothing; the version moves to
the title baseline instead. Tags cap at four, descriptions lost the clauses that
only mattered to the author, and the grid goes three across on large screens in
a container that matches the other sections. Both remaining sections now open
with the same heading rule, and the philosophy block stops being the one
centred thing on a left-aligned page.
The activity feed decided its icon with message.startsWith('fix') and printed an
emoji. It now reads the conventional-commit prefix into a column, walks past
merge commits to the one that shipped something, and prints the subject without
the prefix. Parser and test in lib/commits.js.
Badge was dead code holding a raw green-500 the design package cannot see. It
is live now on the Selat card, on the success token, and its ping opts out of
reduced motion.
The OG and Twitter descriptions still claimed five shipped products. They name
the span rather than a count now, so there is nothing left to keep in sync.
* docs(hero): end the sentence on what the licence buys you
The paragraph opened with "you can keep, free", which says the same thing twice,
and closed on a licence label with the reproducibility promise trailing behind
it. The claim a reader cares about was last and read as a footnote.
Same five tools, same list, same two claims the tests pin. The licence sentence
now carries the stars, and the last sentence is the pair that is actually ours:
nothing here expires, and every figure we print can be re-run on your own
machine.
* feat(site): put Selat and Omni in focus, and shelve the rest as rows
Seven equal cards said every product gets the same attention this month, which
is not true. Selat and Omni get a pair of large cards under an "In focus" label
with a live dot, their install commands sit directly underneath, and the other
five drop to a bordered list of rows.
Rows rather than a third row of cards. Seven items never divide evenly into two
or three columns, so the grid always ended on a hole, and five equal cards under
two large ones only blurs which is which. A list cannot leave a hole and reads
as what it is: shipped, maintained, not where the week goes.
Omni's card gets its pre-#26 clause back, that a failing command is passed
through untouched. It is the part of the promise the compression numbers do not
cover, and there is room for it now.
Card loses the `status` prop it briefly had. The live dot labels the group, so
repeating it on both cards was the same claim twice.
* fix(hero): drop the private repo that was deleting the star count
api.github.com answers 404 for fajarhide/bubo unauthenticated, because the repo
is private. `totalStars` then does what it is meant to do and returns null
rather than a partial sum, so the hero sentence has been ending at "All MIT and
Apache 2.0" with no star count at all in production.
The rule is right and the list was wrong: a repo that can never return a count
does not belong in the set the total is drawn from. Bubo is still on the page,
still linked, still counted nowhere it cannot be counted.
Verified against a cold fetch cache, which is what hid this. A warm
.next/cache replays an old successful response and prints a number that a
fresh deploy will not.
before All MIT and Apache 2.0. None of it is a trial...
after All MIT and Apache 2.0, with 370 stars on GitHub. None of it is...
* feat(products): take Omni's new copy, and cut the focus pair down to match
Omni's card gets the wording that leads with the cost rather than the feature,
and the 89.6% figure for file reads across the corpus. Selat's is rewritten to
the same shape, problem first, so the two columns balance instead of one
running four sentences past the other.
Compacting the pair is the rest of it. `featured` now grows the title and
nothing else: the two cards sit side by side, so the padding bump and the
larger body text were buying height, not emphasis.
* docs(hero): stop counting the tools
The count has been wrong twice. #3 hardcoded it and it went stale, #26 derived
it from a list and it went stale again the moment a product was added, because
the list is edited by hand too. A number in this sentence is a claim that has to
be re-checked forever, and it buys nothing a visitor wanted.
The enumeration goes with it. Five named categories was already a list the grid
below repeats, and it only gets longer. The sentence now says what the tools
are, and the grid says which ones exist.
hero-count.test.js inverts: it used to demand the derivation, it now fails if
any count comes back, spelled or derived. OPEN_SOURCE_TOOLS and COUNT_WORD are
deleted, with PRODUCT_REPOS carrying the public-repo note they held.
* Update app/page.tsx
* fix(meta): quote the same Omni figure the card does
The site description still carried 14.9% on a real command mix while the card
had moved to 89.6% off file reads. Both measure something real, but two numbers
for one product on one page is the kind of thing a reader checks and stops
trusting.
The card is the source now. There is one Omni figure in the metadata and it is
the one a visitor will see a paragraph later.
This was referenced Sep 2, 2026
fajarhide
added a commit
that referenced
this pull request
Sep 2, 2026
Nothing gated a pull request. The 31 tests in lib/, the lint config and the type errors the build catches were all manual, and the only green check was the Vercel preview bot saying the site deployed. Two of those tests exist because the lie they guard already shipped once: lib/stars.test.js for the hardcoded star count in #3, and lib/hero-count.test.js for the tool count in #21 and #26. Both would have gone straight to main today. Closes #31
fajarhide
added a commit
that referenced
this pull request
Sep 2, 2026
…hat rot (#35) The README was documenting a site retired two releases ago. It counted five tools against seven, put the colour tokens in app/globals.css after they moved to the design package, credited Bricolage Grotesque after 0.4.0 dropped it, called the accent amber when it is a blue, and carried an em dash. This is the second time. #2 was the same failure on the palette, and nothing checked the file either time, so the rewrite comes with lib/readme.test.js: no tool count, no em or en dash. Both were proved against the file they replace. The catalog is not repeated here. A copy of it goes stale the moment a product ships, which is the reason the hero stopped counting after #21 and #26. The type and colour sections link to the design package rather than restating a palette that a reader would then have to distrust. Closes #34
fajarhide
added a commit
that referenced
this pull request
Sep 3, 2026
…at lineup (#38) * feat(landing): say that Selat is a product you can buy Selat sells seats. It has a dashboard, a "Start free" call to action and three tiers priced on tool calls. weekndlabs.com mentioned none of it: grep for dashboard, pricing or hosted across app/ and components/ found only the legal pages and one abstract line under "How We Sustain This". The landing page presented Selat as npx and stopped, so the only route to the product that takes money was to click through and find it yourself. One line under the install commands, where a reader is already deciding how to start. Not a pricing table. That lives on the product's own site, and moving it here would undo the positioning settled in #28. The hero sentence needed sharpening once the page leads somewhere commercial. It said "Nothing here is a trial", which is defensible about the code and ambiguous next to a metered free tier one click away. It now says the build you run yourself is the complete one, which is the claim that was actually meant and the one Selat's own site makes. "How We Sustain This" names Selat and how it is priced instead of offering "hosted versions of our tools" in the abstract. Closes #36 * fix(meta): stop advertising the lineup as it stood before Selat The OG subhead read "Agent context, LLM routing, pull request automation, macOS performance". The gateway was not in it, and the gateway is the lead product and the first thing the hero describes. Every share of the site sold the old lineup. It now names the three layers the hero names, which does not go stale when the shelf grows. That is the same reason the hero stopped counting after #21 and #26, applied to the one surface neither hero-count.test.js nor readme.test.js looks at. The command chip moves to Selat's for the same reason: a card that advertises the gateway and installs Omni reads as two different products. Closes #37
This branch was successfully deployed
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 Omni card claimed it "cuts a real command mix by 58.9%", and the site-wide description in
layout.tsxrepeated the same number into search results. No corpus supports it any more.The measured aggregate, replayed over 6,656 recorded commands, is 14.9% with the ledger and 2.7% from filters alone. Both figures are published in Omni's own README and manual, so the shop window was contradicting the product's documentation. Omni spent several releases pulling inflated savings claims out of its own output, which makes this the one place the old number survived.
The card now leads with where the win actually comes from rather than one aggregate: 97.2% off the second read of a file, 14.9% across the mix.
Version badges were also behind. Omni read v0.6.6 against v0.7.3, seven releases. Bubo read v1.2 against v1.4, which is outside what I was asked to check but sits on the next card.
Three string literals in existing props, no structure touched, so I did not build or preview it. If you want that before merging, say so and I will.