Releases: cablehead/pai-sho
Releases · cablehead/pai-sho
Release list
Release v0.4.1
v0.4.1
Highlights
--socket-owner <user>and--socket-mode <octal>for the daemon. When the operator runs as root (which macOS needs, to create the utun), the control socket is root-owned and the CLI would need sudo.--socket-ownerchowns the socket to the given user right after bind and before the accept loop, so there is no window where the socket is live but still root-owned, and no wrapper poll.--socket-modesets its permission bits. The supervised Homebrew launch uses these so the CLI needs no sudo.--name <name>gives a node its own name. On the node itself,<name>.pai-shopoints back at the node's own services (the--hostaddress,127.0.0.1by default), so it can reach them by the same name a peer would use. That keeps one origin for a service whether you hit it locally or from another machine, which is what CORS needs. Works on both backends (the TUN in-stack resolver and the loopback--resolver).- Moved the
spindependency off the yanked0.10.0.
Raw commits
- fix: self-name resolves to --host, not hardcoded loopback (2026-08-07)
- feat: --socket-owner/--socket-mode and --name self-resolution (#9) (2026-08-07)
- chore: update spin off the yanked 0.10.0 (2026-08-07)
- chore: bump to v0.4.1-dev (2026-08-07)
Release v0.4.0
v0.4.0
Highlights
- Peers now get their own address and name on a private network the daemon runs for you. A peer is projected automatically the first time it announces a granted port, so its ports come up under a name like
vibenv-ndyg.pai-showith no manual step, and two peers can serve the same port without colliding. Newproject,unproject, andsurfacescommands pin an address, rename, or take a projection down. (#4) - Optional private TUN network with
--tun: surfaces live on10.99.1.xand a built-in resolver answers*.pai-shoin-stack on10.99.0.53, so.pai-shonames resolve with nothing added tohosts. Without--tun, surfaces fall back to loopback addresses (127.0.1.x) and you serve the resolver with--resolver. (#4) - Updated to iroh 1.0. (#5)
- Connections are accepted through iroh's
Routernow, with graceful shutdown that drains in-flight connections on stop instead of dropping them. Forwarded traffic is flushed after each chunk withTCP_NODELAYset. (#7)
Raw commits
- chore: refresh crate description, add keywords and categories (2026-08-07)
- docs: new tagline, rename example to vibenv-ndyg, fix grant wording (2026-08-07)
- docs: rework README around the private TUN network model (2026-08-07)
- docs: ports come up by name, not on localhost (2026-08-07)
- docs: drop distracting aside in the example intro (2026-08-07)
- docs: simpler wording, doesn't collide over never collides (2026-08-07)
- docs: add pigeons inspiration and Discord link to README (2026-08-07)
- refactor: accept via iroh's Router (plus copy_flush/nodelay) (#7) (2026-08-06)
- chore: update iroh to 1.0 (#5) (2026-08-06)
- feat: peer surfaces and an owned .pai-sho network (#4) (2026-08-06)
- chore: bump to v0.3.1-dev (2026-08-04)
- chore: sync crate description with README, fix release publish flow (2026-08-04)
Release v0.3.0
Highlights
- Authorized mesh: Peers now have a stable identity, and access is granted through explicit directed grants plus phone-home rather than open exposure. This reworks the peer/daemon networking core around who is allowed to reach whom.
pincommand -- host-attested enrollment: New subcommand for enrolling a peer via host attestation (ADR 0003), superseding the token half of ADR 0002.
Changelog
- feat: authorized mesh -- stable identity, directed grants, phone-home
- feat: pin command -- host-attested enrollment (ADR 0003)
- docs: ADR 0003 host-attested enrollment (supersede token half of 0002)
- docs: list pin in the command reference
- docs: add pai sho illustration to README
- docs: fix over-eager transparency in README illustration
Release v0.2.2
Highlights
- Fix connection hangs: Stream processing (port announcements, tunnel requests) is now spawned into separate tasks instead of running inside the select loop. Previously, a slow uni stream read could block tunnel requests from being accepted.
Changelog
- fix: spawn stream handlers out of select loop to avoid blocking
- docs: rewrite README with origin story, comparisons, and updated tagline
Release v0.2.1
Changelog
- feat: add --version flag
Release v0.2.0
Highlights
- iroh 0.94 -> 0.97: Better network recovery after sleep/wake -- longer path idle timeouts (15s), faster relay health checks, improved NAT holepunching after network changes. Breaking: peers running v0.1.x cannot connect to v0.2.0.
Changelog
- deps: upgrade iroh 0.94 -> 0.97
- docs: rewrite README with use case and comparisons
- docs: enforce ASCII-only across repo
Release v0.1.2
Highlights
-
Auto-reconnection: Peers now automatically reconnect when connections drop (e.g. laptop sleep/wake). Uses exponential backoff (1s to 60s). Incoming reconnections from the other side are detected immediately, skipping the backoff wait.
-
Unified connection handler: Both control messages (port announcements) and tunnel requests are now handled in a single connection loop, fixing a bug where inbound peers couldn't process tunnel requests after reconnection.
Changelog
- feat: add peer auto-reconnection with exponential backoff
- docs: add cargo and brew install options
- fix: improve cargo token collection in release workflow
- chore: add license and repository metadata
Release v0.1.1
- docs: add homebrew and cargo publish to release flow
- docs: add install section
Release v0.1.0
- ci: add cross-platform release workflow with dagger
- docs: add a status note to readme
- feat: add -a/--add and -e/--expose flags to daemon
- refactor: remove key persistence, use ephemeral identity
- docs: add README
- refactor: use 127.0.0.1 for all bindings
- fix: track incoming peers and send exposed ports on connect
- refactor: auto-accept unknown peers, random IP assignment
- feat: p2p TCP port forwarding over iroh