fix(ui-website): align @webjskit/* deps to workspace versions#35
Merged
Conversation
ui-website pinned `@webjskit/server: ^0.5.2`, `@webjskit/core: ^0.4.1`, `@webjskit/cli: ^0.5.2` while the monorepo workspaces are at 0.6.0, 0.5.0, 0.6.0. npm therefore installed published 0.5.x tarballs into packages/ui/node_modules/@webjskit/* and skipped the workspace symlink (caret on 0.x is patch-only, so ^0.5.2 excludes 0.6.0). Production ran the published 0.5.2 server, whose TypeScript path is esbuild-only and has the multi-class declaration transform that collapses every <ui-dialog-*> sub-element into UiDialog's render() shell (the bug Node-24 native strip-types was meant to fix).
0bf7d4d to
4efacf4
Compare
vivek7405
added a commit
that referenced
this pull request
May 20, 2026
* release: bump core/server/cli/ui for lit-API parity + Tier-2 rewrite
@webjskit/core 0.5.0 -> 0.6.0 (lit-API parity, ReactiveController hooks,
full lifecycle, lit-html directives, SSR
property bindings)
@webjskit/server 0.6.0 -> 0.7.0 (split .server.ts source-protection from
'use server' RPC marker, WEBJS_PUBLIC_*
browser env, new lint rules)
@webjskit/cli 0.6.0 -> 0.7.0 (inter-package dep ranges updated)
@webjskit/ui stays at 0.2.0 (Tier-2 components rewritten on
WebComponent + render() + <slot>;
bumped locally already, never published)
Inter-package dep ranges:
server -> core: ^0.5.0 -> ^0.6.0
cli -> server: ^0.6.0 -> ^0.7.0
cli -> ui: "0.1.0" (pinned) -> ^0.2.0
Downstream consumer manifests (website, docs, examples/blog,
packages/ui/packages/website) bumped to the new ranges so workspace
resolution keeps the local sources linked instead of pulling stale
tarballs from the registry (the failure mode that broke ui.webjs.dev
in #35).
* docs(scaffold): inline lit muscle-memory gotchas
Scaffolded apps don't receive the framework's agent-docs/ folder, so a
URL pointer would leave AI agents working in a scaffolded app a fetch
away from the catalog of lit patterns that break in webjs.
Add a condensed gotchas section to the scaffold AGENTS.md inline:
the per-behavior-opt-in mental model (contrasting webjs against lit's
per-component hydration), and a 9-row quick-reference table covering
the failure modes (broken SSR, silent reactivity, styling, lifecycle
hooks that don't run server-side). The full annotated catalog with
code examples still lives in the framework repo and is linked from
the section.
Placed right after the Component pattern section so agents read it
when they're already in component-authoring context, before reaching
for lit idioms.
3 tasks
vivek7405
added a commit
that referenced
this pull request
May 21, 2026
Three packages have user-facing changes accumulated since their last bump: - @webjskit/core 0.6.0 -> 0.7.0 Breaking: signals replace this.state / setState across the stack (#43). Slot projection cycle fix in light DOM (#44). - @webjskit/cli 0.7.0 -> 0.8.0 Scaffold templates updated for the signals migration (#43); a newly-scaffolded app now ships signal-based state out of the box and the scaffold tests assert the new shape. - @webjskit/ui 0.2.0 -> 0.3.0 Env-driven sibling URLs with localhost dev fallbacks (#42), workspace dep alignment (#35), signal migration in the registry components and ui-website (#43), and the responsive mobile menu / changelog page that landed alongside the changelog system (#49). Cross-package dependency ranges in website, docs, examples/blog, ui-website, server, and cli updated to track the new versions (^0.6.0 -> ^0.7.0 for core, ^0.7.0 -> ^0.8.0 for cli, ^0.2.0 -> ^0.3.0 for ui). package-lock.json regenerated. After this lands on main, the Auto-release workflow will publish all three to npm and create matching GitHub Releases.
vivek7405
added a commit
that referenced
this pull request
May 21, 2026
ui-website pinned `@webjskit/server: ^0.5.2`, `@webjskit/core: ^0.4.1`, `@webjskit/cli: ^0.5.2` while the monorepo workspaces are at 0.6.0, 0.5.0, 0.6.0. npm therefore installed published 0.5.x tarballs into packages/ui/node_modules/@webjskit/* and skipped the workspace symlink (caret on 0.x is patch-only, so ^0.5.2 excludes 0.6.0). Production ran the published 0.5.2 server, whose TypeScript path is esbuild-only and has the multi-class declaration transform that collapses every <ui-dialog-*> sub-element into UiDialog's render() shell (the bug Node-24 native strip-types was meant to fix).
vivek7405
added a commit
that referenced
this pull request
May 21, 2026
* release: bump core/server/cli/ui for lit-API parity + Tier-2 rewrite
@webjskit/core 0.5.0 -> 0.6.0 (lit-API parity, ReactiveController hooks,
full lifecycle, lit-html directives, SSR
property bindings)
@webjskit/server 0.6.0 -> 0.7.0 (split .server.ts source-protection from
'use server' RPC marker, WEBJS_PUBLIC_*
browser env, new lint rules)
@webjskit/cli 0.6.0 -> 0.7.0 (inter-package dep ranges updated)
@webjskit/ui stays at 0.2.0 (Tier-2 components rewritten on
WebComponent + render() + <slot>;
bumped locally already, never published)
Inter-package dep ranges:
server -> core: ^0.5.0 -> ^0.6.0
cli -> server: ^0.6.0 -> ^0.7.0
cli -> ui: "0.1.0" (pinned) -> ^0.2.0
Downstream consumer manifests (website, docs, examples/blog,
packages/ui/packages/website) bumped to the new ranges so workspace
resolution keeps the local sources linked instead of pulling stale
tarballs from the registry (the failure mode that broke ui.webjs.dev
in #35).
* docs(scaffold): inline lit muscle-memory gotchas
Scaffolded apps don't receive the framework's agent-docs/ folder, so a
URL pointer would leave AI agents working in a scaffolded app a fetch
away from the catalog of lit patterns that break in webjs.
Add a condensed gotchas section to the scaffold AGENTS.md inline:
the per-behavior-opt-in mental model (contrasting webjs against lit's
per-component hydration), and a 9-row quick-reference table covering
the failure modes (broken SSR, silent reactivity, styling, lifecycle
hooks that don't run server-side). The full annotated catalog with
code examples still lives in the framework repo and is linked from
the section.
Placed right after the Component pattern section so agents read it
when they're already in component-authoring context, before reaching
for lit idioms.
vivek7405
added a commit
that referenced
this pull request
May 21, 2026
Three packages have user-facing changes accumulated since their last bump: - @webjskit/core 0.6.0 -> 0.7.0 Breaking: signals replace this.state / setState across the stack (#43). Slot projection cycle fix in light DOM (#44). - @webjskit/cli 0.7.0 -> 0.8.0 Scaffold templates updated for the signals migration (#43); a newly-scaffolded app now ships signal-based state out of the box and the scaffold tests assert the new shape. - @webjskit/ui 0.2.0 -> 0.3.0 Env-driven sibling URLs with localhost dev fallbacks (#42), workspace dep alignment (#35), signal migration in the registry components and ui-website (#43), and the responsive mobile menu / changelog page that landed alongside the changelog system (#49). Cross-package dependency ranges in website, docs, examples/blog, ui-website, server, and cli updated to track the new versions (^0.6.0 -> ^0.7.0 for core, ^0.7.0 -> ^0.8.0 for cli, ^0.2.0 -> ^0.3.0 for ui). package-lock.json regenerated. After this lands on main, the Auto-release workflow will publish all three to npm and create matching GitHub Releases.
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.
Root cause
packages/ui/packages/website/package.jsonpinned old framework versions:The workspaces are at
0.6.0,0.5.0,0.6.0. Caret on a 0.x version is patch-only (^0.5.2means>=0.5.2 <0.6.0), so the workspace did not satisfy the range. npm installed published tarballs from the registry intopackages/ui/node_modules/@webjskit/*and skipped the workspace symlink.Production therefore ran the published
@webjskit/server@0.5.2, whose TypeScript serving path is esbuild-only. esbuild's multi-class declaration transform has a known bug where every<ui-dialog-*>sub-tag rendered with UiDialog's shell (data-slot="dialog" data-state="closed") instead of its own. The local fix (Node 24+ nativemodule.stripTypeScriptTypesfirst, esbuild fallback only onERR_UNSUPPORTED_TYPESCRIPT_SYNTAX) shipped in@webjskit/server@0.6.0but the website never picked it up.What changed
Bumped the three ranges to the current workspace versions so npm links the local workspace instead of pulling stale tarballs.
package-lock.jsonregenerated to droppackages/ui/node_modules/@webjskit/{cli,core,server}.Verification
Local
npm startin the website now serves/components/ui/dialog.tsat 13780 bytes with nosourceMappingURL(native strip-types output, position-preserving whitespace replacement) instead of the previous 31748 bytes of esbuild output. SSR for<ui-dialog>now renders each sub-element with its own shell.Test plan
npm installresolves@webjskit/serverto the workspace, not the registry tarballnpm startservesdialog.tsvia strip-types (no sourceMappingURL)/docs/components/dialogshowsdata-slot="dialog-trigger",dialog-native,dialog-close(each sub-element renders its own shell)