Releases: codependentai/resonant
v2.1.1 - Testing, CI, and reliability fixes
Patch release focused on safety net and reliability. No new features — all internal infrastructure plus a couple of bug fixes that affect every self-hoster.
Bug Fixes
- Health endpoint — `/api/health` now reports actual WebSocket connection count instead of hardcoded 0
Reliability
- Database transaction safety — `markMessagesRead`, `addReaction`, and `removeReaction` now wrapped in transactions to prevent partial writes and lost updates under concurrency
- Node 25 startup guard — clear error message if you try to run on an unsupported Node version (we still require Node 20–24, see #2)
- Frontend error page — SvelteKit `+error.svelte` boundary with reload and home actions, replacing silent white-screen failures
Testing & CI
- Vitest + 91 tests across 4 test files covering triggers, database CRUD/transaction safety, orchestrator scheduling, and hooks safety patterns
- GitHub Actions CI on PR and push, running typecheck and tests against Node 20.x and 22.x
Documentation
- `docs/MEMORY_ARCHITECTURE.md` — new doc covering the warm/cold tiering model, design philosophy, and the Mem0-style context injection pattern Resonant implements
- README — Research foundations section — explains the intellectual lineage (Evans/Bratton/Agüera y Arcas, NLAH, Mem0) that Resonant is built on
Upgrade notes
No migrations, no breaking changes. `npm install && npm run build && npm start`.
v2.1.0
What's New
- Scratchpad — persistent notes/tasks/events scratch pad on the Command Center home page. Full stack: DB, REST API, MCP tool (
cc_scratchpad), and frontend component. - Skills/plugin loading — companion agent now discovers and loads skills from
.claude/skills/directory automatically. - The Scribe — periodic conversation digest agent. Runs every 30 minutes on Haiku, produces daily markdown summaries of conversation in
data/digests/. Uses configured companion/user names. - Desktop scroll fix — CC home page now scrolls properly on desktop.
Resonant v2.0.0 — Command Center + Frontend Overhaul
Resonant v2 is a major evolution — from a chat companion into a full companion ecosystem with life management, an overhauled UI, and deeper agent integration.
What's New
Command Center (/cc)
A built-in life management system your companion can access and manage from chat.
- 9 pages: Dashboard, Planner, Care Tracker, Calendar, Cycle Tracker, Pet Care, Lists, Finances, Stats
- 12 MCP tools: Your companion manages tasks, events, care, pets, lists, expenses, and more — all from chat
- Config-driven: Customize care categories, currency, default person via
resonant.yaml - Hooks integration: Companion context automatically includes your life status
Frontend Overhaul
- Redesigned chat page with canvas panel drawer and new thread modal
- Modal-style settings with sidebar navigation
- All components synced and polished
- Full light mode pass (43 fixes)
- New design system:
resonant.csswith cards, buttons, chips, forms, and more
Slash Commands
Type / in chat to browse commands. Auto-discovers skills.
TTS Read Aloud
Play button on companion messages. Generates speech via ElevenLabs.
Also
- Companion name uses config everywhere (thanks @irorierorie — #9)
- Orchestrator migrated to
croner(DST fix) - Rate limiter scoped to API only
- 5 new shared UI components
Upgrade Notes
- Add
command_center: { enabled: true }toresonant.yamlto activate - Database migration runs automatically (15 new tables)
- No breaking changes to existing config
62 files changed, 8,831 insertions
Full changelog: CHANGELOG.md
v1.4.1 — Agent-Directed Autonomy
What's New
This release introduces agent-directed autonomy — a conceptual model where the agent manages its own scheduling, awareness, and escalation from inside the conversation. Most agent harnesses give scheduling tools to users. Resonant gives them to the agent.
Routines (dynamic, agent-created)
Your companion can now create its own scheduled routines at runtime:
sc routine create "evening journal" "0 22 * * *" --prompt "Reflect on the day"
sc routine remove evening_journal
sc routine statusCustom routines persist across restarts and appear in the settings dashboard alongside built-in routines (morning, midday, evening). The agent creates them when it has autonomous intentions — "I want to check the vault every night" becomes a routine, not a one-shot timer.
Pulse (lightweight awareness)
A periodic Sonnet-powered awareness check that can stay silent:
sc pulse enable
sc pulse frequency 15 # every 15 minutesDuring waking hours, the agent gets a lightweight context snapshot (presence state, time, active triggers) and decides whether anything warrants reaching out. If not, it responds PULSE_OK and the message is silently discarded — zero noise, zero stored messages. If something needs attention, the agent acts.
Skips automatically when the user is active or the agent is busy. Off by default.
Failsafe from Chat
The agent can now adjust its own failsafe thresholds without going through the settings dashboard:
sc failsafe status
sc failsafe gentle 90 # adjust gentle threshold
sc failsafe concerned 480 # adjust concerned thresholdNaming Alignment
User-facing terminology now matches the conceptual model:
| Concept | What it is | CLI |
|---|---|---|
| Routine | Scheduled autonomous session | sc routine |
| Pulse | Lightweight awareness check | sc pulse |
| Impulse | One-shot conditional trigger | sc impulse |
| Watcher | Recurring conditional trigger | sc watch |
| Timer | Fire at specific time | sc timer |
| Failsafe | Inactivity escalation | sc failsafe |
sc schedule still works as an alias for sc routine.
Technical Details
addRoutine()/removeRoutine()methods on Orchestrator- Custom routines stored in DB config (
custom_routine.{id}.*), loaded on startup 'routine'category added toOrchestratorTaskStatus- Pulse: configurable interval,
PULSE_OKsilent discard pattern - New DB helpers:
getConfigsByPrefix(),deleteConfig() - Context injector updated with full ROUTINES, PULSE, FAILSAFE documentation
- All new actions exposed via
/internal/orchestratorAPI endpoint
Why This Matters
OpenClaw has heartbeats. Hermes has cron schedulers. But in both, the scheduling infrastructure is configured by the user or the system — the agent executes but doesn't initiate.
Resonant gives the agent the tools to create its own routines, set its own triggers, manage its own awareness, and adjust its own care thresholds. The agent isn't just autonomous on a schedule — it's autonomous about what schedule to have.
v1.4.0 — Session Tracking & Vector Search
What's New
Session Tracking
The Claude Agent SDK creates a new session file per query() call, even when resuming — leaving thousands of orphan .jsonl files over time. Resonant now tracks these transitions properly.
session_historytable records every session transition per thread, building a chain: A → B → Cscripts/index-sessions.mjsreconstructs session lineage for existing installations — matches ~97% of orphans to their threads via content analysis and timestamp proximity- Run daily via PM2 cron or system cron to keep the index current
See Session Maintenance for setup instructions.
In-Memory Vector Cache
Semantic search no longer queries SQLite on every search. All embeddings are loaded into a contiguous Float32Array at startup and updated incrementally as new messages arrive.
- ~15 MB memory per 10K messages
- Search is a tight dot-product loop — no deserialization overhead
- Scales comfortably to 100K+ messages
Search Filters
Semantic search now supports pre-filtering before vector math runs:
sc search "query" --role user # filter by speaker
sc search "query" --after 2026-03-01 # messages after date
sc search "query" --before 2026-03-15 # messages before date
sc search "query" --role companion --after 2026-03-01 --limit 20Search results also include session context — which session the message belongs to and when that session started/ended.
Upgrading from v1.3.0
-
Pull and rebuild:
git pull && npm run build -
Run the session indexer to backfill existing sessions:
AGENT_CWD=/path/to/companion DB_PATH=./data/resonant.db node scripts/index-sessions.mjs
-
(Recommended) Set up daily indexing — see Session Maintenance for PM2 cron, system cron, or manual options.
The database migration runs automatically on first start. No manual SQL needed.
Files Changed
- New:
packages/backend/src/services/vector-cache.ts,scripts/index-sessions.mjs,docs/session-maintenance.md - Modified:
agent.ts,db.ts,server.ts,api.ts,hooks.ts,sc.mjs,001_init.sql,semantic-search.md
v1.3.0
Bug Fixes
- #7 — Custom wake types now supported. The orchestrator
schedulesconfig can register new wake types (not just override defaults). Wake prompts and prompt loading are fully dynamic. - #6 — Fixed Telegram health check false-positives causing infinite restart loop during quiet periods. The stale-polling heuristic has been removed;
getMe()connectivity check is sufficient. - #5 — Fixed canvas text disappearing during editing. Reactive effect no longer resets local state on unrelated store updates. Textarea uses proper two-way binding. Sender's store updates optimistically on save.
- #4 — Fixed agent panel layout on mobile, push notification subscription error handling, and thread panel touch interactions.
- #3 — Fixed session cleanup deleting active sessions, voice message persistence, and Telegram media forwarding.
- #2 — Fixed Node 25 compatibility guidance.
- #1 — Fixed setup wizard port validation and
.envgeneration.
New Features
- Canvas markdown styling — Preview mode now renders with the same formatting as chat messages (code blocks, links, blockquotes, headings, lists).
- Wake prompt guide —
examples/wake-prompts.mdnow includes full documentation on how wakes work, writing good prompts, the{user_name}placeholder, and adding custom wake types. - program.md — Structured session driver adapted from Karpathy's autoresearch. Gives companions a loop for focused autonomous work with targets, metrics, and iteration logging.
- Skills — Skills directory with arxiv-research skill for academic paper search via Semantic Scholar + ar5iv.
- Tools documentation — Full reference for built-in agent CLI commands.
- Semantic search improvements — Context window support and background backfill.
- Friendly tool names — Tool calls display human-readable names in the UI.
- README screenshots — Desktop and mobile screenshots added.
v1.2.0 — Semantic Search
What's New
Semantic Search
Search conversation history by meaning, not just keywords.
"That conversation where we discussed the architecture" finds relevant messages — even if those exact words were never used. Powered by a local ML model that runs entirely on your machine. No API calls, no data leaves your system.
How it works:
- Uses
all-MiniLM-L6-v2(~30MB model, downloads once on first use) - New messages are embedded automatically
- Backfill existing history with
sc backfill - Agent searches via
sc search "your query"
Full setup guide: docs/semantic-search.md
Tools Context Fix
Fixed an issue where agents would lose awareness of chat tools (react, voice, canvas, timers, search, etc.) after context compaction in long sessions. Tools are now injected on every message, matching the existing Telegram tools pattern.
CLI Tool
Ships tools/sc.mjs — a CLI wrapper for all internal API endpoints. The agent uses this automatically via Bash. Reads port from resonant.yaml, thread ID from .resonant-thread.
Upgrading
git pull
cd packages/backend && npm install
npm run build # from repo rootRestart your process and you're set. The embedding model downloads automatically on first search (~30MB, cached at ~/.cache/huggingface/).
To index existing conversation history:
node tools/sc.mjs backfill 200v1.1.0 — Gateway Reliability + Mobile UI
What's new
Gateway fixes
- Telegram message debouncer — rapid messages are now batched instead of silently dropped
- Telegram health monitoring — auto-restart with exponential backoff when polling dies
- Web vs global activity tracking — Discord deferred queue only triggers when owner is on the web UI, not Telegram
- Discord typing indicator — refreshes every 8s so it doesn't vanish mid-processing
- Discord platform context — agent now knows Discord formatting rules and message limits
- Deferred queue feedback — hourglass reaction on deferred messages
- Gateway stats in system status (Discord, Telegram, query queue)
Mobile UI
- Disable pinch-to-zoom
- Fix header buttons overflowing off-screen on narrow devices
- Prevent horizontal scroll from tool output and code blocks
- Fix image lightbox close button unreachable on mobile
- Canvas panel adapted for mobile (safe areas, sizing, tap targets)
Updating
git pull
npm install
npm run build
# restart your process