- use conversation history for memory retrieval instead of router-generated queries
- fix elapsed scope bug in background task completion
- fix TTS summary to speak in first person
- inject proactive follow-up messages into conversation history
- fix OAuth token expiry in heartbeat scheduled events
- exclude electron from npm package
- increase API retry limit to 5 for overloaded errors
- remove curiosity system, extract proactive news to standalone module
- changelog
- fix scheduler silent failures, remove haiku routing, improve memory format
- changelog
- skip rate limiter for media group messages
- changelog
- sequential media downloads and image vision in read_file
- fix scheduler concurrency guard and fetch timeouts
- changelog
- fix media group race condition — buffer before download
- save media assets instantly in date-based folders
- fix agentic event raw JSON output and update_event wiping instructions
- add order param to memory, self-memory, and events queries
- generic PostgREST filters for memory, self-memory, and events
- drop select= filters — return all columns from memory and events
- schedule wizard — use config timezone, drop tz selector
- tz confirm button shows toast feedback
- schedule wizard — one button per row
- add /schedule wizard for interactive event creation
- 0.3.29 — republish scheduler fix
- 0.3.28 — fix scheduler instructions not persisted in list, not wiped on update
- 0.3.27 — cap proactive follow-ups to max 3 days
- 0.3.26 — fix proactive follow-ups never delivered, expire stale events
- 0.3.25 — auto-schedule from images, route email/event queries to sonnet
- 0.3.24 — inline token stats, fix bg task null results
- fix failing soul and telegram tests
- update changelog
- fix soul backup version number to use evolutionNumber
- update changelog
- store one soul row per evolution in supabase
- update changelog
- rename tools to options, update readme
- update changelog
- add curiosity toggle, fix describeToolCall crash in background tasks
- store news in self-memory, boost humor output, fix analysis self-referential patterns
- update readme with curiosity, analysis, news, voice, patterns, and remove traits
- Merge pull request #7 from jestersimpps/fix/stt-whisper-transcribe
- fix: STT pipeline - add missing whisper_transcribe.py and fix media handler
- Merge pull request #6 from jestersimpps/fix/status-instant-tool-labels
- fix: replace async haiku status labels with instant sync formatToolCall
- replace impulse with news system, exact datetime for analysis follow-ups
- rewrite impulse prompt to sound like a friend, not an assistant
- strip citations from history to fix 400 replay errors
- add patterns_view, patterns_delete, knowledge_remove, memory_stats tools
- add model stats toggle to /tools menu
- per-user timezone support for all engagement cycles
- add CLI commands for evolve and curiosity, verbose logging
- fix pattern analysis: enforce factual observations, use incrementObservation
- override haiku to sonnet when recent history has tool use
- add impulse system, fix haiku context, enforce code block formatting
- optimize routing: drop haiku probe, trim system prompt, add tool-need heuristic + bench prompts
- split large files into focused modules
- reorganize src/ into subdirectories (curiosity, memory, soul, auth, media, runtime)
- add knowledge_search + read_file to curiosity, self-memory count in status, opinionated research prompt
- 0.3.4: smarter memory dedup, better router queries, rebalanced recall
- fix shared soul path, backup on tool write, show bot name in status
- update changelog
- improve memory retrieval quality: tighter dedup, wider window, recency boost, self-memory, jaccard dedup
- remove trait system entirely
- update changelog
- add list_pending_events tool to dispatch and humor passes to prevent duplicates
- update changelog
- add curiosity humor pass with puns, inside jokes, and link support
- add tests for memory-self and analysis helpers
- fix proactivity and memory bugs
- add curiosity dispatch pass to schedule insights after curiosity cycle
- run curiosity once per cycle with shared brain and all-user context
- add curiosity engine with free-form exploration and own knowledge tools
- add friendship behavior section and soften privacy rule for multi-user model
- add proactive behavior + multi-user friend model to system prompt
- add tests for silent mode, soul backup/restore, and shared personality dir
- move SOUL.md to shared root dir with Supabase backup/restore
- add silent mode for heartbeat-triggered background tasks
- enrich analysis with memory search and pattern context
- add analysis, patterns, self-memory, and proactive vector context
- update changelog
- use bot name from config in all telegram status messages
- update changelog
- use bot name from config in system prompt, backup, and personality files
- add rename user option to cli config
- add upgrade screenshot to readme
- changelog and issues updates
- auto-send tts voice summary when tts is enabled
- add second demo video side by side
- Add demo video (#1)
- add demo video to docs
- add demo video to readme
- fix readme inconsistencies and redact user ids
- pass full user context to agentic cron tasks so tools can access secrets/config
- fix cron-parser v5 api: parseExpression → CronExpressionParser.parse
- add agentic cron jobs with instructions field and update_event tool
- fix cron-parser v5 tz option, enforce cron_expr for recurring events
- update readme: remove github/vercel from onboarding, remove vercel tool references
- remove github and vercel from onboarding
- remove vercel from dynamic tools, fix silent decrypt failure on hostname change
- fix telegram 429 rate limiting with auto-retry, slower timers, verbose batching
- show cleaning status instead of processing during /clean
- fix ask deadlock, clean writes tests and audits secrets
- clean confirmation gate, exec sandbox fix, mermaid tool, scheduler always-on
- changelog
- add npmignore to exclude local files from package
- update changelog and lockfile
- ignore obol message export csvs
- add speech-to-text tool with faster-whisper, auto-transcribes voice messages when enabled
- install faster-whisper in postinstall
- update tests to expect runtime context blocks in last user message
- sanitize empty content blocks before API calls to prevent 400 errors
- inject time and memory as runtime context in user message, not system prompt
- cache last tool definition to maximise prompt cache hits
- replace regex JSON extraction with forced tool call for memory consolidation
- surface bridge failures to user instead of swallowing errors
- pass recent history to router to prevent haiku misrouting on follow-up messages
- seed last 50 messages at boot, align to first user row
- add 10-minute lock timeout with user notification
- fix haiku probe: check tool_use blocks instead of stop_reason, raise max_tokens to 4096
- 0.2.23 subagent tool, edit/glob/grep tools, path sandboxing, llm-driven clean, button cleanup
- fix claude test mock to yield stream-like object with finalMessage()
- 0.2.22 fix streaming for OAuth, max_tokens limit, and reauth message
- add obol reauth command and fix bailout/summary to use streaming
- update changelog
- increase tool iterations to 100 and max tokens to 128K
- update changelog
- add location, venue, contact, poll message support
- update changelog
- remove evolution progress bar from status UI
- bidirectional bridge with reply button + memory_remove tool
- update background tasks section in readme
- add status UI screenshot to readme
- update readme with stop controls, commands, and model escalation
- add force stop button to instantly abort mid-tool execution
- replace web_fetch with native web_search tool
- add chat_history tool for retrieving past conversations by date
- add stop button to status UI with concurrent update processing
- update status UI to reflect model escalation from haiku to sonnet
- escalate haiku to sonnet when tool use is requested
- fix tests to match refactored module APIs
- refactor claude.js, telegram.js, evolve.js into modular directories
- auto-cleanup stale npm temp dirs on ENOTEMPTY upgrade failure
- auto-generate changelog on publish + show after upgrade
- prompt caching + consolidation interval tuning for inference cost reduction
- multi-query memory retrieval with importance-weighted ranking
- time-based evolution with pre-evolution growth analysis
- add recurring cron events to scheduler
- delete voice selection messages after choosing a voice or toggling tools
- switch TTS from node websocket to python edge-tts CLI with auto-install
- retry TTS synthesis on WebSocket timeout
- hardcoded TTS samples per language
- drop ffmpeg conversion, cache EdgeTTS import for faster TTS
- tool toggle system with TTS and voice preview
- futuristic terminal UI for telegram status and commands
- live tool status via haiku with cached descriptions and 1s timer
- telegram: dedup, HTML formatting, reply context, processing status, text buffering, media groups
- pdf extraction via read_file tool instead of hardcoded handling
- fix telegram formatting instructions to use telegram markdown syntax
- fix duplicate tool_result handling and stale telegram callback queries
- force text response after tool use, cap tool iterations to 10
- credential leak protection and improved agent defaults
- encrypt secrets at rest in config.json and secrets.json when pass is unavailable
- batch migrations into single request with timeout, improve event description prompting
- run migrations on every startup instead of once
- store image analysis in memory for semantic retrieval
- add event scheduling and reminders via heartbeat
- deep memory consolidation with sonnet during evolution
- aggressive memory: tags, importance, fix access_count increment
- drop redundant user_id from obol_messages
- track token usage and model in message log
- refactor chat history into turn-based ChatHistory class with atomic pruning
- migrate tool loop to SDK toolRunner
- loosen exec security patterns to only block genuinely destructive commands
- unblock python3 -c from exec security patterns
- stream verbose logs to telegram in real-time instead of batching
- evolution: 15min idle timer + fix double-trigger race condition
- tune model router criteria per anthropic guidance
- add /upgrade telegram command with post-restart notification
- feat: haiku model routing + performance comparison in readme
- harden system prompt against evolution drift
- feat: add haiku to router model choices for trivial messages
- fix: chat lock, bidirectional history repair, context window in /status
- feat: telegram_ask tool + Telegram-friendly formatting guidelines
- fix: repair orphaned tool_use blocks and add /toolimit command
- feat: add /verbose telegram command to toggle debug output
- fix: strip orphaned tool_result messages after history trim
- feat: add send_file tool, self-extending capability, and secret history injection
- docs: update README and DEPLOY for removed onboarding, new commands
- feat: add obol delete command for full VPS cleanup
- docs: update agent instructions for secret tools and Python scripts
- feat: add per-user credential scoping with /secret command
- feat: add evolution bar and traits to /status command
- fix: security hardening and stability improvements (29 fixes)
- fix: repair all broken tests (218/218 passing)
- feat: add personality trait sliders with /traits command and evolution auto-adjustment
- feat: remove onboarding flow, agent works from message one
- fix: make post-setup global instead of per-user
- fix: preserve refresh token when not returned by Anthropic
- fix: OAuth refresh race condition + add proper OAuth flow to config
- docs: add obol upgrade to help sections
- feat: add obol upgrade command + bump to 0.1.5
- fix: 23 fixes — security, validation, UX, memory leaks across onboarding + core
- fix: 12 bug fixes — validation, rate limiting, sandboxing, evolution, UX
- feat: telegram media file handling with vision support
- test: add 226 tests across 14 test files with vitest
- fix: security hardening, rate limiting, UX improvements across all modules
- feat: bridge — let user agents ask and tell each other
- feat: multi-tenant per-user isolation
- docs: update README and DEPLOY for onboarding hardening
- feat: onboarding hardening — validation, pm2 fallbacks, Telegram ID detection
- fix: downgrade inquirer to v8 for CommonJS compat
- chore: bump 0.1.1
- chore: rename package to obol-ai for npm, add .npmignore
- README: simplify API cost estimate
- README: accurate API pricing breakdown with tier recommendations
- workspace discipline: folder structure enforcement + /clean command
- evolution: default 100 exchanges, purge stale Opus references
- resilience: polling auto-restart, error handling, evolution cost control
- README: full revision — deduplicated, added git snapshots, tighter structure
- README: neutral comparison closing
- evolution: git commit+push before and after every evolution cycle
- README: Layer 3 → The Evolution Cycle
- README: feature highlights at the top
- evolution: proactive web app building + Vercel auto-deploy
- evolution: proactive tool building + upgrade announcements
- README: self-healing, self-evolving agent positioning
- evolution: fix regressions before rollback (3 attempts, tests are ground truth)
- DRY: shared test-utils.js for all tests (core + Opus-generated)
- test-driven evolution: Opus writes tests, runs before/after refactor, rollback on regression
- evolution: Opus now rewrites AGENTS.md + audits scripts/ and commands/
- clean up: Haiku only extracts memories, Opus owns all personality files
- remove Haiku SOUL.md updates — personality only via Opus evolution
- docs: expand Living Brain architecture section in README
- feat: soul evolution — Opus rewrites SOUL.md every 50 exchanges, archives previous versions
- feat: SOUL.md evolves from conversation patterns, not just explicit requests
- docs: README — two-tier memory, self-evolving personality, message logging
- feat: Haiku auto-evolves USER.md and SOUL.md from conversations
- feat: two-tier memory — raw message log + Haiku auto-consolidation every 5 exchanges
- chore: remove daily notes — vector memory in Supabase is source of truth
- docs: complete README rewrite — routing, background tasks, security, onboarding flow
- feat: Haiku routes to Sonnet (daily) or Opus (complex tasks)
- feat: Haiku as memory router — decides if/what to search, optimizes query
- feat: smarter memory recall — skip short msgs, today + semantic, stricter threshold, dedupe
- feat: /new command — clears conversation history
- chore: trim menu to /tasks /status /backup
- chore: remove /forget from menu
- feat: auto memory search before every message, remove /start and /memory from menu
- feat: Telegram command menu + /status /backup /forget /recent /today
- feat: non-blocking background tasks with 30s progress check-ins
- docs: add OBOL vs OpenClaw comparison table
- feat: replace systemd with pm2 — CLI, post-setup, deploy docs
- feat: SSH on port 2222, update README + deploy docs with security warnings
- feat: VPS security hardening — SSH, fail2ban, firewall, auto-updates, kernel
- feat: post-setup tasks — auto-installs pass, migrates secrets, adds swap + firewall
- feat: add Vercel deploy tools, self-onboarding via first-run conversation
- feat: add OBOL banner image
- docs: add DigitalOcean deployment guide
- feat: initial scaffold — CLI, Telegram, Claude, memory, backup