# changelog ## v0.14.0 (2026-01-10) ### changes - add telegram forum topics support with `/topic` command for binding threads to projects/branches, persistent resume tokens per topic, and `/ctx` for inspecting or updating bindings [#80](https://github.com/banteg/takopi/pull/80) - add inline cancel button to progress messages [#79](https://github.com/banteg/takopi/pull/79) - add config hot-reload via watchfiles [#78](https://github.com/banteg/takopi/pull/78) ### docs - add user guide and telegram topics documentation [#80](https://github.com/banteg/takopi/pull/80) ## v0.13.0 (2026-01-09) ### changes - add per-project chat routing [#76](https://github.com/banteg/takopi/pull/76) ### fixes - hardcode codex exec flags [#75](https://github.com/banteg/takopi/pull/75) - reuse project root for current branch when resolving worktrees [#77](https://github.com/banteg/takopi/pull/77) ### docs - normalize casing in the readme and changelog ## v0.12.0 (2026-01-09) ### changes - add optional telegram voice note transcription (routes transcript like typed text) [#74](https://github.com/banteg/takopi/pull/74) ### fixes - fix plugin allowlist matching and windows session paths [#72](https://github.com/banteg/takopi/pull/72) ### docs - document telegram voice transcription settings [#74](https://github.com/banteg/takopi/pull/74) ## v0.11.0 (2026-01-08) ### changes - add entrypoint-based plugins for engines/transports plus a `takopi plugins` command and public API docs [#71](https://github.com/banteg/takopi/pull/71) ### fixes - create pi sessions under the run base dir [#68](https://github.com/banteg/takopi/pull/68) - skip git repo checks for codex runs [#66](https://github.com/banteg/takopi/pull/66) ## v0.10.0 (2026-01-08) ### changes - add transport registry with `--transport` overrides and a `takopi transports` command [#69](https://github.com/banteg/takopi/pull/69) - migrate config loading to pydantic-settings and move telegram credentials under `[transports.telegram]` [#65](https://github.com/banteg/takopi/pull/65) - include project aliases in the telegram slash-command menu with validation and limits [#67](https://github.com/banteg/takopi/pull/67) ### fixes - validate worktree roots instead of treating nested paths as worktrees [#63](https://github.com/banteg/takopi/pull/63) - harden onboarding with clearer config errors, safe backups, and refreshed command menu wording [#70](https://github.com/banteg/takopi/pull/70) ### docs - add architecture and lifecycle diagrams - call out the default worktrees directory [#64](https://github.com/banteg/takopi/pull/64) - document the transport registry and onboarding changes [#69](https://github.com/banteg/takopi/pull/69) ## v0.9.0 (2026-01-07) ### projects and worktrees - register repos with `takopi init ` and target them via `/project` directives - route runs to git worktrees with `@branch` — takopi resolves or creates worktrees automatically - replies preserve context via `ctx: project @ branch` footers, no need to repeat directives - set `default_project` to skip the `/project` prefix entirely - per-project `default_engine` and `worktree_base` configuration ### changes - transport/presenter protocols plus transport-agnostic `exec_bridge` - move telegram polling + wiring into `takopi.telegram` with transport/presenter adapters - list configured projects in the startup banner ### fixes - render `ctx:` footer lines consistently (backticked + hard breaks) and include them in final messages ### breaking - remove `takopi.bridge`; use `takopi.runner_bridge` and `takopi.telegram` instead ### docs - add a projects/worktrees guide and document `takopi init` behavior in the readme ## v0.8.0 (2026-01-05) ### changes - queue telegram requests with rate limits and retry-after backoff [#54](https://github.com/banteg/takopi/pull/54) ### docs - improve documentation coverage [#52](https://github.com/banteg/takopi/pull/52) - align runner guide with factory pattern - add missing pr links in the changelog ## v0.7.0 (2026-01-04) ### changes - migrate logging to structlog with structured pipelines and redaction [#46](https://github.com/banteg/takopi/pull/46) - add msgspec schemas for jsonl decoding across runners [#37](https://github.com/banteg/takopi/pull/37) ## v0.6.0 (2026-01-03) ### changes - interactive onboarding: run `takopi` to set up bot token, chat id, and default engine via guided prompts [#39](https://github.com/banteg/takopi/pull/39) - lockfile to prevent multiple takopi instances from racing the same bot token [#30](https://github.com/banteg/takopi/pull/30) - re-run onboarding anytime with `takopi --onboard` ## v0.5.3 (2026-01-02) ### changes - default claude allowed tools to `["Bash", "Read", "Edit", "Write"]` when not configured [#29](https://github.com/banteg/takopi/pull/29) ## v0.5.2 (2026-01-02) ### changes - show not installed agents in the startup banner (while hiding them from slash commands) ### fixes - treat codex reconnect notices as non-fatal progress updates instead of errors [#27](https://github.com/banteg/takopi/pull/27) - avoid crashes when codex tool/file-change events omit error fields [#27](https://github.com/banteg/takopi/pull/27) ## v0.5.1 (2026-01-02) ### changes - relax telegram ACL to check chat id only, enabling use in group chats and channels [#26](https://github.com/banteg/takopi/pull/26) - improve onboarding documentation and add tests [#25](https://github.com/banteg/takopi/pull/25) ## v0.5.0 (2026-01-02) ### changes - add an opencode runner via the `opencode` cli with json event parsing and resume support [#22](https://github.com/banteg/takopi/pull/22) - add a pi agent runner via the `pi` cli with jsonl streaming and resume support [#24](https://github.com/banteg/takopi/pull/24) - document the opencode and pi runners, event mappings, and stream capture tips ### fixes - fix path relativization so progress output does not strip sibling directories [#23](https://github.com/banteg/takopi/pull/23) - reduce noisy debug logging from markdown_it/httpcore ## v0.4.0 (2026-01-02) ### changes - add auto-router runner selection with configurable default engine [#15](https://github.com/banteg/takopi/pull/15) - make auto-router the default entrypoint; subcommands or `/{engine}` prefixes override for new threads - add `/cancel` + `/{engine}` command menu sync on startup - show engine name in progress and final message headers - omit progress/action log lines from final output for cleaner answers [#21](https://github.com/banteg/takopi/pull/21) ### fixes - improve codex exec error rendering with stderr extraction [#18](https://github.com/banteg/takopi/pull/18) - preserve markdown formatting and resume footer when trimming long responses [#20](https://github.com/banteg/takopi/pull/20) ## v0.3.0 (2026-01-01) ### changes - add a claude code runner via the `claude` cli with stream-json parsing and resume support [#9](https://github.com/banteg/takopi/pull/9) - auto-discover engine backends and generate cli subcommands from the registry [#12](https://github.com/banteg/takopi/pull/12) - add `BaseRunner` session locking plus a `JsonlSubprocessRunner` helper for jsonl subprocess engines - add jsonl stream parsing and subprocess helpers for runners - lazily allocate per-session locks and streamline backend setup/install metadata - improve startup message formatting and markdown rendering - add a debug onboarding helper for setup troubleshooting ### breaking - runner implementations must define explicit resume parsing/formatting (no implicit standard resume pattern) ### fixes - stop leaking a hidden `engine-id` cli option on engine subcommands ### docs - add a runner guide plus claude code docs (runner, events, stream-json cheatsheet) - clarify the claude runner file layout and add guidance for jsonl-based runners - document "minimal" runner mode: started+completed only, completed-only actions allowed ## v0.2.0 (2025-12-31) ### changes - introduce runner protocol for multi-engine support [#7](https://github.com/banteg/takopi/pull/7) - normalized event model (`started`, `action`, `completed`) - actions with stable ids, lifecycle phases, and structured details - engine-agnostic bridge and renderer - add `/cancel` command with progress message targeting [#4](https://github.com/banteg/takopi/pull/4) - migrate async runtime from asyncio to anyio [#6](https://github.com/banteg/takopi/pull/6) - stream runner events via async iterators (natural backpressure) - per-thread job queues with serialization for same-thread runs - render resume as `codex resume ` command lines - various rendering improvements including file edits ### breaking - require python 3.14+ - remove `--profile` flag; configure via `[codex].profile` only ### fixes - serialize new sessions once resume token is known - preserve resume tokens in error renders [#3](https://github.com/banteg/takopi/pull/3) - preserve file-change paths in action events [#2](https://github.com/banteg/takopi/pull/2) - terminate codex process groups on cancel (posix) - correct resume command matching in bridge ## v0.1.0 (2025-12-29) ### features - telegram bot bridge for openai codex cli via `codex exec` - stateless session resume via `` `codex resume ` `` lines - real-time progress updates with ~2s throttling - full markdown rendering with telegram entities (markdown-it-py + sulguk) - per-session serialization to prevent race conditions - interactive onboarding guide for first-time setup - codex profile configuration - automatic telegram token redaction in logs - cli options: `--debug`, `--final-notify`, `--version`