Releases: eminwux/sbsh
v0.13.1
v0.13.0
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.13.0
- ghcr.io/eminwux/sbsh:latest
What's Changed
- fix: stop clearing terminal on attach/detach by default, add opt-in clear flags by @eminwux in #426
- feat: add one-line install script (curl | bash) by @eminwux in #428
- refactor: rename --clear-screen flags to symmetric --clear-on-attach/--clear-on-detach by @eminwux in #432
- feat: publish installer at sbsh.io/install.sh with --check/--help and docs one-liner by @eminwux in #433
- fix: wire make install-sh-check into installer CI to catch mirror drift by @eminwux in #436
- docs(discovery): correct orphan client socket path to clients//socket by @eminwux in #437
Full Changelog: v0.12.5...v0.13.0
v0.12.5
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.5
- ghcr.io/eminwux/sbsh:latest
What's Changed
- fix: restore mouse-tracking and bracketed-paste modes on client teardown by @eminwux in #384
- fix: restore parent terminal on Detach RPC failure and drain before banner by @eminwux in #385
- fix: refuse duplicate --id start that clobbers a live terminal's metadata by @eminwux in #402
- fix: bound Detach and readiness-wait RPCs so a wedged daemon can't trap the client in raw mode by @eminwux in #403
- fix: sanitize control/escape bytes in sb get human-readable listings by @eminwux in #404
- fix: route terminal metadata accesses in SetupShell/PostAttachShell through metadataMu by @eminwux in #405
- fix: synchronize terminal startup fields against Stop-during-startup Close and close orphaned-child hole by @eminwux in #406
- fix: guard Attach against nil multiOutW before startPty publishes ptyPipes by @eminwux in #407
- fix: guard nil logger on sb config-error path when --verbose is off by @eminwux in #408
- fix: clean SIGTERM to attached client exits 0, no spurious context-cancelled error by @eminwux in #409
- fix: cancel forwardResize per-resize context inline instead of deferring per loop iteration by @eminwux in #410
- fix: wait for SIGKILLed child to be reaped before reaper teardown so PID-1 zombie can't leak by @eminwux in #412
- fix: persist stdin reader so sequential attach reuse keeps input by @eminwux in #413
- fix: replace cobra placeholder help text for sb attach by @eminwux in #414
- fix: give waitOnTerminal a ctx escape so a dropped closeReqCh send can't leak it by @eminwux in #415
- test: de-flake trap.sh ETXTBSY by writing it once in TestMain by @eminwux in #416
- fix: treat os.ErrProcessDone from SIGKILL as stopped, not failed by @eminwux in #417
- fix: trap SIGHUP/SIGQUIT in attached client so parent terminal modes are restored by @eminwux in #418
- fix: restore parent terminal when signal cancels ctx during attach window by @eminwux in #420
- fix: reap orphan terminal dirs in prune and warn about them in get by @eminwux in #421
- fix: reap orphan client dirs in prune and warn about them in get by @eminwux in #423
Full Changelog: v0.12.4...v0.12.5
v0.12.4
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.4
- ghcr.io/eminwux/sbsh:latest
What's Changed
Full Changelog: v0.12.3...v0.12.4
v0.12.3
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.3
- ghcr.io/eminwux/sbsh:latest
What's Changed
- fix: never strand terminal state in-memory on metadata write failure by @eminwux in #374
- feat: add kuketeam.yaml declaring sbsh dev crew by @eminwux in #375
- test: write pkg/spawn sleeper once in TestMain to de-flake ETXTBSY by @eminwux in #377
- feat: adopt object source format in kuketeam.yaml by @eminwux in #379
Full Changelog: v0.12.2...v0.12.3
v0.12.2
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.2
- ghcr.io/eminwux/sbsh:latest
What's Changed
- test: de-flake Test_RunStopTerminals_AllAggregation (stubborn-trap install race) by @eminwux in #366
- fix: restore parent terminal on client detach and process exit by @eminwux in #367
- fix: restore parent terminal output-side DEC mode state on teardown by @eminwux in #369
- fix: decouple flaky test from absolute wall-clock bound by @eminwux in #371
Full Changelog: v0.12.1...v0.12.2
v0.12.1
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.1
- ghcr.io/eminwux/sbsh:latest
What's Changed
Full Changelog: v0.12.0...v0.12.1
v0.12.0
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.12.0
- ghcr.io/eminwux/sbsh:latest
What's Changed
- refactor(terminalstore): trim TerminalStore to Add-only and drop dead Mgr field by @eminwux in #272
- feat(api): add Children, CyclePrefix, SwitchReplayBytes to TerminalSpec by @eminwux in #283
- chore(terminalstore): remove client-side store package (phase 2) by @eminwux in #284
- feat(terminalrunner): spawn process set with capture drain (phase 2) by @eminwux in #285
- revert: terminalrunner spawn process set with capture drain (phase 2) by @eminwux in #290
- revert: api add Children, CyclePrefix, SwitchReplayBytes to TerminalSpec (#283) by @eminwux in #292
- fix: resolve reaper tracked exit reaped before RegisterChild by @eminwux in #293
- feat(server): custom RPC handler registration on pkg/terminal/server by @eminwux in #294
- feat(terminalrunner): vt-parser screen model + Screenshot RPC by @eminwux in #300
- fix(terminalrunner): seed attach replay through ring to end write-deadline race by @eminwux in #301
- feat(attach): repaint current screen on attach; --full-capture for full replay by @eminwux in #302
- feat(capture): rotate capture file into segments with retention by @eminwux in #303
- feat(capture): gzip-compress closed capture segments on rotation by @eminwux in #314
- fix(terminalrunner): restore backpressure for interactive attachers on high-throughput output by @eminwux in #315
- fix(capture): re-resolve raw/.gz sibling on ENOENT in segment readers by @eminwux in #317
- test: phase 1 — leaf utility packages (≥80%) by @eminwux in #318
- test: raise pkg/ public API coverage above 80% by @eminwux in #319
- feat(capture): add asciicast capture format selector by @eminwux in #320
- test: raise client-runtime coverage above 80% by @eminwux in #322
- test: phase 5 — raise supporting-internal coverage above 80% by @eminwux in #328
- test: raise pkg/terminal/server coverage above 80% by @eminwux in #329
- test: skip e2e on missing binaries and cover full lifecycle flow by @eminwux in #330
- test: phase 4c — internal/terminal package root coverage (≥80%) by @eminwux in #331
- test: phase 4a — terminalrpc coverage (≥80%) by @eminwux in #332
- test: cover terminalrunner PTY-lifecycle cluster by @eminwux in #333
- test: cover terminalrunner socket/RPC cluster by @eminwux in #335
- test: cover terminalrunner capture/metadata cluster by @eminwux in #336
- test: cover cmd/sb zero-coverage leaf subcommands (phase 6a) by @eminwux in #341
- test: cover cmd/sb data commands (write, stop, get, prune) to ≥80% by @eminwux in #342
- test: cover cmd/sb connect/dispatch cluster (≥80%) by @eminwux in #343
- test: phase 6d — cmd/sbsh subcommand tree coverage by @eminwux in #344
- test: cover cmd shared packages + argv[0] dispatch (phase 6e, ≥80%) by @eminwux in #346
- test: cover stop terminal RPC-graceful, PID-reuse, and --all aggregation paths by @eminwux in #347
- test: stop terminalrunner SIGSEGV test from dropping a core dump by @eminwux in #348
- fix: dedup close-time metadata permission-denied spam to one actionable warning by @eminwux in #349
- test: make terminal profile-fallback tests hermetic to SBSH_TERM_PROFILE by @eminwux in #353
- test: de-flake TestAttachDetach under parallel load by @eminwux in #354
- fix: synchronize ioClient.outWriter access under clientsMu by @eminwux in #358
- feat: add captureFormat field to profile YAML spec by @eminwux in #357
- test: de-flake TestSubscribe_NoOrphanDrainOnConcurrentClose under parallel load by @eminwux in #359
- docs: document terminal output flow-control policy (backpressure vs drop-on-lag) by @eminwux in #360
Full Changelog: v0.11.4...v0.12.0
v0.11.4
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.11.4
- ghcr.io/eminwux/sbsh:latest
What's Changed
- fix(terminalrunner): test-double gate bugs and dead error vars by @eminwux in #231
- fix(terminalrunner): clear clients map in Close to prevent nil-map panic by @eminwux in #233
- fix(terminalrunner): propagate real shell exit code/signal in non-init watchChildExit by @eminwux in #234
- ci: run e2e suite in GitHub Actions pipeline by @eminwux in #236
- fix(terminalrunner): close Subscribe/Close race that orphans drain goroutines by @eminwux in #237
- fix(terminalrunner): send nil on doneCh for graceful ctx-cancel shutdown by @eminwux in #239
- fix(terminalrunner): close capture file fd in Close to prevent leak by @eminwux in #240
- fix(terminalrunner): tear down attacher outWriters in Close to drain goroutines by @eminwux in #243
- fix(terminal/controller): check Close return on rpcDoneCh failure path by @eminwux in #244
- fix(terminalrpc): consume params on nil-body to prevent cross-talk by @eminwux in #245
- fix(pkg/attach): return ErrContextDone deterministically on ctx-cancel by @eminwux in #247
- docs(terminalstore): document scope, lifetime, and concurrency model by @eminwux in #253
- fix(stop): reject recycled PIDs in reconcile and reconcile single-name targets by @eminwux in #254
- fix(sb stop): bound Stop RPC budget by --timeout by @eminwux in #255
- fix(sb stop): --force reaps child shell pgroup before SIGKILL'ing controller by @eminwux in #256
- fix(discovery): scanMetadataFiles logs and skips per-file failures instead of aborting by @eminwux in #262
- fix(discovery): reconcile before pruning so stale terminals/clients get cleaned by @eminwux in #263
- fix(terminalrunner): probe socket for live peer before unlinking in OpenSocketCtrl by @eminwux in #264
- fix(discovery): convert profile-walk per-entry errors into ProfileWarnings by @eminwux in #265
- fix(clientrunner): probe socket for live peer before unlinking in OpenSocketCtrl by @eminwux in #267
- fix(terminalrunner): guard close(closedCh) with sync.Once so repeat Close is idempotent by @eminwux in #268
- test(terminalrunner): assert subscribeErrCount surfaces empty race window by @eminwux in #269
- fix(terminalrunner): close capture fd on startPty error paths after assignment by @eminwux in #270
- refactor(cmd/sb/stop): rename Test_SendPgroupSignal_* to Test_SendPgroupKill_* by @eminwux in #271
- feat(builder): suppress terminals// subdir when all artifact paths are explicit by @eminwux in #274
Full Changelog: v0.11.3...v0.11.4
v0.11.3
Container images (multi-arch: linux/amd64, linux/arm64):
- ghcr.io/eminwux/sbsh:v0.11.3
- ghcr.io/eminwux/sbsh:latest
What's Changed
- fix(terminalrpc): close sender-side fds after SCM_RIGHTS send by @eminwux in #213
- fix(terminalrunner): close client pipe fds on cleanup and detach by @eminwux in #216
- fix(terminalrunner): bound interactive attacher writer to unblock fan-out by @eminwux in #217
- test(e2e): use t.TempDir for run-path scratch by @eminwux in #218
Full Changelog: v0.11.2...v0.11.3