Repository navigation
feat(cms): dedicated page hero field - one H1, sections are H2 - #216
Merged
dogfrogfog merged 1 commit intoOct 28, 2026
Merged
Conversation
Port the hero work from #163 onto current main and recreate its migration (dedicated_page_hero) so it sorts after section_heading_group. Scopes: apps/cms Page collection, blocks, search extraction, mcp, database/migrations.
dogfrogfog
requested review from
ChiefCreator and
SearheiParkhamchuk
as code owners
October 28, 2026 13:49
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
Recreates #163 on top of the recreated heading-pattern PR (base:
feat/cms-section-heading-pattern). Merge that one first.What
herofield: a blocks field above the sections, required, exactly one row (minRows: 1,maxRows: 1), localized like the sections. Its block types come fromblocks/heroBlocks.ts, so new hero variants are added there without touching the sections.contentBlocks, so it can't be added to the sections array or to global sections. The sections field is now labelled "Sections", and both fields tell editors which heading level they produce.RenderHerorenders the single visible hero beforeRenderBlocks. Result: oneh1at the top of the page andh2for every section title, enforced by the structure rather than by editors.Migration
20261028_134825_dedicated_page_heroPayload keeps every block slug in one table per collection, told apart by
_path. So moving heroes needs no table changes:page_blocks_hero/_page_v_blocks_hero, the first hero per page, locale and version moves fromblockstohero.gsec_*_herotables). A global section can sit anywhere in the sections, so letting it hold a hero would allow a secondh1again.downmoves heroes back to the top ofblocks. Deleted heroes are not restored.Verified locally
migrate:downthenmigrateround-trips the new migration cleanly.payload migrate:createafterwards reports no schema changes, andgenerate:typesproduces no diff.check-typespasses.en, one ines, oneh1per locale, no orphaned action rows, API rejects 0 or 2 heroes) was verified on the old PR. The SQL is the same.id.