Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ beeperbox follows [Semantic Versioning 2.0.0](https://semver.org/) with one conc

Published tags on GHCR: `:X.Y.Z` (exact, immutable), `:X.Y` (rolling within a minor), `:X` (rolling within a major — always `:0` today), `:latest` (newest release tag, rebuilt weekly to pick up upstream Beeper AppImage drift), `:edge` (every push to `master`, may break).

## [Unreleased]
## [0.9.0] — 2026-06-20 `[MINOR]`

Account-sync resilience + observability — filed by [multis](https://github.com/hamr0/multis) after a WhatsApp account added via noVNC didn't surface, and a plain `docker restart` didn't recover it (it self-corrected only later). MINOR-bound when released: `list_accounts` gains a new `status` schema field (new runtime behavior per the versioning policy).
Account-sync resilience + observability — filed by [multis](https://github.com/hamr0/multis) after a WhatsApp account added via noVNC didn't surface, and a plain `docker restart` didn't recover it (it self-corrected only later). MINOR per the versioning policy: `list_accounts` gains a new `status` schema field (new runtime behavior). No tool was added or removed — the verb set is still the 12 documented tools; this changes one tool's output shape and the runtime's caching behavior.

### Fixed

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ Not a thin proxy over Beeper's raw API — an **opinionated 12-tool verb layer**

| Tool | What it does |
|---|---|
| `list_accounts` | Which networks are connected (WhatsApp, Telegram, Discord …) — slug + label + display name |
| `list_accounts` | Which networks are connected (WhatsApp, Telegram, Discord …) — slug + label + connection `status` + display name |
| `list_inbox` | Most recently active chats, with unread counts and last-activity time |
| `list_unread` | The "what needs me right now?" view — only chats with `unread_count > 0` |
| `get_chat` | One chat's current metadata by ID |
Expand Down
2 changes: 1 addition & 1 deletion mcp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "beeperbox",
"version": "0.8.1",
"version": "0.9.0",
"description": "Lite mode for beeperbox — the opinionated MCP verb server for Beeper Desktop, run standalone against a Beeper you already have open (no Docker, no Electron). The full headless-Beeper-in-Docker build lives at github.com/hamr0/beeperbox.",
"bin": {
"beeperbox": "server.js"
Expand Down
3 changes: 1 addition & 2 deletions mcp/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -1228,8 +1228,7 @@ async function preflight() {
return;
}
try {
const accounts = await beeperFetch('/v1/accounts', { timeoutMs: PREFLIGHT_TIMEOUT_MS });
const list = Array.isArray(accounts) ? accounts : (accounts?.items || []);
const list = accountList(await beeperFetch('/v1/accounts', { timeoutMs: PREFLIGHT_TIMEOUT_MS }));
say(`preflight OK: ${BEEPER_API} reachable, token accepted, ${list.length} account(s)`);
} catch (e) {
say(`preflight FAIL: ${BEEPER_API} unreachable or token rejected — ${e.message}`);
Expand Down
Loading