Every release.
Honestly.
A complete record of what we've shipped โ features, fixes, and the occasional postmortem. Newest first.
Cloud logs now actually arrive
A latent bug that had been silently dropping every cloud log batch for seven days was diagnosed and fixed. If your bot logs weren't showing up in the dashboard, this is the release that fixes it.
- Cloud log shipping:
cloud_log_shipper.pynow overrides each row'suser_idwith the JWT owner UUID. Previously, the local SQLite integer ID was being sent verbatim to Supabase's UUID-typed column, causing 22P02 errors that dropped every batch. - Friendly errors: a handful of edge cases in the user-frame line extraction logic.
- CI regression guard: grep-level check in GitHub Actions ensures the
user_idoverride line stays in place. The bug was invisible to type-checkers and unit tests โ the only way to prevent regression was a literal text guard.
The wd SDK ships
Every bot can now import wd with zero setup. Pure stdlib, ~120 lines, no pip install. Auto-injected into sys.path at runtime.
wd.log.info / warning / error / debugโ structured logging that surfaces level filters in the dashboard.wd.connection(name)โ pulls credentials from the encrypted connection store. Slug-tolerant lookup.repr()masks secrets.wd.bot_id(),wd.bot_name(),wd.bot_dir(),wd.is_demo()โ runtime introspection helpers.- The SDK is bundled with the app and auto-injected into bot venvs โ no
pip installever required.
- Bot runtime now consistently routes through
wd_runner.pywhether the bot uses a venv or the bundled Python โ friendly errors and entry-point discovery work the same in both modes.
Bot DX overhaul โ auto-install, friendly errors, entry-point discovery
The biggest reliability release since the platform shipped. Three layered fixes that together make "paste code, click Start" Just Work for the vast majority of bots.
- Self-heal retry loop: When a bot raises
ModuleNotFoundError, the runtime parses the missing package, runsuv pip installinto the bot's isolated venv, and retries โ up to 3 times. Persistent:.auto_installed.txtper bot means next launch starts clean. - Friendly error layer:
wd_runner._emit_friendlysurfaces user-frame line numbers and hint messages instead of raw 200-line tracebacks. Common errors (pandas, ccxt, requests) get hand-curated hints. - Entry-point auto-discovery: Bots that only define a
main(),run(), orstart()function now actually execute. Handles async entry points viaasyncio.run. - Pre-flight syntax check:
compile()runs before subprocess spawn so userSyntaxErrorshows up with line + column, not as "Process exited with code 1."
- Chat "Send Failed" for non-admin users:
autoRefreshTokenwas racingsync_engine.py's single-use refresh token. ConditionalautoRefreshTokenbased on transport mode +isAuthLikeErrorretry inchatClient.tsstops the regression. - [DEBUG] log lines are now classified as INFO so they don't render in red.
Subscription gate + AI Fix observability
- Subscription gate: Free trial users were being misrouted to "Claim your free trial" instead of being recognized as already on trial. The check now respects
trial_ends_at.
- AI Fix audit logging: Every AI Fix call โ success or failure โ now writes a structured row to
app_errors. Future user reports of "AI Fix didn't work" can be diagnosed with a single SQL query. - Better 402/429 messages: Failures now tell the user which subscription state they're in, or how many hours until rate limit resets.
Stability week
A series of focused patch releases on connection stability, auth refresh flow, and edge cases discovered through real user reports.
- Bot venv creation now uses
uvon first launch, dramatically faster thanpython -m venv + pip. - Trigger E auto-reload now counts only authentication-related fetch failures, not generic network errors.
- Various UI consistency fixes across the dashboard.
Cloud logs & AI Fix launch
The release that introduced cloud log shipping and the "Fix with AI" workflow. Every bot's logs now stream to a real-time dashboard, and one-click Claude-powered debugging lands.
- Cloud log shipping: Bot logs batch-upload to Supabase every 10 seconds. Dashboard at
watchdogbot.cloud/dashboardshows them in real time, filterable by level. - AI Fix: One-click error fixing powered by Claude. Reads your code + traceback, proposes a diff inline.
- Multi-exchange connections: Kalshi, Binance, Coinbase, Kraken, plus arbitrary HTTP APIs.
WatchDog Bot ships
The desktop app launches publicly. Built on Electron + FastAPI + Supabase, ships as a 200 MB installer for Windows and macOS with bundled Python runtime.
- Visual bot fleet dashboard with adaptive UI per bot type.
- Code editor with Python syntax highlighting.
- Per-bot isolated execution with crash recovery.
- Local SQLite for state, optional Supabase sync.
- 7 dashboard themes (Deep Space, Ocean, Cosmic, Matrix, Synthwave, Glacier, Light).
Ship your first bot today
Free trial, no credit card. v1.1.14 is the latest stable build.
Start Free Trial โ
WatchDog Bot