I'll gather PR details via GitHub MCP and review the commits to draft user-facing release notes.
GitHub MCP isn't available here — fetching PR details with gh instead.
## Providers
### New
* **Node:** Railpack now detects and deploys Next.js apps configured for static export as SPAs, serving the built site with Caddy. Set `output: 'export'` in your `next.config.ts` (or `.js`/`.mjs`) and Railpack will build and serve the static output from `out` (or your configured `distDir`). See the [Node.js SPA documentation](https://railpack.com/languages/node#spa-mode) for details. by @iloveitaly in https://github.com/railwayapp/railpack/pull/602
* **Node:** Node SPA deployments now honor the `index_fallback` key in a `Staticfile` at your project root. SPA routing is unchanged by default, but you can set `index_fallback: false` to disable `index.html` fallback on unknown routes—useful for multi-page static sites that need custom 404 pages. See the [Node.js SPA documentation](https://railpack.com/languages/node#spa-mode) for details. by @iloveitaly in https://github.com/railwayapp/railpack/pull/582
* **Node:** Bun-only apps with no dependencies no longer install Node.js in the final image when it isn't needed. by @iloveitaly in https://github.com/railwayapp/railpack/pull/601
### Fixed
* **Node:** Expo projects using the default `expo start` command are no longer incorrectly treated as having a custom start command, so SPA detection works as expected. by @iloveitaly in https://github.com/railwayapp/railpack/pull/582
* **Node:** `RAILPACK_NODE_VERSION` now correctly takes precedence over `engines.node` in `package.json`, matching the documented version resolution order. by @iloveitaly in https://github.com/railwayapp/railpack/pull/601
**Full Changelog**: https://github.com/railwayapp/railpack/compare/v0.28.0...v0.29.0
---
*Internal improvements to CI, documentation, and testing by @iloveitaly.*