Changelog¶
Full history of all notable changes, organised by release.
The project follows Semantic Versioning and the Keep a Changelog format.
Browse the full CHANGELOG.md with syntax highlighting directly on
GitHub, including the [Unreleased] section for upcoming changes.
Recent releases¶
[Unreleased]
v3 — hexagonal rewrite: pure
domain/transport/sources/storage/application/interfaceslayers; all timestamps are nanosecond UTC int64; three usage modes (PythonClient,dccdCLI, HTTP API + web UI).Web UI split by concern: read-only Data (data-type tabs, freshness, OHLC gap detection, on-disk size), and two collection pages Historical (editable first date, real coverage bar, inline Run/Delete) and Live (real-time liveness over SSE, inline Start/Stop/Delete), with inline job create/edit/delete; grouped
Collect/Systemnav.Job CRUD over the API (
/api/jobs/create|update|delete);inventoryreports on-disk bytes + OHLC gaps;EventBusfans out to multiple SSE consumers with a stream liveness sample.UI polish: single-line top bar (brand + nav); OHLC moved out of Live into a recurring Schedule (cron) on Historical; order books removed from Historical (no REST history); Run all / per-exchange run; timezone-aware dates via
settings.timezone.Bearer auth on
/api/*; cursor-based trades pagination (fixes silent loss of >95 % of trades).Removed the v2→v3 Parquet migration tool (
dccd migrate//api/migrate); fixed Kraken live OHLC timestamps (readinterval_begin).Sphinx documentation refonte: structured sidebar, exchange-specific pages, hero banner, installation guide, CLI reference, configuration reference, candlestick logo (#59)
[2.3.2] — 2026-05-25
Added
dccd status --json: emit raw metrics as JSON for Grafana / jq (#53)HistoJob.max_retriesandHistoJob.retry_delay: per-job retry config with exponential back-off (#53)resolve_config_path()and XDG fallback (~/.config/dccd/config.yml) (#49)dccd inventory: scandata_pathand print a table of all stored data with date range, row count, and gap count (#50)dccd remove: remove a pair from a histo_job and re-validate before writing (#50)
Changed
Replace pandas with Polars throughout storage, histo_dl, backfill, process_data, and stream_manager;
get_data()now returnspl.DataFrameby default (#52)Backfill progress bar shows current window date instead of raw count (#48)
Fixed
_sort_datano longer crashes withColumnNotFoundError: "date"on empty API responses after the Polars migration (#54)
[2.3.1] — 2026-05-24
Fixed
DataStore.missing_intervalsnow detects gaps before the first saved row (#46)Coinbase: raise
RuntimeErroron HTTP 200 with a JSON dict instead of silently crashing (#45)_sort_datano longer raisesKeyError: 'TS'on empty data (#45)OKX: switch from
/market/candlesto/market/history-candles(#45)
[2.3.0] — 2026-05-22
Major release introducing the autonomous daemon, Polars migration, and Pydantic v2 models. See the full CHANGELOG for details.