Blocks
FoundationStableMeta-package re-exporting all first-party @wabbit/tome-blocks-* bundles with a registerAll() convenience function; install for one-import access to every Tome block.
Add our registry to the
.npmrcat the root of your project. Free packages install without a token.@wabbit:registry=https://npm.wabbit.com/Then install:
npm install @wabbit/tome-blocks
Overview
@wabbit/tome-blocks
Meta-package that re-exports all first-party @wabbit/tome-blocks-* bundle packages and provides a registerAll() convenience function.
Role
@wabbit/tome-blocks is a thin orchestration layer — it does not contain any block definitions itself. All blocks live in independently publishable bundle packages under @wabbit/tome-blocks-*.
Install this package if you want all Tome blocks in one import. Install individual @wabbit/tome-blocks-* packages for tree-shaking and independent versioning.
Install
# Open packs only (works with any registry credential)
pnpm add @wabbit/tome-blocks
# Every pack (needs a credential entitled to each paid pack)
pnpm add @wabbit/tome-blocks @wabbit/tome-blocks-agency-essentials @wabbit/tome-blocks-editorial-pack \
@wabbit/tome-blocks-signal-theme @wabbit/tome-blocks-lms-pack @wabbit/tome-blocks-catalog-pack \
@wabbit/tome-blocks-sc-pack @wabbit/tome-blocks-org-pack| Peer | Range | |---|---| | @payloadcms/richtext-lexical | >=3.67.0 | | payload | >=3.67.0 | | react / react-dom | >=19.0.0 | | @wabbit/tome-blocks-agency-essentials | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-editorial-pack | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-signal-theme | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-lms-pack | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-catalog-pack | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-sc-pack | >=0.18.0 <1.0.0 (optional) | | @wabbit/tome-blocks-org-pack | >=0.5.0 <1.0.0 (optional) |
Hard dependencies are only the open packs: tome-blocks-core, tome-blocks-marketing-starter, tome-blocks-content-writer and tome-blocks-extras. Every paid pack is an optional peer, because the registry serves a paid pack only to a credential entitled to it — a hard dependency would make the whole install fail for anyone missing one pack.
Two entries follow from that:
@wabbit/tome-blocks(root) re-exports every pack and itsregisterAll()registers every pack. Install every paid pack alongside it to use this entry.@wabbit/tome-blocks/openre-exports only the open packs; itsregisterAll()/registerAllRenderers()cover only those. Use it when you hold some or none of the paid packs, and register each pack you hold with that pack's ownregister().
Package Inventory
| Package | Tier | Blocks | |---------|------|--------| | @wabbit/tome-blocks-core | required | Registries, defineBlock, BlockPicker, VariantPicker | | @wabbit/tome-blocks-marketing-starter | free | 9 blocks (Hero, FeatureHero, CTA, LogoSlider, Pricing, Testimonial, FAQ, Banner, Exhibit) — this meta barrel re-exports 8; exhibitBlock is not re-exported here | | @wabbit/tome-blocks-content-writer | free | 10 (Blog, Archive, PostHero, RelatedPosts, Editorial suite) | | @wabbit/tome-blocks-agency-essentials | starter | 10 (About, Contact, Form, Gallery, Media, SplitView, Stat, StatBar, TeamRoster, Timeline) | | @wabbit/tome-blocks-editorial-pack | pro | 11 blocks (DataHero, Feature, InfoPanel, MessagePanel, MetricStrip, SplitPanel, StatusBoard, TextReveal, CompareColumns, EditorialSection, EditorialSpread) — this meta barrel re-exports 8; CompareColumns, EditorialSection, and EditorialSpread are not re-exported here | | @wabbit/tome-blocks-signal-theme | pro | 39 Signal blocks (23 offered + 16 deprecated); this meta barrel re-exports 33 — the 6 Batch 5 consolidation parents (signal-banner, signal-comms, signal-divider, signal-nav, signal-note, signal-stats) are not re-exported here yet | | @wabbit/tome-blocks-lms-pack | pro | 6 blocks (CourseCard, EnrollmentCta, InstructorCard, LessonList, ProgressBar, QuizSummary) | | @wabbit/tome-blocks-catalog-pack | pro | 6 blocks (CategoryStrip, FeaturedProduct, InventoryBadge, PriceTable, ProductCard, ProductGrid) | | @wabbit/tome-blocks-sc-pack | niche | 5 blocks (FleetSummary, OpBriefingPanel, RsiHandleCard, SignalHeroSc, TaskForceRoster) | | @wabbit/tome-blocks-extras | pro | 52 blocks; this meta barrel re-exports 48 — article-hero, content-pro, hero-pro, and layout-grid are not re-exported here | | @wabbit/tome-blocks-org-pack | pro | 8 blocks (CampaignBanner, DivisionCard, DocumentLink, EventCalendar, EventListItem, MemberCard, MemberGrid, OrgChart) — optional peer of this meta-package; its block descriptors are NOT re-exported here and NOT included in registerAll(); its renderers ARE included in registerAllRenderers() (see below) |
Usage
Register all bundles (meta-package convenience)
import { blockRegistry, bundleRegistry, registerAll } from '@wabbit/tome-blocks'
registerAll(blockRegistry, bundleRegistry)Register a single bundle (recommended for production tree-shaking)
import { blockRegistry, bundleRegistry } from '@wabbit/tome-blocks-core/registry'
import { register } from '@wabbit/tome-blocks-marketing-starter'
register(blockRegistry, bundleRegistry)Wire blocks into a Payload collection
const blocks = blockRegistry.resolveAll() // → Payload Block[]
buildConfig({
collections: [{
slug: 'pages',
fields: [{ name: 'layout', type: 'blocks', blocks }]
}]
})Two rules for consumers
Two architectural rules every Tome consumer must follow:
1. In Node/test contexts, use subpath imports from @wabbit/tome-blocks-core
The root barrel @wabbit/tome-blocks-core re-exports CSS modules which crash Node's ESM loader (ERR_UNKNOWN_FILE_EXTENSION). In Node.js contexts (server code, tests, scripts), always use subpath imports:
// CORRECT in Node/test contexts
import { blockRegistry, BlockRegistry } from '@wabbit/tome-blocks-core/registry'
import { defineBlock } from '@wabbit/tome-blocks-core/defineBlock'
import { registerRenderer } from '@wabbit/tome-blocks-core/render'
// WRONG — crashes Node due to CSS module re-exports in the root barrel
import { blockRegistry } from '@wabbit/tome-blocks-core'In browser/Next.js contexts (React components, client code), the root barrel is safe because bundlers handle CSS imports natively.
2. Bundles register via parameter-based register() — never mutate singletons
Each bundle package exports register(blockRegistry, bundleRegistry). The registries are always passed as parameters, never imported and mutated inside the bundle:
// CORRECT — consumer controls which registry gets populated
import { BlockRegistry, BundleRegistry } from '@wabbit/tome-blocks-core/registry'
import { register } from '@wabbit/tome-blocks-marketing-starter'
const myReg = new BlockRegistry()
const myBundleReg = new BundleRegistry()
register(myReg, myBundleReg)
// WRONG — bundle should never mutate globals internally
import { blockRegistry } from '@wabbit/tome-blocks-core/registry'
blockRegistry.register(myBlock) // ← mutation without consumer awarenessThis pattern keeps bundles independently testable — tests create fresh registries and call register() without polluting the global singleton or other test suites.
Render Components
Each bundle exposes a ./render subpath with React components for its blocks. Render components self-register via registerRenderer on import (side-effect):
// Side-effect import — registers all renders from the bundle
import '@wabbit/tome-blocks-marketing-starter/render'
// Named import — use individual components
import { HighImpactHero } from '@wabbit/tome-blocks-marketing-starter/render'The meta-package's ./render subpath re-exports all bundle renders:
import '@wabbit/tome-blocks/render' // registers all 131 render components across the 6 packs this subpath coversVariants
Blocks can declare multiple visual/schema variants. The _variant field is auto-injected by defineBlock and wired to the BlockPicker for admin selection.
See @wabbit/tome-blocks-core for the full variant API (defineBlock, createVariantAwareBlock, buildVariantField).
Public API
| Export | Subpath | Description | |---|---|---| | Everything from @wabbit/tome-blocks-core (registries, defineBlock, BlockPicker, VariantPicker, thumbnails, …) | . | Full re-export — see that package's own README for the complete surface | | Named block descriptors from all bundles except org-pack (e.g. highImpactHeroBlock, blogBlock, aboutBlock, dataHeroBlock, signalAccordionBlock, …) | . | register() itself is deliberately NOT re-exported per bundle here (name collisions) — use registerAll() | | registerAll(blockRegistry, bundleRegistry) | . | Calls every first-party bundle's own register() in dependency order — idempotent | | registerAllRenderers() | . | Aggregates all 10 renderer-bearing packs' ./render/register subpaths (including org-pack, which IS included here even though its block descriptors are not re-exported above). Side-effect-free, safe to call from a server component graph | | Every first-party bundle's render components, re-exported (legacy self-registering barrel) | ./render | import '@wabbit/tome-blocks/render' registers all render components as an import-time side effect inside a 'use client' module graph |
Server / client posture
This meta-package's own src/ ships no .tsx — it is a pure re-export/aggregation barrel. Its ./render subpath re-exports six of the ten first-party packs' ./render barrels (marketing-starter, content-writer, agency-essentials, editorial-pack, signal-theme, extras — notably NOT lms-pack, catalog-pack, sc-pack, or org-pack, a pre-existing scope gap in this barrel, separate from registerAllRenderers()'s broader coverage above). Each constituent pack's own README documents its real client/server split; see the pack's own posture section for its exact 'use client' file count.
Exports
@wabbit/tome-blocks@wabbit/tome-blocks/open@wabbit/tome-blocks/render
Changelog
Updated dependencies [f4a08ca]
- Updated dependencies [f4a08ca]
- Updated dependencies [f4a08ca]
- Updated dependencies [f4a08ca] - @wabbit/tome-blocks-core@0.35.0 - @wabbit/tome-blocks-marketing-starter@0.35.0 - @wabbit/tome-blocks-extras@0.35.0 - @wabbit/tome-blocks-content-writer@0.34.1
Updated dependencies [e3aadfe]
- Updated dependencies [e3aadfe]
- Updated dependencies [3e4f0a7]
- Updated dependencies [e8b4d32] - @wabbit/tome-blocks-core@0.34.0 - @wabbit/tome-blocks-marketing-starter@0.34.0 - @wabbit/tome-blocks-extras@0.34.0 - @wabbit/tome-blocks-content-writer@0.34.0
Updated dependencies [a9424eb] - @wabbit/tome-blocks-marketing-starter@0.33.0
- Updated dependencies [a9424eb] - @wabbit/tome-blocks-marketing-starter@0.33.0
Updated dependencies [072f973] - @wabbit/tome-blocks-marketing-starter@0.32.0 - @wabbit/tome-blocks-extras@0.32.0
- Updated dependencies [072f973] - @wabbit/tome-blocks-marketing-starter@0.32.0 - @wabbit/tome-blocks-extras@0.32.0
Updated dependencies [5f2662c]
- Updated dependencies [5f2662c]
- Updated dependencies [fc84e67]
- Updated dependencies [b8ccf85] - @wabbit/tome-blocks-marketing-starter@0.31.0 - @wabbit/tome-blocks-core@0.31.0 - @wabbit/tome-blocks-extras@0.31.0 - @wabbit/tome-blocks-content-writer@0.28.5
Updated dependencies [9fbffc6]
- Updated dependencies [9fbffc6]
- Updated dependencies [fd848e0] - @wabbit/tome-blocks-core@0.30.0 - @wabbit/tome-blocks-marketing-starter@0.30.0 - @wabbit/tome-blocks-content-writer@0.28.5 - @wabbit/tome-blocks-extras@0.28.5
Updated dependencies [115bcfb]
- Updated dependencies [115bcfb]
- Updated dependencies [a6802f8]
- Updated dependencies [698c314] - @wabbit/tome-blocks-core@0.29.0 - @wabbit/tome-blocks-marketing-starter@0.29.0 - @wabbit/tome-blocks-content-writer@0.28.5 - @wabbit/tome-blocks-extras@0.28.5
775f90a: Published packages now contain compiled JavaScript and type declarations under a one-line licence banner, and no longer include source maps. What you install: one compiled `.js` (ESM) and `.cjs` (CommonJS) file per source module, its `.d.ts` / `.d.cts` declarations, and the stylesheets, fonts and other assets a package already shipped. Every JavaScript module opens with a comment naming the package and its licence: `/*! @wabbit/<package> — © Wabbit, LLC. Wabbit Tome Commercial License (see LICENSE.md). Not for redistribution. */`. The `.map` files and the `sourceMappingURL` comments that pointed at them are gone, which roughly halves the size of each tarball. Debugging: the code is still unbundled and unminified, one readable file per module, so a stack trace points at real code with real names. Line numbers in a stack trace are one higher than before, because of the banner line. A `'use client'` directive stays the first statement of its module (the banner is a comment above it), so React Server Component boundaries are unchanged. No API change, no runtime behaviour change, and nothing to do on upgrade. In `@wabbit/tome-blocks-gallery`, the source snapshots `extractGallerySource` writes from an installed pack leave out the licence banner line, so a component or config snapshot starts at the code and a paid block's preview shows its first 15 lines of real code.
- 775f90a: Published packages now contain compiled JavaScript and type declarations under a one-line licence banner, and no longer include source maps. What you install: one compiled `.js` (ESM) and `.cjs` (CommonJS) file per source module, its `.d.ts` / `.d.cts` declarations, and the stylesheets, fonts and other assets a package already shipped. Every JavaScript module opens with a comment naming the package and its licence: `/*! @wabbit/<package> — © Wabbit, LLC. Wabbit Tome Commercial License (see LICENSE.md). Not for redistribution. */`. The `.map` files and the `sourceMappingURL` comments that pointed at them are gone, which roughly halves the size of each tarball. Debugging: the code is still unbundled and unminified, one readable file per module, so a stack trace points at real code with real names. Line numbers in a stack trace are one higher than before, because of the banner line. A `'use client'` directive stays the first statement of its module (the banner is a comment above it), so React Server Component boundaries are unchanged. No API change, no runtime behaviour change, and nothing to do on upgrade. In `@wabbit/tome-blocks-gallery`, the source snapshots `extractGallerySource` writes from an installed pack leave out the licence banner line, so a component or config snapshot starts at the code and a paid block's preview shows its first 15 lines of real code.
- Updated dependencies [775f90a] - @wabbit/tome-blocks-content-writer@0.28.5 - @wabbit/tome-blocks-core@0.28.5 - @wabbit/tome-blocks-extras@0.28.5 - @wabbit/tome-blocks-marketing-starter@0.28.5
Updated dependencies [483e0a1]
- Updated dependencies [483e0a1]
- Updated dependencies [483e0a1]
- Updated dependencies [483e0a1]
- Updated dependencies [483e0a1]
- Updated dependencies [868c087]
- Updated dependencies [6301bf1]
- Updated dependencies [6301bf1]
- Updated dependencies [6301bf1]
- Updated dependencies [868c087]
- Updated dependencies [58655f4]
- Updated dependencies [58655f4] - @wabbit/tome-blocks-core@0.28.0 - @wabbit/tome-blocks-content-writer@0.28.0 - @wabbit/tome-blocks-extras@0.28.0 - @wabbit/tome-blocks-marketing-starter@0.28.0
Updated dependencies [c14a133]
- Updated dependencies [c14a133]
- Updated dependencies [c14a133]
- Updated dependencies [c14a133]
- Updated dependencies [c14a133] - @wabbit/tome-blocks-core@0.27.0 - @wabbit/tome-blocks-content-writer@0.27.0 - @wabbit/tome-blocks-extras@0.27.0 - @wabbit/tome-blocks-marketing-starter@0.27.0
Updated dependencies [f52288f]
- Updated dependencies [f52288f]
- Updated dependencies [8c84e70] - @wabbit/tome-blocks-extras@0.26.0 - @wabbit/tome-blocks-marketing-starter@0.24.0 - @wabbit/tome-blocks-core@0.25.1
Updated dependencies
- Updated dependencies
- Updated dependencies - @wabbit/tome-blocks-content-writer@0.24.0 - @wabbit/tome-blocks-marketing-starter@0.24.0
Updated dependencies
- Updated dependencies
- Updated dependencies - @wabbit/tome-blocks-core@0.22.0 - @wabbit/tome-blocks-extras@0.22.0 - @wabbit/tome-blocks-content-writer@0.18.3 - @wabbit/tome-blocks-marketing-starter@0.20.1
Updated dependencies - @wabbit/tome-blocks-core@0.21.0 - @wabbit/tome-blocks-content-writer@0.18.3 - @wabbit/tome-blocks-extras@0.20.1 - @wabbit/tome-blocks-marketing-starter@0.20.1
- Updated dependencies - @wabbit/tome-blocks-core@0.21.0 - @wabbit/tome-blocks-content-writer@0.18.3 - @wabbit/tome-blocks-extras@0.20.1 - @wabbit/tome-blocks-marketing-starter@0.20.1
e941996: **BREAKING:** the paid block packs are now optional peer dependencies, so installing `@wabbit/tome-blocks` no longer fails for a registry credential that does not hold every paid pack. Hard dependencies are now only the open packs (`tome-blocks-core`, `tome-blocks-marketing-starter`, `tome-blocks-content-writer`, `tome-blocks-extras`). `tome-blocks-agency-essentials`, `-editorial-pack`, `-signal-theme`, `-lms-pack`, `-catalog-pack`, `-sc-pack` and `-org-pack` moved to optional `peerDependencies`. A new `@wabbit/tome-blocks/open` entry re-exports only the open packs, with `registerAll()` and `registerAllRenderers()` scoped to them. **Migration:** if you import the root entry (`@wabbit/tome-blocks` or `@wabbit/tome-blocks/render`), add every paid pack to your own dependencies — they are no longer installed for you. If you hold only some paid packs, import from `@wabbit/tome-blocks/open` and call each held pack's own `register()`.
- e941996: **BREAKING:** the paid block packs are now optional peer dependencies, so installing `@wabbit/tome-blocks` no longer fails for a registry credential that does not hold every paid pack. Hard dependencies are now only the open packs (`tome-blocks-core`, `tome-blocks-marketing-starter`, `tome-blocks-content-writer`, `tome-blocks-extras`). `tome-blocks-agency-essentials`, `-editorial-pack`, `-signal-theme`, `-lms-pack`, `-catalog-pack`, `-sc-pack` and `-org-pack` moved to optional `peerDependencies`. A new `@wabbit/tome-blocks/open` entry re-exports only the open packs, with `registerAll()` and `registerAllRenderers()` scoped to them. **Migration:** if you import the root entry (`@wabbit/tome-blocks` or `@wabbit/tome-blocks/render`), add every paid pack to your own dependencies — they are no longer installed for you. If you hold only some paid packs, import from `@wabbit/tome-blocks/open` and call each held pack's own `register()`.
- Updated dependencies [c94d653]
- Updated dependencies [9ac8d3d] - @wabbit/tome-blocks-core@0.20.0 - @wabbit/tome-blocks-extras@0.20.0 - @wabbit/tome-blocks-content-writer@0.18.3 - @wabbit/tome-blocks-marketing-starter@0.18.3
Updated dependencies [f6cfffa]
- Updated dependencies [f6cfffa]
- Updated dependencies [89a8338] - @wabbit/tome-blocks-sc-pack@0.19.0
Corrective republish: 0.18.3 (like 0.18.0 before it) shipped every dependency as a literal `workspace:^` specifier when published through `changeset publish`; this version carries the resolved ranges. No code change.
- Corrective republish: 0.18.3 (like 0.18.0 before it) shipped every dependency as a literal `workspace:^` specifier when published through `changeset publish`; this version carries the resolved ranges. No code change.
6530765: Removed an unused CSS-copy build hook (this package ships no CSS of its own); no behaviour change, and the published `dist/` is identical.
- 6530765: Removed an unused CSS-copy build hook (this package ships no CSS of its own); no behaviour change, and the published `dist/` is identical.
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [786853e]
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [786853e]
- Updated dependencies [786853e]
- Updated dependencies [6530765]
- Updated dependencies [6530765]
- Updated dependencies [786853e] - @wabbit/tome-blocks-agency-essentials@0.18.3 - @wabbit/tome-blocks-catalog-pack@0.18.3 - @wabbit/tome-blocks-content-writer@0.18.3 - @wabbit/tome-blocks-core@0.18.3 - @wabbit/tome-blocks-editorial-pack@0.18.3 - @wabbit/tome-blocks-extras@0.18.3 - @wabbit/tome-blocks-marketing-starter@0.18.3 - @wabbit/tome-blocks-org-pack@0.5.3 - @wabbit/tome-blocks-signal-theme@0.18.3 - @wabbit/tome-blocks-lms-pack@0.18.3 - @wabbit/tome-blocks-sc-pack@0.18.0
Corrective republish: 0.18.0 shipped every dependency as a literal `workspace:^` specifier (uninstallable); 0.18.1 carries the resolved versions. No code change.
- Corrective republish: 0.18.0 shipped every dependency as a literal `workspace:^` specifier (uninstallable); 0.18.1 carries the resolved versions. No code change.
Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0]
- Updated dependencies [c3468b0] - @wabbit/tome-blocks-agency-essentials@0.18.0 - @wabbit/tome-blocks-catalog-pack@0.18.0 - @wabbit/tome-blocks-content-writer@0.18.0 - @wabbit/tome-blocks-core@0.18.0 - @wabbit/tome-blocks-editorial-pack@0.18.0 - @wabbit/tome-blocks-lms-pack@0.18.0 - @wabbit/tome-blocks-marketing-starter@0.18.0 - @wabbit/tome-blocks-org-pack@0.5.1 - @wabbit/tome-blocks-sc-pack@0.18.0 - @wabbit/tome-blocks-signal-theme@0.18.0 - @wabbit/tome-blocks-extras@0.17.0
Updated dependencies [404d325] - @wabbit/tome-blocks-core@0.17.0 - @wabbit/tome-blocks-extras@0.17.0 - @wabbit/tome-blocks-marketing-starter@0.17.0 - @wabbit/tome-blocks-content-writer@0.17.0 - @wabbit/tome-blocks-agency-essentials@0.17.0 - @wabbit/tome-blocks-editorial-pack@0.17.0 - @wabbit/tome-blocks-signal-theme@0.17.0 - @wabbit/tome-blocks-lms-pack@0.17.0 - @wabbit/tome-blocks-catalog-pack@0.17.0 - @wabbit/tome-blocks-sc-pack@0.17.0 - @wabbit/tome-blocks-org-pack@0.5.0
- Updated dependencies [404d325] - @wabbit/tome-blocks-core@0.17.0 - @wabbit/tome-blocks-extras@0.17.0 - @wabbit/tome-blocks-marketing-starter@0.17.0 - @wabbit/tome-blocks-content-writer@0.17.0 - @wabbit/tome-blocks-agency-essentials@0.17.0 - @wabbit/tome-blocks-editorial-pack@0.17.0 - @wabbit/tome-blocks-signal-theme@0.17.0 - @wabbit/tome-blocks-lms-pack@0.17.0 - @wabbit/tome-blocks-catalog-pack@0.17.0 - @wabbit/tome-blocks-sc-pack@0.17.0 - @wabbit/tome-blocks-org-pack@0.5.0
1019136: Re-release with real dependency versions. 0.16.0 on the registry shipped its eleven `@wabbit/*` dependencies as literal `workspace:^` strings (packed by npm under `changeset publish`) and cannot be installed; this release is packed with `pnpm publish`, which rewrites them.
- 1019136: Re-release with real dependency versions. 0.16.0 on the registry shipped its eleven `@wabbit/*` dependencies as literal `workspace:^` strings (packed by npm under `changeset publish`) and cannot be installed; this release is packed with `pnpm publish`, which rewrites them.
- Updated dependencies [e044594] - @wabbit/tome-blocks-core@0.16.6
b01ca1f: Raise the `react` / `react-dom` peer floor to `>=19.0.0` across the linked blocks family. Every pack advertised `react: >=18.0.0` while `@wabbit/tome-core`, `chrome`, `forms`, `dispatch`, `longform` and `readout` all require `>=19` — so the React 18 support the packs claimed was **unreachable in any real Tome stack**: no consumer could satisfy both halves of the graph. The advertised range was not a supported configuration, it was a range nobody could install into. Ruled 2026-09-01: the floor becomes the truth. Their `devDependencies` said the same thing from the other direction: `react` and `@types/react` pinned to `^18.0.0` while the root `pnpm.overrides` has pinned `@types/react` to `19.2.14` for months, so every pack has in fact been developed and tested against React 19 types the whole time. Those pins move to `^19.0.0` — a manifest correction, not a version change; the resolved tree is byte-identical. One coordinated bump for the family (these eleven are `linked` in `.changeset/config.json`, so they version together by design). Consumer impact: a consumer genuinely on React 18 can no longer install these packs. That consumer could not have had a working Tome install anyway — the kernel would have refused the same graph. Anyone on React 19 sees no change.
- b01ca1f: Raise the `react` / `react-dom` peer floor to `>=19.0.0` across the linked blocks family. Every pack advertised `react: >=18.0.0` while `@wabbit/tome-core`, `chrome`, `forms`, `dispatch`, `longform` and `readout` all require `>=19` — so the React 18 support the packs claimed was **unreachable in any real Tome stack**: no consumer could satisfy both halves of the graph. The advertised range was not a supported configuration, it was a range nobody could install into. Ruled 2026-09-01: the floor becomes the truth. Their `devDependencies` said the same thing from the other direction: `react` and `@types/react` pinned to `^18.0.0` while the root `pnpm.overrides` has pinned `@types/react` to `19.2.14` for months, so every pack has in fact been developed and tested against React 19 types the whole time. Those pins move to `^19.0.0` — a manifest correction, not a version change; the resolved tree is byte-identical. One coordinated bump for the family (these eleven are `linked` in `.changeset/config.json`, so they version together by design). Consumer impact: a consumer genuinely on React 18 can no longer install these packs. That consumer could not have had a working Tome install anyway — the kernel would have refused the same graph. Anyone on React 19 sees no change.
- 0836ef5: dist now raw-Node loadable: relative specifiers get explicit extensions post-build. `build` gains `&& node ../../scripts/fix-dist-extensions.mjs --strict` as its last step, joining the 13 packages that already ran it. tsup builds `bundle: false` and emits relative specifiers exactly as the TypeScript source wrote them — extensionless — which bundlers resolve and raw Node does not (ESM `ERR_MODULE_NOT_FOUND`; CJS worse, `require('./x')` finds the ESM `.js` twin and Node 22+ `require(esm)` then dies on that file's own extensionless import). Every consumer outside a bundler hit this: the payload CLI under plain node, `generate:types`, `generate:importmap`, ops scripts, codegen tools. No source changes, no API changes, and bundler consumers are unaffected — extensioned relative specifiers are universally resolvable. Two supporting changes made the wiring possible, both in repo scripts rather than package source. `fix-dist-extensions.mjs` now skips bundler-asset specifiers (`.css`, `.module.css`, `.scss`, fonts, images, shaders) by explicit extension allowlist instead of reporting them as unresolvable — that single gap is why the 13 prior adopters were exactly the 13 packages that ship no CSS, since `--strict` exited 1 on any package with a relative stylesheet import. Dotted MODULE names (`./config.meta`, `./x.variants`, `./y.demo`) are deliberately NOT treated as assets and still get `.js`/`.cjs` appended. `assert-node-loadable.mjs` gained the matching carve-outs so the new repo-wide CI gate reports real defects only: a resolution failure whose path lands under `node_modules` is a peer SKIP (next@15 has no exports map, so `next/image` fails as an absolute path), and a bundler-asset load failure is an environmental SKIP (CJS surfaces it as `SyntaxError: Unexpected token '.'` raised from inside the stylesheet). Verified before/after on four packages built one at a time: print 8 FAIL → 0, readout 22 FAIL → 0, ai 3 FAIL → 0, gamification 2 FAIL → 0 (its failure was the other signature — a `directory import` missing `/index`). cop was already clean on a fresh build, so the audit's "27 of 46 fail" figure includes at least one package whose local dist was merely stale.
- 73081e6: Manifest metadata: `homepage`, `bugs`, `engines`. All 46 publishable manifests were missing the three fields a consumer sees before any code (2026-09-01 sale-readiness audit §6). Metadata only — no source, no build, no runtime change. - `homepage` deep-links to that package README on GitHub (`.../tree/main/packages/<dir>#readme`). Without it a registry page links to the monorepo root and the reader has to guess which of 46 folders they want. - `bugs.url` points at the repo issue tracker, so a paying customer has a place to report a defect that is not email. - `engines.node` is `>=22`, matching the root `engines` and `.nvmrc` set the same day. This is a real floor, not decoration: CI on Node 20 could not expand the glob the block packs use for `node --test`, and a package installed on Node 20 fails at a runtime the installer cannot connect back to the version. The forcing function ships with the change: `scripts/assert-manifest-metadata.mjs` (root `pnpm assert:manifest-metadata`, wired into `platform-discipline.yml` beside `assert:license-metadata`) fails when any publishable manifest lacks `description`, `repository.directory` matching its own folder, `homepage`, `bugs`, `engines.node` equal to the repo floor, `license`, `files` or `sideEffects`. It reported 138 violations before this change and 0 after.
- Updated dependencies [57875ba]
- Updated dependencies [b01ca1f]
- Updated dependencies [0836ef5]
- Updated dependencies [73081e6]
- Updated dependencies [04309f5]
- Updated dependencies [b01ca1f]
- Updated dependencies [090e984]
- Updated dependencies [73081e6] - @wabbit/tome-blocks-core@0.16.0 - @wabbit/tome-blocks-agency-essentials@0.16.0 - @wabbit/tome-blocks-catalog-pack@0.16.0 - @wabbit/tome-blocks-content-writer@0.16.0 - @wabbit/tome-blocks-editorial-pack@0.16.0 - @wabbit/tome-blocks-extras@0.16.0 - @wabbit/tome-blocks-lms-pack@0.16.0 - @wabbit/tome-blocks-marketing-starter@0.16.0 - @wabbit/tome-blocks-sc-pack@0.16.0 - @wabbit/tome-blocks-signal-theme@0.16.0 - @wabbit/tome-blocks-org-pack@0.4.0
71d3b09: Purge client-specific lore and Star Citizen universe references from all non-SC packages (content and labels only — no schema field names, slugs, or enum values changed). - **dispatch**: demo content rewritten as an incident-war-room / ops-bridge scenario (SEV-1 bridge traffic, failover runbooks, recovered security-report transcript) plus neutral original fiction for inherently fictional variants (Relay Station Aurelia personal log, SV Aurelia ship log). Config field-description examples de-lored (old client- and universe-specific labels → neutral equivalents). - **readout**: all 9 blocks' demo props rewritten as business-operations console data (deployment phases, sprint objectives, service status, perimeter traffic, on-call roster, infrastructure asset cards). Config examples de-lored. - **blocks-signal-theme**: demo props for the 33-block pack rewritten as an original search-and-rescue expedition serial ("Operation Long Wake", SV Aurelia, Meridian Reach) with zero client or SC references; config examples de-lored. Pack positioning (SC-tier bundling per OQ-4) unchanged. - **blocks-extras / blocks-content-writer**: Custom Hero and Post Hero meta descriptions stop name-dropping the client; "Callsign" field descriptions neutralized to "Author name or handle"; provenance comments neutralized. - **blocks-core**: BLOCK_CATALOG mirror entries refreshed for custom-hero and post-hero only; registry comment neutralized. - **blocks-gallery**: SourceBadge label for the `vngd` source value now renders "Legacy" (enum value unchanged). - **accounts / core / lms / ui / org / admin / motion / longform / cop / blocks**: internal provenance comments, shipped CSS comments, and consumer-visible field descriptions that named a specific client replaced with neutral "upstream" phrasing; longform package description de-lored. Historical CHANGELOG entries left untouched.
- 71d3b09: Purge client-specific lore and Star Citizen universe references from all non-SC packages (content and labels only — no schema field names, slugs, or enum values changed). - **dispatch**: demo content rewritten as an incident-war-room / ops-bridge scenario (SEV-1 bridge traffic, failover runbooks, recovered security-report transcript) plus neutral original fiction for inherently fictional variants (Relay Station Aurelia personal log, SV Aurelia ship log). Config field-description examples de-lored (old client- and universe-specific labels → neutral equivalents). - **readout**: all 9 blocks' demo props rewritten as business-operations console data (deployment phases, sprint objectives, service status, perimeter traffic, on-call roster, infrastructure asset cards). Config examples de-lored. - **blocks-signal-theme**: demo props for the 33-block pack rewritten as an original search-and-rescue expedition serial ("Operation Long Wake", SV Aurelia, Meridian Reach) with zero client or SC references; config examples de-lored. Pack positioning (SC-tier bundling per OQ-4) unchanged. - **blocks-extras / blocks-content-writer**: Custom Hero and Post Hero meta descriptions stop name-dropping the client; "Callsign" field descriptions neutralized to "Author name or handle"; provenance comments neutralized. - **blocks-core**: BLOCK_CATALOG mirror entries refreshed for custom-hero and post-hero only; registry comment neutralized. - **blocks-gallery**: SourceBadge label for the `vngd` source value now renders "Legacy" (enum value unchanged). - **accounts / core / lms / ui / org / admin / motion / longform / cop / blocks**: internal provenance comments, shipped CSS comments, and consumer-visible field descriptions that named a specific client replaced with neutral "upstream" phrasing; longform package description de-lored. Historical CHANGELOG entries left untouched.
- Updated dependencies [71d3b09] - @wabbit/tome-blocks-signal-theme@0.15.9 - @wabbit/tome-blocks-extras@0.15.9 - @wabbit/tome-blocks-content-writer@0.15.9 - @wabbit/tome-blocks-core@0.15.9 - @wabbit/tome-blocks-catalog-pack@0.15.9 - @wabbit/tome-blocks-lms-pack@0.15.9 - @wabbit/tome-blocks-org-pack@0.3.4 - @wabbit/tome-blocks-marketing-starter@0.15.6
Republished via `pnpm publish` so the `workspace:*` dependency protocol is rewritten to real versions. **0.15.1 did not fix this.** `pnpm changeset publish` still ships the literal protocol string — changesets invokes `npm publish` internally regardless of the package manager used to launch it, so routing the _changeset_ command through pnpm changes nothing. Only `pnpm publish`, run from the package directory, applies pnpm's pack-time rewriting. **Release rule for this package:** `cd packages/blocks && pnpm publish`. Every other package in the monorepo is safe under `changeset publish`, because `@wabbit/tome-blocks` is the only one declaring `workspace:*` in `dependencies` rather than peer ranges. Broken versions that must not be installed: 0.11.0, 0.11.2, 0.13.0, 0.14.0, 0.15.0, 0.15.1.
- Republished via `pnpm publish` so the `workspace:*` dependency protocol is rewritten to real versions. **0.15.1 did not fix this.** `pnpm changeset publish` still ships the literal protocol string — changesets invokes `npm publish` internally regardless of the package manager used to launch it, so routing the _changeset_ command through pnpm changes nothing. Only `pnpm publish`, run from the package directory, applies pnpm's pack-time rewriting. **Release rule for this package:** `cd packages/blocks && pnpm publish`. Every other package in the monorepo is safe under `changeset publish`, because `@wabbit/tome-blocks` is the only one declaring `workspace:*` in `dependencies` rather than peer ranges. Broken versions that must not be installed: 0.11.0, 0.11.2, 0.13.0, 0.14.0, 0.15.0, 0.15.1.
Republish with the `workspace:*` dependency protocol resolved to real version ranges. `@wabbit/tome-blocks` is an umbrella package whose 11 runtime dependencies are declared `workspace:*`. That protocol is a pnpm authoring convenience and **must be rewritten to concrete ranges at pack time** — `pnpm publish` does this; `npm publish` does not, and ships the literal string. Installing such a tarball fails outright: ``` npm error code EUNSUPPORTEDPROTOCOL npm error Unsupported URL Type "workspace:": workspace:* ``` This is intermittent across the package's history — 0.11.0, 0.11.2, 0.13.0, 0.14.0 and 0.15.0 shipped broken while 0.10.3, 0.11.1, 0.11.3, 0.12.0 and 0.12.1 shipped clean — tracking whether that release happened to be cut with pnpm or npm. `changeset publish` shells out to `npm publish` unless it is itself invoked through pnpm, which is the mechanism behind the alternation. **This package must be released with `pnpm changeset publish`, never `npx changeset publish`.** No other package in the monorepo is affected: `@wabbit/tome-blocks` is the only one carrying `workspace:*` in `dependencies` rather than peer ranges.
- Republish with the `workspace:*` dependency protocol resolved to real version ranges. `@wabbit/tome-blocks` is an umbrella package whose 11 runtime dependencies are declared `workspace:*`. That protocol is a pnpm authoring convenience and **must be rewritten to concrete ranges at pack time** — `pnpm publish` does this; `npm publish` does not, and ships the literal string. Installing such a tarball fails outright: ``` npm error code EUNSUPPORTEDPROTOCOL npm error Unsupported URL Type "workspace:": workspace:* ``` This is intermittent across the package's history — 0.11.0, 0.11.2, 0.13.0, 0.14.0 and 0.15.0 shipped broken while 0.10.3, 0.11.1, 0.11.3, 0.12.0 and 0.12.1 shipped clean — tracking whether that release happened to be cut with pnpm or npm. `changeset publish` shells out to `npm publish` unless it is itself invoked through pnpm, which is the mechanism behind the alternation. **This package must be released with `pnpm changeset publish`, never `npx changeset publish`.** No other package in the monorepo is affected: `@wabbit/tome-blocks` is the only one carrying `workspace:*` in `dependencies` rather than peer ranges.
Updated dependencies [510036f] - @wabbit/tome-blocks-core@0.15.0 - @wabbit/tome-blocks-agency-essentials@0.15.0 - @wabbit/tome-blocks-catalog-pack@0.15.0 - @wabbit/tome-blocks-content-writer@0.15.0 - @wabbit/tome-blocks-editorial-pack@0.15.0 - @wabbit/tome-blocks-extras@0.15.0 - @wabbit/tome-blocks-lms-pack@0.15.0 - @wabbit/tome-blocks-marketing-starter@0.15.0 - @wabbit/tome-blocks-org-pack@0.3.0 - @wabbit/tome-blocks-sc-pack@0.15.0 - @wabbit/tome-blocks-signal-theme@0.15.0
- Updated dependencies [510036f] - @wabbit/tome-blocks-core@0.15.0 - @wabbit/tome-blocks-agency-essentials@0.15.0 - @wabbit/tome-blocks-catalog-pack@0.15.0 - @wabbit/tome-blocks-content-writer@0.15.0 - @wabbit/tome-blocks-editorial-pack@0.15.0 - @wabbit/tome-blocks-extras@0.15.0 - @wabbit/tome-blocks-lms-pack@0.15.0 - @wabbit/tome-blocks-marketing-starter@0.15.0 - @wabbit/tome-blocks-org-pack@0.3.0 - @wabbit/tome-blocks-sc-pack@0.15.0 - @wabbit/tome-blocks-signal-theme@0.15.0
Updated dependencies - @wabbit/tome-blocks-core@0.14.0 - @wabbit/tome-blocks-agency-essentials@0.14.0 - @wabbit/tome-blocks-catalog-pack@0.14.0 - @wabbit/tome-blocks-content-writer@0.14.0 - @wabbit/tome-blocks-editorial-pack@0.14.0 - @wabbit/tome-blocks-extras@0.14.0 - @wabbit/tome-blocks-lms-pack@0.14.0 - @wabbit/tome-blocks-marketing-starter@0.14.0 - @wabbit/tome-blocks-org-pack@0.2.10 - @wabbit/tome-blocks-sc-pack@0.14.0 - @wabbit/tome-blocks-signal-theme@0.14.0
- Updated dependencies - @wabbit/tome-blocks-core@0.14.0 - @wabbit/tome-blocks-agency-essentials@0.14.0 - @wabbit/tome-blocks-catalog-pack@0.14.0 - @wabbit/tome-blocks-content-writer@0.14.0 - @wabbit/tome-blocks-editorial-pack@0.14.0 - @wabbit/tome-blocks-extras@0.14.0 - @wabbit/tome-blocks-lms-pack@0.14.0 - @wabbit/tome-blocks-marketing-starter@0.14.0 - @wabbit/tome-blocks-org-pack@0.2.10 - @wabbit/tome-blocks-sc-pack@0.14.0 - @wabbit/tome-blocks-signal-theme@0.14.0
Updated dependencies [f4d55c9]
- Updated dependencies [f4d55c9]
- Updated dependencies [f4d55c9]
- Updated dependencies [9116174]
- Updated dependencies [c041aea]
- Updated dependencies [eb403d4] - @wabbit/tome-blocks-core@0.13.0 - @wabbit/tome-blocks-marketing-starter@0.13.0 - @wabbit/tome-blocks-editorial-pack@0.13.0 - @wabbit/tome-blocks-extras@0.13.0 - @wabbit/tome-blocks-agency-essentials@0.13.0 - @wabbit/tome-blocks-catalog-pack@0.13.0 - @wabbit/tome-blocks-content-writer@0.13.0 - @wabbit/tome-blocks-lms-pack@0.13.0 - @wabbit/tome-blocks-org-pack@0.2.9 - @wabbit/tome-blocks-sc-pack@0.13.0 - @wabbit/tome-blocks-signal-theme@0.13.0
Updated dependencies - @wabbit/tome-blocks-lms-pack@0.12.1 - @wabbit/tome-blocks-catalog-pack@0.12.1 - @wabbit/tome-blocks-editorial-pack@0.12.1 - @wabbit/tome-blocks-signal-theme@0.12.1
- Updated dependencies - @wabbit/tome-blocks-lms-pack@0.12.1 - @wabbit/tome-blocks-catalog-pack@0.12.1 - @wabbit/tome-blocks-editorial-pack@0.12.1 - @wabbit/tome-blocks-signal-theme@0.12.1
Updated dependencies - @wabbit/tome-blocks-lms-pack@0.12.0 - @wabbit/tome-blocks-catalog-pack@0.12.0
- Updated dependencies - @wabbit/tome-blocks-lms-pack@0.12.0 - @wabbit/tome-blocks-catalog-pack@0.12.0
Corrective republish. `0.11.2` shipped all 11 of its dependencies as literal `workspace:*` specifiers (uninstallable — `EUNSUPPORTEDPROTOCOL`), the same intermittent `pnpm changeset publish` protocol-leak that hit `0.11.0` (fixed as `0.11.1`, commit 7d111b8). No code change — `pnpm publish` from the package directory rewrites the workspace ranges to resolved versions (verified via `pnpm pack` before upload: 0 leaks). `0.11.2` is deprecated.
- Corrective republish. `0.11.2` shipped all 11 of its dependencies as literal `workspace:*` specifiers (uninstallable — `EUNSUPPORTEDPROTOCOL`), the same intermittent `pnpm changeset publish` protocol-leak that hit `0.11.0` (fixed as `0.11.1`, commit 7d111b8). No code change — `pnpm publish` from the package directory rewrites the workspace ranges to resolved versions (verified via `pnpm pack` before upload: 0 leaks). `0.11.2` is deprecated.
Updated dependencies [e11d5a2] - @wabbit/tome-blocks-core@0.11.2 - @wabbit/tome-blocks-agency-essentials@0.11.2 - @wabbit/tome-blocks-catalog-pack@0.11.2 - @wabbit/tome-blocks-content-writer@0.11.2 - @wabbit/tome-blocks-editorial-pack@0.11.2 - @wabbit/tome-blocks-extras@0.11.2 - @wabbit/tome-blocks-lms-pack@0.11.2 - @wabbit/tome-blocks-marketing-starter@0.11.2 - @wabbit/tome-blocks-org-pack@0.2.8 - @wabbit/tome-blocks-sc-pack@0.11.2 - @wabbit/tome-blocks-signal-theme@0.11.2
- Updated dependencies [e11d5a2] - @wabbit/tome-blocks-core@0.11.2 - @wabbit/tome-blocks-agency-essentials@0.11.2 - @wabbit/tome-blocks-catalog-pack@0.11.2 - @wabbit/tome-blocks-content-writer@0.11.2 - @wabbit/tome-blocks-editorial-pack@0.11.2 - @wabbit/tome-blocks-extras@0.11.2 - @wabbit/tome-blocks-lms-pack@0.11.2 - @wabbit/tome-blocks-marketing-starter@0.11.2 - @wabbit/tome-blocks-org-pack@0.2.8 - @wabbit/tome-blocks-sc-pack@0.11.2 - @wabbit/tome-blocks-signal-theme@0.11.2
Corrective republish: `0.11.0`'s published manifest shipped unrewritten `workspace:*` dependency specifiers (the only package of the 41 in the 2026-07-13 train to leak them — the `changeset publish` path skipped the rewrite for this package while `pnpm pack`/`pnpm publish` performs it correctly; mechanism unexplained, so the post-publish registry sweep now greps every published manifest for `workspace:`). `0.11.0` cannot be installed by npm consumers (`EUNSUPPORTEDPROTOCOL`) and is deprecated on the registry. No code changes — dist is byte-identical to `0.11.0`.
- Corrective republish: `0.11.0`'s published manifest shipped unrewritten `workspace:*` dependency specifiers (the only package of the 41 in the 2026-07-13 train to leak them — the `changeset publish` path skipped the rewrite for this package while `pnpm pack`/`pnpm publish` performs it correctly; mechanism unexplained, so the post-publish registry sweep now greps every published manifest for `workspace:`). `0.11.0` cannot be installed by npm consumers (`EUNSUPPORTEDPROTOCOL`) and is deprecated on the registry. No code changes — dist is byte-identical to `0.11.0`.
26dfa07: Pre-existing test-suite fixes (unrelated to recent feature work): - `high-impact-hero`'s `illustrationHero` variant carried two tags (`brand`, `illustration`) outside the canonical taxonomy declared in `v2-coverage.test.ts`. Fixed to `['editorial', 'playful']`. The `illustrationHero` slug itself is kept camelCase (not renamed to kebab-case) because it shipped in the published `0.5.0` release (2026-05-21) and is stored verbatim in consumer content as a `_variant` field value — renaming would silently break every stored document that already selected it. The kebab-case rule now carries a documented, slug-scoped exception with a deprecation trigger (next content-breaking major version for this package, when a stored-content migration pass is already budgeted). - `blocks-core`'s `test/top20-variants.test.ts` imported `@wabbit/tome-blocks-marketing-starter` and the other bundle packs directly, which a later refactor made unresolvable when it removed blocks-core's devDeps on those packs to break the blocks-core ↔ marketing-starter dependency cycle. Relocated the test to `@wabbit/tome-blocks` (the meta-package that already depends on every pack for exactly this purpose) rather than re-adding the removed devDeps and recreating the cycle. Test-only change; no runtime behavior changed in either package.
- 26dfa07: Pre-existing test-suite fixes (unrelated to recent feature work): - `high-impact-hero`'s `illustrationHero` variant carried two tags (`brand`, `illustration`) outside the canonical taxonomy declared in `v2-coverage.test.ts`. Fixed to `['editorial', 'playful']`. The `illustrationHero` slug itself is kept camelCase (not renamed to kebab-case) because it shipped in the published `0.5.0` release (2026-05-21) and is stored verbatim in consumer content as a `_variant` field value — renaming would silently break every stored document that already selected it. The kebab-case rule now carries a documented, slug-scoped exception with a deprecation trigger (next content-breaking major version for this package, when a stored-content migration pass is already budgeted). - `blocks-core`'s `test/top20-variants.test.ts` imported `@wabbit/tome-blocks-marketing-starter` and the other bundle packs directly, which a later refactor made unresolvable when it removed blocks-core's devDeps on those packs to break the blocks-core ↔ marketing-starter dependency cycle. Relocated the test to `@wabbit/tome-blocks` (the meta-package that already depends on every pack for exactly this purpose) rather than re-adding the removed devDeps and recreating the cycle. Test-only change; no runtime behavior changed in either package.
- 36e537a: Every package now declares an explicit `sideEffects` field (38 added; motion/engine/forms already correct). Registration-bearing modules (render files' `registerRenderer`, `blocks/*/index.ts` `defineBlock` self-registration, widget `register.ts` files, productHooks, permission self-registrations, print templates, chrome built-in variants) are listed so bundlers can tree-shake everything else WITHOUT dropping import-time registrations — previously the field was unset, which blocked cross-module tree-shaking through the barrels entirely. Never blanket `false` on a package with registration or CSS.
- 36e537a: Small verified fixes: agency-essentials `Contact` gains its missing `'use client'` (it calls the rich-text adapter hook; direct RSC import crashed). chrome `NavGuard` now dev-warns when its capability gate fails to load while a `requiredCapability` is set (the fail-open contract itself is unchanged and now documented). blocks-core `BLOCK_CATALOG.ts` corrupted entries corrected from real block meta (content-two-column, content-with-corner-notch, signal-ship-card names/descriptions; gallery variants filled) + drift-risk header. Stale docstrings fixed (chrome `HeaderLogo`, blocks-gallery registry header, lms-ui payload JSDoc import path). blocks meta-package backcompat suite now asserts the RENDER registry resolves renderers (previously only descriptor registration was tested — a dropped render import shipped silently).
- 5f78397: The clientization migration: 127 render components across seven packs dropped `'use client'` — every file individually re-verified hook/handler/context-free before stripping; adapter-consuming static blocks converted to `resolveRichText`/`resolveMedia`. Exactly 20 of 155 renderers remain client, each for a verified reason (state/effects/motion, or a documented client-shell composition contract), enforced by the new `assert:rsc-boundaries` CI script (per-pack manifest; fails loudly if a directive creeps back or a count drifts). Every renderer-bearing pack now exports `./render/register` (`renderers` map + explicit `registerRenderers()`), aggregated by `@wabbit/tome-blocks`'s new `registerAllRenderers()` — the format-safe registration path for server component graphs, where the legacy import-time barrel registration never executes (that legacy path is unchanged and remains supported until the spec's deprecation trigger). `RenderBlock` is rewritten server-safe: directive-free, optional `components` prop (RenderBlocks parity) → registry fallback, dev warn-once naming both fixes on a miss; its docs state the explicit-registration prerequisite. Rendered output is byte-identical everywhere; behavior change only for consumers rendering migrated blocks in RSC WITHOUT a provider or registration — they get the documented warn + graceful degradation instead of silent client bundling.
- Updated dependencies [26dfa07]
- Updated dependencies [a5db69f]
- Updated dependencies [8100b6f]
- Updated dependencies [6bc419c]
- Updated dependencies [36e537a]
- Updated dependencies [36e537a]
- Updated dependencies [36e537a]
- Updated dependencies [36e537a]
- Updated dependencies [a93f478]
- Updated dependencies [a93f478]
- Updated dependencies [5f78397]
- Updated dependencies [5f78397]
- Updated dependencies [aef2725]
- Updated dependencies [aef2725]
- Updated dependencies [aef2725]
- Updated dependencies [aef2725] - @wabbit/tome-blocks-marketing-starter@0.11.0 - @wabbit/tome-blocks-core@0.11.0 - @wabbit/tome-blocks-catalog-pack@0.11.0 - @wabbit/tome-blocks-lms-pack@0.11.0 - @wabbit/tome-blocks-sc-pack@0.11.0 - @wabbit/tome-blocks-org-pack@0.2.7 - @wabbit/tome-blocks-agency-essentials@0.11.0 - @wabbit/tome-blocks-content-writer@0.11.0 - @wabbit/tome-blocks-editorial-pack@0.11.0 - @wabbit/tome-blocks-extras@0.11.0 - @wabbit/tome-blocks-signal-theme@0.11.0
@wabbit/tome-blocks-catalog-pack@0.10.3
- @wabbit/tome-blocks-catalog-pack@0.10.3
- @wabbit/tome-blocks-core@0.10.0
- @wabbit/tome-blocks-lms-pack@0.10.3
- @wabbit/tome-blocks-marketing-starter@0.10.0
Updated dependencies [cd59894] - @wabbit/tome-blocks-signal-theme@0.10.2 - @wabbit/tome-blocks-sc-pack@0.10.2 - @wabbit/tome-blocks-editorial-pack@0.10.2
- Updated dependencies [cd59894] - @wabbit/tome-blocks-signal-theme@0.10.2 - @wabbit/tome-blocks-sc-pack@0.10.2 - @wabbit/tome-blocks-editorial-pack@0.10.2
@wabbit/tome-blocks-catalog-pack@0.10.1
- @wabbit/tome-blocks-catalog-pack@0.10.1
- @wabbit/tome-blocks-core@0.10.0
- @wabbit/tome-blocks-lms-pack@0.10.1
- @wabbit/tome-blocks-marketing-starter@0.10.0
Updated dependencies - @wabbit/tome-blocks-core@0.10.0 - @wabbit/tome-blocks-agency-essentials@0.10.0 - @wabbit/tome-blocks-catalog-pack@0.10.0 - @wabbit/tome-blocks-content-writer@0.10.0 - @wabbit/tome-blocks-editorial-pack@0.10.0 - @wabbit/tome-blocks-extras@0.10.0 - @wabbit/tome-blocks-lms-pack@0.10.0 - @wabbit/tome-blocks-marketing-starter@0.10.0 - @wabbit/tome-blocks-sc-pack@0.10.0 - @wabbit/tome-blocks-signal-theme@0.10.0
- Updated dependencies - @wabbit/tome-blocks-core@0.10.0 - @wabbit/tome-blocks-agency-essentials@0.10.0 - @wabbit/tome-blocks-catalog-pack@0.10.0 - @wabbit/tome-blocks-content-writer@0.10.0 - @wabbit/tome-blocks-editorial-pack@0.10.0 - @wabbit/tome-blocks-extras@0.10.0 - @wabbit/tome-blocks-lms-pack@0.10.0 - @wabbit/tome-blocks-marketing-starter@0.10.0 - @wabbit/tome-blocks-sc-pack@0.10.0 - @wabbit/tome-blocks-signal-theme@0.10.0
Updated dependencies - @wabbit/tome-blocks-content-writer@0.9.5 - @wabbit/tome-blocks-marketing-starter@0.9.5 - @wabbit/tome-blocks-extras@0.9.5 - @wabbit/tome-blocks-editorial-pack@0.9.5 - @wabbit/tome-blocks-agency-essentials@0.9.5 - @wabbit/tome-blocks-sc-pack@0.9.5 - @wabbit/tome-blocks-signal-theme@0.9.5
- Updated dependencies - @wabbit/tome-blocks-content-writer@0.9.5 - @wabbit/tome-blocks-marketing-starter@0.9.5 - @wabbit/tome-blocks-extras@0.9.5 - @wabbit/tome-blocks-editorial-pack@0.9.5 - @wabbit/tome-blocks-agency-essentials@0.9.5 - @wabbit/tome-blocks-sc-pack@0.9.5 - @wabbit/tome-blocks-signal-theme@0.9.5
bed3f90: Docs-manifest emitter pipeline (W3 ship-readiness). `@wabbit/tome-blocks-core` now ships a standalone Node ESM CLI at `scripts/emit-docs-manifests.mjs` that emits per-package documentation manifests (index.json, packages/<slug>.json, changelog.json) by reading what packages already carry — READMEs, the payload-free `<pkg>/meta` block-usage barrels, package.json exports maps, and CHANGELOG.md. It is the docs-pipeline sibling of the gallery source extractor and is consumed by host sites at prebuild: `node node_modules/@wabbit/tome-blocks-core/scripts/emit-docs-manifests.mjs --output-dir <dir> --scope <scope.json>`. To let the emitter import block metadata uniformly without dragging Payload config into a build script, the `./meta` payload-free subpath (BlockMetaEntry[]) is extended to the remaining offered blocks packs — agency-essentials, catalog-pack, lms-pack, org-pack, and signal-theme — mirroring the existing editorial-pack / marketing-starter / content-writer / extras barrels. Each block's `BlockMeta` was relocated verbatim into a payload-free sibling meta module and re-imported by its block config; no meta values changed. Every supported-core package additionally adds `CHANGELOG.md` to its published `files` array so the next publish cascade ships changelogs the emitter can read from installed tarballs at prebuild.
- bed3f90: Docs-manifest emitter pipeline (W3 ship-readiness). `@wabbit/tome-blocks-core` now ships a standalone Node ESM CLI at `scripts/emit-docs-manifests.mjs` that emits per-package documentation manifests (index.json, packages/<slug>.json, changelog.json) by reading what packages already carry — READMEs, the payload-free `<pkg>/meta` block-usage barrels, package.json exports maps, and CHANGELOG.md. It is the docs-pipeline sibling of the gallery source extractor and is consumed by host sites at prebuild: `node node_modules/@wabbit/tome-blocks-core/scripts/emit-docs-manifests.mjs --output-dir <dir> --scope <scope.json>`. To let the emitter import block metadata uniformly without dragging Payload config into a build script, the `./meta` payload-free subpath (BlockMetaEntry[]) is extended to the remaining offered blocks packs — agency-essentials, catalog-pack, lms-pack, org-pack, and signal-theme — mirroring the existing editorial-pack / marketing-starter / content-writer / extras barrels. Each block's `BlockMeta` was relocated verbatim into a payload-free sibling meta module and re-imported by its block config; no meta values changed. Every supported-core package additionally adds `CHANGELOG.md` to its published `files` array so the next publish cascade ships changelogs the emitter can read from installed tarballs at prebuild.
- Updated dependencies [bed3f90] - @wabbit/tome-blocks-core@0.9.4 - @wabbit/tome-blocks-agency-essentials@0.9.4 - @wabbit/tome-blocks-catalog-pack@0.9.4 - @wabbit/tome-blocks-lms-pack@0.9.4 - @wabbit/tome-blocks-signal-theme@0.9.4 - @wabbit/tome-blocks-marketing-starter@0.9.4 - @wabbit/tome-blocks-content-writer@0.9.4 - @wabbit/tome-blocks-editorial-pack@0.9.4 - @wabbit/tome-blocks-extras@0.9.4 - @wabbit/tome-blocks-sc-pack@0.9.4
@wabbit/tome-blocks-editorial-pack@0.9.3
- @wabbit/tome-blocks-editorial-pack@0.9.3
- @wabbit/tome-blocks-signal-theme@0.9.3
Updated dependencies
- Updated dependencies
- Updated dependencies - @wabbit/tome-blocks-core@0.9.2 - @wabbit/tome-blocks-signal-theme@0.9.2 - @wabbit/tome-blocks-agency-essentials@0.9.2 - @wabbit/tome-blocks-catalog-pack@0.9.2 - @wabbit/tome-blocks-content-writer@0.9.2 - @wabbit/tome-blocks-editorial-pack@0.9.2 - @wabbit/tome-blocks-extras@0.9.2 - @wabbit/tome-blocks-lms-pack@0.9.2 - @wabbit/tome-blocks-marketing-starter@0.9.2 - @wabbit/tome-blocks-sc-pack@0.9.2
Updated dependencies [c07f3c8] - @wabbit/tome-blocks-extras@0.9.1 - @wabbit/tome-blocks-agency-essentials@0.9.1 - @wabbit/tome-blocks-content-writer@0.9.1 - @wabbit/tome-blocks-editorial-pack@0.9.1 - @wabbit/tome-blocks-marketing-starter@0.9.1 - @wabbit/tome-blocks-sc-pack@0.9.1 - @wabbit/tome-blocks-signal-theme@0.9.1
- Updated dependencies [c07f3c8] - @wabbit/tome-blocks-extras@0.9.1 - @wabbit/tome-blocks-agency-essentials@0.9.1 - @wabbit/tome-blocks-content-writer@0.9.1 - @wabbit/tome-blocks-editorial-pack@0.9.1 - @wabbit/tome-blocks-marketing-starter@0.9.1 - @wabbit/tome-blocks-sc-pack@0.9.1 - @wabbit/tome-blocks-signal-theme@0.9.1
Updated dependencies [c7d0afc] - @wabbit/tome-blocks-core@0.9.0 - @wabbit/tome-blocks-extras@0.9.0 - @wabbit/tome-blocks-marketing-starter@0.9.0 - @wabbit/tome-blocks-content-writer@0.9.0 - @wabbit/tome-blocks-agency-essentials@0.9.0 - @wabbit/tome-blocks-editorial-pack@0.9.0 - @wabbit/tome-blocks-signal-theme@0.9.0 - @wabbit/tome-blocks-catalog-pack@0.9.0 - @wabbit/tome-blocks-lms-pack@0.9.0 - @wabbit/tome-blocks-sc-pack@0.9.0
- Updated dependencies [c7d0afc] - @wabbit/tome-blocks-core@0.9.0 - @wabbit/tome-blocks-extras@0.9.0 - @wabbit/tome-blocks-marketing-starter@0.9.0 - @wabbit/tome-blocks-content-writer@0.9.0 - @wabbit/tome-blocks-agency-essentials@0.9.0 - @wabbit/tome-blocks-editorial-pack@0.9.0 - @wabbit/tome-blocks-signal-theme@0.9.0 - @wabbit/tome-blocks-catalog-pack@0.9.0 - @wabbit/tome-blocks-lms-pack@0.9.0 - @wabbit/tome-blocks-sc-pack@0.9.0
Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670]
- Updated dependencies [249b670] - @wabbit/tome-blocks-marketing-starter@0.8.0 - @wabbit/tome-blocks-extras@0.8.0 - @wabbit/tome-blocks-signal-theme@0.8.0 - @wabbit/tome-blocks-lms-pack@0.8.0 - @wabbit/tome-blocks-catalog-pack@0.8.0 - @wabbit/tome-blocks-sc-pack@0.8.0 - @wabbit/tome-blocks-core@0.8.0 - @wabbit/tome-blocks-agency-essentials@0.8.0 - @wabbit/tome-blocks-content-writer@0.8.0 - @wabbit/tome-blocks-editorial-pack@0.8.0
Updated dependencies [28802fa]
- Updated dependencies [28802fa]
- Updated dependencies [66c611c]
- Updated dependencies [8958d41] - @wabbit/tome-blocks-editorial-pack@0.7.0 - @wabbit/tome-blocks-content-writer@0.7.0 - @wabbit/tome-blocks-extras@0.7.0 - @wabbit/tome-blocks-marketing-starter@0.7.0 - @wabbit/tome-blocks-core@0.7.0 - @wabbit/tome-blocks-signal-theme@0.7.0 - @wabbit/tome-blocks-sc-pack@0.7.0 - @wabbit/tome-blocks-agency-essentials@0.7.0 - @wabbit/tome-blocks-catalog-pack@0.7.0 - @wabbit/tome-blocks-lms-pack@0.7.0
Updated dependencies [4b2f368] - @wabbit/tome-blocks-core@0.6.2 - @wabbit/tome-blocks-catalog-pack@0.6.2 - @wabbit/tome-blocks-lms-pack@0.6.2 - @wabbit/tome-blocks-agency-essentials@0.6.2 - @wabbit/tome-blocks-content-writer@0.6.2 - @wabbit/tome-blocks-editorial-pack@0.6.2 - @wabbit/tome-blocks-extras@0.6.2 - @wabbit/tome-blocks-marketing-starter@0.6.2 - @wabbit/tome-blocks-sc-pack@0.6.2 - @wabbit/tome-blocks-signal-theme@0.6.2
- Updated dependencies [4b2f368] - @wabbit/tome-blocks-core@0.6.2 - @wabbit/tome-blocks-catalog-pack@0.6.2 - @wabbit/tome-blocks-lms-pack@0.6.2 - @wabbit/tome-blocks-agency-essentials@0.6.2 - @wabbit/tome-blocks-content-writer@0.6.2 - @wabbit/tome-blocks-editorial-pack@0.6.2 - @wabbit/tome-blocks-extras@0.6.2 - @wabbit/tome-blocks-marketing-starter@0.6.2 - @wabbit/tome-blocks-sc-pack@0.6.2 - @wabbit/tome-blocks-signal-theme@0.6.2
Updated dependencies [f37fa00] - @wabbit/tome-blocks-agency-essentials@0.6.1 - @wabbit/tome-blocks-marketing-starter@0.6.1 - @wabbit/tome-blocks-signal-theme@0.6.1 - @wabbit/tome-blocks-core@0.5.9
- Updated dependencies [f37fa00] - @wabbit/tome-blocks-agency-essentials@0.6.1 - @wabbit/tome-blocks-marketing-starter@0.6.1 - @wabbit/tome-blocks-signal-theme@0.6.1 - @wabbit/tome-blocks-core@0.5.9
Updated dependencies [dfd8a78] - @wabbit/tome-blocks-editorial-pack@0.6.0 - @wabbit/tome-blocks-core@0.5.9
- Updated dependencies [dfd8a78] - @wabbit/tome-blocks-editorial-pack@0.6.0 - @wabbit/tome-blocks-core@0.5.9
@wabbit/tome-blocks-editorial-pack@0.5.11
- @wabbit/tome-blocks-editorial-pack@0.5.11
- @wabbit/tome-blocks-core@0.5.9
Updated dependencies [497409b] - @wabbit/tome-blocks-content-writer@0.5.10 - @wabbit/tome-blocks-core@0.5.9
- Updated dependencies [497409b] - @wabbit/tome-blocks-content-writer@0.5.10 - @wabbit/tome-blocks-core@0.5.9
Updated dependencies [8947ff1] - @wabbit/tome-blocks-marketing-starter@0.5.9 - @wabbit/tome-blocks-core@0.5.9 - @wabbit/tome-blocks-catalog-pack@0.5.9 - @wabbit/tome-blocks-lms-pack@0.5.9 - @wabbit/tome-blocks-editorial-pack@0.5.9 - @wabbit/tome-blocks-agency-essentials@0.5.9 - @wabbit/tome-blocks-content-writer@0.5.9 - @wabbit/tome-blocks-extras@0.5.9 - @wabbit/tome-blocks-sc-pack@0.5.9 - @wabbit/tome-blocks-signal-theme@0.5.9
- Updated dependencies [8947ff1] - @wabbit/tome-blocks-marketing-starter@0.5.9 - @wabbit/tome-blocks-core@0.5.9 - @wabbit/tome-blocks-catalog-pack@0.5.9 - @wabbit/tome-blocks-lms-pack@0.5.9 - @wabbit/tome-blocks-editorial-pack@0.5.9 - @wabbit/tome-blocks-agency-essentials@0.5.9 - @wabbit/tome-blocks-content-writer@0.5.9 - @wabbit/tome-blocks-extras@0.5.9 - @wabbit/tome-blocks-sc-pack@0.5.9 - @wabbit/tome-blocks-signal-theme@0.5.9
Updated dependencies [3f0c503] - @wabbit/tome-blocks-editorial-pack@0.5.8 - @wabbit/tome-blocks-core@0.5.7
- Updated dependencies [3f0c503] - @wabbit/tome-blocks-editorial-pack@0.5.8 - @wabbit/tome-blocks-core@0.5.7
@wabbit/tome-blocks-catalog-pack@0.5.7
- @wabbit/tome-blocks-catalog-pack@0.5.7
- @wabbit/tome-blocks-core@0.5.7
- @wabbit/tome-blocks-lms-pack@0.5.7
- @wabbit/tome-blocks-agency-essentials@0.5.7
- @wabbit/tome-blocks-content-writer@0.5.7
- @wabbit/tome-blocks-editorial-pack@0.5.7
- @wabbit/tome-blocks-extras@0.5.7
- @wabbit/tome-blocks-marketing-starter@0.5.7
- @wabbit/tome-blocks-sc-pack@0.5.7
- @wabbit/tome-blocks-signal-theme@0.5.7
Linked cohort version alignment (no functional change in this package).
- Linked cohort version alignment (no functional change in this package).
Updated dependencies [97d2311] - @wabbit/tome-blocks-content-writer@0.4.4 - @wabbit/tome-blocks-core@0.4.3
- Updated dependencies [97d2311] - @wabbit/tome-blocks-content-writer@0.4.4 - @wabbit/tome-blocks-core@0.4.3
**Fix: list all 10 sibling block packages in tsup `external` array.** The meta package's `tsup.config.ts` was templated from `blocks-marketing-starter`, whose narrower `external` list (`['@wabbit/tome-blocks-core', '@wabbit/tome-blocks-extras']`) is correct for that pack's import surface but wrong here. The meta package re-exports from all 10 sibling packs so all 10 must be externalized. Without all 10 externalized, rollup-plugin-dts (used by tsup's `dts: true`) attempts to bundle each un-externalized pack's `.d.ts` surface into the meta package's dist. In CI, dependent packs may not have a built `dist/` yet when this resolution runs, producing "Cannot find module '@wabbit/tome-blocks-X'" errors during the DTS step. No source or runtime changes; pure build-config fix.
- **Fix: list all 10 sibling block packages in tsup `external` array.** The meta package's `tsup.config.ts` was templated from `blocks-marketing-starter`, whose narrower `external` list (`['@wabbit/tome-blocks-core', '@wabbit/tome-blocks-extras']`) is correct for that pack's import surface but wrong here. The meta package re-exports from all 10 sibling packs so all 10 must be externalized. Without all 10 externalized, rollup-plugin-dts (used by tsup's `dts: true`) attempts to bundle each un-externalized pack's `.d.ts` surface into the meta package's dist. In CI, dependent packs may not have a built `dist/` yet when this resolution runs, producing "Cannot find module '@wabbit/tome-blocks-X'" errors during the DTS step. No source or runtime changes; pure build-config fix.
Updated dependencies - @wabbit/tome-blocks-extras@0.4.2 - @wabbit/tome-blocks-lms-pack@0.4.2 - @wabbit/tome-blocks-catalog-pack@0.4.2 - @wabbit/tome-blocks-core@0.4.2 - @wabbit/tome-blocks-agency-essentials@0.4.2 - @wabbit/tome-blocks-content-writer@0.4.2 - @wabbit/tome-blocks-editorial-pack@0.4.2 - @wabbit/tome-blocks-marketing-starter@0.4.2 - @wabbit/tome-blocks-sc-pack@0.4.2 - @wabbit/tome-blocks-signal-theme@0.4.2
- Updated dependencies - @wabbit/tome-blocks-extras@0.4.2 - @wabbit/tome-blocks-lms-pack@0.4.2 - @wabbit/tome-blocks-catalog-pack@0.4.2 - @wabbit/tome-blocks-core@0.4.2 - @wabbit/tome-blocks-agency-essentials@0.4.2 - @wabbit/tome-blocks-content-writer@0.4.2 - @wabbit/tome-blocks-editorial-pack@0.4.2 - @wabbit/tome-blocks-marketing-starter@0.4.2 - @wabbit/tome-blocks-sc-pack@0.4.2 - @wabbit/tome-blocks-signal-theme@0.4.2
Updated dependencies - @wabbit/tome-blocks-extras@0.4.1 - @wabbit/tome-blocks-agency-essentials@0.4.1 - @wabbit/tome-blocks-content-writer@0.4.1 - @wabbit/tome-blocks-core@0.4.0 - @wabbit/tome-blocks-editorial-pack@0.4.1 - @wabbit/tome-blocks-marketing-starter@0.4.1 - @wabbit/tome-blocks-sc-pack@0.4.1 - @wabbit/tome-blocks-signal-theme@0.4.1
- Updated dependencies - @wabbit/tome-blocks-extras@0.4.1 - @wabbit/tome-blocks-agency-essentials@0.4.1 - @wabbit/tome-blocks-content-writer@0.4.1 - @wabbit/tome-blocks-core@0.4.0 - @wabbit/tome-blocks-editorial-pack@0.4.1 - @wabbit/tome-blocks-marketing-starter@0.4.1 - @wabbit/tome-blocks-sc-pack@0.4.1 - @wabbit/tome-blocks-signal-theme@0.4.1
Updated dependencies [b76f684]
- Updated dependencies [b76f684]
- Updated dependencies [90a694d] - @wabbit/tome-blocks-core@0.4.0 - @wabbit/tome-blocks-extras@0.4.0 - @wabbit/tome-blocks-agency-essentials@0.4.0 - @wabbit/tome-blocks-catalog-pack@0.4.0 - @wabbit/tome-blocks-content-writer@0.4.0 - @wabbit/tome-blocks-editorial-pack@0.4.0 - @wabbit/tome-blocks-lms-pack@0.4.0 - @wabbit/tome-blocks-marketing-starter@0.4.0 - @wabbit/tome-blocks-sc-pack@0.4.0 - @wabbit/tome-blocks-signal-theme@0.4.0
f2202cd: Sprint 3 blocks split — v0.2.0 Extracted the Tome blocks monolith (@wabbit/tome-blocks) into independently publishable bundle packages. Each bundle is independently installable, tree-shakeable, and testable in isolation. **New packages (all v0.2.0):** - `@wabbit/tome-blocks-core` — registries, defineBlock/defineBundle, variants, thumbnails, admin components (BlockPicker, VariantPicker) - `@wabbit/tome-blocks-marketing-starter` (free) — 8 marketing blocks: Hero, FeatureHero, CTA, LogoSlider, Pricing, Testimonial, FAQ, Banner - `@wabbit/tome-blocks-content-writer` (free) — 10 editorial blocks: Blog, Archive, PostHero, RelatedPosts, EditorialOpener, EditorialBridge, EditorialSidenote, EditorialFigure, EditorialColophon, EditorialFootnotes - `@wabbit/tome-blocks-agency-essentials` (starter) — 10 agency blocks: About, Contact/Form, Gallery, Media, SplitView, Stat, StatBar, TeamRoster, Timeline - `@wabbit/tome-blocks-editorial-pack` (pro) — 8 editorial blocks: DataHero, Feature, InfoPanel, MessagePanel, MetricStrip, SplitPanel, StatusBoard, TextReveal - `@wabbit/tome-blocks-signal-theme` (pro) — 33 Signal narrative blocks - `@wabbit/tome-blocks-lms-pack` (pro) — scaffold for LMS blocks (Wave 3) - `@wabbit/tome-blocks-catalog-pack` (pro) — scaffold for catalog/ecommerce blocks (Wave 3) - `@wabbit/tome-blocks-sc-pack` (niche) — scaffold for Star Citizen blocks (Wave 3) - `@wabbit/tome-blocks-extras` (pro) — 47 residual blocks (heroes, layout, content, marketing) **@wabbit/tome-blocks is now a meta-package** that re-exports all bundle packages and provides `registerAll(blockRegistry, bundleRegistry)` as a convenience function. **Render colocation:** All 113 render `.tsx` components migrated from the monolith into their owning bundle packages (`./render` subpath on each bundle). **Breaking changes (internal):** - `@wabbit/tome-blocks/blocks` and `@wabbit/tome-blocks/bundles` subpaths removed (were Sprint 2 shims) - `packages/blocks/src/render/` category index files removed (replaced by per-bundle `./render` subpaths) **Migration:** ```ts // Before (monolith singleton, all blocks loaded) import "@wabbit/tome-blocks"; // After (explicit registration, tree-shakeable) import { blockRegistry, bundleRegistry, } from "@wabbit/tome-blocks-core/registry"; import { register } from "@wabbit/tome-blocks-marketing-starter"; register(blockRegistry, bundleRegistry); // Or use the meta-package convenience function import { blockRegistry, bundleRegistry, registerAll, } from "@wabbit/tome-blocks"; registerAll(blockRegistry, bundleRegistry); ```
- f2202cd: Sprint 3 blocks split — v0.2.0 Extracted the Tome blocks monolith (@wabbit/tome-blocks) into independently publishable bundle packages. Each bundle is independently installable, tree-shakeable, and testable in isolation. **New packages (all v0.2.0):** - `@wabbit/tome-blocks-core` — registries, defineBlock/defineBundle, variants, thumbnails, admin components (BlockPicker, VariantPicker) - `@wabbit/tome-blocks-marketing-starter` (free) — 8 marketing blocks: Hero, FeatureHero, CTA, LogoSlider, Pricing, Testimonial, FAQ, Banner - `@wabbit/tome-blocks-content-writer` (free) — 10 editorial blocks: Blog, Archive, PostHero, RelatedPosts, EditorialOpener, EditorialBridge, EditorialSidenote, EditorialFigure, EditorialColophon, EditorialFootnotes - `@wabbit/tome-blocks-agency-essentials` (starter) — 10 agency blocks: About, Contact/Form, Gallery, Media, SplitView, Stat, StatBar, TeamRoster, Timeline - `@wabbit/tome-blocks-editorial-pack` (pro) — 8 editorial blocks: DataHero, Feature, InfoPanel, MessagePanel, MetricStrip, SplitPanel, StatusBoard, TextReveal - `@wabbit/tome-blocks-signal-theme` (pro) — 33 Signal narrative blocks - `@wabbit/tome-blocks-lms-pack` (pro) — scaffold for LMS blocks (Wave 3) - `@wabbit/tome-blocks-catalog-pack` (pro) — scaffold for catalog/ecommerce blocks (Wave 3) - `@wabbit/tome-blocks-sc-pack` (niche) — scaffold for Star Citizen blocks (Wave 3) - `@wabbit/tome-blocks-extras` (pro) — 47 residual blocks (heroes, layout, content, marketing) **@wabbit/tome-blocks is now a meta-package** that re-exports all bundle packages and provides `registerAll(blockRegistry, bundleRegistry)` as a convenience function. **Render colocation:** All 113 render `.tsx` components migrated from the monolith into their owning bundle packages (`./render` subpath on each bundle). **Breaking changes (internal):** - `@wabbit/tome-blocks/blocks` and `@wabbit/tome-blocks/bundles` subpaths removed (were Sprint 2 shims) - `packages/blocks/src/render/` category index files removed (replaced by per-bundle `./render` subpaths) **Migration:** ```ts // Before (monolith singleton, all blocks loaded) import "@wabbit/tome-blocks"; // After (explicit registration, tree-shakeable) import { blockRegistry, bundleRegistry, } from "@wabbit/tome-blocks-core/registry"; import { register } from "@wabbit/tome-blocks-marketing-starter"; register(blockRegistry, bundleRegistry); // Or use the meta-package convenience function import { blockRegistry, bundleRegistry, registerAll, } from "@wabbit/tome-blocks"; registerAll(blockRegistry, bundleRegistry); ```
- Updated dependencies [f2202cd] - @wabbit/tome-blocks-core@0.3.0 - @wabbit/tome-blocks-marketing-starter@0.3.0 - @wabbit/tome-blocks-content-writer@0.3.0 - @wabbit/tome-blocks-agency-essentials@0.3.0 - @wabbit/tome-blocks-editorial-pack@0.3.0 - @wabbit/tome-blocks-signal-theme@0.3.0 - @wabbit/tome-blocks-lms-pack@0.3.0 - @wabbit/tome-blocks-catalog-pack@0.3.0 - @wabbit/tome-blocks-sc-pack@0.3.0 - @wabbit/tome-blocks-extras@0.3.0