Releases: chriswritescode-dev/opencode-manager
Release list
v0.14.6
Features
- Session Pinning — Pin important sessions to a dedicated section at the top of the session list. Unpin anytime. (#301)
- Server Restart & Health — Graceful restart coordination with automatic session resume, live health status indicator in Settings. (#300)
- Schedule Permissions & Workspace Tracking — Configure allowed file access and blocked bash commands per schedule. Workspace ID tracking on runs. (#297)
Fixes
- Migration runner version-name mismatch detection — The runner now warns when a recorded migration's name differs from the code migration at the same version, preventing silent skips.
Chores
- Test suite cleanup: removed 229 lines of dead/redundant tests, rewrote SessionDetail polling test to exercise real gating. (#299)
- Full documentation and screenshots for session pinning, server health, schedule permissions, skills, and worktree isolation features.
v0.14.5
v0.14.5 (2026-06-29)
Features
- Add schedule worktree isolation for running jobs in isolated worktrees (#295)
- Add repo rename capability with custom name field (#294)
- Add bundle-based OCM mirror sync (#289)
Fixes
- Reconcile confirmed prompt on message fetch to clear stale send errors (#296)
- Add mobile bottom padding to prompts tab and show edit/delete buttons on touch (#293)
- Filter source control commits by branch (#286)
- Follow up prompt preservation changes (#292)
- Allow saving edited PAT credential when reusing existing token
Refactors
v0.14.1
What's Changed
Features
- Directory Files Upload — upload markdown files from local folders as OpenCode commands and agents via the Settings UI (file or folder picker)
- Deferred Restart Model — config saves, skill CRUD, and directory file operations return
restartRequired: trueinstead of restarting the server immediately. An amber "Restart Now" banner appears when a restart is pending vcs.branch.updatedSSE Handling — the frontend now reacts to branch-change events from the OpenCode server, keeping git status caches in sync
Refactors
- Cache Invalidation Consolidation —
invalidateRepoGitCaches,setRepoGitStatusCaches,invalidateRepoGitCachesDebouncedhelpers replace scattered per-call-site invalidation; all 8+ git mutation sites migrated - Skills Service Trim — directory config management extracted from
skills.tsto new dedicated service;normalizeInstallRelativePathunified into sharednormalizeUploadRelativePath - Upload Utilities Extracted —
parseUploadManifest/readUploadedManifestFilesshared between skill install and directory file upload routes useCommands→useQuery— migrated fromuseState/useEffectto React Query withinitialData- Touch Handling Consolidation — new
useTouchTapSelecthook replaces inline touch-tap logic inCommandSuggestionsandMentionSuggestions useRefreshOnOpenHook — reusable pattern for refreshing stale data when panels/sheets openRestartServerDialogSimplified —isSavingprop removedOpenCodeConfigManagerLayout Fix —min-h-0,safe-area-inset-bottomsupportSettingsListEmpty State — improved sizing constraints (max-h-40,min-h-24)
Fixes
- Visual Viewport Detection — added
isTextInputFocusedguard, additional event listeners forfocusout/pageshow/visibilitychange - ModelQuickSelect Styling — variant selector trigger restyled as compact button with chevron
- Docker Workflow —
workflow_dispatchtrigger added;vprefix stripped from OpenCode version
Commits
- feat: directory files upload system, deferred restart model, cache invalidation consolidation, and misc improvements (#281)
- chore: add workflow_dispatch to Docker build workflow
- fix: strip v prefix from opencode version in Docker workflow
Full Changelog: v0.14.0...v0.14.1
v0.14.0
Highlights
Skill Installer
You can now install skills directly from GitHub repos or upload custom skills, all from the Settings UI. Supports installing from GitHub tree URLs (e.g., github.com/user/repo/tree/main/skills/teach), overwrite conflict detection, search/filter by scope (all/project/global), and a unified skill library list. Includes a new backend GitHub utility (githubFetch) and shared schemas for install requests/responses. (#279)
Unified Settings Editor Layouts
Extracted a reusable <SettingsList> / <SettingsListRow> UI component and applied it across AgentsEditor, CommandsEditor, McpServerCard, OpenCodeModelsEditor, and the skills list. Every settings panel now shares consistent loading, empty, error, and scroll states. Cards/DropdownMenus replaced with a unified pattern. Plus a new <RestartServerDialog> for explicit server restart prompts. (#280)
Offline Resilience
Major rework of the app's failure handling:
- Prompt text is now preserved across network errors and stored in the error state for recovery
- Removed optimistic message insertion (no more ghost messages in the chat on network failure)
- Gateway timeout (HTTP 524) is silently swallowed instead of showing error toasts
- SSE connection timeout (10s) recovers from connections that never open
- Service worker fully rewritten with build-hash-based precaching, app shell (network-first), runtime asset cache (cache-first), and smart cache invalidation on SW activation
- New
swPrecacheManifestVite plugin auto-generates the precache manifest at build time - Service worker update checks run on visibility change, window focus, and a 1-minute interval (was 1 hour)
- New
<RouteErrorBoundary>with "You're offline" state and retry/auth actions (#276)
Config Dropdown Improvements
The config selector no longer auto-applies on dropdown selection. Instead, an explicit "Apply" button appears for non-active configs. The active config shows "(Active)" labeling, and a new confirmation dialog prompts before restarting the server when a default config is updated. (#275)
Docker Build Rework
The Dockerfile now downloads the OpenCode binary directly from GitHub releases instead of running the install script (avoids GitHub API rate limits). Proper architecture detection for arm64 vs x64. (#274)
Full Changelog
Features
- Skill installer with GitHub tree and upload support (#279)
- Unified
<SettingsList>component for all settings editors (#280) - Explicit "Apply" button for config selection (#275)
Fixes
- Preserve prompt text on network errors and allow offline typing (#276)
- Remove optimistic ghost messages in chat on failure (#276)
- Swallow gateway timeout (524) without error toasts (#276)
- SSE connect timeout to recover from stalled connections (#276)
- Avoid GitHub API lookup during Docker opencode install (#274)
- Avoid auto-applying OpenCode config on dropdown selection (#275)
Refactors
- Extract
SettingsListcomponent with reusable loading/empty/error states (#280) - Unify
AgentsEditor,CommandsEditor,McpServerCard,OpenCodeModelsEditorlayouts (#280) - Extract
RestartServerDialogfrom inline server restart logic (#280) - Remove
RepoSkillsListin favor of unified skill library (#279)
Service Worker & Offline
- Build-hash-based precaching with Vite plugin (#276)
- App shell (network-first) and runtime asset cache (cache-first) strategies (#276)
- Smart cache invalidation on SW activation (#276)
- Faster SW update detection (1min interval + visibility/focus events) (#276)
Infrastructure
- Docker: direct binary download with arch detection (#274)
- New
githubFetchutility for GitHub API calls (#279) - New shared schemas:
InstallSkillFromGithubRequest,InstallSkillUploadRequest,InstallSkillResponse(#279)
Tests
- 7 new test files:
settings-list.test.tsx,AgentsEditor.test.tsx,CommandsEditor.test.tsx,McpServerCard.test.tsx,OpenCodeConfigManager.test.tsx,RestartServerDialog.test.tsx,opencode-errors.test.ts - Updated tests for
SkillsEditor,RepoSkillsDialog,useSendPrompt,openCodeEventStream,SessionDetail - 371-line test for skill install routes, 429-line test for skills service
New files: 18 | Modified files: 39 | Deleted files: 1 | +4,102 / -1,087
v0.13.1
v0.13.0
What's Changed
- fix: prevent deletion of assistant repo in deleteRepo
- refactor: persist assistant repo in database with ID migration (#271)
- refactor: move assistant workspace install before OpenCode server start (#263)
- refactor: extract shared useUrlParams hook and use push navigation for dialogs (#266)
- feat: replay session statuses on upstream reconnect and add compact type (#268)
- feat: interactive task list checkboxes in markdown preview (#267)
- fix: allow editing in config editor without clearing search first (#265)
- fix: derive session active state from server status and incomplete assistant, not last user message
- refactor: derive session active state from messages instead of status store (#264)
v0.12.3
What's Changed
- SSE hardening: queue-based writer with backpressure and directory-aware batching for improved reliability
- SSE frame utility: added structured SSE framing utility for consistent event formatting
- Parts batcher: defer operations when target message is missing from cache to avoid race conditions
- Model store: skip unnecessary subscriber notifications on no-op variant changes
- TypeScript: fix type narrowing error on
messages.lengthcheck during loading state - Docker: update Node.js base image and docker-compose config improvements
- Docker upgrade script: improved upgrade workflow with better error handling
v0.12.2
Headline: Assistant Scheduling
Assistant workspace can now schedule jobs and tasks — not just regular code repos. This means the Assistant repo (repoId=0) supports the full schedule workflow (prompts, templates, runs, cleanup), with cascade delete protection to preserve Assistant schedules when other repos are cleaned up.
What's New
- Assistant Scheduling — Schedule jobs for the Assistant workspace, with dedicated navigation in the drawer menu and a generated schedule-management skill
- STT Voice Activity Detection — Energy-based VAD with adaptive noise floor, silence gate, and auto-stop. Prevents Whisper hallucination on silent takes and eliminates stuck voice overlay states
- Mirror Compression — gzip compression for repository mirror transfers, with proper progress tracking
- Config Manager Redesign — Replaced 2-column card grid with a single-select dropdown + inline action buttons, plus find-in-text search in the config editor
Bug Fixes
- Assistant: remove stale localStorage cache read in session launcher
- Assistant: replace unbounded
listSessionsfallback with paginated lookup - Schedules: orphaned schedule records now cleaned up when a repo is deleted (with cascade delete for runs/jobs)
- Frontend: adapt session list to OpenCode v1.16.0 API response format changes (backward-compatible)
- Settings: wire up version dialog button in ServerHealthStatus
- UI: align Home button size and position in
RepoQuickSwitchSheet
Chores
- Bump version to 0.12.2
- ocm-cli: bump to 0.1.4
- Drop dead progress code and unused phase field from mirror module
67 files changed, 4,550 insertions, 1,400 deletions
v0.12.0
Highlights
Assistant Mode improvements
- Warms the assistant workspace on startup so launching Assistant Mode is faster.
- Adds a self-configuring assistant workspace that can reload after configuration changes.
- Preserves user-customized agents during OpenCode config repair.
Worktree and workspace management
- Adds worktree tabs in repo detail views.
- Adds a collapsible workspace manager.
- Supports custom directory names when adding remote repos.
- Improves collision handling when cloning forks or repos with duplicate names.
- Adds server environment variable settings.
Session list performance
- Replaces per-directory session fetching with paginated session loading.
- Adds infinite scroll and server-side search for sessions.
- Reduces unnecessary session refetches from noisy SSE updates.
ocm CLI and repo transfer improvements
- Adds progress tracking for mirror uploads.
- Fixes chunked mirror uploads.
- Excludes macOS metadata from mirrored uploads.
- Improves the
ocmCLI setup documentation.
Notifications
- Adds richer notification content using shared formatting helpers.
- Deduplicates permission display formatting across frontend/backend code paths.
UI fixes
- Constrains the model quick-select bottom sheet width on desktop.
- Updates README/docs screenshots with current desktop and mobile views.
Fixes and reliability
- Fixes repo directory name collisions and improves path safety validation.
- Guards reset-permissions behavior so it only disposes the intended repo-scoped OpenCode instance.
- Adds additional backend/frontend/CLI test coverage for repos, sessions, assistant mode, transfers, notifications, and OpenCode hooks.
Documentation
- Adds a dedicated
ocmCLI guide and links it from README/MkDocs. - Adds a quickstart section explaining how to install, log in, and attach to repos with
ocm. - Updates docs for providers, MCP servers, skills, environment variables, Git credentials, TTS, and notifications.
- Replaces old README demo media with static WebP screenshots.
v0.11.0
What's Changed
- fix: hide files icon on mobile and improve settings layout by @chriswritescode-dev in #226
- fix(frontend): add repo action tooltips by @mturac in #229
- fix(frontend): close sheet when opening new repo dialog by @chriswritescode-dev in #230
- feat(ocm-cli): workspace repo sync and manager token targeting by @chriswritescode-dev in #233
- feat(frontend): add route loading skeleton and error boundary by @chriswritescode-dev in #234
- feat(frontend): improve model selection experience by @chriswritescode-dev in #237
New Contributors
Full Changelog: v0.10.1...v0.11.0