Foxl v0.2.0 is the biggest reliability update since launch. The core focus: making multi-agent workflows predictable and fixing scheduling quirks that caused tasks to run on wrong days.
DB-backed auto-continuation
The most impactful change replaces two competing in-memory queues with SQLite-backed tables. Previously, when multiple subagents completed around the same time, race conditions between the subagent-level queue and server-level queue could trigger duplicate auto-continuations - spawning 6 agents when only 3 were requested.
The new system uses auto_continue_queue and auto_continue_lock tables. An atomic INSERT OR IGNORE on the lock table acts as a mutex - only one drain runs per conversation at a time. Stale locks (from crashes) are cleaned up automatically after 5 minutes.
No more raw result injection
A related bug caused raw [SUBAGENT COMPLETED: ...] text to appear in chat. This happened because the old injectMessage call would succeed when the parent agent was active during auto-continuation, dumping unprocessed results directly into the conversation. We removed these calls entirely - result delivery is now handled exclusively through the DB queue.
Cron weekday fix
The cron scheduler's parseCronNextRun function had a significant bug: it completely ignored the weekday field. A schedule set to 0 18 * * 1-5 (weekdays at 6pm) would happily run on weekends. The fix parses ranges (1-5), lists (1,3,5), and mixed expressions, advancing the next-run date until it lands on a valid day.
UI improvements
- Sidebar agent list - elapsed timer per agent, stop button on hover, shadcn Badge in collapsed mode
- AgentChatView - consecutive thinking+tool items grouped into single message blocks (matches main chat spacing), thinking blocks now display properly
- Message queue - accent background, line-clamp, hover-reveal delete button
- Terminal sync - session count updates in real-time via WebSocket events
Build fixes
An esbuild banner variable collision (_cr conflicting with minified code) prevented the production app from starting. Renamed to __foxl_cr. Also fixed 6 pre-existing TypeScript errors including a GeminiModel import path and missing union type members.
Full changelog at foxl.ai/changelog. Download v0.2.0 from GitHub Releases.