muselab v1.2.0 turns the self-hosted AI workspace into a more complete environment for long-running agent work. This release adds multi-workspace support, a real terminal, a unified activity center, conversation forks, richer previews, image generation, and substantial reliability improvements across desktop and mobile.
Highlights
Multiple workspaces
- Register, sort, and switch between multiple working directories.
- Keep file-tree, preview, terminal, and session context scoped to the active workspace.
- Refresh the file tree when files are changed by an agent, terminal, or external editor.
- Support workspace symlinks and preserve per-workspace UI state.
Real terminal
- Open real PTY terminals directly in the preview area.
- Create, rename, switch, and close multiple terminals per workspace.
- Configure startup profiles, commands, terminal limits, buffers, and TTL.
- Use the terminal from both desktop and mobile layouts.
Better conversations and background work
- Fork a complete conversation or branch from a completed turn.
- Continue sending messages while background tasks are running.
- See live turn status, elapsed time, model, tool timestamps, and compaction progress.
- Automatically synchronize messages written by another device, a scheduled job, or a background task.
- Use the per-device compact mode to hide routine tool output while preserving errors, permissions, tasks, and prompts.
- Remove the fixed 30-minute turn timeout; deployments can set
MUSELAB_TURN_TIMEOUT_Swhen needed.
Activity Center
- View background tasks and scheduled jobs across all workspaces in one place.
- Receive more reliable cross-device Web Push notifications.
- Use the new native macOS menu-bar client to monitor activity for local or remote instances.
Files, editing, and previews
- Edit Markdown in edit, split, or preview mode with live rendering.
- Preview highlighted source files, relative Markdown images, and zoomable Markdown, HTML, and images.
- Preserve reading and preview state per workspace and file.
- Avoid freezes when switching large file trees.
Attachments
- Store text, PDF, and spreadsheet attachments as original files under
.muselab-attach/<session-id>/and pass file references to the agent. - Remove the previous 200 KB text-attachment limit.
- Preserve original Excel workbooks and support non-ASCII filenames.
- Add a local-file fallback for PDF handling through compatible gateways.
Providers and image generation
- Add a Codex Gateway compatibility layer for local Anthropic Messages-compatible sidecars.
- Improve model context and quota handling for gateway models.
- Add background image generation through the OpenAI Images API or an optional local Codex image-generation path.
- Persist third-party provider runtime state and expose user Skills consistently.
Reliability, performance, and security
- Use a single persistent stream pump to prevent competing iterators and unblock new messages during background work.
- Fix mobile stream truncation, false
/compactfailures, focus stealing, stop-state drift, input history, and modal stacking. - Improve session synchronization, SSE recovery, attachment handling, and file-tree responsiveness.
- Keep dependency security constraints current and retain source-level personal-data leak checks.
Upgrade notes
Terminal security
The terminal runs with the real permissions of the muselab service account; it is not a Files API sandbox. Review authentication, HTTPS, reverse-proxy configuration, and service-account permissions before exposing an instance remotely.
Disable the terminal if it is not needed:
MUSELAB_TERMINAL_ENABLED=0CLAUDE.md replaces the old injected prompt
muselab no longer injects a global or session-level system prompt. Put persistent behavior, identity, language, and workflow instructions in the appropriate user-level or workspace-level CLAUDE.md and Skills.
Backups
Attachments and newly persisted workspace state expand the backup surface. Include at least:
$MUSELAB_ROOT/.muselab-attach/
$MUSELAB_ROOT/.muselab/imagegen/
$MUSELAB_ROOT/.muselab/workspaces.json
$MUSELAB_ROOT/.muselab/activity.json
$MUSELAB_ROOT/.muselab/terminal_profiles.json
${XDG_STATE_HOME:-~/.local/state}/muselab/vendor-cli/
Third-party provider state is automatically migrated from the old temporary directory. Conflicting files are placed under vendor-cli/.migration-conflicts/.
macOS
The macOS installer now compiles the native menu-bar client through xcrun, so Xcode Command Line Tools are required. Re-run the installer when upgrading an existing installation if you want the menu-bar component.
Browser refresh
After upgrading, completely close and reopen the installed PWA or perform a hard refresh so an older frontend bundle is not used with the new backend.
Compatibility
Existing sessions and JSON state remain forward-compatible, and the required state migrations run automatically. Sessions without an explicit working directory continue to use the primary MUSELAB_ROOT.
Full diff: v1.1.0...v1.2.0