From e5cae2a2e4676111d7bbf1cd1d9956e78ca9088a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 27 Dec 2025 19:43:43 +0100 Subject: [PATCH] chore: release 2.0.0-beta4 --- CHANGELOG.md | 5 +++ appcast.xml | 125 +++++---------------------------------------------- package.json | 2 +- 3 files changed, 18 insertions(+), 114 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 074741b66..4502ad81e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 2.0.0-beta4 — 2025-12-27 + +### Fixes +- Package contents: include Discord/hooks build outputs in the npm tarball to avoid missing module errors. + ## 2.0.0-beta3 — 2025-12-27 ### Highlights diff --git a/appcast.xml b/appcast.xml index 79fa714cc..2e0d1b0e8 100644 --- a/appcast.xml +++ b/appcast.xml @@ -9,124 +9,23 @@ 2.0.0-beta3 2.0.0-beta3 15.0 - Clawdis 2.0.0-beta3 -

Highlights

- -

Breaking

- + + + + 2.0.0-beta4 + Sat, 27 Dec 2025 19:43:22 +0100 + https://raw.githubusercontent.com/steipete/clawdis/main/appcast.xml + 2.0.0-beta4 + 2.0.0-beta4 + 15.0 + Clawdis 2.0.0-beta4

Fixes

    -
  • Heartbeat replies now strip repeated HEARTBEAT_OK tails to avoid accidental “OK OK” spam.
  • -
  • Heartbeat delivery now uses the last non-empty payload, preventing tool preambles from swallowing the final reply.
  • -
  • Heartbeat failure logs now include the error reason instead of [object Object].
  • -
  • Duration strings now accept h (hours) where durations are parsed (e.g., heartbeat intervals).
  • -
  • WhatsApp inbound now normalizes more wrapper types so quoted reply bodies are extracted reliably.
  • -
  • WhatsApp send now preserves existing JIDs (including group @g.us) instead of coercing to @s.whatsapp.net. (Thanks @arun-8687.)
  • -
  • Telegram/WhatsApp: reply context stays in Body/ReplyTo*, but outbound replies no longer thread to the original message. (Thanks @joshp123 for the PR and follow-up question.)
  • -
  • Suppressed libsignal session cleanup spam from console logs unless verbose mode is enabled.
  • -
  • WhatsApp web creds persistence hardened; credentials are restored before auth checks and QR login auto-restarts if it stalls.
  • -
  • Group chats now honor routing.groupChat.requireMention=false as the default activation when no per-group override exists.
  • -
  • Gateway auth no longer supports PAM/system mode; use token or shared password.
  • -
  • Tailscale Funnel now requires password auth (no token-only public exposure).
  • -
  • Group /new resets now work with @mentions so activation guidance appears on fresh sessions.
  • -
  • Group chat activation context is now injected into the system prompt at session start (and after activation changes), including /new greetings.
  • -
  • Typing indicators now start only once a reply payload is produced (no "thinking" typing for silent runs).
  • -
  • WhatsApp group typing now starts immediately only when the bot is mentioned; otherwise it waits until real output exists.
  • -
  • Streamed segments are stripped before partial replies are emitted.
  • -
  • System prompt now tags allowlisted owner numbers as the user identity to avoid mistaken “friend” assumptions.
  • -
  • LM Studio/Ollama replies now require tags; streaming ignores content until begins.
  • -
  • LM Studio responses API: tools payloads no longer include strict: null, and LM Studio no longer gets forced / tags.
  • -
  • Identity emoji no longer auto-prefixes replies (set messages.responsePrefix explicitly if desired).
  • -
  • Model switches now enqueue a system event so the next run knows the active model.
  • -
  • /model status now lists available models (same as /model).
  • -
  • process log pagination is now line-based (omit offset to grab the last N lines).
  • -
  • macOS WebChat: assistant bubbles now update correctly when toggling light/dark mode.
  • -
  • macOS: avoid spawning a duplicate gateway process when an external listener already exists.
  • -
  • Node bridge: when binding to a non-loopback host (e.g. Tailnet IP), also listens on 127.0.0.1 for local connections (without creating duplicate loopback listeners for 0.0.0.0/127.0.0.1 binds).
  • -
  • UI perf: pause repeat animations when scenes are inactive (typing dots, onboarding glow, iOS status pulse), throttle voice overlay level updates, and reduce overlay focus churn.
  • -
  • Canvas defaults/A2UI auto-nav aligned; debug status overlay centered; redundant await removed in CanvasManager.
  • -
  • Gateway launchd loop fixed by removing redundant kickstart -k.
  • -
  • CLI now hints when Peekaboo is unauthorized.
  • -
  • WhatsApp web inbox listeners now clean up on close to avoid duplicate handlers.
  • -
  • Gateway startup now brings up browser control before external providers; WhatsApp/Telegram/Discord auto-start can be disabled with web.enabled, telegram.enabled, or discord.enabled.
  • -
-

Providers & Routing

-
    -
  • New Discord provider for DMs + guild text channels with allowlists and mention-gated replies by default.
  • -
  • routing.queue now controls queue vs interrupt behavior globally + per surface (defaults: WhatsApp/Telegram interrupt, Discord/WebChat queue).
  • -
  • /queue supports one-shot or per-session overrides; /queue reset|default clears overrides.
  • -
  • agent.maxConcurrent caps global parallel runs while keeping per-session serialization.
  • -
-

macOS app

-
    -
  • Update-ready state surfaced in the menu; menu sections regrouped with session submenus.
  • -
  • Menu bar now shows a dedicated Nodes section under Context with inline rows, overflow submenu, and iconized actions.
  • -
  • Nodes now expose consistent inline details with per-node submenus for quick copy of key fields.
  • -
  • Node rows now show compact app versions (build numbers moved to submenus) and offer SSH launch from Bonjour when available.
  • -
  • Menu actions are grouped below toggles; Open Canvas hides when disabled and Voice Wake now anchors the mic picker.
  • -
  • Connections now include Discord provider status + configuration UI.
  • -
  • Menu bar gains an Allow Camera toggle alongside Canvas.
  • -
  • Session list polish: sleeping/disconnected/error states, usage bar restored, padding + bar sizing tuned, syncing menu removed, header hidden when disconnected.
  • -
  • Chat UI polish: tool call cards + merged tool results, glass background, tighter composer spacing, visual effect host tweaks.
  • -
  • OAuth storage moved; legacy session syncing metadata removed.
  • -
  • Remote SSH tunnels now get health checks; Debug → Ports highlights unhealthy tunnels and offers Reset SSH tunnel.
  • -
  • Menu bar session/node sections no longer reflow while open, keeping hover highlights aligned.
  • -
  • Menu hover highlights now span the full width (including submenu arrows).
  • -
  • Menu session rows now refresh while open without width changes (no more stuck “Loading sessions…”).
  • -
  • Menu width no longer grows on hover when moving the mouse across rows.
  • -
  • Context usage bars now have higher contrast in light mode.
  • -
  • macOS node timeouts now share a single async timeout helper for consistent behavior.
  • -
  • WebChat window defaults tightened (narrower width, edge-to-edge layout) and the SwiftUI tag removed from the title.
  • -
-

Nodes & Canvas

-
    -
  • Debug status overlay gated and toggleable on macOS/iOS/Android nodes.
  • -
  • Gateway now derives the canvas host URL via a shared helper for bridge + WS handshakes (avoids loopback pitfalls).
  • -
  • canvas a2ui push validates JSONL with line errors, rejects v0.9 payloads, and supports --text quick renders.
  • -
  • nodes rename lets you override paired node display names without editing JSON.
  • -
  • Android scaffold asset cleanup; iOS canvas/voice wake adjustments.
  • -
-

Logging & Observability

-
    -
  • New subsystem console formatter with color modes, shortened prefixes, and TTY detection; browser/gateway logs route through the subsystem logger.
  • -
  • WhatsApp console output streamlined; chalk/tslog typing fixes.
  • -
-

Web UI

-
    -
  • Chat is now the dashboard landing view; health status simplified; initial scroll animation removed.
  • -
-

Build, Dev, Docs

-
    -
  • Notarization flow added for macOS release artifacts; packaging scripts updated.
  • -
  • macOS signing auto-selects Developer ID → Apple Distribution → Apple Development; no ad-hoc fallback.
  • -
  • Added type-aware oxlint; docs list resolves from cwd; formatting/lint cleanup and dependency bumps (Peekaboo).
  • -
  • Docs refreshed for tools, custom model providers, Discord, queue/routing, group activation commands, logging, restart semantics, release notes, GitHub pages CTAs, and npm pitfalls.
  • -
  • pnpm build now skips A2UI bundling for faster builds (run pnpm canvas:a2ui:bundle when needed).
  • -
-

Tests

-
    -
  • Coverage added for models config merging, WhatsApp reply context, QR login flows, auto-reply behavior, and gateway SIGTERM timeouts.
  • -
  • Added gateway webhook coverage (auth, validation, and summary posting).
  • -
  • Vitest now isolates HOME/XDG config roots so tests never touch a real ~/.clawdis install.
  • +
  • Package contents: include Discord/hooks build outputs in the npm tarball to avoid missing module errors.

View full changelog

]]>
- +
\ No newline at end of file diff --git a/package.json b/package.json index 9d2d3e6eb..dcf08522b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "clawdis", - "version": "2.0.0-beta3", + "version": "2.0.0-beta4", "description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent", "type": "module", "main": "dist/index.js",