2025-11-25 12:00:48 +01:00
# Changelog
2026-01-04 16:36:40 +01:00
**Why this looks different:** the project was renamed from **Clawdis → Clawdbot** . To make the transition clear, releases now use **date-based versions** (`YYYY.M.D` ) and the changelog is **compressed** into milestone summaries. Full detail still lives in git history and the docs.
2026-01-03 11:15:57 +01:00
2026-01-04 16:16:20 +00:00
## Unreleased
2026-01-05 23:02:13 +00:00
### Breaking
- Timestamps in agent envelopes are now UTC (compact `YYYY-MM-DDTHH:mmZ` ); removed `messages.timestampPrefix` . Add `agent.userTimezone` to tell the model the user’ s local time (system prompt only).
2026-01-06 00:56:29 +00:00
- Model config schema changes (auth profiles + model lists); doctor auto-migrates and the gateway rewrites legacy configs on startup.
2026-01-06 02:06:06 +01:00
- Commands: gate all slash commands to authorized senders; add `/compact` to manually compact session context.
2026-01-06 03:30:33 +01:00
- Groups: `whatsapp.groups` , `telegram.groups` , and `imessage.groups` now act as allowlists when set. Add `"*"` to keep allow-all behavior.
2026-01-05 23:02:13 +00:00
2026-01-05 02:48:25 +01:00
### Fixes
2026-01-06 07:18:06 +01:00
- Messages: stop defaulting ack reactions to 👀 when identity emoji is missing.
2026-01-06 07:05:08 +01:00
- Auto-reply: require slash for control commands to avoid false triggers in normal text.
2026-01-06 05:33:08 +01:00
- Auto-reply: treat steer during compaction as a follow-up, queued until compaction completes.
- Auth: lock auth profile refreshes to avoid multi-instance OAuth logouts; keep credentials on refresh failure.
2026-01-06 15:32:06 +01:00
- Gateway/CLI: stop forcing localhost URL in remote mode so remote gateway config works. Thanks @oswalpalash for PR #293 .
2026-01-06 05:33:08 +01:00
- Onboarding: prompt immediately for OpenAI Codex redirect URL on remote/headless logins.
2026-01-06 09:13:04 +01:00
- Configure: add OpenAI Codex (ChatGPT OAuth) auth choice (align with onboarding).
2026-01-06 06:01:11 +00:00
- Doctor: suggest adding the workspace memory system when missing (opt-out via `--no-workspace-suggestions` ).
- Build: fix duplicate protocol export, align Codex OAuth options, and add proper-lockfile typings.
2026-01-06 15:05:19 +01:00
- Build: install Bun in the Dockerfile so `pnpm build` can run Bun scripts. Thanks @loukotal for PR #284 .
2026-01-06 03:05:11 +00:00
- Typing indicators: stop typing once the reply dispatcher drains to prevent stuck typing across Discord/Telegram/WhatsApp.
2026-01-05 22:57:04 -06:00
- Typing indicators: fix a race that could keep the typing indicator stuck after quick replies. Thanks @thewilloftheshadow for PR #270 .
2026-01-05 22:45:40 -06:00
- Google: merge consecutive messages to satisfy strict role alternation for Google provider models. Thanks @Asleep123 for PR #266 .
2026-01-05 23:37:37 -06:00
- Postinstall: handle targetDir symlinks in the install script. Thanks @obviyus for PR #272 .
2026-01-06 01:41:19 -03:00
- WhatsApp/Telegram: add groupPolicy handling for group messages and normalize allowFrom matching (tg/telegram prefixes). Thanks @mneves75 .
2026-01-06 03:28:35 +00:00
- Auto-reply: add configurable ack reactions for inbound messages (default 👀 or `identity.emoji` ) with scope controls. Thanks @obviyus for PR #178 .
2026-01-06 04:43:35 +00:00
- Polls: unify WhatsApp + Discord poll sends via the gateway + CLI (`clawdbot poll` ). (#123 ) — thanks @dbhurley
2026-01-05 02:48:25 +01:00
- Onboarding: resolve CLI entrypoint when running via `npx` so gateway daemon install works without a build step.
2026-01-06 02:48:53 +01:00
- Onboarding: when OpenAI Codex OAuth is used, default to `openai-codex/gpt-5.2` and warn if the selected model lacks auth.
2026-01-06 01:10:32 +00:00
- CLI: auto-migrate legacy config entries on command start (same behavior as gateway startup).
2026-01-06 03:25:21 +01:00
- Gateway: add `gateway stop|restart` helpers and surface launchd/systemd/schtasks stop hints when the gateway is already running.
2026-01-06 02:48:44 +00:00
- Gateway: honor `agent.timeoutSeconds` for `chat.send` and share timeout defaults across chat/cron/auto-reply. Thanks @MSch for PR #229 .
2026-01-06 01:38:09 +00:00
- Auth: prioritize OAuth profiles but fall back to API keys when refresh fails; stored profiles now load without explicit auth order.
2026-01-06 03:05:56 +01:00
- Control UI: harden config Form view with schema normalization, map editing, and guardrails to prevent data loss on save.
2026-01-06 03:10:13 +01:00
- Cron: normalize cron.add/update inputs, align channel enums/status fields across gateway/CLI/UI/macOS, and add protocol conformance tests. Thanks @mneves75 for PR #256 .
2026-01-06 01:40:02 +00:00
- Docs: add group chat participation guidance to the AGENTS template.
2026-01-06 01:40:15 +00:00
- Gmail: stop restart loop when `gog gmail watch serve` fails to bind (address already in use).
2026-01-05 21:19:49 +00:00
- Linux: auto-attempt lingering during onboarding (try without sudo, fallback to sudo) and prompt on install/restart to keep the gateway alive after logout/idle. Thanks @tobiasbischoff for PR #237 .
2026-01-05 05:27:58 +01:00
- TUI: migrate key handling to the updated pi-tui Key matcher API.
2026-01-06 08:41:04 +01:00
- TUI: add `/elev` alias for `/elevated` .
2026-01-06 00:41:12 +01:00
- Logging: redact sensitive tokens in verbose tool summaries by default (configurable patterns).
2026-01-05 05:54:41 +00:00
- macOS: prefer gateway config reads/writes in local mode (fall back to disk if the gateway is unavailable).
2026-01-05 05:30:40 +01:00
- macOS: local gateway now connects via tailnet IP when bind mode is `tailnet` /`auto` .
2026-01-05 07:25:13 +01:00
- macOS: Connections settings now use a custom sidebar to avoid toolbar toggle issues, with rounded styling and full-width row hit targets.
2026-01-05 05:55:02 +01:00
- macOS: drop deprecated `afterMs` from agent wait params to match gateway schema.
2026-01-06 02:06:06 +01:00
- Auth: add OpenAI Codex OAuth support and migrate legacy oauth.json into auth.json.
2026-01-05 13:49:25 +00:00
- Model: `/model` list shows auth source (masked key or OAuth email) per provider.
2026-01-05 14:11:33 +00:00
- Model: `/model list` is an alias for `/model` .
2026-01-06 02:06:06 +01:00
- Model: `/model` output now includes auth source location (env/auth.json/models.json).
2026-01-05 23:00:37 +01:00
- Model: avoid duplicate `missing (missing)` auth labels in `/model` list output.
2026-01-06 02:48:53 +01:00
- Auth: when `openai` has no API key but Codex OAuth exists, suggest `openai-codex/gpt-5.2` vs `OPENAI_API_KEY` .
2026-01-05 06:46:20 +01:00
- Docs: clarify auth storage, migration, and OpenAI Codex OAuth onboarding.
2026-01-05 06:18:11 +01:00
- Sandbox: copy inbound media into sandbox workspaces so agent tools can read attachments.
2026-01-06 08:40:21 +00:00
- Sandbox: enable session tools in sandboxed sessions with spawned-only visibility by default (opt-in `agent.sandbox.sessionToolsVisibility = "all"` ).
2026-01-05 16:16:27 +00:00
- Control UI: show a reading indicator bubble while the assistant is responding.
2026-01-05 17:40:10 +00:00
- Control UI: animate reading indicator dots (honors reduced-motion).
2026-01-05 17:15:17 +00:00
- Control UI: stabilize chat streaming during tool runs (no flicker/vanishing text; correct run scoping).
2026-01-05 20:50:07 -08:00
- Control UI: let config-form enums select empty-string values. Thanks @sreekaransrinath for PR #268 .
2026-01-06 07:49:12 +01:00
- Control UI: scroll chat to bottom on initial load. Thanks @kiranjd for PR #274 .
2026-01-06 08:16:09 +01:00
- Control UI: add Chat focus mode toggle to collapse header + sidebar.
2026-01-06 09:10:11 +01:00
- Control UI: standardize UI build instructions on `bun run ui:*` (fallback supported).
2026-01-05 07:07:17 +01:00
- Status: show runtime (docker/direct) and move shortcuts to `/help` .
2026-01-05 15:50:14 +01:00
- Status: show model auth source (api-key/oauth).
2026-01-05 17:53:45 +01:00
- Block streaming: avoid splitting Markdown fenced blocks and reopen fences when forced to split.
2026-01-05 17:55:20 +00:00
- Block streaming: preserve leading indentation in block replies (lists, indented fences).
2026-01-05 18:38:30 +01:00
- Docs: document systemd lingering and logged-in session requirements on macOS/Windows.
2026-01-06 04:55:00 +01:00
- Auto-reply: centralize tool/block/final dispatch across providers for consistent streaming + heartbeat/prefix handling. Thanks @MSch for PR #225 .
2026-01-05 22:52:13 +00:00
- Heartbeat: make HEARTBEAT_OK ack padding configurable across heartbeat and cron delivery. (#238 ) — thanks @jalehman
2026-01-05 21:19:50 -08:00
- Skills: emit MEDIA token after Nano Banana Pro image generation. Thanks @Iamadig for PR #271 .
2026-01-06 00:55:41 +01:00
- WhatsApp: set sender E.164 for direct chats so owner commands work in DMs.
2026-01-06 01:09:25 +01:00
- Slack: keep auto-replies in the original thread when responding to thread messages. Thanks @scald for PR #251 .
2026-01-06 16:22:14 +02:00
- Slack: fix Slack provider startup under Bun by using a named import for Bolt `App` . Thanks @snopoke for PR #299 .
2026-01-06 01:26:24 +00:00
- Discord: surface missing-permission hints (muted/role overrides) when replies fail.
2026-01-05 22:07:29 -06:00
- Discord: use channel IDs for DMs instead of user IDs. Thanks @VACInc for PR #261 .
2026-01-06 01:52:01 +01:00
- Docs: clarify Slack manifest scopes (current vs optional) with references. Thanks @jarvis -medmatic for PR #235 .
2026-01-06 01:16:25 +01:00
- Control UI: avoid Slack config ReferenceError by reading slack config snapshots. Thanks @sreekaransrinath for PR #249 .
2026-01-06 07:18:06 +01:00
- Auth: rotate across multiple OAuth profiles with cooldown tracking and email-based profile IDs. Thanks @mukhtharcm for PR #269 .
2026-01-06 09:25:42 +01:00
- Auth: fix multi-account OAuth rotation so round-robin alternates instead of pinning to lastGood. Thanks @mukhtharcm for PR #281 .
- Configure: stop auto-writing `auth.order` for newly added auth profiles (round-robin default unless explicitly pinned).
2026-01-06 04:21:25 +00:00
- Telegram: honor routing.groupChat.mentionPatterns for group mention gating. Thanks Kevin Kern (@regenrek ) for PR #242 .
2026-01-06 04:27:21 +01:00
- Telegram: gate groups via `telegram.groups` allowlist (align with WhatsApp/iMessage). Thanks @kitze for PR #241 .
2026-01-05 22:07:29 -06:00
- Telegram: support media groups (multi-image messages). Thanks @obviyus for PR #220 .
2026-01-06 06:30:12 +01:00
- Telegram/WhatsApp: parse shared locations (pins, places, live) and expose structured ctx fields. Thanks @nachoiacovino for PR #194 .
2026-01-06 02:23:50 +01:00
- Auto-reply: block unauthorized `/reset` and infer WhatsApp senders from E.164 inputs.
2026-01-06 02:41:48 +01:00
- Auto-reply: track compaction count in session status; verbose mode announces auto-compactions.
2026-01-06 02:22:09 +00:00
- Telegram: send GIF media as animations (auto-play) and improve filename sniffing.
2026-01-06 04:04:23 +01:00
- Bash tool: inherit gateway PATH so Nix-provided tools resolve during commands. Thanks @joshp123 for PR #202 .
2026-01-05 05:27:58 +01:00
### Maintenance
2026-01-06 10:49:45 -06:00
- UI: add favicon.ico derived from the macOS app icon. Thanks @jeffersonwarrior for PR #305 .
2026-01-06 08:15:20 +01:00
- Tooling: replace tsx with bun for TypeScript execution. Thanks @obviyus for PR #278 .
2026-01-05 05:27:58 +01:00
- Deps: bump pi-* stack, Slack SDK, discord-api-types, file-type, zod, and Biome.
2026-01-05 18:16:29 +01:00
- Skills: add CodexBar model usage helper with macOS requirement metadata.
2026-01-06 00:26:37 +01:00
- Skills: add 1Password CLI skill with op examples.
2026-01-05 18:16:29 +01:00
- Lint: organize imports and wrap long lines in reply commands.
2026-01-06 04:27:21 +01:00
- Refactor: centralize group allowlist/mention policy across providers.
2026-01-05 22:52:13 +00:00
- Deps: update to latest across the repo.
2026-01-05 02:48:25 +01:00
2026-01-05 03:56:57 +01:00
## 2026.1.5-3
### Fixes
- NPM package: include missing runtime dist folders (slack/signal/imessage/tui/wizard/control-ui/daemon) to avoid `ERR_MODULE_NOT_FOUND` in Node 25 npx installs.
2026-01-05 03:47:57 +01:00
## 2026.1.5-2
### Fixes
- NPM package: include `dist/sessions` so `clawdbot agent` resolves session helpers in npx installs.
- Node 25: avoid unsupported directory import by targeting `qrcode-terminal/vendor/QRCode/*.js` modules.
2026-01-05 03:28:25 +01:00
## 2026.1.5-1
### Fixes
- NPM package: include `dist/sessions` so `clawdbot agent` resolves session helpers in npx installs.
- Node 25: avoid unsupported directory import by targeting `qrcode-terminal/vendor/QRCode/index.js` .
2026-01-05 02:39:42 +01:00
## 2026.1.5
2026-01-04 19:35:00 +01:00
### Highlights
- Models: add image-specific model config (`agent.imageModel` + fallbacks) and scan support.
- Agent tools: new `image` tool routed to the image model (when configured).
2026-01-05 00:59:25 +01:00
- Config: default model shorthands (`opus` , `sonnet` , `gpt` , `gpt-mini` , `gemini` , `gemini-flash` ).
2026-01-05 01:02:30 +01:00
- Docs: document built-in model shorthands + precedence (user config wins).
2026-01-06 03:30:33 +01:00
- Bun: optional local install/build workflow without maintaining a Bun lockfile (see `docs/bun.md` ).
2026-01-04 19:35:00 +01:00
2026-01-04 16:16:20 +00:00
### Fixes
2026-01-05 01:22:19 +01:00
- Control UI: render Markdown in tool result cards.
2026-01-05 01:21:33 +01:00
- Control UI: prevent overlapping action buttons in Discord guild rules on narrow layouts.
2026-01-04 17:02:46 +00:00
- Android: tapping the foreground service notification brings the app to the front. (#179 ) — thanks @Syhids
2026-01-05 02:15:11 +01:00
- Cron tool uses `id` for update/remove/run/runs (aligns with gateway params). (#180 ) — thanks @adamgall
2026-01-05 00:15:13 +00:00
- Control UI: chat view uses page scroll with sticky header/sidebar and fixed composer (no inner scroll frame).
2026-01-04 18:46:57 +01:00
- macOS: treat location permission as always-only to avoid iOS-only enums. (#165 ) — thanks @Nachx639
2026-01-04 14:39:21 -08:00
- macOS: make generated gateway protocol models `Sendable` for Swift 6 strict concurrency. (#195 ) — thanks @andranik -sahakyan
2026-01-05 02:19:26 +01:00
- macOS: bundle QR code renderer modules so DMG gateway boot doesn't crash on missing qrcode-terminal vendor files.
2026-01-05 04:58:37 +00:00
- macOS: parse JSON5 config safely to avoid wiping user settings when comments are present.
2026-01-05 12:03:36 +13:00
- WhatsApp: suppress typing indicator during heartbeat background tasks. (#190 ) — thanks @mcinteerj
2026-01-05 01:33:19 +01:00
- WhatsApp: mark offline history sync messages as read without auto-reply. (#193 ) — thanks @mcinteerj
2026-01-05 00:46:46 +01:00
- Discord: avoid duplicate replies when a provider emits late streaming `text_end` events (OpenAI/GPT).
2026-01-05 02:19:26 +01:00
- CLI: use tailnet IP for local gateway calls when bind is tailnet/auto (fixes #176 ).
2026-01-05 00:41:36 +01:00
- Env: load global `$CLAWDBOT_STATE_DIR/.env` (`~/.clawdbot/.env` ) as a fallback after CWD `.env` .
2026-01-05 00:59:25 +01:00
- Env: optional login-shell env fallback (opt-in; imports expected keys without overriding existing env).
2026-01-05 00:15:42 +01:00
- Agent tools: OpenAI-compatible tool JSON Schemas (fix `browser` , normalize union schemas).
2026-01-06 09:08:25 +01:00
- Onboarding: when running from source, auto-build missing Control UI assets (`bun run ui:build` ).
2026-01-04 22:11:04 +01:00
- Discord/Slack: route reaction + system notifications to the correct session (no main-session bleed).
2026-01-05 00:05:21 +01:00
- Agent tools: honor `agent.tools` allow/deny policy even when sandbox is off.
2026-01-05 00:39:34 +01:00
- Discord: avoid duplicate replies when OpenAI emits repeated `message_end` events.
2026-01-05 01:31:36 +01:00
- Commands: unify /status (inline) and command auth across providers; group bypass for authorized control commands; remove Discord /clawd slash handler.
2026-01-06 03:30:33 +01:00
- CLI: run `clawdbot agent` via the Gateway by default; use `--local` to force embedded mode.
## 2026.1.5
### Fixes
2026-01-04 21:51:26 +01:00
- Control UI: render Markdown in chat messages (sanitized).
2026-01-04 16:16:20 +00:00
2026-01-04 16:36:40 +01:00
## 2026.1.4
### Highlights
- Rename completion: all CLIs, paths, bundle IDs, env vars, and docs standardized on **Clawdbot** .
- Agent-to-agent relay: `sessions_send` ping‑ pong with `REPLY_SKIP` plus announce step with `ANNOUNCE_SKIP` .
- Gateway quality-of-life: config hot reload, port config support, and Control UI base paths.
- Sandbox additions: per-session Docker sandbox with hardened limits + optional sandboxed Chromium.
- New node capability: `location.get` across macOS/iOS/Android (CLI + tools).
2026-01-04 17:51:47 +01:00
- Models CLI: scan OpenRouter free models (tools/images), manage aliases/fallbacks, and show last-used model in status.
2026-01-03 12:26:22 +01:00
2026-01-04 16:36:40 +01:00
### Breaking
- Tool names drop the `clawdbot_` prefix (`browser` , `canvas` , `nodes` , `cron` , `gateway` ).
- Bash tool removes node-pty `stdinMode: "pty"` support (use tmux for real TTYs).
- Primary session key is fixed to `main` (or `global` for global scope).
2026-01-03 12:00:17 +01:00
2026-01-03 11:15:57 +01:00
### Fixes
2026-01-04 15:39:33 +00:00
- Doctor migrates legacy Clawdis config/service installs and normalizes sandbox Docker names.
2026-01-04 16:02:28 +00:00
- Doctor checks sandbox image availability and offers to build or fall back to legacy images.
2026-01-04 16:36:40 +01:00
- Presence beacons keep node lists fresh; Instances view stays accurate.
- Block streaming/chunking reliability (Telegram/Discord ordering, fewer duplicates).
- WhatsApp GIF playback for MP4-based GIFs.
- Onboarding + Control UI basePath handling fixes and UI polish.
- Clearer tool summaries, reduced log noise, and safer watchdog/queue behavior.
- Canvas host watcher resilience; build and packaging edge cases cleaned up.
2026-01-03 11:15:57 +01:00
2026-01-03 11:18:08 +01:00
### Docs
2026-01-04 16:36:40 +01:00
- Sandbox setup, hot reload, port config, and session announce step coverage.
- Skills and onboarding clarifications + additional examples.
2026-01-03 11:18:08 +01:00
2026-01-04 16:36:40 +01:00
## 2026.1.3 (beta 5)
2026-01-02 00:55:52 +00:00
2026-01-01 10:07:31 +01:00
### Breaking
2026-01-04 16:36:40 +01:00
- Skills config moved under `skills.*` (new `skills.entries` , `skills.allowBundled` ).
- Group session keys now `surface:group:<id>` / `surface:channel:<id>` ; legacy `group:*` removed.
- Discord config refactor; `discord.allowFrom` + `discord.requireMention` removed.
- Discord/Telegram require `enabled: true` in config when using env tokens.
- Routing `allowFrom` /mention settings moved to per-surface group settings.
2025-12-28 10:17:30 +00:00
2026-01-04 16:36:40 +01:00
### Highlights
- Talk Mode (continuous voice) with ElevenLabs TTS on macOS/iOS/Android.
- Discord: expanded tool actions, richer routing, and threaded reply tags.
- Auto-reply queue modes + session model overrides; TUI upgrades.
- Nix mode (declarative config) and Docker setup flow.
- Onboarding wizard + configure/doctor/update flows.
- Signal + iMessage providers; new skills (Trello, Things, Notes/Reminders, tmux coding).
- Browser tooling upgrades (remote CDP, no-sandbox, profiles).
2025-12-27 19:43:43 +01:00
### Fixes
2026-01-04 16:36:40 +01:00
- macOS codesign/TCC hardening and menu/UI stability improvements.
- Streaming/typing fixes; per-provider chunk limit tuning.
- Remote gateway auth + token handling tightened.
- Camera capture reliability and media sizing fixes.
2025-12-27 19:43:43 +01:00
2026-01-04 16:36:40 +01:00
## 2025.12.27 (betas 3– 4)
2025-12-23 03:02:30 +01:00
### Highlights
2026-01-04 16:36:40 +01:00
- First-class tools replace `clawdbot-*` skills (browser, canvas, nodes, cron).
- Per-session model selection and custom model providers.
- Group activation commands; Discord provider for DMs/guilds.
- Gateway webhooks + Gmail Pub/Sub hooks.
- Command queue modes + `agent.maxConcurrent` cap.
- Background bash tasks with `process` tool; gateway in-process restart.
2025-12-24 00:24:05 +00:00
2025-12-23 02:26:11 +01:00
### Fixes
2026-01-04 16:36:40 +01:00
- Packaging fixes, heartbeat cleanup, WhatsApp reconnect reliability.
- macOS menu/Chat UI polish and presence reporting fixes.
2025-12-23 03:02:30 +01:00
2026-01-04 16:36:40 +01:00
## 2025.12.21 (beta 2)
2025-12-21 01:54:19 +01:00
### Highlights
2026-01-04 16:36:40 +01:00
- Bundled gateway packaging + DMG distribution pipeline.
- Skills platform (bundled/managed/workspace) with install gating + UI.
- Onboarding polish and agent UX improvements.
- Canvas host served from Gateway; browser control simplification.
2025-12-07 16:23:35 +01:00
2026-01-04 16:36:40 +01:00
## 2025.12.19 (beta 1)
2025-12-03 00:25:01 +00:00
2025-12-03 08:45:30 +00:00
### Highlights
2026-01-04 16:36:40 +01:00
- First Clawdbot release: Gateway WS control plane + optional Bridge.
- macOS menu bar companion app with Voice Wake + WebChat.
- iOS node pairing with Canvas surface.
- WhatsApp groups, thinking/verbose directives, health/status tooling.
2025-12-02 20:10:43 +00:00
2026-01-04 16:36:40 +01:00
### Breaking
- Switched to Pi-only agent runtime; legacy providers removed.
- Gateway became the single source of truth (no ad-hoc direct sends).
2025-12-02 21:09:26 +00:00
2026-01-04 16:36:40 +01:00
## 2025.12.05– 2025.12.03 (pre-Clawdbot)
2025-11-29 04:50:56 +00:00
2025-12-02 10:58:22 +00:00
### Highlights
2026-01-04 16:36:40 +01:00
- Pi-only agent path and web-only gateway workflow.
- Thinking/verbose directives, group chat support, and heartbeat controls.
- `clawdbot agent` CLI added; session tables and health reporting.
2025-11-25 17:08:13 +01:00
2026-01-04 16:36:40 +01:00
## 2025.11.28– 2025.11.25 (early web-only)
2025-11-25 14:47:48 +01:00
2026-01-04 16:36:40 +01:00
- Heartbeat CLI + interval handling.
- Media MIME sniffing, size caps, and timeout fallbacks.
- Web provider reconnects and early stability fixes.