Repository navigation
feat: add integrated terminal, project actions, session automation and git workflows - #381
Merged
Merged
Conversation
Security: - Reject same-site and cross-site state-changing requests on cookie-authenticated routes unless the origin is trusted - Drop Manager and ocm_preview Set-Cookie headers from preview responses - Show and hash the full executable content of .ocm/project.json at trust time - Restrict action URLs to http(s) and refuse symlinked repo config paths - Keep the preview start redirect on the gateway origin Lifecycle: - Stop terminals in OpenCode workspace siblings when a repo is deleted - Report preview as unavailable instead of crashing when the gateway port cannot be bound Performance: - Skip branch lookups when validating terminal and project-config directories - Stop the /proc scan once all listening sockets are mapped and pause port polling while a preview is open - Close slow WebSocket clients with 1013 so they reconnect with replay - Lazy-load the xterm terminal view and skip unchanged resize requests - Request uncompressed responses from preview targets Cleanup: - Share one repo directory resolver, trusted-origins parser, cookie prefix, WebSocket frame forwarder, header filter, icon map and dialog-param helper - Remove unused props, options and exports Docs: update terminal, preview, project actions, sandboxing, internal API and environment pages
… and multi-run Per-session permission modes: each root session runs in ask or auto. Auto answers each permission request once from the backend, child sessions inherit their root's mode, forks copy the source's mode, and scheduled runs and agent-created sessions stay on ask. A lock reason reports why a session's mode cannot change. Session goals: arm a goal in the composer and a backend audit loop keeps the session working until an auditor model returns done or blocked. The loop is bounded by continuation and token limits, survives restarts, and pushes an outcome notification. Goals cannot start on scheduled-run or child sessions. ocm session tool: allow-listed internal routes to list, create, follow up on, read replies from, and fork sessions. Created and forked sessions are pinned to ask, listing covers a repo's workspaces, and replies wait for the session to settle with a capped response. Multi-run: launch one prompt on up to five models, optionally each in its own OpenCode workspace, with per-entry status and discard. Also add the shared owners this group needed (session launcher, session reply, workspace create/remove, multi-run storage) and update the feature docs.
…nd identities - Create a worktree from a new or existing branch - Integrate a worktree branch into a target branch by merge commit or cherry-pick, with continue/abort on conflicts - Delete a worktree with keep, delete-local, or delete-local-and-remote branch options, using safe branch deletion for unmerged branches - Add a stash tab (list, push, apply, pop, drop) shared across a repository and its worktrees - Rename and delete branches, optionally deleting the remote branch and updating scheduled base branches - Detect in-progress merge, rebase, cherry-pick and revert operations and hand conflicts to an agent session - Generate commit messages from staged changes with the default model - Add a default git identity and saved per-repository identities written to git config - Unify git error mapping behind a typed error and one route helper; consolidate git mutations and cache invalidation - Update repository docs
feat(git): extend source control with worktrees, stashes, conflicts and identities
feat(sessions): add permission modes, session goals, ocm session tool and multi-run Resolve the duplicate parseJsonBody added by both #380 and #379 into one helper: #379's result shape and allowEmpty option, with the first validation message as the error and the issues as details. Update the repo-git callers, affected route tests and the internal API docs.
- Delete a remote branch only when the upstream (read from branch.<name>.remote and branch.<name>.merge) has the same name; otherwise refuse with REMOTE_BRANCH_MISMATCH before deleting anything. - Without force, require the branch to be merged into HEAD before deleting its remote branch, so pushed unmerged commits are not lost. - Cherry-pick integration selects only commits not yet applied to the target and skips merge commits. - Create worktrees from a remote-only base as origin/<branch>. - Show the upstream name in the branch delete dialog and update the worktree delete option text and git docs.
- Block prompt submission while an armed goal is starting. - Launch multi-runs with mutate so a failed launch is not an unhandled rejection. - Save changed session automation fields in one update so concurrent autosaves cannot overwrite each other.
feat: integrated terminal, project actions and dev server preview (OM-17, OM-18, OM-19) Integration with #380 and #379: - Adopt the git-config identity model: drop the branch's identity stubs (getShellEnv, getAssignedGitIdentityEnv, repo identity ids, duplicate createGitService and getMainCheckoutPath); terminals receive only the GitHub token env and take their commit identity from git config. - Add RepoWorkspaceService as the single owner of OpenCode workspace side effects: worktree setup commands on create and terminal cleanup on remove, used by the workspace routes, the session launcher (ocm tool and multi-run) and multi-run discard, with one worktree-sibling matcher. - Run repo-delete terminal cleanup inside the worktree branch deletion flow. - Combine the CreateWorktreeDialog tests and update docs for the identity model and setup command coverage.
Bring the terminal, project actions and dev server preview merge (OM-17, OM-18, OM-19) onto beta after 4a2e695. No conflicts; the merged CreateWorktreeDialog keeps BaseBranchSelect with origin/ remote bases and the worktree setup terminal navigation.
- Correct stale UI labels, flows, endpoints, and env var docs across the docs site - Refresh git and chat screenshots and drop unused images - Fit source control tabs and commit rows on phone widths; fix terminal filler color
Rename BaseBranchSelect to BranchCombobox and rebuild it on the shared Combobox with an include filter, configurable remote prefixing, and clearing. Add a useRepoBranches hook and migrate the worktree, integrate, multi-run, and schedule dialogs onto it. Expose id and ARIA listbox/option roles from Combobox, and add bg-background to the form prompt panels.
Remove the in-repo MkDocs site, its deploy workflow, and the tests that asserted its content. Repoint README, CONTRIBUTING, and .env.example links to opencodemanager.app/docs, and update logos, favicon, PWA icons, manifest, and image alt text to the OpenCode Manager branding.
Contributor
|
Important Review skippedToo many files! This PR contains 350 files, which is 200 over the limit of 150. To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configuration
⛔ Files ignored due to path filters (49)
📒 Files selected for processing (350)
You can disable this status message by setting the
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
added 3 commits
October 5, 2026 17:03
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The beta integration branch has accumulated four feature workstreams plus supporting UI, docs and branding changes that are not yet on main: an in-browser terminal, per-repo project actions, session automation (permission modes, session goals, multi-run, internal session tooling), and an expanded git source-control surface (worktrees, stashes, conflicts, identities). main lacks all of these, plus the new hosted documentation site.
Changes
Testing
pnpm typecheckclean.pnpm lint0 errors (41 pre-existing warnings).pnpm test: CLI 279, backend 3125, frontend 2162 - all passing.