Skip to main content
ollim-bot is developed continuously without formal version releases. This changelog tracks major features and milestones in reverse chronological order.
ollim-bot has been in active development since February 9, 2026 with 324 commits across 17 days.

Feb 26, 2026

Timezone, CI, and code quality
  • Timezone configuration — new OLLIM_TIMEZONE environment variable with automatic system local detection fallback; replaces hardcoded America/Los_Angeles across all timestamp-producing modules
  • GitHub Actions CI — lint (ruff check, ruff format --check, ty check) and test (pytest) jobs across Python 3.11, 3.12, and 3.13
  • Pre-commit hooksruff --fix, ruff format, and ty check run on every commit
  • All 25 ty type checker diagnostics resolved
  • .env.example template added for onboarding

Feb 25, 2026

Hardening and cleanup
  • Extended thinking parameter passed to forked background clients — background forks now inherit the thinking setting from their parent
  • Stale migration code removed
  • Code-only state files moved to ~/.ollim-bot/state/ — separates infrastructure files from the agent’s working directory
  • Owner identity guard on all bot entry points
  • DM-only operation enforced in bot.py
  • Bot presence set to “Watching your DMs” (always offline)
  • 1-ping-per-session limit enforced for background forks via contextvar
  • allow_ping: false now hides ping tools from the SDK tool list entirely
  • Google API errors surfaced in button handlers instead of silently failing

Feb 24, 2026

Context quality and fork thinking
  • Extended thinking enabled in interactive forks
  • Context quality gate added to system prompt — agent evaluates whether context is sufficient before responding
  • Anti-slop guidelines added to design philosophy

Feb 23, 2026

Webhook endpoints and ping budget refill
  • Webhook HTTP endpoints — external services trigger background forks via authenticated HTTP requests with Haiku screening, payload validation, and content fencing
  • Ping budget refill-on-read bucket — replaced flat daily counter with a token bucket that refills over time (capacity: 5, refill_rate: 90 minutes per token)
  • Forward schedule injected into background fork preambles so the agent sees upcoming jobs
  • Per-job tool restrictions (disallowed_tools) for background routines and reminders
  • Permission approval flow fixed with anyio primitives to prevent hangs

Feb 22, 2026

Background fork configuration and quiet-when-busy
  • BgForkConfig — new update_main_session (modes: always, on_ping, freely, blocked) and allow_ping fields for routines and reminders
  • Stop hook respects update_main_session mode, controlling whether background forks can write pending updates
  • Quiet-when-busy — background forks soft-block non-critical pings when the user is in an active conversation
  • 30-minute timeout for background forks to prevent runaway sessions
  • Relative timestamps added to background update context
  • Concurrent append_update race condition fixed

Feb 21, 2026

Interactive fork resume and model overrides
  • Background fork resume — buttons on background fork embeds open an interactive fork that continues the background session’s context
  • /thinking slash command to toggle extended thinking mid-conversation
  • model and isolated fields added to routines, reminders, and chain context — per-job model and isolation overrides
  • Fork message tracking (track_message) wired into streamer and MCP tools
  • Subagent prompts (gmail-reader, history-reviewer, responsiveness-reviewer) rewritten for clarity

Feb 20, 2026

Session events and ping budget
  • Session event loggingSessionEvent dataclass tracks session lifecycle (created, compacted, swapped, cleared, bg_fork)
  • /interrupt command and agent interruption on fork entry tool calls
  • Ping budget — daily limit on background fork pings with /ping-budget slash command; budget status injected into background fork preambles
  • Reply-to-fork — replying to a background fork message opens an interactive fork with that session

Feb 19, 2026

Permissions and configurable names
  • Permission managementdontAsk mode (default), /permissions slash command, reaction-based approval flow, session-allowed tool set
  • Configurable OLLIM_USER_NAME and OLLIM_BOT_NAME environment variables — no hardcoded names in prompts
  • Source indicators on embeds — [bg] prefix for background fork messages, source footer for fork sessions
  • Context variables for fork-scoped channel, chain context, and in_fork state

Feb 18, 2026

Interactive forks
  • enter_fork and exit_fork MCP tools with dual-mode save/report
  • /fork command to start an interactive fork from Discord
  • Fork-aware stream_chat routing — messages route to the active fork when one exists
  • Fork idle timeout checker runs in the scheduler
  • Fork exit embeds with save/report/discard button actions
  • save_context blocked in background forks (interactive-only)
  • Background fork lock removed — background forks run concurrently with the main session
  • Pending updates prepended to forked agent interactions

Feb 17, 2026

Architecture refactor and background sessions
  • Package reorganization — google/ and scheduling/ sub-packages replace 20 top-level modules
  • Forked background sessionssave_context and report_updates MCP tools for background forks to communicate results back to the main session
  • Pending updates system with atomic file writes
  • Structured dataclasses at module boundaries replacing raw dicts
  • Type annotations (Literal types, TypedDicts) added across the codebase

Feb 16, 2026

Routines and reminders split
  • Wakeup system split into routines (cron-based recurring) and reminders (one-shot with follow-up chains)
  • Individual markdown files with YAML frontmatter replace JSONL storage
  • Chain state machine for reminder follow-up sequences
  • Test suite added for routines, reminders, chains, and CLI
  • Cron day-of-week conversion fixed for APScheduler compatibility

Feb 15, 2026

Image support and timestamps
  • Image attachments forwarded from Discord to Claude via streaming content blocks
  • Timestamps prepended to all user messages and prompt paths for time-aware responses
  • DM helpers extracted from scheduler to streamer module

Feb 11-12, 2026

Subagents and background wakeups
  • History-reviewer subagent for morning briefings
  • Responsiveness-reviewer subagent for weekly reminder analysis
  • Background wakeups with ping_user MCP tool
  • Persistent button followup prompts across bot restarts
  • Agent working directory pinned to ~/.ollim-bot

Feb 10-11, 2026

Streaming, integrations, and slash commands
  • Real-time response streaming from Claude to Discord
  • Typing indicators during tool execution
  • Tool usage shown inline during streaming
  • Session persistence — conversations resume across bot restarts
  • 2000-character overflow handling
  • Google Tasks integration with CLI commands
  • Google Calendar integration with event details
  • Gmail reader subagent for automated inbox triage
  • Rich embeds with action buttons
  • /clear, /compact, /cost, /model slash commands
  • Slash command tree synced on startup
  • Principle of least privilege applied to agent tools

Feb 9, 2026

Initial release
  • Discord bot scaffold with Claude Agent SDK
  • Self-scheduling reminder system with persistence
  • Single-user DM-based conversation model

Next steps