Pulp Engine Document Rendering
Get started
Release v0.38.0

Pulp Engine v0.38.0 — Release Notes

This release improves editor resilience by adding error containment at critical React boundaries, so render crashes and lazy chunk-load failures degrade gracefully instead of collapsing into a white screen. It also removes one small spinner inconsistency introduced in v0.37.0 and clarifies local release verification output for checks that are intentionally CI-covered.


What changed

1. Error boundaries added at the highest-risk editor boundaries

Prior to this release, the editor had no React error boundaries. A render crash in a critical surface or a lazy chunk-load failure could take down the visible UI with no recovery path.

After: the editor now has reusable error-boundary handling at three important levels:

  • App-level boundary — catches catastrophic render failures across the editor app and shows a full-page recovery UI
  • Canvas-region boundary — isolates canvas crashes so the sidebar can remain usable
  • Sidebar/properties boundary — isolates properties-panel crashes so the canvas can remain usable

This is additive error containment only. Normal behavior is unchanged when no error occurs.

2. Chunk-load failures now show recovery guidance instead of a blank screen

The editor increasingly relies on lazy-loaded boundaries. When a code-split chunk fails to load, the previous experience could degrade into a blank or broken surface with no useful guidance.

After: chunk-load failures are detected through the same reusable boundary layer and now render a targeted recovery message:

  • “Failed to load editor components — please refresh”

Recovery is intentionally simple: refresh-only. No retry state machine or extra complexity was added in this release.

3. Reusable error-boundary UI primitives introduced

This release adds a shared editor-side error-boundary module that contains:

  • the ErrorBoundary class component
  • AppErrorFallback
  • PanelErrorFallback
  • ChunkErrorFallback

This keeps failure presentation consistent across the editor and provides a clean base for any future containment work.

4. Version-history loading spinner now reuses the shared spinner component

v0.37.0 introduced spinner.tsx, but VersionHistorySection.tsx still contained a copy-pasted inline spinner block.

After: VersionHistorySection now imports and uses the shared Spinner component.

This is a tiny cleanup, but it removes an inconsistency introduced in the previous release and keeps loading-state UI more uniform.

5. verify-release.sh skip reporting is now clearer

Local release validation can legitimately skip some checks when required infrastructure or environment flags are not present. In v0.37.0 this was already working correctly, but the output could still read like a confidence gap.

After: skipped SQL Server and E2E steps now print explicit CI-covered wording in scripts/verify-release.sh, for example:

  • SKIPPED — CI-covered (test-sqlserver job)
  • SKIPPED — CI-covered (test-e2e / test-e2e-auth jobs)

This is an output-only improvement. Validation behavior is unchanged.


Validation

Validated before release:

  • pnpm verify — passed
  • all six release-verification steps passed
  • 531 tests passed
  • 48 tests skipped
  • SQL Server and E2E checks correctly reported as CI-covered when not run locally

Upgrade

No API changes. No schema migrations. No environment-variable changes. No storage changes.

This release is primarily an editor resilience and release-tooling polish release.

docker pull ghcr.io/OWNER/pulp-engine:v0.38.0