Repository navigation
v1.3.2
v1.3.2 maintenance release
Prepared on 2026-10-28 against published v1.3.1. Direct-feature source base: dac1c30b1553136b9379be0c6d94eef34ccbad51; this is not the final integrated release commit. These notes describe the preparation scope; check GitHub Releases and PyPI for publication records.
Gate-fix source base after PR #345: a68c6cf16c234cd3fe72926e519e4178c093081a. Integrated preparation base after merged PR #347: ef7748a78e6b466f67074708f5c14decf37f31d7, before the version-preparation commit. Final publication evidence identifies the release commit separately.
Changes
-
#341 / #342: receiver startup preserves
ready:trueand addsdirectReadyConfirmed:false, distinguishing local listener setup from remote reachability. TLS completion alone does not prove pairing, native-target access or ACK. -
Opt-in
--diagnostic-eventsadds Direct callback/TLS observations with bounded per-receiveraccepted,tlsCompletedandtlsFailedcounters. Theacceptedandpeer_tlsphases permit at most 2 records per 60 seconds in total; TLS success/failure share the latter phase limit. Normal close attempts 1 additionalsummary, including zero counts, without repeating it on repeated close. Fixed fields omit addresses, peer/session IDs, message data and exception text. Logging failures do not replace handshake exceptions. Existing synchronous stderr has no hard deadline for a blocked sink. -
The experimental TCP probe catches
asyncio.TimeoutErroron Python 3.9/3.10 and has a stalled-loopback regression test on Python 3.9/3.13. Manual two-Mac/tailnet experiments remain separate from CI;experiments/is excluded from wheel/sdist. See the experiment record. -
#343 / #345: update Node Control's exact
better-authand@better-auth/coreversions from 1.7.5 to 1.7.7, with aligned adapters/telemetry. Upstream lists 1.7.7 as the first patched version for GHSA-965c-763c-88jm (critical), GHSA-r4xp-prcw-77qf (high) and GHSA-44jh-23m7-hpcf (low). -
#344 / #345: synchronize the SIGINT test fixture so READY is announced only inside the protected read. This addresses the observed macOS Python 3.13 race between signal termination (-2) and the expected handled exit 130; it changes test synchronization, not product signal behavior. No fixed sleep or weaker assertion is a substitute for that boundary, and the exact cause of historical CI failures is not established.
-
#346 / #347: raise the optional MCP SDK requirement to
mcp>=1.30,<2. The core Python 3.9 floor and MCP Python 3.10+ marker remain unchanged. POSIX CI defines 8 cells: Mac/Linux, Python 3.10/3.13 and 2 SDK profiles, exact floor1.30.0or latest compatible1.x. Transitive dependencies resolve normally; the floor profile does not certify every package's minimum version. Installed standard-input/output (stdio) contract checks do not establish HTTP/OAuth exposure or exploitability.
PR #345 has merged the two separately reviewed gate fixes, and PR #347 has merged the MCP floor/CI-profile work. The reviewed PR #347 head passed 32 checks, including all 8 MCP cells; its automatic Codex code/security reviews separately completed without findings. These PR results do not replace final protected-main validation or publication evidence. Require successful current-main checks before merging the release-preparation PR.
Incident and compatibility boundaries
After the owner allowed Python.app's incoming connections, both Macs completed Direct pairing and authenticated probes using the original released session-peer v1.3.1 on the Homebrew Python 3.14.9 runtime, the same tailnet bind addresses and per-machine ports, fresh test identities and zero native calls. No forwarder or alternate interpreter was needed. This supports pending macOS Application Firewall approval as the blocker in this incident; the diagnostic code did not restore the connection. Earlier negative/signature/forwarding controls are historical evidence, not required remedies or a universal macOS/Tailscale/Python diagnosis.
Direct binds, TLS/authentication checks, deadlines, pairing state and no-automatic-retry behavior are unchanged. No firewall, access policy or runtime selection is automated, and no platform or general ACK support is added. Existing user pending state was not retried or reset. Native generation, handoff, storage and startup acceptance (#180/#181/#268/#304/#306/#307) and Side Session/steering research remain separate.
The optional Relay receiver module changes are included in wheel/sdist, not embedded in standalone session_peer.py. Applying the diagnostics requires updating the receiver's own package/environment and explicitly restarting its process; a standalone-file update alone does not update those modules. This release performs no operational update or restart.
The inspected Control source uses bearer and deviceAuthorization plugins with SQLite, not the Magic Link/OAuth Proxy/PostgreSQL paths named in the advisories; deployed exploitability was not established. The Node Control dependency patch is outside the Python wheel/sdist and requires its own separately authorized service rollout. Review the upstream OAuth verification-identifier prefix changes and coordinate upgrades across servers sharing verification storage; pending OAuth sign-ins may need to be started again after the update. This preparation performs no operational rollout, session revocation or data migration.
The compatibility skill remains v0.4.0, minimum runtime 0.9.1 / documented CLI coverage 1.3.0; receiver codexBin retains its 1.0.1 floor. Its unchanged SHA-256 is debedd472e3b0c0c6844fb63f7fb2f17cb6c6cc8c3e981e9afd2531a35327af7. Runtime publication does not update independently managed skills or deploy running services.
Release verification
Local gate-fix validation passed 123 Control tests, 11 Node/Python integration tests, 17 stdin tests on each of Python 3.9/3.13 and 400 controlled signal attempts; dependency audits reported 0 vulnerabilities. These local results do not replace protected-main CI or live OAuth acceptance.
Local Mac MCP validation passed 28 MCP tests in each of 4 SDK/Python profiles, with dependency audits reporting 0 vulnerabilities; current documentation checks passed 69 tests. These local results do not replace the 8-cell CI matrix, final main checks or HTTP/OAuth acceptance.
The #342 verification record includes 354 Relay tests, 65 documentation tests and 1 probe regression tested on Python 3.9/3.13. These are implementation evidence, not new native-agent acceptance for this preparation. Require current preparation review, protected-main CI, dependency audits, generator consistency, reproducible artifacts and fresh installations. After preparation succeeds, verify all 7 immutable assets (including SHA256SUMS and release-provenance.json) and their authenticated attestations against the exact tag/source before publication. Required human PyPI environment approval remains. Existing v1.3.1 assets and operating installations are not replaced by this preparation.