Releases: Stuko0/alice-agent
Release list
Alice 0.23.2
Alice 0.23.2 fixes four reported desktop issues: the Windows boot hang, the empty project tree after session switches, computer-use on pure-Wayland sessions, and session-list refresh churn.
Desktop boot (Windows stuck at "Starting Alice" 100%)
- The backend env now sets
PYTHONUNBUFFERED=1so theport=NNNNannouncement is never trapped in the Windows stdout buffer — the #1 cause of the eternal spinner. - A bounded (15s)
serve --helpprobe falls back to the legacydashboard --no-opensubcommand for managed installs that predateserve, instead of dying on argparse exit(2) before ever announcing a port. - New
alice:boot-progressandalice:backend:exitWails events: the renderer gets a real boot bar (spawn 20% -> ready 60%), and when the backend dies it now sees the exit code plus the last 8KB of stderr — an error screen, not an idle loader. The renderer-sideonBackendExit/onBootProgresshandlers were no-op stubs; they are wired now. GetBootProgressRPC + regenerated bindings committed (a fresh clone can reproduce the exe).- Dropped the orphan second
PythonManagerinstance the update service was creating (stale backend PID tracking).
Session switching (project tree empty/stale)
- The warm fast-path now restores
cwd/branchalongside the transcript, so the right sidebar file tree follows the switch immediately. - Cold resumes paint the stored
cwd/git_branchin the loader frame; the livesession.infore-syncs when the resume resolves. - A broadcast
session.infocarrying the runtime id you just switched to is no longer discarded (switch-race hole).
computer-use on pure-Wayland
capture()fails fast with actionable guidance when window enumeration only sees the compositor XWayland anchor (null pid, ~10x10) — previously it returned a blank screenshot and an empty tree while appearing to work.alice computer-use doctornow runs a reallist_windowsprobe after the driver health report and downgrades the verdict tofailedwith workarounds (GDK_BACKEND=x11 / --ozone-platform=x11). On a pure-Wayland host it used to report OK.pid: nullno longer crashes the window deserializer.
Session list churn
refreshSessionscoalesces concurrent callers into one in-flight fetch with a 2s freshness window (boot + reconnect + route effects were triple-firing 4 round-trips each).emptyOutDirpinned in the desktop vite config: stale hashed chunks from previous builds no longer ride intogo:embed.
Validation
go build/go vet/ fullgo testsuite green (the boot E2E test caught — and led to fixes for — a probe timeout and a self-deadlock under the StartGateway lock before shipping).- 15 new tests covering the Wayland guard, capture fail-fast, and doctor probe; python suite 39/39 via
scripts/run_tests.sh. - tsc: zero new errors; vitest 149/150 in touched files (the one failure reproduces on unmodified main).
Full changelog: v0.23.1...v0.23.2
Alice 0.23.1
Windows portability batch
Validated end-to-end on a Windows 11 VM (Python 3.13, full test suite via the official per-file runner). Every fix verified green on Linux with scripts/run_tests.sh — no regressions.
Windows fixes
- Image routing: local image-path regex now accepts Windows drive-letter paths (
C:\.../C:/...), same anchor the gateway'sextract_local_files()uses; expanded~/x.pngmatches are normalized withnormpath()so they print as native paths. - File safety: sandbox-mirror classifier returns POSIX
inner_path/mirror_root(mirrorsclassify_container_mirror_target's existing contract). - Shell hooks: on Windows, shebang scripts (
#!/usr/bin/env bash) resolve through_shebang_interpreter()— bash from PATH or the standard Git-for-Windows install dirs — and commands re-tokenize withshlex posix=FalsesoC:\paths keep their backslashes. - Skills:
_find_windows_bash()locates Git-bash off-PATH for inline-shell snippets (!\echo ...``), with a cmd.exe fallback when no bash exists. - Subdirectory hints / verification evidence:
shlex.split(posix=False)for commands containing Windows paths — backslash paths are no longer eaten, so sub-dir hints register and ad-hoc verification scripts are recognized. - Learning graph:
%-d(glibc-only) replaced with portablef"{dt.day}". - Test runner: forces UTF-8 stdout/stderr — cp1252 consoles no longer crash on progress glyphs (✓/✗).
Test-suite portability
USERPROFILEmocked alongsideHOME(Windowsexpanduser()prefers the former)tempfile.gettempdir()instead of hardcoded/tmpshutil.which()instead ofwhichsubprocess calls- Explicit
utf-8read_text()(Windows default is cp1252 — em-dashes became mojibake) - Path assertions compare parts instead of raw strings
- Case-insensitive env-var key match (Windows
os.environis case-insensitive)
Also in this release
- Repo URLs rebranded from the internal Gitea host to
github.com/Stuko0/alice-agent(banner, auth, updater, Telegram adapter, installers, osint UA). - README fixes: providers link points to the actual
/docs/providers/page; broken 404 links and internal IPs removed from badges.
Full changelog: v0.23.0...v0.23.1
v0.23.0
v0.23.0 — P3-13 embedded backend (proof of concept) — task broad-glitter-acae
- Detect a bundled self-contained Python beside the binary (POSIX
resources/python/bin/python3+resources/pythonin findPythonForRoot/findVenvRoot), mirroring the existing Windows layout. getVenvSitePackagesfallback widened to 3.14/3.15 (only reached 3.13 before).scripts/bundle-python.sh: provisions a python-build-standalone CPython viauv python install --install-dirand installs alice-agent + deps intoresources/python(PEP 668 bypassed with--break-system-packages).- Verified end-to-end: the bundle is relocatable, imports alice_cli (0.23.0), and the embedded backend served
/api/status-> HTTP 200. ~211MB;build/binis git-ignored. - Make buildBackendEnv tests hermetic; gitignore repo-root
/build/.
Commit e8d038e.
v0.22.0
v0.22.0 — P2: shell E2E tests + Linux packaging
P2-9 — shell Wails E2E: unit tests for all Go services (PythonManager, ConnectionService, GitService, LogService, PTY), an end-to-end backend boot test (StartGateway -> watchPort -> IsHealthy -> WaitForHealthy -> GetBackendPIDs -> StopGateway), and a real fix to LogService.GetRecentLogs (it trimmed to the tail before filtering blank lines, so a trailing newline dropped a line). 49 Go tests total. endpoint-parity-check.sh moved into the repo and wired as a desktop-parity CI job (70/70 + 11/11).
P2-11 — Linux distribution: native nfpm packaging config in wails.json (deb/rpm/apk), build.sh deb|rpm|apk -> wails build -package, and scripts/package-appimage.sh for AppImage.
P2 pending: P2-8 (Windows ConPTY), P2-10 (Authenticode signing). Commit 469f3e7.
v0.21.0
v0.21.0 — P1: desktop Wails parity with Electron
- Remote gateway: ConnectionService (persist config, server-side ProbeRemote avoids renderer CORS, IsRemote), App.ProxyApi routes to remote with X-Alice-Session-Token, App.GetConnectionInfo remote-aware, no local backend in remote mode.
- Deep links + single-instance (POSIX): unix-socket lock, secondary instance forwards
alice://and exits, deep-link event to the bridge. Windows stub no-op. - Native dialogs:
fs_service.SelectPathsuses runtime.OpenFileDialog/OpenDirectoryDialog for single/directory selection; multi-path keeps shell fallback. - Window state: restore/save size, position, maximised to
desktop-window.json.
P1 deferred: P1-5 (tray + notifications) pending. Commit 88f8a06.
Alice 0.20.0
Alice 0.20.0 — Self-update nativo + deprecación de Electron
Self-update en el shell Wails (UpdateService)
Check(): distancia vs la rama configurada (ls-remote, sin fetch); no-git → hint manual.Apply():alice update --yes --branch <pin>→ rebuild del binario Wails (alice desktop --build-only) → watcher detached que re-exec el binario fresco.- El backend propio queda a salvo del reaper de
alice update(ALICE_DESKTOP_CHILD_PID). - Branch pin persistido; progreso en vivo por eventos (
alice:updates:progress). - La UI de updates existente (overlay + pill) ahora funciona sobre el bridge real.
Electron deprecado en Windows
- Eliminados
dist:win*(NSIS/MSI) y el job de CI correspondiente — el único artefacto Windows es el binario Wails + checksum. - El instalador (Alice-Setup.exe) ya solo produce/abre el binario Wails.
--electronqueda como escape hatch temporal para checkouts de fuente.
Otros
WAILS-ROADMAP.mdagregado (hoja de ruta Wails, P0 marcado como hecho).- Bump de versión unificado a 0.20.0.
Commits (desde v0.19.1)
$(git log v0.19.1..HEAD --oneline --no-merges | sed 's/^/ - /')
Alice 0.19.1
Alice 0.19.1 — corrección del release
Fix
- Revertido el commit
fdb566f(remoción errónea de deployments de Docker/contenedores): se restauró Dockerfile, docker-compose, la imagen s6 (docker/),tests/docker/,container_boot.py,.hadolint.yamly los workflowsdocker.yml/docker-lint.yml/upload_to_pypi.yml. - Removido el deployment de GitHub Pages (
deploy-site.yml) — esa era la intención original. .logs/y.plans/fuera del repo (ahora gitignored).
Commits
$(git log v0.19.0..HEAD --oneline --no-merges | sed 's/^/ - /')
Alice 0.19.0
Alice 0.19.0
Desktop — Wails es el runtime por defecto
alice desktopahora lanza el shell Wails (Go) por defecto; Electron queda como legacy opt-in con--electron- Portabilidad Windows de la app Wails: PTY por pipes, dialogs PowerShell, build.ps1, icono, CI que publica el binario + checksum
- El instalador de Windows (Alice-Setup.exe) descarga/construye y abre el binario Wails con verificación SHA-256
- Capability-gating de features Electron-only en el shell Wails + tuning de arranque (code splitting, polling reducido, React Query)
Integraciones
- Refactor de integraciones extra: se removió el upstream Nous Portal del proxy, la cuenta/billing/subscription Nous y el plugin de modelo Nous (stubs compatibles para imports legacy)
- Rebranding completo a la identidad Alice (Lydia→Alice, Nous Research→Stuko, URLs → stuko.dev)
Repo
- Bump de versión unificado a 0.19.0 (pyproject, init, ACP registry, desktop, wails.json)
- Removidos los deployments del repo (Dockerfile, docker-compose, imagen s6, workflows de deploy) y los scratch dirs
.logs//.plans/
Commits (26)
$(git log v0.18.1..HEAD --oneline --no-merges | sed 's/^/ - /')
Alice v0.18.1
Alice v0.18.1 — Lydia → Alice rename (full codebase)
What Changed
Complete rename of all lydia references to alice across the entire codebase:
- 218 files changed, 2207 insertions, 2207 deletions
- Function names, constants, env vars, variables, parameters, comments
Core (alice_constants.py)
set/get/reset_lydia_home_override→set/get/reset_alice_home_override_get_platform_default_lydia_home→_get_platform_default_alice_homeensure_lydia_home→ensure_alice_homefind_lydia_node_executable→find_alice_node_executablewith_lydia_node_path→with_alice_node_path-
- 10 more function renames
Environment Variables
LYDIA_HOME→ALICE_HOMELYDIA_HOME_MODE→ALICE_HOME_MODELYDIA_GIT_SHA→ALICE_GIT_SHALYDIA_GIT_BASH_PATH→ALICE_GIT_BASH_PATHLYDIA_BUNDLED_SKILLS→ALICE_BUNDLED_SKILLSLYDIA_OPTIONAL_SKILLS→ALICE_OPTIONAL_SKILLSLYDIA_OPTIONAL_MCPS→ALICE_OPTIONAL_MCPSLYDIA_NODE_TARGET_MAJOR→ALICE_NODE_TARGET_MAJOR
Electron Desktop
resolveLydiaHome()→resolveAliceHome()LYDIA_HOMEvariable →ALICE_HOMEACTIVE_LYDIA_ROOT→ACTIVE_ALICE_ROOT.lydia-bootstrap-complete→.alice-bootstrap-completeAPP_NAME = 'Lydia'→APP_NAME = 'Alice'com.nousresearch.lydia→com.nousresearch.aliceverifyLydiaCli→verifyAliceCli- All
.cjsfiles updated (backend-env, backend-probes, bootstrap-runner, etc.)
Python Codebase
- 60+ function renames across alice_cli/, agent/, gateway/, tools/, tui_gateway/, cron/
- 351 variable/parameter renames
- 79 additional renames (cookies, build info, temp files)
Intentional Remaining (4 references)
r/lydiaagent— Reddit subreddit (external reference)"clydia-foo"— anti-false-positive string in uninstall- Regex patterns in
approval.py— detect oldlydiacommands for security
Stats
- 49/49 tests passing
- 0 syntax errors
- Rename-only change, no functional difference
Alice v0.18.0
Alice v0.18.0 — Desktop-driven for everyone
New
- Setup Driver (desktop): overlay asistente de primer arranque sin terminal — provider + terminal backend en 3 pasos, con UI dedicada.
- OmniRoute como quick-setup default: free-gateway con ~90 providers sin registro/API-key, spawn automático del thin-client. Ruta B: si no hay Node ni Docker, Alice descarga Node 22 + hace
npm install omnirouteen~/.alice/omniroute/(SHA256-verificado). - Recomendación de terminal en Windows: WSL2 detectado como backend preferido en Windows.
- DPR (Dynamic Provider Registry): providers declarativos en
~/.alice/providers.d/*.yaml, merge al catálogo unificado comocustom:<id>.- CLI:
alice providers list/add/test/remove - REST:
GET/POST /api/providers/custom,DELETE .../test - Desktop: sección "Custom providers" en Settings → Providers con add/test/remove
- CLI:
- Task-scoped Help:
alice help <topic>(11 tareas → docs reales dewebsite/docs/) + REST/api/help/topics|task. Desktop: FAB "?" + panel de ayuda con renderización markdown. - Migración OpenClaw: API programática (scan → preview dry-run → apply) sin terminal. Desktop: wizard 3 pasos sobre
/api/migration/*. - Updates transparentes: sistema validado — check automático al arranque, cada 30 min y al enfocar ventana; toast + overlay con changelog.
Stats
- 100/100 tests Python verdes en la suite de features; baseline desktop (58 vitest preexistentes + ~101 tsc preexistentes) inalterado.
- 16 commits: 15 features + 1 bump.