Skip to content

Releases: eminwux/sbsh

v0.13.1

13 Jun 12:29
v0.13.1
d0e8564

Choose a tag to compare

Container images (multi-arch: linux/amd64, linux/arm64):

  • ghcr.io/eminwux/sbsh:v0.13.1
  • ghcr.io/eminwux/sbsh:latest

What's Changed

  • fix: prefer EvCmdExited over benign PTY-read EvError in Serve cause by @eminwux in #439

Full Changelog: v0.13.0...v0.13.1

v0.13.0

12 Jun 13:50
v0.13.0
994f5ba

Choose a tag to compare

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

10 Jun 20:57
v0.12.5
555dae1

Choose a tag to compare

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

05 Jun 21:49
v0.12.4
3d42175

Choose a tag to compare

Container images (multi-arch: linux/amd64, linux/arm64):

  • ghcr.io/eminwux/sbsh:v0.12.4
  • ghcr.io/eminwux/sbsh:latest

What's Changed

  • fix: swallow clean session-end sentinels in sbsh runClient by @eminwux in #381

Full Changelog: v0.12.3...v0.12.4

v0.12.3

05 Jun 17:03
v0.12.3
f95185c

Choose a tag to compare

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

01 Jun 09:56
v0.12.2
bbb4a48

Choose a tag to compare

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

27 May 10:51
v0.12.1
44ef63e

Choose a tag to compare

Container images (multi-arch: linux/amd64, linux/arm64):

  • ghcr.io/eminwux/sbsh:v0.12.1
  • ghcr.io/eminwux/sbsh:latest

What's Changed

  • fix: close bind-then-chmod EACCES window in OpenSocketCtrl by @eminwux in #362

Full Changelog: v0.12.0...v0.12.1

v0.12.0

22 May 11:55
v0.12.0
93bf285

Choose a tag to compare

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

19 May 14:16
v0.11.4
dabdcf1

Choose a tag to compare

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

18 May 16:22
v0.11.3
e6955a3

Choose a tag to compare

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