- Projects → Apps rename — "projects" are now "apps" across the platform. API routes
/projects→/apps, skillswoltspace-projects→woltspace-apps, bot toollist_projects→list_apps. New apps are created underwolts/apps/. Backwards compatible: existing apps inwolts/projects/are still discovered and served. Optional migration script atmigrations/v0.5.0.sh. Thewoltspace.jsonmanifest schema is unchanged.
- Session resume —
resume_session()handles 3 paths: claude running (send keys), claude exited (restart with--resumein pane), tmux dead (respawn with--resume). (#241) - Stop/resume lifecycle —
POST /sessions/{name}/stopandPOST /sessions/{name}/resumeendpoints. Lodge UI shows always-visible stop/play buttons on session rows. - Auto-resume in TUI — opening a dead session in split.html automatically resumes it instead of showing a blank terminal.
- tui-service fix — stops creating bare tmux shells for non-main sessions. Fixes "wclaude: command not found" on resumed sessions.
- UUID session IDs —
run-session.shgenerates a UUID for--session-id(Claude Code requirement) and stores it in the registry.--nameflag gives sessions a human-readable name. - Running-only filter — lodge sessions view has a "Running only" toggle to filter to live sessions.
- Vulture fixed for per-wolt
.state/sessions/model (was broken since state refactor).
- Streaming subdomain proxy — replaced buffered
httpx.request()withclient.send(stream=True)+StreamingResponse. Fixes SSE and chunked responses for projects served via*.localhost:7777. - WebSocket proxy — catch-all WS route for
*.localhostsubdomains, proxies to project port. Passes subprotocols through (Vite HMR"vite-ping"). Fixes live reload for Vite/Astro projects.
- Lodge redesign — sidebar dashboard with wolt roster, project grid, sessions view grouped by wolt. Pixel art forest scene with procedural landscape, animated clouds, and river. (#255)
- Time-based greeting + rotating quotes on home view.
- Session count badge on nav.
- Wolt card tooltips (role + description) and site links.
- Fix stale skill names from
woltspace-*rename —create-woltandtelegramreferences inapp.py,onboard.html,entrypoint_setup.py. (#256)
- Skill inheritance — all platform skills renamed to
woltspace-*prefix (e.g.start-chat→woltspace-start-chat). Wolt-owned skills are never touched. (#173) - Boot sync covers all wolts —
sync_all_wolt_skills()replacescopy_skills(). Every wolt with.claude/skills/gets fresh platform skills on every boot. - CLAUDE.md platform section — auto-managed block at the top of every wolt's CLAUDE.md with platform rules, regenerated on boot. Wolt content below the markers is preserved.
/woltspace-updatere-syncs — after pulling, skills and CLAUDE.md are synced immediately without needing a restart.- Removed
musicanddigestfrom platform (wolts own their evolved copies). - Legacy skills (
update-2026-03-13,migrate-to-projects) moved tolegacy/and no longer synced.
Migration: Old unprefixed platform skills must be removed from each wolt's .claude/skills/. See docs/migrations/v0.4.0.md for the blueprint — /woltspace-update handles it automatically.
- Wolt-centric state model — runtime state moved from a single shared
.state/dump to per-woltwolts/{wolt}/.state/directories. Global platform state lives atwolts/.space/. (#228) lib/paths.py— central path helpers for all state locations. No more hardcoded.state/paths scattered across the codebase.- Unified test runner — top-level
pyproject.tomlresolves all deps (server + bot). Run tests withuv run --extra test pytest test/. - Stale PID fix — site health checks now probe the port directly instead of trusting
os.kill(pid, 0). Fixes stuck "waking up" when a PID gets reused. (#217) - Dead code removed —
status.jsonsingleton,GET /statusendpoint, wolf-wolt discovery functions,read_status()/write_status(). - gh-app-token fix — shebang points to bot venv Python (has PyJWT).
- Reload optimization — uvicorn reload watches specific dirs to avoid useless restarts.
Migration: After updating, old wolts/.state/ and neowolt/.state/ directories are no longer read. Safe to delete after confirming everything works. Tunnel URL has a backwards-compat fallback during transition.
- Distributed wolf scheduler — each wolt owns its own crons in
wolt/wolf.json. Wolf scans all wolts and dispatches sessions for the owning wolt. (#215, #221) - Simplified cron schema:
name+schedule/at+prompt+ optionalnotify. Removed oldaction/script/skill/creature/timezonefields. - One-off crons via
"at"field — fires once, auto-deletes from wolf.json. - Nameless wolf — notifications now show
🐺 *Howl*with creature emoji for the wolt being woken up. - Rewritten
/wolfskill for the new distributed model. - Start-chat modes now mention
/wolffor scheduling.
Action required: The /wolf skill has been rewritten. Existing wolts have a stale copy from the old model. After updating, replace it for each wolt:
cp -r /workspace/woltspace/container/skills/wolf/ /workspace/wolts/<wolt-name>/.claude/skills/wolf/- Credential symlink fix —
.claude/credentials.jsoncopied instead of symlinked to prevent atomic-replace breakage. (#216)
- Wolt sites with per-wolt livereload (#198)
- Projects system — woltspace.json schema, API routes, proxy, lodge cards (#183, #185, #187, #191)
- Lodge redesign — wolt cards, gnaw buttons, info tooltips (#163)
- Session routing — unified spawning from lodge/telegram/slack (#168)
- Type system — raccoon/beaver/otter with creature-derived models (#169)
- Wakeup template + instant viewport (#199)
- Fast uvicorn reload (#203)
See release notes: https://github.com/jerpint/woltspace/releases/tag/v0.2.0
- GitHub App auth — replace banned PAT with proper GitHub App (
container/bin/gh-app-token) (#147) - python-dotenv — replace fragile hand-rolled .env parser with standard library (#148)
- /update dep sync — automatically run
uv syncafter pulling to prevent import crashes (#149) - /create-github-bot skill — walks new users through GitHub App setup (#147)
Migration required: run migrations/v0.1.0.sh (syncs new Python dependencies). The /update skill handles this automatically.
- Playful dog acks — tail wags, head tilts, tippy taps instead of generic "on it..." (#112)
- Inline beaver favicon — can't be shadowed by wolt site files (#119)
- Wolf catch-up logic — fire missed crons on startup after container restart (#109)
- Release system — VERSIONING.md, CHANGELOG.md, version-aware /update skill (#116)
- Migration guide copied to migrations/v0.0.1.md (#117)
First versioned release. Architecture refactor: git clone in Dockerfile, single mount, port 7777, simplified CLI, backup system, smoke tests. See PR #104.