diff --git a/.changeset/subscribe-surface-errors.md b/.changeset/subscribe-surface-errors.md deleted file mode 100644 index 43be6c7..0000000 --- a/.changeset/subscribe-surface-errors.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@effex/dom": patch ---- - -Surface reconcile-subscription failures via `console.error`. Every `ControlCtx` (`ClientControlCtx`, both `HydrationControlCtx` factories) implemented `subscribe(readable, handler)` by forking the stream reader into the parent scope. That's the right lifecycle model, but `Effect.forkIn` swallows fiber failures — if the handler ever threw (a route render errored, a data provider died mid-nav, a slot insertion blew up), the fiber died silently and the UI froze with no console output. - -Now every subscription goes through a shared `subscribeReconcile` helper that: - -1. Logs each failing handler run to `console.error` with a full Effect `Cause.pretty` (fiber trace + underlying errors) so devtools and error trackers pick it up. -2. Catches the failure at the per-value boundary so a single bad update doesn't kill the subscription — subsequent state changes still fire the handler. Navigating away from a broken route and back now recovers. - -Practical impact: `Outlet` navigation errors (route render throws, data-provider rejects, guard errors) now surface immediately at the source instead of appearing as an unresponsive Outlet. diff --git a/apps/docs/CHANGELOG.md b/apps/docs/CHANGELOG.md index 151c3fe..c4b7d2b 100644 --- a/apps/docs/CHANGELOG.md +++ b/apps/docs/CHANGELOG.md @@ -1,5 +1,13 @@ # docs +## 0.0.19 + +### Patch Changes + +- Updated dependencies [4f1f4fe] + - @effex/dom@1.3.2 + - @effex/router@1.2.7 + ## 0.0.18 ### Patch Changes diff --git a/apps/docs/package.json b/apps/docs/package.json index f299a86..9af35b1 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -1,6 +1,6 @@ { "name": "docs", - "version": "0.0.18", + "version": "0.0.19", "private": true, "type": "module", "scripts": { diff --git a/packages/dom/CHANGELOG.md b/packages/dom/CHANGELOG.md index f1cc8e4..7a2d8e3 100644 --- a/packages/dom/CHANGELOG.md +++ b/packages/dom/CHANGELOG.md @@ -1,5 +1,17 @@ # @effex/dom +## 1.3.2 + +### Patch Changes + +- 4f1f4fe: Surface reconcile-subscription failures via `console.error`. Every `ControlCtx` (`ClientControlCtx`, both `HydrationControlCtx` factories) implemented `subscribe(readable, handler)` by forking the stream reader into the parent scope. That's the right lifecycle model, but `Effect.forkIn` swallows fiber failures — if the handler ever threw (a route render errored, a data provider died mid-nav, a slot insertion blew up), the fiber died silently and the UI froze with no console output. + + Now every subscription goes through a shared `subscribeReconcile` helper that: + 1. Logs each failing handler run to `console.error` with a full Effect `Cause.pretty` (fiber trace + underlying errors) so devtools and error trackers pick it up. + 2. Catches the failure at the per-value boundary so a single bad update doesn't kill the subscription — subsequent state changes still fire the handler. Navigating away from a broken route and back now recovers. + + Practical impact: `Outlet` navigation errors (route render throws, data-provider rejects, guard errors) now surface immediately at the source instead of appearing as an unresponsive Outlet. + ## 1.3.1 ### Patch Changes diff --git a/packages/dom/package.json b/packages/dom/package.json index aefd98c..0496495 100644 --- a/packages/dom/package.json +++ b/packages/dom/package.json @@ -1,6 +1,6 @@ { "name": "@effex/dom", - "version": "1.3.1", + "version": "1.3.2", "description": "DOM rendering for Effex - a reactive UI framework built on Effect.ts", "type": "module", "license": "MIT", diff --git a/packages/router/CHANGELOG.md b/packages/router/CHANGELOG.md index 0fe2188..bbd09da 100644 --- a/packages/router/CHANGELOG.md +++ b/packages/router/CHANGELOG.md @@ -1,5 +1,12 @@ # @effex/router +## 1.2.7 + +### Patch Changes + +- Updated dependencies [4f1f4fe] + - @effex/dom@1.3.2 + ## 1.2.6 ### Patch Changes diff --git a/packages/router/package.json b/packages/router/package.json index a831f5e..543bb8d 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -1,6 +1,6 @@ { "name": "@effex/router", - "version": "1.2.6", + "version": "1.2.7", "description": "Router for Effex applications", "type": "module", "license": "MIT",