New capabilities, so every real-world request works end to end:
- tools/apps: launch and quit desktop applications, multi-OS
(macOS open/osascript, Linux gtk-launch/pkill, Windows start/taskkill)
- tools/browser: open URLs and run searches (YouTube, Google, web) in the
default browser, multi-OS; watch mode attempts autoplay via Safari
automation with a graceful fallback
- tools/shell: background mode β GUI apps, servers and tkinter windows
detach instead of dying with the 15s timeout
- agent prompt: explicit guidance for background execution and tkinter
windows, plus the never-give-up rule
- tests: 34 passing (8 new cases for URL building and validation)
Polish:
- professional tone across all text: emojis removed from docs, CLI,
installer and logs
- dashboard template: emoji-free labels, text action buttons
(Start / Stop / Delete instead of glyphs)
Fail is never allowed:
- think() retries transient failures (network/429/5xx) with backoff
- malformed or empty brain replies trigger corrective nudges (max 2)
- tool errors inject a diagnostic hint + auto-capture a debug snapshot
(sysinfo, uname, node version) into the activity feed
- step exhaustion forces one plain-text conclusion instead of giving up
- task results are reported with retries β the conversation is never
left dangling
- daemon survives uncaught exceptions / unhandled rejections (log only)
Live-verified: broken command (exit 127) β auto-debug β brain pivoted to
a working tool β real answer.
polish: community touchpoints β star/share links, CLI + installer CTAs
mo
e4af19b
fix(cli): login crash on failed verify β readline used after closeβ
mo
c02c7c8
The readline interface was closed right after the key prompt, so the
'Save anyway?' fallback on a failed verify threw ERR_USE_AFTER_CLOSE.
Close the interface only at the end of both paths.
- Restructure daemon into apps/desktop/ (bin, src, test, install.sh, package.json)
- New packages: engine (remote brain client), protocol (typed messages)
- New apps/gateway/ β local control-plane gateway for Docker platform
- Replace platform/ dir and packages/providers with monorepo layout
- Database: new initial schema migration + seeds, drop legacy mysql schema.sql
- scripts: keygen/setup updates + check-invariants
- .env.example template (no secrets); sqlite as default DB driver
- control.js: #httpStats() β POST metrics to /api/v1/agent/stats every 10s,
metrics start in connect() independent of WS; skip WS reconnect loop when
server can't upgrade (Sngine/Hostinger), keep HTTPS metrics running
- Tests: 26/26 pass