From d87c0379f658721c877a10b212095c5b0ee24217 Mon Sep 17 00:00:00 2001 From: Vivek Date: Tue, 21 Jul 2026 17:07:11 +0530 Subject: [PATCH] chore: release core 0.7.41, server 0.8.55 --- changelog/core/0.7.41.md | 17 +++++++++++++++++ changelog/server/0.8.55.md | 9 +++++++++ packages/core/package.json | 2 +- packages/server/package.json | 2 +- 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 changelog/core/0.7.41.md create mode 100644 changelog/server/0.8.55.md diff --git a/changelog/core/0.7.41.md b/changelog/core/0.7.41.md new file mode 100644 index 000000000..ce4e6732a --- /dev/null +++ b/changelog/core/0.7.41.md @@ -0,0 +1,17 @@ +--- +package: "@webjsdev/core" +version: 0.7.41 +date: 2026-07-21T11:37:11.859Z +commit_count: 2 +--- +## Breaking + +- **The WebJs-specific light-DOM slot API is removed in favour of the native DOM slot API** ([#1022](https://github.com/webjsdev/webjs/pull/1022)). `setSlotContent()`, `hasSlot()`, and the `this.slots` record no longer exist. Light DOM and shadow DOM now share one native surface: read slotted content with `assignedNodes()` / `assignedElements()` / `assignedSlot` / `slotchange`, and write it with `appendChild` / `insertBefore` / `removeChild` / `el.slot =` / `innerHTML`. Conditioning a `render()` on the slot record is gone. Use CSS `:has()` / `slot:empty` or a `slotchange` listener instead. + +## Features + +- **Full light-DOM slot parity with shadow DOM (native API, one writer)** ([#1022](https://github.com/webjsdev/webjs/pull/1022)) [`842f9f84`](https://github.com/webjsdev/webjs/commit/842f9f84). Light-DOM `` now behaves identically to shadow DOM: post-mount native writes are live, the full read surface matches, and flipping `static shadow` changes nothing else. Built on a single-writer record model that ends the pre-#1016 three-observer bug lineage. + +## Fixes + +- **Project forwarded-slot content and named-slot slices on the client** ([#1026](https://github.com/webjsdev/webjs/pull/1026)) [`4367b318`](https://github.com/webjsdev/webjs/commit/4367b318). A template that forwards its slot into a nested component (`html\`\``) now projects on client mount, not only during SSR (#1023), and a layout's `${children}` partitioned across multiple named slots now re-projects every named slice across a soft-nav swap, not just the default slice (#1024). diff --git a/changelog/server/0.8.55.md b/changelog/server/0.8.55.md new file mode 100644 index 000000000..1675b7581 --- /dev/null +++ b/changelog/server/0.8.55.md @@ -0,0 +1,9 @@ +--- +package: "@webjsdev/server" +version: 0.8.55 +date: 2026-07-21T11:37:11.908Z +commit_count: 1 +--- +## Features + +- **Elision tokens track the native light-DOM slot surface** ([#1022](https://github.com/webjsdev/webjs/pull/1022)) [`842f9f84`](https://github.com/webjsdev/webjs/commit/842f9f84). Component elision drops the removed `setSlotContent` / `hasSlot` client-method signals and narrows the dynamic-slot detector to the native read surface (`slotchange`, `assignedNodes` / `assignedElements` / `assignedSlot`), so a display-only slotted wrapper stays elidable while a component that genuinely reads its slots still ships. diff --git a/packages/core/package.json b/packages/core/package.json index cf4bfd88a..9e2fb4da8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@webjsdev/core", - "version": "0.7.40", + "version": "0.7.41", "type": "module", "description": "webjs core runtime - html/css tags, WebComponent base, isomorphic renderers", "types": "./index.d.ts", diff --git a/packages/server/package.json b/packages/server/package.json index 909da89b5..b0c05b0b9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@webjsdev/server", - "version": "0.8.54", + "version": "0.8.55", "type": "module", "description": "webjs dev/prod server: SSR, router, API, server actions, live reload", "main": "index.js",