Skip to content

0.1.0 — Reliable Docker streams and interactive terminals

Choose a tag to compare

@LimeBeck LimeBeck released this 12 Sep 09:26
· 50 commits to master since this release
e12c96a

This release improves the client for building a management panel for a single Docker host: immediate terminal output, predictable stream lifetimes, and correct decoding of large Docker counters.

Highlights

  • Interactive terminals: ExecSession.incomingChunks delivers raw output immediately, including prompts without a newline and ANSI sequences. Sessions own their connections and close on completion, cancellation, or consumer failure. Duplex I/O and shutdown handling were improved on JVM, Node.js, and Linux.
  • Reliable logs, stats, and events: bounded records, backpressure, HTTP error validation, truncated-body detection, and explicit cancellation handling. Recollecting a stream opens a fresh request.
  • Correct Docker counters: OpenAPI uint64 and uint32 fields now map to ULong and UInt, fixing overflow when decoding CPU, memory, and network statistics.
  • Dashboard terminals: automatic fitting with Docker TTY resize, fullscreen with a viewport fallback, Escape to exit, and cleanup on navigation. Attaching to an already-running container no longer fails on HTTP 304.
  • Build maintenance: removed deprecated stream APIs and remaining build warnings; CI JavaScript actions use Node.js 24 and build/test/docs checks reject Gradle deprecations.

Upgrade from 0.0.10

  • Generated unsigned counters now have unsigned Kotlin types; update consuming code where necessary.
  • Collect terminal output once. incoming.first() / take() closes the session; use a single long-lived collector for an interactive terminal. Binary chunks may split UTF-8 characters, so use a streaming decoder when converting them to text.
  • The unscoped prependLeftover helper was removed. Read through the session output API instead.
  • Stream recovery is application-controlled: handle both exceptions and normal EOF. There are no automatic retries. CIO can report a disconnect between complete HTTP chunks as normal EOF.

Installation

Available on Maven Central for Kotlin Multiplatform, JVM, JavaScript, and Linux x64:

implementation("dev.limebeck.libs:docker-client:0.1.0")

Validation and scope

195 library tests passed across JVM, Node.js, and Linux. Debug/release samples and Dokka built successfully. Dashboard resizing was checked against real Docker TTYs and in the browser. The client targets Docker API 1.51; API version negotiation is not included.

Release CI · README and migration guidance · Maven Central artifacts

Full changelog: v0.0.10...v0.1.0