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.
Get a free registry token from your credentials page. Every install from our registry needs one, free packages included.
Add the registry and your token to the
.npmrcat the root of your project, with your token in place ofYOUR_TOKEN:@wabbit:registry=https://npm.wabbit.com/ //npm.wabbit.com/:_authToken=YOUR_TOKENThen 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 [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