Repository navigation
fix: v3 compatibility integration reference - #2516
benpsnyder wants to merge 38 commits into
Conversation
✅ Deploy Preview for analog-app ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
✅ Deploy Preview for analog-blog ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe changes add abort-aware server-function calls, JSON request handling, injector cleanup, and native HTTP coverage. Nitro SSR now handles explicit streaming and SSR policies, build-entry discovery, request cancellation, client-shell removal, and stream lifecycle cleanup. Vite Angular updates Rolldown, HMR, error causes, and type contracts. Vitest configuration gains an Nx target and isolated cache. Node, Angular, Nx, Vite, Vitest, and related workspace versions are updated. Documentation and generator tests are revised. Estimated code review effort: 5 (Critical) | ~120 minutes Merge Risk: ⚪ Minimal · up to No concrete merge-blocking behavior is established; only additional Zone-path test coverage remains requested. 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
This PR touches multiple package scopes: Please confirm the changes are closely related. |
|
View your CI Pipeline Execution ↗ for commit ecf569d
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗ ☁️ Nx Cloud last updated this comment at |
There was a problem hiding this comment.
Important
At least one additional CI pipeline execution has run since the conclusion below was written and it may no longer be applicable.
Nx Cloud has identified a possible root cause for your failed CI:
This CI failure appears to be related to the environment or external dependencies rather than your code changes.
No code changes were suggested for this issue.
You can trigger a rerun by pushing an empty commit:
git commit --allow-empty -m "chore: trigger rerun"
git push
🎓 Learn more about Self-Healing CI on nx.dev
Align Angular 22.1, Nx 23.2, Vite 8.2.2, Rolldown 1.2.7, and Vitest 5. Retain older Vitest peers and declare the docs compiler dependency alongside its lockfile entry. Pin Node 24.15.0 through .node-version and the shared .nvmrc symlink, permit Node 26, and synchronize contributor prerequisites. Refs analogjs#2508 Co-Authored-By: Codex <noreply@openai.com>
Retain every configured root in both compilation paths and pass test mode separately from transformer ownership. Consume iterable compiler output, await active compilation before transforms, and mark HMR acceptance on the client environment module. Add focused regression coverage. Co-Authored-By: Codex <noreply@openai.com>
Expose the suite through an explicit Nx target with its build prerequisite. Use ESM configuration and the Vite cache directory, retain extensible serializer patterns, and document Vitest 5 compatibility. Refs analogjs#2508 Co-Authored-By: Codex <noreply@openai.com>
Select Prettier explicitly when creating generator test workspaces so the fixture assertions remain stable after the Nx formatter default changes. Co-Authored-By: Codex <noreply@openai.com>
Run content tests in forked processes so Zone patches do not retain stale native API references across reused VM contexts. Co-Authored-By: Codex <noreply@openai.com>
Resolve JavaScript and ESM server entries deterministically and fail the build for missing or ambiguous output. Read matched SSR rules before response-header middleware runs, and allow an explicit SSR policy to override inherited opt-outs. Cover renderer behavior, entry discovery, and route-policy headers with regressions, and correct the i18n plugin return type. Co-Authored-By: Codex <noreply@openai.com>
Preserve primitive JSON inputs, cancel obsolete browser requests, discard aborted SSR results, and distinguish null hydration inputs. Dispose request injectors after handlers and response bodies finish, and apply status and headers through h3. Add client lifecycle, request disposal, and native HTTP regression tests with matching documentation. Co-Authored-By: Codex <noreply@openai.com>
Register the Angular Vite plugin explicitly so the docs application and its tests compile Angular components with the split v3 plugin setup. Co-Authored-By: Codex <noreply@openai.com>
Skip the workspace prepare build in the matrix that tests compiler APIs across Angular versions. Keep browser installation aligned with Vitest and Playwright by removing the unused Cypress install. Co-Authored-By: Codex <noreply@openai.com>
7a8be3d to
b83eaec
Compare
|
@brandonroberts made this with rebase merge because I wanted 1 PR when doing a modernization of our usage. Using pnpm patches until this merges. Thx |
|
Thanks for the substantial work here, but this PR is too large to review or merge confidently as one unit: 38 commits and 112 files spanning compiler infrastructure, dependencies, SSR, server functions, Query integration, streaming, CI, and documentation.
Please split this into separate issues and PRs:
Each PR should include its own tests and documentation. Use stacked PRs where dependencies prevent independent green builds, with This PR can remain as the integration reference and be closed as superseded once the smaller issues and PRs are linked. I do not think the current scope is reasonably reviewable or should be merged atomically. |
|
I agree with you; it started at under 10 then grew over 30 so I just let Astra continue. I will do follow-up PRs and break it out. |
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
Restore caller-header filtering from eeda7af. Preserve Request adapter fields, runtime context and cancellation; verify configured SSR rules over built HTTP. The route-policy contribution owns this shared prerequisite for independent renderer copies in the split. Refs: analogjs#2523, analogjs#2516
|
Thanks, Brandon. The split is complete across seven feature-specific PRs targeting The coverage audit maps all 38 original commits and 112 files. It caught and repaired the lost caller-supplied The original branch stays preserved as the integration reference. The replacements are intended for individual review and squash merges, with combined validation still required as they land. |
PR Checklist
This closed PR is the preserved integration reference for the split requested in Brandon Roberts' review. Its original source is
ecf569d47ddffc74950ce2e5c1e03a837c0211eb, based onalphaat4225f45090a4cf4bdfb562a788e908787b6ec73c: 38 commits and 112 changed files.Coverage audit: the identified porting omission is resolved. Original commit
eeda7af8dstripped caller-suppliedx-analog-no-ssrbefore forwarding to the internal renderer. That behavior is restored in analogjs/analog#2523 and the six necessary shared renderer copies. The committed-adapter reproduction now invokes SSR on every replacement head even when the caller supplies that header. Focused tests and built HTTP examples verify the fix, request preservation, configured SSR opt-outs, streaming policies, and prerender buffering. This closes the identified coverage gap; it does not qualify an untested combined merge result.Affected scope
The table assigns primary review destinations. Shared CI prerequisites are identified in each replacement PR rather than treated as additional feature ownership.
Recommended merge strategy for maintainer [optional]
The replacement PRs recommend individual squash merges. The original branch and commit history remain preserved.
What is the new behavior?
The replacement PRs contain the current implementations, examples, tests, and documentation for the six requested workstreams. Their qualification goes beyond the original integration in several areas, including current Vitest templates, installed consumers, and streaming runtime coverage.
The audit accounts for every original path: 72 exact-source paths, 37 reworked or split paths, and three relocated files; no remaining partially covered paths in this audit. Path accounting alone is not proof that every behavior was preserved.
The original HTTP fixtures and declaration-rebuild test were relocated to their owning contributions. Other mixed tests and documentation were separated by behavior; those moves are listed below.
Test plan
x-analog-no-ssr: true, matching the original behavior on the explicitly SSR-enabled route.535fb080ee9b29931a6f6232a08f532213f164f0e767273de6e3b8589b39c815ccdae4db1a6b7e62bd1fa640a406c4b31341618780da38ad271523cd01ae947367216b3dbcea314111cb8d5d5a36ab03c1af22de104cd43067c60de3852751c5b857ae5b1d89179bc62d1ce07afc979ec9e9f9bfad99ee27dcf5dcf91a93844e37ee5849e2781116396da9f0Does this PR introduce a breaking change?
No merge is proposed for this reference. Compatibility and migration impact are documented in the individual PRs, including the Vitest/toolchain upgrade and Module/Durable Worker output-location correction.
Other information
Original 38-commit mapping
27a62c28338b08455355091c79c44cdd6d88deda242731e6063f4168e0f30afb352c3163b83eaec7a385d5cca1f8c953a244145b631c447006184eeda7af8d2304cfa1317c051e843637daf548b302f8d78715885b9d10a19c1355acb3267a8b01e087547da8a738d33dcc47c70d89b5d19b0c21159c05703fe2fdfc3bc5bf63256e7d3b2c524c3ca892d4aa8aaf8d50c61c727d86b9767d019d0037833b5a54b06bfd865b488ecf569d47Relocated fixtures and split test/documentation coverage
apps/streaming-app/src/app/server-fns/http.server.tsapps/analog-app/src/app/server-fns/http-contract.server.tsapps/streaming-app/src/app/server-label.tsapps/analog-app/src/app/server-fns/http-label.tspackages/platform/src/lib/oxc-dts-plugin.spec.tspackages/vite-plugin-angular/src/lib/oxc-dts-plugin.spec.tsHTTP assertions in server-fn-defer-hydrate.spec.tstools/scripts/server-function-http-smoke.mjsHTTP cases in client-lifecycle.spec.tspackages/router/src/lib/server-fn/client-transport.spec.tsRequest-disposal assertions in event-handler.spec.tspackages/router/server/src/server-fn/dispatch-lifecycle.spec.tsStreaming cases in render-navigation.spec.tspackages/router/server/src/render-stream-navigation.spec.tsStreaming cases in ssr-renderer.spec.tspackages/platform/src/lib/nitro/streaming-renderer.spec.tsssr-renderer.spec.ts, with combined-policy cases instreaming-renderer.spec.ts.SSR error guidance in the Query guideapps/docs-analog/src/content/features/server/server-side-rendering.mdThe mapping names primary review destinations. Necessary shared prerequisites are deliberate:
The audit refresh compares the original inventory and current file contents, retains the documented fixture/test relocations, and verifies the repaired behavior directly. Matching paths and independent green CI are not substitutes for semantic resolution and validation when the PRs are eventually integrated.