Skip to content

Releases: StakeSquid/dtop

dtop v2.3.5

24 Mar 12:45

Choose a tag to compare

What's changed

  • Tmux: Removed tmux set-option mouse toggling. Mouse is session-scoped in tmux, so the old -p usage could break other windows. dtop now relies on XTerm mouse tracking escape sequences (plus Textual's driver) so tmux forwards wheel/clicks without changing session options.

Install: pip install dtop==2.3.5

dtop v2.3.4

24 Mar 12:13

Choose a tag to compare

What's changed

  • Tmux: Detect tmux, disable per-pane mouse while dtop runs, restore on exit and around docker exec shells; re-enable terminal mouse tracking sequences.
  • Log view: Mouse scroll down turns off follow mode when the view is not at the bottom (matches scroll-up behavior).
  • Main container table: Mouse wheel moves the row cursor (with viewport scroll via Textual); overflow-y: scroll on the DataTable for consistent wheel handling.

Install: pip install dtop==2.3.4

v2.2.3

23 Mar 17:47

Choose a tag to compare

Full Changelog: v2.2.2...v2.2.3

v2.2.2

22 Mar 21:07

Choose a tag to compare

Changes

  • Textual log view: Normalization runs in a background run_worker with an exclusive group so follow-mode refreshes no longer invalidate every normalize result (message-pump await + monotonic id race).
  • Visibility: Normalize subprocess nonzero exit, timeout, and missing script report via app notifications; communicate timeout scales with log size (about 5–60s).
  • normalize_logs.py: Only treat JSON objects as structured logs after json.loads (scalar/array JSON no longer crashes with TypeError). Safer stdout handling for broken pipe and encoding issues; per-line fallback on formatter errors.
  • Tests: tests/test_textual_log_normalize.py covers subprocess behavior, stale-id guard, and worker scheduling.

dtop v2.2.1

22 Mar 20:46

Choose a tag to compare

dtop v2.2.1

Fixes

  • IMAGE column: Show repository:tag again when Docker returns a digest in the container list. A single images.list() per refresh builds a digest→tag map off the UI thread (no per-row images.get).
  • Log normalization: Normalize logs via a Textual Message and asyncio.to_thread / run_in_executor, with request sequencing so overlapping refreshes (follow mode) no longer drop or corrupt output.

Install

pip install dtop==2.2.1

dtop v2.2.0

22 Mar 20:29

Choose a tag to compare

dtop v2.2.0

Performance and WSL2

  • Run blocking Docker SDK calls on a background thread pool (serialized) so the Textual UI stays responsive during containers.list, lifecycle actions, recreate, and shell preparation.
  • Resolve image names from container.attrs only (container_image_label), avoiding docker-py's lazy container.image / images.get() that could stall the UI on every table refresh.
  • Stats-driven updates now refresh only CPU, MEM, NET I/O, and DISK I/O cells when row order is unchanged, with a small debounce and string cache.
  • Removed an unnecessary delay in the aiohttp stats stream reader.
  • Optional performance settings in ~/.docker_tui.json: low_connection_mode and max_concurrent_stats_streams for high-latency Docker (e.g. WSL2).

Log viewer

  • Single logs() fetch per load/refresh (with timestamps); normalization runs in a worker thread.
  • Incremental append to RichLog in follow mode when filters and normalization allow it.

Install

pip install dtop==2.2.0

v2.1.1

13 Feb 16:55

Choose a tag to compare

Full Changelog: v2.1.0...v2.1.1

v2.1.0

13 Feb 15:44

Choose a tag to compare

dtop v2.1.0

Highlights

  • Added full custom theme support with persisted configuration in ~/.docker_tui.json
  • Added in-app Theme Editor (single-key shortcut T) to edit and apply theme colors directly in dtop
  • Added semantic runtime color customization for status labels, connection state, logs, inspect view, and search highlighting
  • Improved theme cycling with support for custom dtop-custom theme

Other changes

  • Updated documentation for new theming workflow and shortcuts
  • Bumped project version to 2.1.0

v2.0.0

13 Feb 14:49

Choose a tag to compare

dtop v2.0.0

Complete rewrite of dtop with a modern Textual-based terminal UI.

Highlights

  • New Textual UI — Modern, responsive interface replacing the curses-only TUI (legacy mode still available via --legacy)
  • Real-time streaming stats — CPU, memory, network I/O, and disk I/O via async Docker API streaming with automatic reconnect
  • Advanced log viewer — Search with highlighting, complex filter expressions (AND/OR/NOT), follow mode, time-range filtering, normalization, tail control, Docker timestamps toggle, and export to file
  • Container inspector — Tree and JSON views with search, expand/collapse, and path/value copy
  • Full keyboard shortcuts — All container actions (stop, start, pause, restart, exec, recreate) available directly from the table and the action modal
  • Container recreate — Docker-compose aware recreate with file browser, plus simple mode for standalone containers
  • Customizable columns — Built-in column editor (C key), persistent config, responsive auto-sizing with weight-based distribution
  • Dark/light theme — Toggle with D key
  • Search & filter — Search containers by name/image/status/ID with highlighting; filter with live text matching and status dropdown

Breaking Changes

  • Default UI is now Textual (use --legacy for the original curses interface)
  • aiohttp is now a required dependency
  • Some keyboard shortcuts have changed (see README for full reference)

Install / Upgrade

pip install --upgrade dtop

v1.0.2

27 May 16:35

Choose a tag to compare

Add github workflows to automatically publish new releases to PyPi

Full Changelog: v1.0.1...v1.0.2