Rewrites our own comments, help text, and example READMEs that named
Railway or linked railway.app so they describe what they do instead.
Retargets the changelog generator and RELEASE.md's Actions/release
links at this repo. Leaves upstream issue links, the MIT copyright,
and the builder/runtime/frontend image references untouched -- those
still point at ghcr.io/railwayapp because we don't publish our own
copies of those images yet.
Co-authored-by: Hanzo Dev <[email protected]>
* fix: update mise to 2026.8.3
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: update mise to 2026.8.0
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
* docs: updated changelog
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat: add generation script for latest tanstack example
Generated-by: aiautocommit
* test(examples): add tanstack-latest example project setup
Generated-by: aiautocommit
* feat(node): add helper methods to check production and dev dependencies
Generated-by: aiautocommit
* feat(logger): support absolute URLs in DocsURL and suggestions
Generated-by: aiautocommit
* feat(node): exclude TanStack Start packages from Vite static build
Generated-by: aiautocommit
* feat(node): add support for TanStack Start srvx fallback
Generated-by: aiautocommit
* test(core): update test snapshots for TanStack build plan
Generated-by: aiautocommit
* docs(node): document TanStack Start detection and build behavior
Generated-by: aiautocommit
* feat(node): add TanStack Start framework support and fallback server
Generated-by: aiautocommit
* Respect configured deploy inputs for config steps
When a config-defined step already has an explicit deploy input, Railpack should not append the implicit deploy output for the entire step. This preserves include filters such as Next.js standalone output selections and avoids copying the full build step into the final image.
Constraint: Config steps without explicit deploy inputs still need the existing implicit deploy output behavior.
Rejected: Change deploy input filter semantics globally | too broad for this bug and risks provider output behavior.
Confidence: medium
Scope-risk: moderate
Tested: go test ./core/generate -run 'TestHasInputForStep|TestGenerateContextKeepsConfiguredDeployInputFilters'
Tested: go test ./core/generate -run TestHasIncludeForStep
Tested: go test ./core/generate
Tested: git diff --check
* fix(generate): respect explicitly configured deploy inputs without implicit steps
- Prevent implicit deploy step outputs from being added when explicit deploy inputs are configured without a spread operator.
- Add comprehensive test coverage for various deploy input and output combinations.
Generated-by: aiautocommit
* feat(examples): respect configured deploy inputs
- Add `/usr/games` to runtime paths to support Debian's cowsay installation location in the config example.
- Assert that unrelated files do not leak through implicit deploy outputs.
Generated-by: aiautocommit
* refactor(generate): check configured deploy inputs for step
Generated-by: aiautocommit
---------
Co-authored-by: Michael Bianco <[email protected]>
* docs: add claude ref to agents
* refactor: simplify DockerignoreContext passing and make it required
* refactor: another take at fixing the initial docker ignore load stuff
* style: whitespace formatting tweaks
I'm not sure how it got into this state :/
* fix: apply dockerignore rules when copying local app context, not later in the build process
* fix: merge dockerignore excludes with top-level railpack.json excludes/includes
* test: top-level railpack.json exclude/include
* docs: update excluding files docs
* test: add negation to an existing dockerignore to expand test coverage
* fix: hack to determine if I'm understanding the llb exclude functionality right
* refactor: remove Includes and instead use negation operators and Excludes
* test: respect dockerignore on initial source load
- Apply exclude and include filters during the initial buildkit context load to improve local build performance
- Support top-level exclude and include configurations in railpack.json
Generated-by: aiautocommit
* feat: respect dockerignore on initial source load
- Load local source layers using the plan package directly to ensure .dockerignore patterns are respected at the buildkit level.
- Prevent unnecessary loading of ignored files like node_modules and virtual environments during local builds.
Generated-by: aiautocommit
* style: formatting updates
* docs(config): update documentation for dockerignore and exclude pattern handling
Generated-by: aiautocommit
* feat(plan): respect dockerignore on initial source load
Generated-by: aiautocommit
* refactor(core): access include rules directly from layer struct
Generated-by: aiautocommit
* feat(buildkit): respect exclude patterns on initial source load
- Apply exclude patterns at the buildkit level during local context loading to prevent transferring unnecessary large directories like node_modules or virtual environments.
Generated-by: aiautocommit
* feat: respect dockerignore on initial source load
Generated-by: aiautocommit
* feat(core): respect dockerignore on initial source load
- Expose the parsed dockerignore context via the build generate context
- Ensure build results preserve the correct dockerignore metadata and excludes on initial load
Generated-by: aiautocommit
* style(docs): fix trailing whitespace in CLAUDE.md
Generated-by: aiautocommit
* feat(core): respect dockerignore on initial source load
- Apply exclude and include filters during buildkit context setup to avoid loading large ignored directories locally.
- Support top-level exclude and include configuration in railpack.json.
Generated-by: aiautocommit
* test(plan): assert all expected empty dockerignore examples are found
Generated-by: aiautocommit
* docs(config): fix typo in excluding-files guide
Generated-by: aiautocommit
* feat(dockerignore): respect dockerignore on initial source load
- Apply exclude and include filters during Buildkit context establishment to drastically improve local build performance.
- Support top-level `exclude` and `include` rules directly in `railpack.json`.
Generated-by: aiautocommit
* docs(config): clarify directory matching behavior in excluding-files guide
Generated-by: aiautocommit
* refactor(core): remove dead dockerignore context fields
- Remove unused dockerignore context properties from build plans and options
- Clean up obsolete metadata checks in core tests
Generated-by: aiautocommit
* feat: add top-level exclude option to railpack config
Generated-by: aiautocommit
* fix: update mise to 2026.7.16
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
* chore: update expected uv version in python test example
Generated-by: aiautocommit
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Michael Bianco <[email protected]>
* feat: automatically install packages required for playwright, and playwright browser
This reverts commit 2a5567ff09fa044cf391b1d79ecf1fe7846e8828.
* docs: update environment variable test configuration property name
Generated-by: aiautocommit
* docs(node): add production deployment guide link to start command help
Generated-by: aiautocommit
* feat(python-playwright): install playwright only when requested via env
- Enable Playwright browser installation conditionally using `RAILPACK_PYTHON_PLAYWRIGHT_INSTALL`.
- Update python-playwright example to test against example.com.
Generated-by: aiautocommit
* feat(python): make Playwright browser installation opt-in
- Require `RAILPACK_PYTHON_PLAYWRIGHT_INSTALL=1` to install Playwright browsers and their runtime dependencies automatically.
- Prevent unintended deployment size increases and breaking changes for existing users since automatic installation can cause issues.
- Add test coverage verifying opt-in behavior and production dependency resolution.
Generated-by: aiautocommit
* docs(python): document playwright install configuration variable
Generated-by: aiautocommit
* feat(node): add support for checking production-only dependencies
Generated-by: aiautocommit
* feat(node): make Playwright browser installation opt-in
- Restrict automatic Playwright detection to production dependencies and require an explicit environment variable to install browsers, preventing unexpected side effects for existing users.
- Add tests to verify Playwright installation behavior based on environment configuration.
Generated-by: aiautocommit
* docs: add unit testing guideline against testing log output
Generated-by: aiautocommit
* chore(deps): update playwright dependency to v1.60 in node-playwright example
Generated-by: aiautocommit
* feat(node,python): update Playwright runtime dependencies for Debian 12
- Align Playwright runtime dependencies with the official nativeDeps.ts list for Debian 12 Chromium.
- Ensure production runtime images include all required system libraries for Playwright without relying on builder-only installation flags.
Generated-by: aiautocommit
* feat(examples): navigate to example.com in playwright node example
Generated-by: aiautocommit
* docs(node): document opt-in Playwright browser installation
Generated-by: aiautocommit
* test(core): update test snapshots for playwright production-only dependencies
Generated-by: aiautocommit
* docs: add instruction regarding snapshot updates to PR template
Generated-by: aiautocommit
* feat(node): remove libatomic1 requirement for Node.js 25+
Generated-by: aiautocommit
* test(core): update playwright snapshots for mise version and apt caches
Generated-by: aiautocommit
* fix: update mise to 2026.7.14
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
* chore: update mise to 2026.7.14
Generated-by: aiautocommit
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Michael Bianco <[email protected]>
* feat(node): add out-of-sync package-lock npm example
- Add new example demonstrating npm ci failure with an out-of-sync lockfile
- Include test configuration and documentation for the scenario
Generated-by: aiautocommit
* fix(node): fallback to npm install when lockfile is missing
- Always use `npm install` for npm projects to prevent build failures when `package-lock.json` is missing.
- Log a warning when the lockfile is absent to encourage generating one.
- Clean up outdated comments regarding package manifest parsing.
Generated-by: aiautocommit
* test(core): update test snapshots for npm install changes
Generated-by: aiautocommit
* feat(node): add npm ci recommendation and railpack example
- Document recommendations for preferring `npm ci` over `npm install` for Node.js projects using npm.
- Add a corresponding `railpack.json` example demonstrating how to configure deterministic installs with `npm ci`.
Generated-by: aiautocommit
* refactor(core): use npm ci in build plan for node npm examples
- Switch from `npm install` to `npm ci` for deterministic builds when package-lock.json is present.
- Remove redundant cache directory creation step.
Generated-by: aiautocommit
* feat(node): add suggestions for missing lockfiles
- Log suggestions when `package-lock.json` or `pnpm-lock.yaml` is missing to encourage deterministic installs.
- Update architecture documentation with guidance on committing `package-lock.json`.
Generated-by: aiautocommit
* test(core): update out-of-sync package-lock snapshot for builder changes
Generated-by: aiautocommit
* feat(node): allow overriding npm install command via config variable
Generated-by: aiautocommit
* docs(node): document RAILPACK_NODE_NPM_INSTALL environment variable
Generated-by: aiautocommit
* docs: recommend committing all package manager lockfiles
Generated-by: aiautocommit
* feat(node): add support for SvelteKit with adapter-auto
- Configure SvelteKit builds to force adapter-node output via GCP_BUILDPACKS variable
- Set appropriate start command for SvelteKit projects using adapter-auto
- Add test coverage for SvelteKit detection and configuration
Generated-by: aiautocommit
* test(examples): replace justBuild flags with specific test assertions
Generated-by: aiautocommit
* docs(guides): remove obsolete justBuild reference from developing-locally guide
Generated-by: aiautocommit
* refactor(tests): remove JustBuild test option and logic
Generated-by: aiautocommit
* refactor(node): update SvelteKit adapter-auto comment reasoning
Generated-by: aiautocommit
* feat(core): add start command and build variables to sveltekit build plan
Generated-by: aiautocommit
* chore: exclude tmp directory when staging updated snapshots
Generated-by: aiautocommit
* chore: update react router to v8 and modernize node infrastructure
- Bump React Router to v8.0.0 and update associated dependencies.
- Upgrade Node.js base image to v24.
- Simplify TSConfig and Vite configuration by utilizing native TSConfig path resolution.
- Add .env to gitignore.
- Ensure consistent scripting and environment settings across SPA and SSR examples.
Generated-by: aiautocommit
* feat(node): detect React Router SPA mode from config
Generated-by: aiautocommit
* test(node): improve React Router SPA detection and handling
Generated-by: aiautocommit
* chore(deps): update mise.dev.lock
Generated-by: aiautocommit
* docs(node): clarify SPA detection limitation and manual override
Generated-by: aiautocommit
* test(node): bind React Router preview server to IPv4 in SPA example
- Force preview host to 127.0.0.1 in Vite config and generation script.
- Prevent connection mismatch issues between prerender requests and the preview server.
Generated-by: aiautocommit
* test(node-puppeteer): add test case for package override bug
Generated-by: aiautocommit
* test(node-puppeteer): preserve default packages in custom config
- Use the spread operator in apt package overrides to retain required Puppeteer dependencies during tests.
Generated-by: aiautocommit
* feat(core): add pretty print style for deprecation logs
Generated-by: aiautocommit
* feat(generate): support package overriding with ... operator
- Add support for explicit package overrides using the `...` operator in `buildAptPackages` and `deploy.aptPackages`.
- Emit deprecation warnings when `buildAptPackages` is specified without `...` before transitioning to replacement behavior.
- Emit info logs when `deploy.aptPackages` replaces generated packages without `...`.
Generated-by: aiautocommit
* feat(logger): add suggestion log level with optional documentation links
Generated-by: aiautocommit
* refactor(generate): use suggestion log type for apt package warnings
Generated-by: aiautocommit
* docs(guides): document apt package override syntax using ...
Generated-by: aiautocommit
* test(generate): update apt packages deprecation and suggestion log assertions
Generated-by: aiautocommit
* feat(tasks): add optional case filter to integration test task
Generated-by: aiautocommit
* test(integration): increase timeouts for QEMU emulated workloads
- Extend container execution timeout from 2 to 3 minutes in integration tests
- Increase Puppeteer launch and navigation timeouts in the node-puppeteer example to prevent failures on emulated arm runners
Generated-by: aiautocommit
* test(node-puppeteer): skip amd64 override case on arm64
QEMU-emulated Chrome on GHA arm runners hangs past the container
timeout; native amd64 CI already covers the apt package override case.
---------
Co-authored-by: Hanzo Dev <[email protected]>
* fix: update mise to 2026.7.11
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat(example): add node-nx-next workspace scaffold
- Initialize an Nx workspace with a Next.js application using pnpm.
- Configure workspace tooling including TypeScript, Prettier, and ESLint.
- Include a generation script to automate the workspace setup process.
Generated-by: aiautocommit
* feat(node): add BuildScriptContains helper to PackageJson
Generated-by: aiautocommit
* feat(node): add support for Nx workspaces with Next.js
- Implement Nx workspace detection and package resolution.
- Enable automatic Nx build commands when no root build script is detected.
- Add RAILPACK_NX_APP environment variable to support selecting specific apps in multi-app workspaces.
- Refactor Next.js detection logic to better support monorepo and Nx-inferred architectures.
- Include unit tests for Nx workspace detection and build/start command generation.
Generated-by: aiautocommit
* docs: add documentation for Nx monorepo support
- Explain how Railpack handles Nx workspaces, including automatic detection and support for inferred tasks.
- Document the new `RAILPACK_NX_APP` configuration variable to target specific apps in multi-app workspaces.
- Detail the build and start behavior for Next.js applications within an Nx context.
Generated-by: aiautocommit
* test: add snapshot for Nx Node.js and Next.js example
Generated-by: aiautocommit
* chore: bump railpack images and set version to dev
- Update builder and runtime images to mise-2026.7.7
- Include RAILPACK_VERSION environment variable in build plan
Generated-by: aiautocommit
* fix: update mise to 2026.7.7
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* refactor(python): switch poetry installation back to mise native
- Stop using pipx to install poetry.
- Revert to using the native mise poetry plugin, which is now preferred for better environment integration.
Generated-by: aiautocommit
* refactor(python-poetry): remove default start command from config
* Remove the explicit start command to allow for standard project-level runtime defaults.
* The previous comment regarding poetry venv path issues is addressed by updated platform base images.
Generated-by: aiautocommit
* test: update snapshot
Generated-by: aiautocommit
* chore: remove unused railpack config example
Generated-by: aiautocommit
* feat: add node-vite-custom-caddyfile example
- Include a Vite-based SPA template with a custom Caddyfile configuration.
- Add test definitions to verify custom Caddyfile request handling and SPA navigation.
Generated-by: aiautocommit
* test: add snapshot for custom caddyfile support
Generated-by: aiautocommit
* fix: update mise to 2026.7.2
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
* fix: use musl install for mise on builder image
Generated-by: aiautocommit
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Michael Bianco <[email protected]>
* fix: update mise to 2026.6.14
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* fix: update mise to 2026.6.12
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* chore: add .deno-version file and update test expectation
- Add .deno-version file for Deno 2.2.2 support.
- Update test expectation to match the specific Deno version output.
Generated-by: aiautocommit
* feat: support .deno-version file in project generation
- Update the generated mise configuration to include deno in idiomatic tools.
- Add .deno-version to the project build plan to ensure it is correctly tracked and persisted.
Generated-by: aiautocommit
* feat(mise): add deno to idiomatic version file tools
Generated-by: aiautocommit
* feat(config): enable deno in idiomatic version file configuration
Generated-by: aiautocommit
* feat(node): add bun to idiomatic tools and remove manual version file handling
- Add "bun" to the list of tools managed by idiomatic version files.
- Remove redundant manual parsing of `.bun-version` now that `mise` provides native support.
Generated-by: aiautocommit
* feat(node-bun-workspaces): add Bun version file and update test expectations
- Pin the Bun version in the example workspace.
- Update test expectations to reflect current Bun version output.
Generated-by: aiautocommit
* test(node): include bun in idiomatic version files
- Add "bun" to the list of supported tools in the generated mise configuration.
- Update build plan snapshots to explicitly include the .bun-version file in project generation.
Generated-by: aiautocommit
* feat(node): prioritize RAILPACK_NODE_VERSION over engines.node
- Add regression test case to verify environment variable precedence for Node version resolution.
- Add reproduction example for the reported issue where engine constraints override deployment variables.
Generated-by: aiautocommit
* feat(test): rename and update node version precedence example
* Rename `node-subfolder-node-version` to `node-version-precedence` to better reflect its purpose.
* Update `test.json` to allow stderr, accommodating potential output variations during version resolution.
* Replace the README to clarify the expected precedence behavior for environment variables versus engine settings.
Generated-by: aiautocommit
* refactor: improve package version resolution comments
- Clarify that package versions defined in `railpack.json` serve as defaults.
- Clarify that these values are overridden by more specific sources like `package.json` or environment variables.
- Update documentation to reflect that version sources are labeled as "custom config" to accommodate CLI flags and external config files.
Generated-by: aiautocommit
* feat(deps): add bun to idiomatic version resolution
Generated-by: aiautocommit
* refactor(mise): simplify version resolution logic
- Improve readability by removing nested conditional blocks.
- Clarify that UseMiseVersions now supports idiomatic version files and explicitly overwrites existing configuration.
- Enhance variable naming for better intent representation.
Generated-by: aiautocommit
* refactor(node): adjust node version resolution precedence
- Update node version resolution to ensure ENV-level configuration takes precedence over package.json engines.
- Refactor node detection logic for Bun projects to conditionally omit Node.js installation when no dependencies are present.
- Streamline Node.js package installation to reduce redundant configuration checks.
Generated-by: aiautocommit
* feat: add example test for Bun-only apps excluding Node binary
Generated-by: aiautocommit
* docs: simplify README for node version precedence example
Generated-by: aiautocommit
* test: add snapshots for node version precedence and bun examples
Generated-by: aiautocommit
* docs: update project documentation and test guidelines
Generated-by: aiautocommit
* refactor(test): merge node-bun-no-node into node-bun-no-deps
- Remove the redundant node-bun-no-node example.
- Consolidate the "no node binary" verification logic into the node-bun-no-deps example.
- Improve documentation in the readme for the consolidated example.
Generated-by: aiautocommit
* test: remove outdated snapshot for node-bun build plan
Generated-by: aiautocommit
* fix(caddy): standardize and improve security in Caddyfile templates
- Standardize security headers and compression settings across Node and static file providers.
- Improve health check handling by using log_skip to reduce log noise.
- Implement custom error page support for static file deployments.
- Update documentation to reflect the default Caddyfile capabilities.
- Add Railway proxy range to trusted proxies for improved network compatibility.
Generated-by: aiautocommit
* test(example): add node-astro-static-404 reproduction case
- Create a new example project to reproduce static site behavior with custom 404 pages.
- Configure Staticfile with index_fallback set to false to test 404 handling.
- Include an integration test suite validating that unknown routes correctly return the custom 404 page.
Generated-by: aiautocommit
* feat(node): support conditional SPA index fallback
- Allow the Caddy configuration to disable index.html fallback for node SPA deployments.
- Expose an option to read `index_fallback` from a Staticfile, defaulting to true for Node SPA projects.
Generated-by: aiautocommit
* docs: document Staticfile index_fallback configuration for Node SPAs
Generated-by: aiautocommit
* test: update snapshot
* Revert "fix(caddy): standardize and improve security in Caddyfile templates"
This reverts commit 6c8f57f5149ca1cc84d04d8eded8cdf7a928a66d.
* refactor: rename static-404 example to spa-staticfile
- Renamed the node-astro-static-404 example to node-spa-staticfile to better reflect its purpose as a SPA configuration example.
- Added a readme explaining the use case for customizing SPA behavior via a Staticfile.
Generated-by: aiautocommit
* refactor(node): update SPA detection and deployment configuration
* Include Expo in SPA detection logic to ensure consistent behavior.
* Standardize framework naming capitalization.
* Update index fallback lookup to use a generalized helper function.
Generated-by: aiautocommit
* refactor(staticfile): align index fallback logic with provider requirements
- Centralize index fallback resolution in GetIndexFallback to differentiate between user-defined values and defaults.
- Update the Staticfile provider to explicitly set the default to false while maintaining compatibility for node SPA implementations.
- Improve Caddyfile template documentation regarding SPA routing behavior.
Generated-by: aiautocommit
* chore: update build plan dependencies and environment variables
- Bump railpack-builder and runtime versions to 2026.6.11
- Update Caddy version to 2.11.4
- Add NPM_CONFIG_FETCH_RETRIES to node environment variables
- Improve Caddyfile SPA routing logic
- Rename snapshot file to reflect the correct test case target
Generated-by: aiautocommit
* test: update Caddyfile try_files comments in snapshots
Generated-by: aiautocommit
* feat(node): treat expo start as a default command
- Add DefaultExpoStartCommand constant to identify the default Expo start script.
- Update hasCustomStartCommand to exclude Expo's default command from the custom command check.
- Update tests to reflect that Expo default behavior is no longer considered custom.
Generated-by: aiautocommit
* test: update snapshot
* feat(expo-spa): scaffold initial expo spa project structure
* Initialize core directory structure for expo-spa example.
* Add theme management hooks and components to handle color schemes.
* Include necessary assets for branding and UI components.
* Setup initial configuration files and root layout.
Generated-by: aiautocommit
* feat(node): add support for Expo SPA builds
- Detect Expo projects using 'expo' and 'react-native-web' dependencies with static web output configured in 'app.json'.
- Automatically add a build command for 'expo export --platform web' when no build script is defined.
- Configure output directory resolution and runtime categorization for Expo applications.
Generated-by: aiautocommit
* docs: update documentation for Expo Web support and SPA build process
Generated-by: aiautocommit
* refactor(expo): remove default expo export command
- Remove the hardcoded Expo CLI export command.
- Rely on projects defining their own build scripts to maintain flexibility and alignment with standard Node provider patterns.
Generated-by: aiautocommit
* feat(expo): support static and single web output modes
- Update detection logic to include "single" output mode as a valid configuration for Expo SPAs.
- Add case-insensitive comparison for web output mode to ensure robustness.
Generated-by: aiautocommit
* test: add build plan snapshot for expo-spa project
Generated-by: aiautocommit
* docs: update Expo Web SPA mode detection criteria
Generated-by: aiautocommit
* fix: update mise to 2026.6.5
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
* feat: add reproduction case for pnpm 11 engines mismatch
- Add a new example project to reproduce issues when using pnpm 11 in engines configuration with '.x' notation.
- Include a test definition to verify node and pnpm versions as detected by the environment.
Generated-by: aiautocommit
* test: add snapshot for node-pnpm-11-engines example
Generated-by: aiautocommit
* feat(node): support pnpm 11+ global bin directory layout
* Resolve pnpm version via the context resolver to handle non-semver range notation (e.g., "11.5.x") found in `engines.pnpm`.
* Update global bin directory path for pnpm 11+ to `PNPM_HOME/bin` to ensure `node-gyp` installation succeeds.
* Add test case for resolved mise versions.
Generated-by: aiautocommit
* fix: update mise to 2026.6.0
* test: update snapshots
* chore: update go, mise, and bun packages
* test: update mise lock with latest version
* test: relax python uv version assertions
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Hanzo Dev <[email protected]>
* test(node): add better-sqlite3 dependency and workspace config
Generated-by: aiautocommit
* docs: add readme for pnpm-corepack-runtime-usage example
Generated-by: aiautocommit
* feat(pnpm): standardize pnpm store path and configuration
* Move pnpm home to /opt/pnpm to follow standard Linux filesystem conventions.
* Explicitly configure PNPM_STORE_DIR to ensure cache consistency.
* Set PNPM environment variables during dependency installation to improve reliability.
Generated-by: aiautocommit
* chore: add node_modules cleanup to clean task
Generated-by: aiautocommit
* test: update build plan snapshots for pnpm path changes
Update snapshots to reflect the migration of the pnpm store and home directory to /opt/pnpm, ensuring consistent paths across build plans and environment variables.
Generated-by: aiautocommit
* docs: add comment explaining version availability check rationale
Generated-by: aiautocommit
* feat: add test example for python and uv latest with min age requirement
Generated-by: aiautocommit
* feat: update test project dependencies in mise task
* Automate upgrading the dependencies for the Python example project during the mise-upgrade task.
* Ensure the repository remains current with the latest versions during the automated maintenance flow.
Generated-by: aiautocommit
* fix(mise): support pinned versions and minimum_release_age
* test(core): add snapshot for python-uv-latest-locked build plan
Generated-by: aiautocommit
* docs: mise locked edge version test
* refactor(mise): remove hardcoded minimum release age
- Remove the hardcoded MISE_MINIMUM_RELEASE_AGE environment variable to allow configuration via system defaults or user settings.
Generated-by: aiautocommit
* test(node): verify latest node version in tests
- Update the node version expectation to accept any valid version string when configured as "latest".
- This avoids brittle test failures caused by the actual "latest" version changing over time.
Generated-by: aiautocommit
* test(node): add node-pnpm-corepack-runtime example
- Introduce a new example project demonstrating Node.js 25+ integration with Corepack and pnpm.
- Includes a test specification to verify runtime version and execution flow.
Generated-by: aiautocommit
* docs(node): document node 25 corepack behaviors and constraints
- Explain the shift in corepack availability and requirement in Node 25+.
- Detail the directory structure for shims and the impact on the build process.
- Update maintenance documentation to include pnpm lockfile version mapping.
Generated-by: aiautocommit
* feat(node): ensure corepack binaries are available in runtime
* Include /mise/installs and /mise/shims in buildIncludeDirs when using corepack.
* This ensures that binaries like pnpm are correctly captured in the final image despite runtime mutations performed by corepack.
Generated-by: aiautocommit
* chore(test): update expectations for Node 25 and pnpm 11 in runtime test
Generated-by: aiautocommit
* feat(test): add mise paths to build plan snapshots
- Include `/mise/installs` and `/mise/shims` in the build plan snapshots to support mise-managed toolchains.
- Update pnpm-corepack-runtime snapshot to reflect current install and build command logic.
Generated-by: aiautocommit
* docs: add architectural documentation for input ordering and layering
Generated-by: aiautocommit
* refactor: rename example directory and bump node version
- Rename node-pnpm-corepack-runtime to pnpm-corepack-runtime-usage to better reflect its purpose.
- Update node engine version to v26 in example configuration.
- Update test expectation to match the new node version.
Generated-by: aiautocommit
* test: rename snapshot file for pnpm-corepack-runtime test
Generated-by: aiautocommit
* feat(node): add support for package.json5
- introduce findPackageManifest to prioritize package.json over package.json5
- update dependency detection and installation logic to include package.json5
- ensure local file detection and workspace parsing support the new manifest format
Generated-by: aiautocommit
* feat(example): add node-pnpm-json5 project
* Add a new example project to demonstrate native pnpm support for package.json5 manifests.
* Include a test configuration to verify environment detection and CLI version reporting.
Generated-by: aiautocommit
* chore: bump node and pnpm versions in json5 example
Generated-by: aiautocommit
* test: add build plan snapshot for pnpm-json5 project
Generated-by: aiautocommit
* test: update snapshots
* chore(examples): update engine versions and test expectations
Generated-by: aiautocommit
* chore(deps): update pnpm-lock.yaml
Generated-by: aiautocommit
* docs: update mise configuration documentation and add package resolution notes
* Update the `install_before` setting name to `minimum_release_age` to match current configuration.
* Add clarification on how Railpack handles semver constraints from manifest files by simplifying ranges to major versions.
Generated-by: aiautocommit
* feat(example): log pnpm version in pnpm workspaces example
- Add checks for pnpm version via npm_config_user_agent and the pnpm CLI.
- Update test expectations to verify pnpm version reporting.
Generated-by: aiautocommit
* feat(node): support more pnpm lockfile version mapping
- Add support for pnpm lockfile versions 6.1 and 9.0 to ensure correct tool version detection.
- Refactor the lockfile version check into a switch statement to improve readability and maintainability.
- Add logging for cases where the pnpm lockfile version cannot be identified.
Generated-by: aiautocommit
* test(node): add tests for pnpm version resolution logic
- Verify that pnpm versions are correctly derived from pnpm-lock.yaml versioning.
- Ensure proper precedence hierarchy between lockfile, engines, and packageManager fields.
Generated-by: aiautocommit
* docs: move mise installation instruction to workflow section
Generated-by: aiautocommit
* fix(node): ensure engines.pnpm overrides lockfile version inference
- Reprioritize pnpm version resolution to prefer `engines` over lockfile-based inference.
- Lockfile version parsing can be ambiguous across major versions, whereas `engines` provides an explicit developer intent.
Generated-by: aiautocommit
* fix: update mise to 2026.5.11
* test: update snapshots
* chore: update mise upgrade task to run locally
Use the --local flag for the mise upgrade task to ensure consistency with local environment configurations during dependency updates.
Generated-by: aiautocommit
* chore: update go, mise, and bun packages
* chore: update go, mise, and bun packages
* chore: update mise to 2026.5.15
- Update build plan snapshots to use mise version 2026.5.15 across all test examples.
Generated-by: aiautocommit
* chore: update mise to 2026.5.15
Generated-by: aiautocommit
* chore: ignore .antigravitycli directory
Generated-by: aiautocommit
* chore: update mise 2026.5.11
Generated-by: aiautocommit
* chore: update better-sqlite3 dependency version
Generated-by: aiautocommit
* feat(test): add example for testing npm native dependencies with node-lts
Generated-by: aiautocommit
* fix: do not run rdoc when compiling ruby
this fixes a locale issue which causes the build to fail
* chore: update python version in examples to 3.13.3
no GH attestations for 3.13.1
Generated-by: aiautocommit
* chore: bump better-sqlite3 in examples
Generated-by: aiautocommit
* chore(node): update pnpm path to include bin directory
Generated-by: aiautocommit
* chore: update railpack-builder and runtime to mise 2026.5.16
Generated-by: aiautocommit
* chore: bump mise version to 2026.5.16
Generated-by: aiautocommit
* chore: update mise to 2026.5.16
- Update mise CLI command structure for improved task execution.
- Includes upstream bug fixes and stability improvements.
Generated-by: aiautocommit
* feat(node): update pnpm path layout for version 11+
- Adjust the pnpm binary path detection to account for changes in pnpm v11, which uses a /pnpm/bin directory layout.
- Introduce version checking to ensure backward compatibility for older pnpm versions.
- Add unit tests to verify path resolution for various version scenarios.
Generated-by: aiautocommit
* chore(node): update pnpm home paths and versioning logic
Generated-by: aiautocommit
* chore: update python-freethreaded example configuration
Generated-by: aiautocommit
* feat: add mise-builder-shell task
- Adds a new task to facilitate debugging by spawning a shell inside the published builder container image.
Generated-by: aiautocommit
* test(python): fix fasthtml example
I have no idea why this wasn't caught before...
* chore: update mise configuration to 2026.5.16
- Set MISE_MINIMUM_RELEASE_AGE to match the builder default.
- Correct the mise setting key from `install_before` to `minimum_release_age`.
Generated-by: aiautocommit
* chore: ensure uv is installed when using pipx.uvx in mise
Generated-by: aiautocommit
* chore: update mise 2026.5.16
- Sync environment variables from the Elixir provider to the mise installation step to ensure installation consistency.
Generated-by: aiautocommit
* feat(node): prioritize mise-managed package manager versions
- Allow mise to override inferred package manager versions for pnpm, bun, and yarn.
- Ensure consistent version resolution between Railpack and user-defined mise environment settings.
- Update node provider logic to correctly identify and use package manager tool names from mise.
Generated-by: aiautocommit
* chore: update test configuration for pnpm 11 compatibility
- Enable stderr allowance in tests to accommodate pnpm 11 command logging behavior.
Generated-by: aiautocommit
* chore: update example env configuration for mise compatibility
- Replace python3-venv with dnsutils for build-time apt testing.
- Add python to RAILPACK_PACKAGES to ensure pipx and other requirements function correctly within the mise environment.
- Update build and start commands to verify the availability of the new packages and validate expected scoping.
Generated-by: aiautocommit
* chore: update test snapshots for mise 2026.5.16
- Update snapshot files to reflect changes in build plan generation, including the addition of `uv` to Python environments, corrected pathing for pnpm, and updated environment variables for Elixir configurations.
- Reflect renaming of `install_before` to `minimum_release_age` in configuration settings.
Generated-by: aiautocommit
* feat(staticfile): add configurable index fallback for SPAs
- Fixes #https://github.com/railwayapp/railpack/issues/533
- Introduce index_fallback option in Staticfile config to toggle SPA routing.
- Improve root directory detection by trimming whitespace from environment variables and configuration.
* feat: add index fallback example for static files
- Create a new example directory demonstrating the index_fallback configuration.
- Include a test case to verify that non-existent routes correctly serve index.html.
Generated-by: aiautocommit
* test: update snapshots
Generated-by: aiautocommit
* test: update static file config and index test cases
Generated-by: aiautocommit
* test: add SPA index fallback verification to test suite
Generated-by: aiautocommit
* docs: document RAILPACK_VERBOSE and clarify Staticfile config
Generated-by: aiautocommit
* test: add example for free-threaded Python support
Generated-by: aiautocommit
* test(snapshot): update python-freethreaded build plan snapshot
Generated-by: aiautocommit
* fix: change generated mise name to distinguish from user-provided mise.toml, add mise.lock
* docs: misc code comments
* build: stop all docker containers locally when cleaning
* feat: support all idiomatic version files and mise config files in mise installation step
* this enables the user to use advanced configuration (like forcing ruby precompiled binaries) in their mise.toml
* also supported mise.lock during the installation step
* test: ruby 3 compiled test
* docs: note about no main.rb
* fix: cache mise config file search
* refactor: move railpack json config
* test: yjit test and jemalloc on precompiled ruby
* test: enable sassc and other common gems to make sure they don't fail when compiling
* docs: add dedicated mise page
* docs: pulling in the mise docs
needs more deslop effort
* test: snapshot update
* docs: deslop
* test: update test asset name for mise.toml generation
Generated-by: aiautocommit
* test: add arm builds
* test: benchmark arm builds
* test: skip node-puppeteer on arm
* docs: note on node-puppeteer not working on arm
* docs: adding some missing comments
* test: add bcrypt to mise native test
* test: more common compiled binaries in the npm native tests
* build: fix pre-filled commit msg location for worktrees
* test: update snapshot
* test: compiled python example
* docs: note about compiled python version
* test: also enable py compilation for the latest versions
* test: snapshot update
* test: ruby no version checks minor version and http connection
* fix: pin ruby to minor version, not specific patch
* fix(ruby): bind to 0.0.0.0 to fix start for non-rails applications
* test: snapshot update
* fix: remove custom bin install step builder
* test: snapshot update
* Revert "fix: remove custom bin install step builder"
This reverts commit eee63373c86360e05ae9b0dc2bc302424bd072fd.
* Revert "test: snapshot update"
This reverts commit fa506b4e959265ed90d8720d5079c768eb19a5ef.
* docs: explain why the bin builder exists
* build: ensure mise versions go first in dev
* test: bad `env` key in node-bun test
* test: fail loudly if unexpected keys are found in test.json
* build: task to build an example project
* test: snapshot update