Repository navigation
Releases
v1.0.0
botler-agent 1.0.0 — the Go implementation is the release.
A single static binary, no Node runtime: the TypeScript + pi SDK pipeline has been rewritten in Go on
adk-go. Config and data layout are unchanged from v1 (~/.botler-agent/, DATA_ROOT,
schedules.json, task logs), so an existing install keeps working — only the artifact you run changes.
What 1.0 ships
- One static binary (CGO-free) or the multi-arch Docker image (
linux/amd64+linux/arm64). - Same bounded toolset:
read / write / edit / run / schedule, plus IM-onlyclear_conversation_context.runstill only executes existing in-project python3/node scripts;schedulestill only writes the fixed externalizedschedules.json. No arbitrary shell, path allowlist unchanged. - Channels: Telegram, and WeChat iLink with QR login, inbound images (vision input), and 24h-window renewal reminders.
- Scheduler: cron / interval /
at/once,holidayMode: "workday"(China legal-workday gating incl. 调休补班), and push delivery with channel fallback. - Ops: WebUI,
/healthz+ metrics, JSONL task logs, per-subproject git commit and self-healing push (GIT_PUSH=1, with ssh/known_hosts/identity mounted into the container). - Parity harness:
go run ./scripts/paritydiffs the Go runtime against the v1 TypeScript reference, which stays in-tree atsrc/for that purpose only.
Upgrade
# Docker
docker compose pull && docker compose up -d --force-recreate
# from source
git pull && go run ./scripts/installBreaking change
The npm CLI is no longer distributed — install from source (go run ./scripts/install) or run the
Docker image. src/ is kept solely as the parity reference.
What's Changed
- feat: Go rewrite of botler-agent on adk-go (v2-golang) by @crossoverJie in #17
- build: stop shipping the npm CLI, distribute only the Go binary and image by @crossoverJie in #18
Full Changelog: v0.5.1...v1.0.0
v0.5.1
What's Changed
- fix(docker): make GIT_PUSH work in the container (ssh + credentials + decoupled push) by @crossoverJie in #16
Full Changelog: v0.5.0...v0.5.1
v0.5.0
botler-agent v0.5.0
Highlights
- Scheduler can run an in-project script directly (Plan A). A schedule entry may now carry a
script(path relative to DATA_ROOT) instead of amessage, executing the script directly on fire — bypassing the LLM — while reusing theruntool's security boundary (path allowlist, fixed interpreter, no shell, 60s timeout). The script fires on the dispatcher's sequential queue (never races chat writes) and its auto-commit is scoped to the script's own subproject. Script tasks retry only onerror, never onvalidation-failed.
Follow-up fixes
- The
scheduletool now acceptsretryMax/retryBackoffMsvia chat, with enforced upper bounds. - Retries are non-blocking (
setTimeoutinstead ofawait sleep) so the single-threaded scheduler loop is never stalled. - Pending retries are cancelled if the entry's action / trigger / project changes during the backoff window.
- Updating one
retryfield preserves the other; switching the action type clears the inherited retry (avoids re-running a non-idempotent script with a stale retry). - Precondition failures now return
cwdso history logs are attributed to the correct project.
Other
- WebUI schedule editor: Action radio (Message / Run script), script fields, action-aware save guard, and script label in lists.
- System prompt documents the script action plus idempotency / retry guidance.
npm test225/225 pass;npm run typecheckclean.
Full Changelog: v0.4.1...v0.5.0
v0.4.1
What's Changed
- fix(docker): make tsx a runtime dep + add Docker smoke test by @crossoverJie in #13
Full Changelog: v0.4.0...v0.4.1
v0.4.0
What's Changed
- chore(deps): upgrade pi SDK to 1.2.0 and bump grammy/tsx/@types/node by @crossoverJie in #12
Full Changelog: v0.3.1...v0.4.0
v0.3.1
What's Changed
- fix(scheduler): cap poll delay to avoid TimeoutOverflowWarning busy-loop by @crossoverJie in #11
Full Changelog: v0.3.0...v0.3.1
v0.3.0
What's Changed
- feat(webui): show schedule history in drawer and hide spent once tasks by @crossoverJie in #8
- feat: multi-project routing with serial execution by @crossoverJie in #9
- feat: WeChat pairing / re-pairing from the WebUI by @crossoverJie in #10
Full Changelog: v0.2.0...v0.3.0
v0.2.0
What's Changed
- fix(webui): address scheduler history review feedback by @crossoverJie in #4
- fix: harden conversation context handling by @crossoverJie in #5
- feat: let the model decide conversation context reset by @crossoverJie in #6
- feat: add Docker image packaging and Docker Hub publish workflows by @crossoverJie in #7
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
- ci: add GitHub Actions CI and npm audit workflows by @crossoverJie in #1
- feat(wechat): receive inbound images as vision input + persist originals by @crossoverJie in #2
- feat(scheduler): add holidayMode:"workday" China legal-workday gating by @crossoverJie in #3
New Contributors
- @crossoverJie made their first contribution in #1
Full Changelog: https://github.com/crossoverJie/botler-agent/commits/v0.1.0