New Features
- MCP server —
porter mcpstarts an MCP server over stdio so AI coding assistants (Claude Code, Cursor, VS Code Copilot, etc.) can explain bundles, list installations, and drive Porter with natural language (#3577) - File sources (experimental) — declare
filesinporter.yamlto have Porter download HTTP/HTTPS files automatically duringporter build, instead of pre-placing them in the bundle directory (#3614) - Dependency version ranges — new
dependencies.version-strategysetting (exact,max-patch, ...) controls how Porter picks a version when a dependency declares a semver range instead of a pinned tag (#3572)
Improvements
- Graceful shutdown — Ctrl+C during
install/upgrade/uninstallnow forwards SIGTERM to the running bundle step (30s grace period before SIGKILL), so outputs written during cleanup are still captured (#3603) porter explainshows injected params — parameters sourced from a prior run's output are now shown with an(injected)marker instead of being hidden (#3604)- Param set precedence fixed — parameter sets now correctly override a persisted
--paramvalue onupgrade, instead of the old value silently winning (#3600) - Errors printed once — error messages no longer repeat once per call-stack layer (#3592)
- Correct
--no-linthint — autobuild lint failures now point to the right command instead of a flag that doesn't exist oninstall/upgrade/invoke/uninstall/publish(#3620) - Fix
porter publish --archivefor bundles built with Docker 29.x's containerd image store, whose invocation image layout can be an OCI image index rather than a plain manifest (#3618) - Fix blank parameters in
porter installation runs listoutput (#3622) - Fix
porter-statecorruption — custom actions declared withmodifies: false(e.g.dry-run) no longer silently overwrite the installation's state when they produce outputs (#3582)
Internal
- Updated Go to 1.26.4
- Added a
.dockerignoredocumentation page for bundles - Documented the existing
CLEANUP_CONTAINERSenv var - Dependency updates across Go modules and GitHub Actions
All Changes
- Resolve dependency version ranges (#3572)
- Add MCP server (#3577)
- Skip porter-state for
modifies: falsecustom actions (#3582) - Print errors once, not per span level (#3592)
- Update Go to 1.25.10 (#3593)
- Add .dockerignore page for bundles (#3594)
- Param sets override persisted --param values on upgrade (#3600)
- Forward SIGTERM to bundle steps for graceful shutdown (#3603)
- Show params with sources in porter explain output (#3604)
- Add file-sources experimental feature for downloading files during porter build (#3614)
- Support OCI index invocation images (#3618)
- Correct --no-lint hint on autobuild lint errors (#3620)
- Document CLEANUP_CONTAINERS setting (#3621)
- Nil run parameters in list output (#3622)
- Dependency updates (#3583, #3584, #3585, #3586, #3587, #3588, #3589, #3591, #3597, #3606, #3608, #3610, #3611, #3613, #3616, #3617, #3619)
Full Changelog: v1.5.0...v1.6.0