Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions changelog/core/0.7.45.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
package: "@webjsdev/core"
version: 0.7.45
date: 2026-07-26T17:42:19.247Z
commit_count: 1
---
## Fixes

- **a stale hover prefetch no longer degrades a click to a full page load** ([#1115](https://github.com/webjsdev/webjs/pull/1115)) [`f34fa5c9`](https://github.com/webjsdev/webjs/commit/f34fa5c9)

Clicking a link could intermittently reload the whole document instead of soft-navigating, showing a loading spinner in the browser tab and flashing the entire page including preserved layout chrome.

A prefetched fragment is a reduced response, anchored at the deepest layout boundary the server short-circuited on, and it can only be applied to a DOM that still offers that boundary. Prefetching any page under a layout while the client already holds that layout therefore yields a fragment that applies from a sibling page but nowhere outside the section. Two ordinary interactions left one cached at the wrong moment: a hover's intent timer resolving after the click it belonged to had already swapped, and a hover on a link that was never clicked before navigating away. Consuming such an entry left the router nothing to swap into, so it correctly degraded to a full page load.

The prefetch cache now validates a fragment's anchor against the live boundaries and discards it when the anchor is gone, costing one network round-trip instead of a document load. Validation runs against the boundaries captured before the optimistic loading skeleton clears them, so an app with a root-level `loading.{js,ts}` keeps a usable prefetch cache. The router also no longer prefetches the page it is already on, which never helped a later navigation and only occupied a capped cache slot.

- **client-router degradations are now observable in production** ([#1115](https://github.com/webjsdev/webjs/pull/1115)) [`f34fa5c9`](https://github.com/webjsdev/webjs/commit/f34fa5c9)

When a soft navigation is not safely possible the router degrades to a full page load, which is correct but was previously reported only by a development-mode console warning, leaving deployed apps with no signal at all. Every such path now dispatches a `webjs:navigation-fallback` event on `document` in all environments, with detail `{ cause, href, willReload }`. `willReload` is true only when a document load actually follows, so a listener can count real full loads without also counting the degradations that resolve in place (a dropped background revalidation, or a suppressed cross-deploy reload that proceeds on the stale importmap). The event is not cancelable, and a listener that throws cannot affect the navigation.
14 changes: 14 additions & 0 deletions changelog/nvim/0.2.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
package: "webjs.nvim"
version: 0.2.3
date: 2026-07-26T17:55:00.000Z
commit_count: 2
npm: false
---
## Fixes

- **the vendored `@webjsdev/intellisense` bundle reported the wrong version** ([#1117](https://github.com/webjsdev/webjs/pull/1117))

The plugin ships a committed copy of `@webjsdev/intellisense` rather than resolving it at install time. That copy still declared 0.5.1 in its own `package.json`, so the published plugin misreported which language-service version it carried. Re-vendored, so the shipped bundle and its stated version agree.

There is no change to the plugin's own Lua surface. The only other commit touching this package since 0.2.2 was a JSDoc brand-casing pass inside the vendored copy ([#855](https://github.com/webjsdev/webjs/pull/855)) [`f41d105b`](https://github.com/webjsdev/webjs/commit/f41d105b), with no behaviour change.
18 changes: 18 additions & 0 deletions changelog/vscode/0.2.3.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
package: "webjs (VS Code extension)"
version: 0.2.3
date: 2026-07-26T17:55:00.000Z
commit_count: 3
npm: false
---
## Fixes

- **the "open documentation" command points at the current docs host** ([#1101](https://github.com/webjsdev/webjs/pull/1101)) [`e07ea3a1`](https://github.com/webjsdev/webjs/commit/e07ea3a1)

The documentation moved from `docs.webjs.dev` onto the main domain, and the command shipped in the extension still opened the old host. This is the extension-side counterpart of the same fix released in `@webjsdev/core` 0.7.44.

- **brand casing corrected in the Marketplace listing** ([#851](https://github.com/webjsdev/webjs/pull/851)) [`28e5be9a`](https://github.com/webjsdev/webjs/commit/28e5be9a)

The extension README is packaged into the vsix and rendered as the Marketplace listing page, so this is the visible description text.

Also includes a JSDoc-only brand-casing pass over the extension source ([#855](https://github.com/webjsdev/webjs/pull/855)) [`f41d105b`](https://github.com/webjsdev/webjs/commit/f41d105b), with no behaviour change.
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@webjsdev/core",
"version": "0.7.44",
"version": "0.7.45",
"type": "module",
"description": "webjs core runtime - html/css tags, WebComponent base, isomorphic renderers",
"types": "./index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion packages/editors/nvim/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "webjs.nvim",
"version": "0.2.2",
"version": "0.2.3",
"private": true,
"description": "Neovim editor support for webjs apps (html/css/svg template highlighting + in-template intelligence via the bundled @webjsdev/intellisense). NOT an npm package: ships to the webjsdev/webjs.nvim git repo via subtree split, installed by lazy.nvim. This manifest exists only as the version source for the unified changelog (changelog/nvim/<version>.md); see PUBLISHING.md."
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions packages/editors/vscode/PUBLISHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,11 @@ dependencies.

## Releasing a version

1. Bump `version` in `packages/editors/vscode/package.json` (the pre-commit hook
skips this package's changelog, so no changelog file is generated).
1. Bump `version` in `packages/editors/vscode/package.json`. The pre-commit hook
TRACKS this package (#413), so the bump DOES require a `changelog/vscode/<version>.md`
and `scripts/backfill-changelog.js` generates one. The entry carries
`npm: false`, which makes every publish script skip it, so nothing is
published automatically: the `vsce` / `ovsx` steps below are still manual.
2. Build + package + publish to both registries:
```sh
cd packages/editors/vscode
Expand Down
2 changes: 1 addition & 1 deletion packages/editors/vscode/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "webjs",
"displayName": "webjs",
"version": "0.2.2",
"version": "0.2.3",
"description": "All-in-one webjs support: html/css template highlighting, language-service intelligence, snippets, and commands. No Lit extension required.",
"publisher": "webjsdev",
"private": true,
Expand Down
Loading