Releases: StakeSquid/dtop
Releases · StakeSquid/dtop
dtop v2.3.5
What's changed
- Tmux: Removed
tmux set-optionmouse toggling. Mouse is session-scoped in tmux, so the old-pusage 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
What's changed
- Tmux: Detect tmux, disable per-pane mouse while dtop runs, restore on exit and around
docker execshells; 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: scrollon the DataTable for consistent wheel handling.
Install: pip install dtop==2.3.4
v2.2.3
Full Changelog: v2.2.2...v2.2.3
v2.2.2
Changes
- Textual log view: Normalization runs in a background
run_workerwith 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;
communicatetimeout 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.pycovers subprocess behavior, stale-id guard, and worker scheduling.
dtop v2.2.1
dtop v2.2.1
Fixes
- IMAGE column: Show
repository:tagagain when Docker returns a digest in the container list. A singleimages.list()per refresh builds a digest→tag map off the UI thread (no per-rowimages.get). - Log normalization: Normalize logs via a Textual
Messageandasyncio.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.1dtop v2.2.0
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.attrsonly (container_image_label), avoiding docker-py's lazycontainer.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
performancesettings in~/.docker_tui.json:low_connection_modeandmax_concurrent_stats_streamsfor 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
RichLogin follow mode when filters and normalization allow it.
Install
pip install dtop==2.2.0v2.1.1
Full Changelog: v2.1.0...v2.1.1
v2.1.0
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
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
--legacyfor the original curses interface) aiohttpis now a required dependency- Some keyboard shortcuts have changed (see README for full reference)
Install / Upgrade
pip install --upgrade dtopv1.0.2
Add github workflows to automatically publish new releases to PyPi
Full Changelog: v1.0.1...v1.0.2