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
14 changes: 0 additions & 14 deletions .changeset/nesting-validation-warnings.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/platform-pin-core.md

This file was deleted.

11 changes: 0 additions & 11 deletions .changeset/static-data-provider-fallback.md

This file was deleted.

11 changes: 11 additions & 0 deletions apps/docs/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
# docs

## 0.0.18

### Patch Changes

- Updated dependencies [8b07d3d]
- Updated dependencies [bed39a9]
- Updated dependencies [9ba649c]
- @effex/dom@1.3.1
- @effex/platform@1.2.2
- @effex/router@1.2.6

## 0.0.17

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "docs",
"version": "0.0.17",
"version": "0.0.18",
"private": true,
"type": "module",
"scripts": {
Expand Down
14 changes: 14 additions & 0 deletions packages/dom/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# @effex/dom

## 1.3.1

### Patch Changes

- 8b07d3d: Warn on invalid HTML nesting during rendering. Certain parent/child pairs (`<p>` in `<p>`, block-level content in `<p>`, nested anchors, interactive content in `<button>`, nested forms) get silently normalized by the browser's HTML parser — the live DOM ends up different from what SSR emitted, and hydration reports a confusing "Expected `<X>` but not found in `<Y>`" mismatch far from the actual cause.

The renderers (`DOMRenderer`, SSR `StringRenderer`) now check each parent/child pair at `appendChild` time and emit a targeted `console.warn` once per pair per process explaining what the browser will do to the tree. Small runtime cost (a set lookup + string check), catches this class of bug at its source instead of downstream at hydration.

Covered nestings:
- `<p>` inside `<p>` and all block-level tags inside `<p>` (`div`, `section`, `ul`, `form`, `h1`-`h6`, `table`, …)
- `<a>` inside `<a>`
- Interactive elements inside `<button>` (`a`, `input`, `select`, `textarea`, …)
- `<form>` inside `<form>`

## 1.3.0

### Minor Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/dom/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@effex/dom",
"version": "1.3.0",
"version": "1.3.1",
"description": "DOM rendering for Effex - a reactive UI framework built on Effect.ts",
"type": "module",
"license": "MIT",
Expand Down
22 changes: 22 additions & 0 deletions packages/platform/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# @effex/platform

## 1.2.2

### Patch Changes

- bed39a9: Pin `@effex/core` exactly instead of via a caret range. `@effex/platform`'s source used `"@effex/core": "workspace:^"`, which publishes as `^X.Y.Z` — a range. `@effex/dom`, `@effex/router`, and `@effex/form` all use `"workspace:*"` which publishes as the exact current version. The mismatch meant projects installing both `@effex/dom` and `@effex/platform` could end up with two different `@effex/core` copies in `node_modules` when pnpm couldn't hoist to a single satisfying version — and two copies means Effect Context tags (Signal, Readable, ControlCtx, etc.) declared in one copy don't unify with the other, so cross-package interactions break silently.

Switched to `"workspace:*"`. Now every core bump forces a platform patch bump, which was already the effective behaviour for the other packages, and every published `@effex/platform` will pin the exact `@effex/core` version it was published against — no ambiguity for pnpm to resolve.

Peer deps on `@effex/dom` and `@effex/router` stay on `workspace:^` — those are peers that the user installs and semver ranges are appropriate.

- 9ba649c: Fix client-side navigation on SSG (static-file-hosted) sites. `makeClientLayer`'s data provider used to unconditionally `fetch(<path>?_data=1)` then `response.json()`, which works with the SSR HTTP handler (that URL returns JSON) but breaks on any static host — static file servers ignore the query string and return the target page's HTML shell. `response.json()` then threw, `Effect.orDie` killed the fiber silently, and the Outlet went blank while the URL updated (no error surfaced in the console).

Now the provider inspects the response's Content-Type. On `application/json` it parses as before. On anything else it treats the response as HTML, extracts the `window.__EFFEX_DATA__` blob that `generateDocument` embeds in every SSG'd page, and returns that. The escapes emitted by `serializeForHtml` (`<`, `>`, `&`) are JSON-safe, so `JSON.parse` on the extracted string round-trips cleanly.

No config change required — SSG projects using `Platform.makeClientLayer(router)` should just start navigating correctly after upgrading.

Also: added `console.error` logging before the provider's `Effect.orDie` guard so a genuinely failed fetch (network error, malformed response, etc.) surfaces in the browser console instead of dying silently. If the HTML fallback runs but no `__EFFEX_DATA__` blob is present, that's logged as a `console.warn` — non-fatal but useful for catching broken builds.

- Updated dependencies [8b07d3d]
- @effex/dom@1.3.1
- @effex/router@1.2.6

## 1.2.1

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/platform/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@effex/platform",
"version": "1.2.1",
"version": "1.2.2",
"description": "Full-stack meta-framework for Effex applications",
"type": "module",
"license": "MIT",
Expand Down
7 changes: 7 additions & 0 deletions packages/router/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# @effex/router

## 1.2.6

### Patch Changes

- Updated dependencies [8b07d3d]
- @effex/dom@1.3.1

## 1.2.5

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/router/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@effex/router",
"version": "1.2.5",
"version": "1.2.6",
"description": "Router for Effex applications",
"type": "module",
"license": "MIT",
Expand Down
Loading