Release Notes
Added
Configurable Docker API Timeouts
- Timeout configuration system — all Docker API call timeouts are now configurable via
dol config set or YAML/TOML config file
DockerApiConfig struct with call_timeout, quick_timeout, max_retries, retry_base_ms — read from DolConfig via From<&DolConfig>
docker_call(), docker_call_quick(), docker_call_with_retry() — timeout-aware helper functions with exponential backoff retry
BollardDockerClient::connect_with_config() — create client with configurable timeout settings
BollardMetricsCollector::with_config() — create collector with configurable stats timeout
alerts::init_alert_timeouts() — global OnceLock-based alert timeout initialization from config
DockerError::Timeout(u64) — dedicated timeout error variant
- 6 new config keys:
api-timeout (30s), api-quick-timeout (10s), stats-timeout (10s), events-timeout (30s), webhook-timeout (10s), restart-timeout (30s)
- 13 unit tests covering YAML/TOML round-trip, deserialization,
DockerApiConfig conversion, and error handling
Parser Error Message Improvements
expect_ident() and expect() now show both expected and found tokens — e.g., expected \then`, found `emai`instead of justexpected `then``
- Keyword similarity suggestions —
suggest_keyword() with Levenshtein distance via strsim crate for pipeline nodes, analysis verbs, and alert actions (fltr → fill, grp → group, prnt → print, fnd → find)
suggest_keyword(input, keywords) — reusable helper filtering by first character + strsim::levenshtein() minimum
- 9 new unit tests for keyword suggestions with close and distant misspellings
CLI Polish
- Rich
--help output — about field rewritten with descriptive text; new long_about with DOL overview; after_help with 23 categorized example queries (basic, advanced, files/store, output/integration, interactive modes)
- Improved subcommand descriptions —
repl (+tab completion, history, syntax-colored errors), top (+CPU, memory, network stats), dashboard (+event stream, resource gauges)
dol config --help enriched — ConfigAction variants (init, set, view) now have doc comments with usage hints
API Documentation
- Module-level
//! docs with examples — added to all 18 library modules (alerts, ast, cli, config, dashboard, docker, eval, events, executor, export, lib, metrics, parser, planner, repl, semantic, sqlite_store, storage)
lib.rs crate root doc — module overview table with one-line descriptions for all 19 submodules
- All examples use
ignore blocks (require Docker), format: description + # Example + code
cargo doc --no-deps: 0 warnings
Changed
Non-breaking
BollardDockerClient::connect() now uses DockerApiConfig::default() for backward compatibility
BollardDockerClient::connect_with_host() accepts &DolConfig for timeout configuration
str_similarity() replaced with strsim::levenshtein() for accurate Levenshtein edit distance
suggest_similar_target() refactored to use suggest_keyword() internally
Documentation
- README.md restructured — features list condensed from 30+ to 15 items; duplicate "Query Timeout" section removed; REPL/Dashboard sections shortened with links to docs/; new "Error Messages" section showcasing improved parser errors; CLI Flags table deduplicated
- docs/spec.md — new "Docker API Timeout Configuration" section with all 6 timeout keys, defaults, and example YAML
- docs/architecture.md — updated Docker Client (timeout/retry helpers), Alerting Engine (configurable timeouts), and Config Loader (12-key table) sections
- docs/examples.md — new section 32 "Configurable Timeouts" with
dol config set examples and YAML config template
- docs/examples.html — regenerated from examples.md via pandoc, includes new section 32
- docs/index.html — feature grid updated with "Configurable Docker API timeouts (with retry)"
- Fixed
metrics_interval (10→30) and snapshot_interval (60→300) defaults in architecture.md to match code constants
Code Quality
- 21 new tests (13 config + 8 parser)
- Test count: 413 total (+21), 0 failed, 1 ignored
cargo clippy — zero warnings
cargo audit — zero vulnerabilities
- CI: example validation —
scripts/validate_examples.sh now runs in CI after tests, validating all 101 .dol example files with dol --explain
- CI: rust-cache —
Swatinem/rust-cache@v2 added for faster incremental builds
Dependencies
- Added:
strsim = "0.11.1" (Levenshtein distance for keyword suggestions)
- Updated:
bitflags 2.11.1 → 2.12.1, chrono 0.4.44 → 0.4.45, log 0.4.30 → 0.4.32, yoke 0.8.2 → 0.8.3 (cargo update, 2026-06-05)
- Added:
DEPENDENCY_POLICY.md — formal dependency upgrade policy (cadence, pinning, audit requirements, adding new dependencies)
Install dol 0.6.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/genc-murat/DockQL/releases/download/v0.6.0/dol-installer.sh | sh
Install prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/genc-murat/DockQL/releases/download/v0.6.0/dol-installer.ps1 | iex"
Download dol 0.6.0