🚀 Release Addon Bone v0.11.0 (2026-09-13)
💥 Breaking Changes
-
Runtime view titles, command descriptions, and titles
applied by changePopup/changeSidebar are now passed through unchanged.
Call resolve explicitly when translating locale markers is required.
Build-time localization of manifest fields is unchanged. -
Remove React LocaleProvider, LocaleProviderProps and
LocaleContract. Use useLocale or useNativeLocale, and apply DOM attributes
explicitly with useLocaleAttributes. -
Rename provider languages()/languageNames() to langs()/langNames().
React langs now contains language codes; display names are in langNames.
useLocale().change() now returns Promise. -
React adapters require React 18 or 19. React peers are now optional.
✨ Features
-
content: add shadow DOM support (1721c92)
-
content: consolidate isolation options and support closed roots (68972af)
Normalize shorthand and object isolation options for content scripts and Relay.
Keep Shadow mode, iframe navigation, and dimensions under the isolation contract.Move static value resolution and default-export analysis into file readers.
Validate normalized options with explicit Zod schemas while preserving enum
injection and runtime boundaries.Update lifecycle, browser, watch, and parser tests alongside isolation documentation
and repository conventions. -
content: unify shadow and iframe isolation (e40b617)
Support isolation modes and frame page/src navigation for content scripts
and Relay. Route opt-in isolation CSS separately from document styles,
retain lazy loading, and expose resources without background dependencies.Render into ShadowRoot or iframe targets, recover blank iframe documents
after host moves, and release stale CSS waits before teardown. Register
fonts through CSS and remove the branch's experimental shadow/fonts API.Separate shared validation, feature policy, bundler integration and runtime
nodes. Cover parser contracts, access rules, watch transitions, asset names,
CSS errors/retries and browser behavior with unit and integration fixtures. -
entrypoint: expose asset maps and support content chunk loading (d4730b2)
Add per-entry asset metadata and a background-only full asset map.
Respect output filename templates and isolate content chunk graphs by world.
Normalize MV2 content scripts to ISOLATED with a build warning.Add Chrome and Firefox integration coverage and reorganize fixtures.
Document project naming conventions, including class test filenames. -
locale: generate a shared virtual catalogue (74b5c26)
Generate native locale JSON and virtual/locale from cached, validated
messages. Add a reusable module generation plugin with watch updates and
share the catalogue when used twice or when it reaches 100 KB, while
keeping background self-contained.Cover catalogue equivalence, module isolation, watch updates, chunk
boundaries and browser delivery with integration fixtures.Known limitation: Chrome deduplicates a shared content script path across
MAIN and ISOLATED worlds. The mixed-world browser test still fails; this
commit records the agreed first stage without changing script delivery. -
locale: replace the React provider with locale hooks (f9d4436)
Share dynamic state through ObservableLocale and expose native and dynamic
React adapters with typed JSX substitutions and explicit DOM attributes. -
locale: support custom storage drivers (b711e70)
-
locale: use bundled translations in DynamicLocale (17e2ef4)
🐛 Bug Fixed
-
build: correct watch updates and virtual module imports (f5701c6)
Normalize watched entry paths, retain runtime-only JavaScript chunks in
asset validation, and share chunk filename resolution below plugin owners.
Resolve the virtual entrypoint source alias to its emitted ESM path during
bundling instead of encoding output extensions in TypeScript imports. -
build: exclude tests from distribution (04cbd6f)
-
bundler: embed entrypoint asset maps only for consumers (5185bbb)
-
bundler: stabilize generated modules and watch updates (921466f)
-
locale: refresh generated translations reliably in watch mode (5160519)
-
locale: use build language when browser i18n is unavailable (a1479ca)
-
types: include tests in the editor project (3b60f5e)
📝 Documentation
-
document isolation behavior and architecture conventions (f4fe39e)
Document isolation modes, CSS routing, font delivery, iframe recovery and
browser validation fixtures. Record responsibility boundaries, shared
contract ownership and source import conventions in AGENTS.md.Leave CHANGELOG.md generation to the publication workflow.
-
improve formatting and clarity in contribution and policy documents (77f8b2b)
🤖 CI
- release: prepare protected main automation (c839497)
🧩 Other
-
Improve code readability and consistency: (9473e5e)
- Add
holdsmethod toentrypoint.tsinterface for file existence checks. - Update
.toSortedusage inAbstractFinderfor array sorting. - Apply consistent formatting with
prettier-ignorein various files. - Minor refactor of
AbstractEntrypointFinderregex patterns for clarity.
- Add
-
organize package fields and frame type imports (166b48d)
🧪 Tests
-
browser: allow stable browser versions (3231ece)
-
browser: close speculative connections during teardown (e63c60b)
-
entrypoint: make virtual path assertion cross-platform (f2af015)
-
fix Windows watch fixture updates (e1ad886)
-
locale: fix Windows CI fixtures and output paths (478e3cd)
-
remove obsolete assertions and normalize fixture names (d8d8202)
Remove guards for discarded owner runtime implementations and replace
Plan A fixture filenames and suite labels with neutral entrypoint names.
Keep assertions for current placeholders and background independence.
🧹 Chores
- test: remove duplicate type checking (d613c0f)
🛠️ Refactoring
-
bundler: organize plugins by directory (6bdd6d2)
-
bundler: remove unused runtime data plugin (12719cf)
-
cli: improve EntrypointMetaPlugin for better asset handling and modularity (d4886cb)
-
deliver page and relay data through virtual modules (36eb139)
-
locale: centralize shared translation helpers (20016ca)
-
locale: make runtime translation explicit (36032ff)
Remove implicit locale resolution from view and command entrypoint
wrappers and from changePopup/changeSidebar. Keep resolve available
through the public locale entrypoint for explicit use. -
locale: move generated types to LocaleRegistry (e7b49ad)
-
manifest: normalize resource handling and validation (5319ef7)
Separate manifest utilities by responsibility and normalize merged WAR and
host permission rules. Add compilation-scoped preparation and validation
hooks with a generic resource access validator, and rebuild manifest state
for each watch compilation. -
relay: enhance permission handling and improve type definitions (4dd021a)
- Refactored permission handling logic for
RelayPermissionto improve clarity and maintainability. - Updated type definitions for
declarativefield to supportContentScriptDeclarativeenum. - Improved code formatting and consistent conditional handling across relay components.
- Added return types to private methods for better type inference.
- Refactored permission handling logic for
-
runtime: centralize page and relay metadata (e3777f2)
Embed serialized metadata with RuntimeDataPlugin and keep property contracts
and augmentable Page/Relay registries in the shared type layer. Preserve
public exports and generated declarations, refresh Relay data in watch,
and substitute runtime template values once without reinterpreting data. -
unify entrypoint virtual data and shared contracts (af251c5)
Deliver popup, sidebar, offscreen, sandbox and icon data through
generated virtual modules with package fallbacks.Move augmentable registries and related contracts into src/types.
Preserve public augmentation and generate popup/sidebar/icon registries.
Order shared declarations and document empty contracts.Add build coverage for data delivery and tree shaking, plus source
and package contract checks in tests/integration/types.
🙌 Contributors
- Anjey Tsibylskij (@atldays) — commits: 38
- Addon Stack — commits: 5