Repository navigation
fix: section-only blocks in bodies, list_entries default, long-line per column, body button colour - #121
Merged
Conversation
…er column, body button colour - core-ts: body surfaces refuse theme blocks without where body (allowedInBody); catalogPrompt lists what bodies may use. - mcp-server: list_entries defaults to every collection; where/orderBy without a collection are refused instead of ignored. - render_page long-line counts rendered lines and pools paragraphs of one column, so identical paragraphs agree. - blog starter: .ch-richtext links no longer recolour .ch-button. Co-Authored-By: Claude Opus 5.5 <[email protected]> Signed-off-by: Madraka <[email protected]>
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.
What
More gaps an agent hit building cloudhal.com through the live MCP server (0.3.8 → 0.6.0):
where: ["section"](e.g.link-cards) was accepted in a body ```surface fence byupdate_entry, then drew "unknown component". `checkBodySurfaces` now refuses it (`invalid_surface` at `/surface//components//component`) through `allowedInBody`: every primitive, every built-in block, and theme blocks whose `where` includes `body`. Unknown names still pass, as before. `get_catalog`'s "In article bodies" lists the blocks a body may use and the page-section-only ones.list_entriesdefault. It defaultedcollectiontoposts, so a site with onlybloggot[]. It now lists every collection.where/orderBywithout a collection are refused (invalid_queryatcollection); before, they were silently ignored.long-line. It divided characters by a rounded line count, so a paragraph's last-line fill decided the verdict, and identical paragraphs in one column disagreed. It now counts characters per rendered line (Range rects, with each paragraph's partial last line left out), pools paragraphs of the same width and font, and gives one verdict and example per column (its width, how many paragraphs)..ch-richtext a(0,1,1) beat.ch-button--primary(0,1,0), so a surface Button's text took the link colour on the brand background (2.5:1 light, 1.3:1 dark on cloudhal.com). It is now.ch-richtext a:not(.ch-button).main(ce822f2: "over 100 tools", the generated reference says 110). No change here.Tests:
core-ts/test/body-surface-blocks.test.ts;mcp-server/test/listings.test.ts(default collection, refusal without one);cli/test/render-chrome-text.test.tsin Chrome. One test has a monospace column where paragraphs with nearly empty and nearly full last lines get one verdict. The other uses the starter's real link rule fromtokens.css: the body button passes contrast, and fails with the old selector (checked).Note for review: with the line count fixed, the blog starter's own column (736 px, 16 px Inter) measures about 92 characters a line, so
long-linenow flags long paragraphs in starter articles consistently. That is a theme decision (font size or measure) and is not changed here.Checklist
pnpm checkpasses locally (see below)@cloudhal/core-ts,@cloudhal/mcp-server,@cloudhal/clipatch)Verified on a local merge of all three gap PRs (fix/collection-index-page, fix/theme-scripts-csp, fix/body-blocks-and-tools; they merge cleanly): Biome, size check, font-fallback and MCP-doc checks, every typecheck, and every package test suite pass, including
@cloudhal/cli(45 files, Chrome render tests included). One exception, not from this change: 35 tests incore-tsstore.test.tson the "Durable Object SQLite (Miniflare)" backend fail withconnect EADDRNOTAVAIL(local port exhaustion).mainfails the same 35 tests on this machine. No Rust or contract change, socargo testwas not run. GitHub Actions runners do not start (billing), so CI red is environmental.🤖 Generated with Claude Code