chore: release core 0.7.47, server 0.8.59, cli 0.10.51 and five more - #1302
Merged
Conversation
Every tracked package carries unreleased work, so this clears the whole backlog rather than a slice of it: core, server, cli, mcp, ui, intellisense, and the two editor packages that ship outside npm. The headline is the bound-form write path (#1155, #1207). A form now binds its action directly, `<form action=${importedAction}>`, with `formaction=${importedAction}` on a submitter when one form's buttons run different actions. It works with JS off, and the renderers refuse every near-miss rather than emitting a form that posts nowhere. Two breaking changes ride along, both of them closing a hole rather than moving an API. The server HTML cache is now keyed by origin, because a page opting in with `export const revalidate` could be poisoned through `X-Forwarded-Host` (#1237), and `WEBJS_NO_TRUST_PROXY=1` now overrides `rateLimit({ trustProxy: true })` so the kill switch means one thing across the package (#1272). A third, in `@webjsdev/ui`, drops the framework detection the package could never honour (#1235). Also raises packages/server's declared `@webjsdev/core` range from ^0.7.46 to ^0.7.47. dev.js and the action dispatcher now import FORM_ACTION_FIELD, FORM_ACTION_ID_KEY, and setFormActionResolver statically, and no published core before 0.7.47 carries them, so the old range would let npm install a pair that dies at module load. The release PR is the only place that bump is legal. The generated notes were curated before committing: the two breaking entries carry hand-written migration notes, the form-binding epic's review commits are folded into the feature they hardened, the ui file is trimmed to the published surface (its nested website sub-app is not shipped), and test-harness and repo-hygiene commits are dropped.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Clears the whole release backlog. Every tracked package carries unreleased
user-facing work, so this ships all eight rather than a slice.
@webjsdev/core@webjsdev/server@webjsdev/cli@webjsdev/mcp@webjsdev/ui@webjsdev/intellisensewebjs(VS Code)npm: falsewebjs.nvimnpm: falseThe headline
The bound-form write path (#1155, #1207). A form binds its action directly,
<form action=${importedAction}>, withformaction=${importedAction}on asubmitter when one form's buttons run different actions. It works with JS off,
and with JS the client router posts the same body to the same url and applies
the response in place. Every near-miss throws rather than emitting a form that
posts nowhere. This replaces the page
actionexport.Three breaking changes
Each closes a hole rather than moving an API, and each carries a migration note
in its changelog entry.
export const revalidatecould be poisoned throughX-Forwarded-Host, whichneither Cloudflare nor Railway strips. Callers of
revalidatePathfrom abackground job that serves no request of its own must now pass an absolute
url.
WEBJS_NO_TRUST_PROXY=1overridesrateLimit({ trustProxy: true })(fix!: make WEBJS_NO_TRUST_PROXY override rateLimit trustProxy #1272).
clientIpwas the one forwarded-header reader the kill switch didnot reach. An app setting both now buckets every visitor behind the proxy
onto one key, which was always a misconfiguration and is now a visible one.
@webjsdev/uidrops project detection (feat!: scope @webjsdev/ui to WebJs apps, drop project detection #1235).detectProjectanddefaultsForProjectare removed from the published@webjsdev/ui/utilsspecifier with no shim.
Publish ordering and the core range
packages/server's declared@webjsdev/corerange moves from^0.7.46to^0.7.47.dev.jsand the action dispatcher now importFORM_ACTION_FIELD,FORM_ACTION_ID_KEY, andsetFormActionResolverstatically, and no publishedcore before 0.7.47 carries them, so the old range would let npm install a pair
that dies at module load. The release PR is the only place that bump is legal.
changelog/core/0.7.47.mdholds the earliestdate:of the batch, so thepublish loop ships core first and a failure there stops everything after it.
Curation
The generated notes were edited before committing, per the flow in
framework-dev.md:notes; the generator only excerpts the first lines of a commit message.
hardened rather than listed as eleven separate entries.
changelog/ui/0.3.11.mdis trimmed to the published surface. The generatorattributes commits from the nested
packages/ui/packages/websitesub-app,which is not published;
commit_countis corrected to match.fixture, the dist symlink removal) are dropped from the public notes.
Verification
test/packaging/changelog-editor-packages.test.mjsand the four releaserepo-health suites: 36 pass.
packages/editors/nvim/test/vendor-sync.test.mjs: 3 pass. The intellisensebump was re-vendored in the same commit, as that guard requires.
websiteserver suite (which renders/changelog): 443 pass. Browser suite:84 pass.