v3.0.2 — fresh-install & timezone fixes
A maintenance release hardening the first-run experience and timezone handling, driven entirely by feedback from someone who forked the project and set it up from scratch. Thanks to the community tester who reported all of these. 🙏
If you're upgrading: dbrain upgrade (or pull + upgrade.sh). No config changes required. No breaking changes.
🐛 Fixes
1. The persona could silently fail to load (#11)
With the default relative VAULT_PATH=./vault, the brain starts with cd vault && cat deploy/brain-system.md — and that cat resolved against vault/ after the cd, loading nothing. The agent booted with no personality and no reply contract, and the boot assertion missed it because it reads the file from a different working directory. Fixed by resolving vault_path/runtime_dir to absolute paths at config time, so the persona file, mcp-config.json and the cd target are all cwd-independent. The cron CLI mirrors the same resolution so it can't split jobs.json from the bot.
2. The bypass-permissions prompt blocked every fresh install (#12)
On a new machine, claude --dangerously-skip-permissions shows a one-time "Bypass Permissions mode" acceptance screen. The session-state parser didn't know it, so startup failed with session not ready in 90s until a human accepted it by hand. The bot now detects that screen and auto-accepts it. Detection is triple-guarded (warning title and the numbered accept line and the absence of the idle footer) so a model reply that merely quotes the warning can never trigger a false recovery.
3. Scheduling examples were hardcoded to one timezone (#13)
The cron skill's examples used a fixed Asia/Tashkent / +05:00, which the agent copied verbatim — so a fork in another zone scheduled reminders hours off. Examples now use "${TZ:-UTC}", which reads your configured timezone and falls back to UTC. Set TZ in your .env.
4. Docs: restarting the bot does not recreate the brain (#14)
Changing CLAUDE_MODEL and running dbrain restart appeared to do nothing — by design: KillMode=process keeps the long-lived tmux session alive across restarts (that's what keeps you on the subscription). Settings read only at session creation (CLAUDE_MODEL, mcp-config.json, system prompt) now have documented recreation steps — including the second cron session — in the README and the setup guide.
⚙️ Notes
- All four landed as separate, reviewed PRs; each carries red→green tests. Full suite: 239 passing, ruff clean, the no-
claude -pCI guard green. - The 180s false-stall some early forkers hit was already fixed in v3.0.1 (
is_workingrecognizes the new spinner format + apane.log-growth liveness fallback). Upgrading past v3.0.1 resolves it.
Full changelog: v3.0.1...v3.0.2