Skip to content

Releases: LimeBeck/kmp-docker-client

1.3.0 — Swarm API and Compose controls

Choose a tag to compare

@LimeBeck LimeBeck released this 16 Sep 04:27
08a89b0

Swarm support

All 30 Docker Engine API 1.51 Swarm endpoints are available through client.swarm:

  • Cluster initialization, joining, leaving, updates, token rotation and manager unlock.
  • Nodes, services, tasks, secrets and configs.
  • Service/task logs with TTY support and cancellation.
  • Optimistic versioned updates, service rollback and registry authentication.

This release also includes Compose start/stop/restart controls for existing containers and the corresponding dashboard actions.

Install

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

Supported targets: JVM 17+, Kotlin/JS on NodeJS and Linux X64 Native, using Docker API 1.51 over Unix sockets.

Swarm guide · Compose guide

The Linux X64 dashboard executable is attached below.

Validation

PR #14 passed all four Docker/JDK matrix cells. Release CI and Docs CI passed, including isolated Swarm lifecycle tests on JVM, NodeJS and Linux X64.

Independent Gradle consumption verified all four Maven Central variants (common, JVM, JS and Linux X64) and their dependencies.

1.1.0 — Compose support and topology dashboard

Choose a tag to compare

@LimeBeck LimeBeck released this 15 Sep 19:45
7f9161b

Compose support

The existing dev.limebeck.libs:docker-client artifact now includes dev.limebeck.libs.docker.compose on JVM, NodeJS and Linux X64.

  • Discover existing Compose projects/services from Docker labels, including replicas, stopped containers and one-offs.
  • Read project-wide or selected-service logs with container identity, a single-service overload, bounded subscriptions and cancellation cleanup.
  • Reuse the owning DockerClient endpoint and lifetime; no new runtime dependency or installed Compose CLI is required for these APIs.

Dashboard

  • Host overview with observed container counts, attention list, Compose summaries and live events.
  • Engine version, OS, architecture, memory and CPU loaded once in the sidebar.
  • Compose services, containers, volumes, networks and logs views.
  • Network topology with container cards, host port bindings and an inspector for state, health, logs, configuration and latest memory statistics.
  • Bundled service icons, responsive layout and separate port/mount sections.

Compatibility

This is an additive minor release. Existing Engine APIs remain available. Supported targets remain Linux JVM 17+, Kotlin/JS on Node.js and Linux X64 Native, using fixed Docker API 1.51.

Compose support reflects existing Engine resources. It does not parse YAML, infer dependency/traffic graphs, or implement Compose up/down/start/stop orchestration. Historical health may remain on stopped containers. Topology distinguishes configured bindings from currently published ports.

Maven coordinates: dev.limebeck.libs:docker-client:1.1.0.

Compose guide · Dashboard guide · API reference

Dashboard executable

Download the attached Linux X64 htmxDashboard.kexe, then run:

chmod +x htmxDashboard.kexe
./htmxDashboard.kexe /var/run/docker.sock 18081

Open http://127.0.0.1:18081. This remains a local development dashboard.

Passed PR matrix · Release CI

Maven Central publication was accepted successfully by Release CI. Public repository propagation is still in progress; dependency resolution may temporarily return 404.

1.0.1

Choose a tag to compare

@LimeBeck LimeBeck released this 15 Sep 10:48
4eb181d

What's changed

  • Scoped client ownership: DockerClient implements AutoCloseable and supports Kotlin .use {}. Raw exec/attach sessions retain their own lifecycle.
  • Connection diagnostics: opt-in diagnoseConnection and diagnoseFailure provide classified failures and actionable guidance. Diagnostic reports omit raw exceptions, socket paths, credentials and response data; diagnostic probes bypass SDK HTTP logging.
  • Exception context: failures carry safe HTTP method, route template, API version, stage and status when available. Access them through Throwable.dockerContext; original exception types and causes remain available for trusted debugging.
  • Documentation: expanded KDoc, clarified input units/defaults, error and ownership contracts, and embedded compiled usage examples directly into Dokka API pages.
  • Dashboard terminal: hide the scrollbar in the alternate screen used by mc/vim and restore it for shell scrollback, including refitting on buffer changes.
  • Dashboard binary: Release CI and one PR CI matrix cell publish htmxDashboard.kexe as the htmx-dashboard-linux-x64 workflow artifact. Download it from the Actions run's Artifacts section, extract it, and run chmod +x htmxDashboard.kexe.

Compatibility notes

  • getOrThrow() on SDK errors with context now throws DockerResultException, still an IllegalStateException. Its error property and available cause retain original details.
  • DockerApiException messages contain the numeric HTTP status without raw daemon text; its error property remains available.
  • Non-HTTP exec/attach handshake failures now propagate their original exception instead of being reduced to an ErrorResponse string.
  • Raw exception graphs and error values may contain sensitive data. Only SDK-generated diagnostic reports and operation context are intended for safe display.
  • Supported targets remain Linux JVM, Node.js and Linux X64 Native with fixed Docker API 1.51. macOS/Windows support is future work.
  • The existing API extension mechanism is unchanged. Replacing the diagnostic route allowlist with metadata supplied by extensions is recorded in the roadmap.

User guide and API reference · Migration notes · Dashboard instructions

Maven coordinates: dev.limebeck.libs:docker-client:1.0.1. Release CI passed and Central Portal accepted the automatic publication. Public Maven Central propagation is still in progress; dependency resolution may temporarily return 404.

Release CI and dashboard artifact · Passed PR matrix

1.0.0

Choose a tag to compare

@LimeBeck LimeBeck released this 13 Sep 15:33
16ea507

First stable release for building a management panel for a single Docker host.

Highlights

  • Container lifecycle operations with typed configuration for ports, environment, mounts and networks, and documented workflows that retain persistent data.
  • Typed pull/push/load progress, operation-specific push results, and explicit final success/error and cancellation handling.
  • Logs, stats, events and interactive exec/attach with documented framing, ownership, cancellation and application-managed recovery.
  • A new user guide integrated with Dokka, covering installation, complete workflows, terminals, registry authentication, errors and recovery. Its Kotlin examples compile on JVM, JS and Linux X64.
  • Public API compatibility checks and warning-as-error build gates. The stable API is unchanged from 1.0.0-rc.

Install

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

Published targets are JVM, Kotlin/JS on Node.js and Linux X64 Native. The supported Linux CI matrix uses Docker 28.5.2/29.0.0 and JDK 17/21, with fixed Docker API 1.51. Connections use Unix sockets; no API negotiation or automatic reconnect/replay is provided.

See usage, migration and compatibility. RC users need only change the dependency version. Migration from older releases is documented separately.

Scope

Application authentication, roles, audit, Compose orchestration and recovery policy belong to the consuming application. The dashboard is an independent example and its UI is not an SDK release gate. macOS and Windows support on both JVM and Native is planned for a future release.

Full changes: v1.0.0-rc...v1.0.0

Validation

  • PR matrix: Docker 28.5.2/29.0.0 × JDK 17/21, all targets, ABI, compiled guide and SDK recovery. The isolated test daemon failed to restart on the first attempt; the repeated job and local recovery check passed.
  • Release CI.

All four Maven publications (common, JVM, JS and Linux X64) and their dependencies resolved successfully in an independent Gradle consumer on 2026-09-13.

1.0.0-rc — Single-host Docker management

Choose a tag to compare

@LimeBeck LimeBeck released this 13 Sep 08:42
3906958

Release candidate for building a reliable management panel for a single Docker host.

Highlights

  • Typed container creation with ports, environment, mounts and network attachments. Existing ContainerConfig convenience calls remain available.
  • Typed image pull/push/load progress callbacks, including operation-specific push results, terminal success/error handling and cancellation.
  • Validated logs/stats/events and terminal resubscription after restarting an isolated Docker daemon. Applications own reconciliation and reconnect policy; the SDK does not replay commands automatically.
  • Expanded native dashboard example: configurable creation, staged replacement, rollback and explicit readiness confirmation while retaining named volumes; bounded live logs/events, memory stats and pull progress/cancellation.
  • Restored JDK 17 compatibility and support for nullable Docker 29 image-store metadata. ABI checks and warnings-as-errors are part of CI.

Compatibility and migration

Artifacts target JVM, Node.js and Linux X64. The PR matrix passed Docker 28.5.2/29.0.0 with JDK 17/21. Docker API 1.51 remains the fixed baseline.

From 0.1.0, DriverData.data is nullable and DockerClient.logger exposes Ktor's logger type. Existing create and image-operation calls without callbacks retain their signatures. See migration guidance, image progress and recovery policy.

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

Scope

This is a prerelease. The dashboard remains a loopback development example; authentication, roles, audit and Compose orchestration belong to the application. Replacement workflows cover sample-managed configurations and do not undo writes to shared volumes. CI teardown may forcibly terminate the owned native dashboard process after ten seconds; graceful native process shutdown is not established by these tests.

macOS and Windows support on both JVM and Native is planned for a future release and is not included here.

Validation

  • Four-cell PR matrix, including isolated daemon restart and native dashboard HTTP/WebSocket acceptance.
  • Release CI passed build, real-Docker tests, both acceptance suites and the Maven Central deployment step. All four publications (common, JVM, JS and Linux X64) and their dependencies were resolved successfully from Maven Central by an independent Gradle consumer with an initially empty dependency cache on 2026-09-13.
  • Browser acceptance covers terminal resize/fullscreen/Escape, UTF-8, progress/error/cancel and narrow layouts.

Full changes: v0.1.0...v1.0.0-rc

0.1.0 — Reliable Docker streams and interactive terminals

Choose a tag to compare

@LimeBeck LimeBeck released this 12 Sep 09:26
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