v0.0.21
Tested against DBOS 2.19.0 — see
tested_dbos_versioninGET /versionanddbos-argus --version. Other DBOS versions may still work; the in-app connection indicator surfaces any schema mismatches.
Added
- SQLite backend support via the new
ArgusDBadapter split. Point
ARGUS_DATABASE_URLatsqlite+aiosqlite:///path/to/argus.dband
the entire stack (REST + realtime) works against the DBOS app's
SQLite store. CI matrix runs the test suite against both backends. - Realtime (WebSocket) layer at
/wsreplaces per-page polling. One
multiplexed socket carries every page's subscriptions; server-side
pollers gate heavier snapshots behind a cheap cursor query and shut
down when the last subscriber disconnects. Channels:health,
stats,stats.timeseries,workflows,workflow,schedules,
notifications— each emits the same JSON shape as its REST
counterpart, which remains authoritative for curl/debug. Cursor
queries are implemented per-dialect onArgusDBso the layer works
unchanged on both Postgres and SQLite. Configurable via
ARGUS_REALTIME_ENABLED,ARGUS_REALTIME_INTERVAL_MS,
ARGUS_REALTIME_HEALTH_INTERVAL_MS, and
ARGUS_REALTIME_MAX_SUBS_PER_CONN. - Live workflow detail page: subscribing to
workflowwith{id}
re-snapshots every tick so steps appear as they complete.
Changed
- Connection indicator now reflects WebSocket health (with a 1Hz
poll surfacing disconnects as a stickyfetchError) instead of
per-pagesetInterval(5000)/healthzfetches. While diagnostics
report issues (e.g. dbos schema absent), the indicator re-polls
/api/sql-diagnosticsevery 5s so it converges automatically once
the DBOS app provisions its tables — no hard refresh needed. - Hub suppresses
updatebroadcasts when a fresh snapshot is
byte-identical to the cached one. Cursor-less channels (workflow,
health) re-snapshot every tick; the dedupe keeps the wire quiet
and prevents xyflow edge-dash animations on the workflow detail
page from restarting on every poll.
Fixed
- Workflow flow renders the container header (name + ID) for
freshly-spawned workflows that have no steps yet — ELK was
collapsing empty containers to ~0×0, leaving only the status
badge visible until the first step landed.