portless Release Notes
Last updated: Mar 4, 2026
- Mar 4, 2026
- Date parsed from source:Mar 4, 2026
- First seen by Releasebot:Mar 4, 2026
v0.5.2
Documentation
Documentation
Add git worktree documentation to README, docs site, and agent skill
portless run automatically detects linked git worktrees and prefixes the URL with the branch name (e.g. fix-ui.myapp.localhost) so each worktree gets a unique URL with no config changes
Updated npm README with worktree sectionInstall / Upgrade
Original source Report a problemnpm install -g [email protected] - Mar 4, 2026
- Date parsed from source:Mar 4, 2026
- First seen by Releasebot:Mar 4, 2026
v0.5.1
Bug Fixes
- npm README: Copy root README.md into the package at publish time so it appears on npmjs.com
- homepage: Point npm homepage to https://port1355.dev instead of the GitHub repo
All of your release notes in one feed
Join Releasebot and get updates from Vercel Labs and hundreds of other software products.
- Mar 4, 2026
- Date parsed from source:Mar 4, 2026
- First seen by Releasebot:Mar 4, 2026
v0.5.0
Portless brings automatic project inference, portless alias routing, public URL exposure, fixed app ports, wildcard subdomain routing, /etc/hosts sync, multi distro CA trust, Expo/React Native support, branded error pages and hardened proxy errors in one release.
Features
- portless run subcommand: Automatically infer the project name from package.json, git root, or directory name instead of specifying it manually. (#55)
- portless alias command: Register routes for services not spawned by portless (e.g. Docker containers with published ports). Aliases persist across stale-route cleanup. (#73)
- PORTLESS_URL env var: Child processes now receive PORTLESS_URL containing the public .localhost URL (e.g. http://myapp.localhost:1355) so apps can self-reference their own URL. (#56)
- --app-port flag: Specify a fixed port for the app instead of automatic assignment. Also configurable via PORTLESS_APP_PORT env var. Useful when integrating with tools that provide their own port. (#72)
- Wildcard subdomain routing: Subdomains now match registered hostnames (e.g. tenant.myapp.localhost matches myapp.localhost). Exact matches take priority over wildcard matches. (#71)
- /etc/hosts sync: Automatically sync .localhost hostnames to /etc/hosts for environments where .localhost does not resolve to 127.0.0.1 by default. (#74)
- Multi-distro Linux CA trust: portless trust now supports Arch, Fedora/RHEL/CentOS, and openSUSE in addition to Debian/Ubuntu. Falls back to command probing when /etc/os-release detection fails. (#45)
- Expo and React Native support: Auto-inject --port and --host flags for expo start and react-native start. (#42)
- Branded error and status pages: The proxy now renders styled HTML pages for 404, 502, 508, and other status codes instead of plain text. (#70)
Bug Fixes
- Stream errors: Handle proxy stream errors gracefully to prevent unhandled exceptions from crashing the proxy. (#57)
Install / Upgrade
- npm install -g [email protected]
- Feb 25, 2026
- Date parsed from source:Feb 25, 2026
- First seen by Releasebot:Feb 25, 2026
v0.4.2
Portless ships a solid update with essential fixes and a new proxy loop detection feature. It strengthens security with SHA-256 certs and per-hostname .localhost certs, fixes command resolution, and adds a --force override plus safer sudo state handling.
Bug Fixes
- spawn ENOENT: Use /bin/sh -c for command execution so shell scripts and version-manager shims (nvm, fnm, mise) are resolved correctly. Prepend node_modules/.bin to PATH so local project binaries (e.g. next, vite) are found without a global install. (#21, #29)
- sudo state directory permissions: System state directory (/tmp/portless) now uses world-writable + sticky-bit permissions (1777) so non-root processes can register routes after a sudo proxy start. Route and state files created under sudo are chowned back to the real user. (#16)
- duplicate route names: addRoute now checks for an existing live route and throws RouteConflictError if the hostname is already registered by a running process. Use --force to override. (#38)
- TLS SHA-1 rejection: Force SHA-256 for all CA and server certificate generation. Detect and regenerate existing SHA-1 certificates automatically. Uses the openssl CLI for signature algorithm checks to maintain compatibility with Node.js < 24.9. (#36)
- per-hostname certs for .localhost subdomains: Issue a per-hostname certificate with an exact SAN for every .localhost subdomain (including single-level like myapp.localhost). *.localhost wildcard certs are invalid because .localhost is a reserved TLD per RFC 2606 section 2. (#18)
- terminal left in raw mode: Reset stdin.setRawMode(false) on process exit so the terminal is not left in raw mode after SIGINT. (#51)
New Features
- proxy loop detection: Detect forwarding loops (e.g. a Vite dev server proxying back through portless without changeOrigin: true) using the X-Portless-Hops header. Respond with 508 Loop Detected and a message explaining the fix. Also detects loops on WebSocket upgrades. (#48, #52)
- --force flag: Override a route registered by another process with portless --force .
Install
- npm i -g portless
Contributors
Thanks to @dpeek, @nyosegawa, and @susanforme for their contributions!
Original source Report a problem - Feb 22, 2026
- Date parsed from source:Feb 22, 2026
- First seen by Releasebot:Feb 23, 2026
v0.4.1
What's Changed
- Fixed Vite support by auto-injecting --port and --host flags
- Added e2e tests for 11 frameworks (Next.js, Vite, Nuxt, Astro, Angular, SvelteKit, Remix, Solid, React Router, Hono, Express)
- Improved docs site with changelog page
- Added Turborepo for build orchestration
- Full Changelog: v0.4.0...v0.4.1
- Feb 18, 2026
- Date parsed from source:Feb 18, 2026
- First seen by Releasebot:Feb 23, 2026
v0.4.0
What's Changed
- HTTP/2 support with allowHTTP1 fallback for backward compatibility
- Auto-generated TLS certificates via a local CA (certs.ts) -- proxy now serves HTTPS on port 443 by default
- Strip HTTP/1.1 hop-by-hop headers when proxying to HTTP/2 clients
- x-forwarded-proto correctly set to https for TLS connections
- Routes now produce https:// URLs
- New test coverage for TLS, HTTP/2, and certificate management
- Full Changelog: v0.3.0...v0.4.0
- Feb 18, 2026
- Date parsed from source:Feb 18, 2026
- First seen by Releasebot:Feb 23, 2026
v0.3.0
What's Changed
- Auto-start the proxy with sudo when running portless <name> <command> if the proxy is not already running
- Refactor CLI internals: extract helpers into cli-utils.ts (prompt, spawnCommand, waitForProxy, findPidOnPort, discoverState)
- File-based route watching with fallback polling when fs.watch is unavailable
- Improved signal handling and graceful shutdown with connection drain timeout
- Expanded test coverage across CLI, proxy, routes, and utilities
- Full Changelog: v0.2.2...v0.3.0
- Feb 18, 2026
- Date parsed from source:Feb 18, 2026
- First seen by Releasebot:Feb 23, 2026
v0.2.2
What's Changed
- Block npx and pnpm dlx execution -- portless must be installed globally
- Improved --help output with install instructions
- Updated agent skill documentation
- Full Changelog: v0.2.1...v0.2.2
- Feb 18, 2026
- Date parsed from source:Feb 18, 2026
- First seen by Releasebot:Feb 23, 2026
v0.2.1
What's Changed
- Fix proxy stop when PID file is missing but port is still in use
- Detect and kill orphaned proxy processes via lsof
- Improved error messages for permission issues (e.g. proxy running as root)
Full Changelog: v0.2.0...v0.2.1
Original source Report a problem - Feb 18, 2026
- Date parsed from source:Feb 18, 2026
- First seen by Releasebot:Feb 23, 2026
v0.2.0
What's Changed
- Add --port flag to the proxy command for running on a custom port
- CI improvements
- Full Changelog: v0.1.0...v0.2.0