Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

release: v0.3.0#9

Merged
code-crusher merged 4 commits into
mainMatterAIOrg/OrbCode:mainfrom
release/v0.3.0MatterAIOrg/OrbCode:release/v0.3.0Copy head branch name to clipboard
Jun 23, 2026
Merged

release: v0.3.0#9
code-crusher merged 4 commits into
mainMatterAIOrg/OrbCode:mainfrom
release/v0.3.0MatterAIOrg/OrbCode:release/v0.3.0Copy head branch name to clipboard

Conversation

@code-crusher

@code-crusher code-crusher commented Jun 23, 2026

Copy link
Copy Markdown
Member

Branches release/v0.2.4 -> release/v0.3.0 to match the version bump in package.json. Bumps the minor version for the new MCP migration feature.

What's in this release

Added

  • orbcode mcp migrate / /migrate slash command — scan Claude Code (~/.claude/settings.json, ~/.claude.json root + per-project layers) and Claude Desktop (claude_desktop_config.json) for MCP server configs and copy them into ~/.orbcode/settings.json (user scope). TUI shows a combined checklist; CLI prints a preview by default and only writes with --all. Name conflicts are silently skipped. Codex support (TOML) is intentionally deferred.
  • Delete action in the /mcp picker — permanent, irreversible removal of a server from its config file (any scope) with an explicit y/n confirmation. Distinct from Disable, which leaves the entry in place.
  • Styled OAuth callback page — the local /callback page now matches the matterai.so look (dark #0d1117 background, centered card, colored icon, brand footer) for success, error, and not-found paths.

Commits

  • 032d585 feat(mcp): migrate servers from Claude Code / Claude Desktop
  • 4613a0f feat(mcp): add delete action to /mcp picker
  • dd55cba feat(mcp): style OAuth callback page
  • bd2799f chore(release): finalize v0.3.0 changelog

matterai-app Bot added 3 commits June 24, 2026 00:30
Add an `orbcode mcp migrate` subcommand and a `/migrate` slash command
that scan well-known paths for MCP server configs and copy them into
`~/.orbcode/settings.json` (user scope).

Detected sources:
  - `~/.claude/settings.json` (Claude Code, user scope)
  - `~/.claude.json` -> root `mcpServers` (Claude Code, user scope;
    the most common location — `claude mcp add -s user …` writes here)
  - `~/.claude.json` -> `projects.<cwd>.mcpServers` (Claude Code,
    this project)
  - `claude_desktop_config.json` (Claude Desktop — platform-specific)

When the same server name appears in both layers of `~/.claude.json`,
the root entry is shown and the project-layer duplicate is hidden,
matching Claude's own per-project override precedence.

The TUI shows a combined checklist across all sources (space toggle,
enter confirm, esc cancel) and re-builds the live McpManager after
apply so `/mcp` works without sending a message first. The CLI prints
a preview by default and only writes with `--all`; `--dry-run` is a
read-only preview even with `--all`. Servers whose name already exists
in the destination are silently skipped and reported in the summary.
Codex support (TOML) is intentionally deferred.

Also wires a shared `rebuildMcpManager` helper in `App.tsx` that the
migration flow and the forthcoming `/mcp` delete action both use to
tear down + recreate the live manager and drop the in-memory agent so
the next turn rebuilds it against the new tool list.

Bumps `package.json` to 0.3.0 (new feature, semver-minor). Codex
support is explicitly out of scope for this release.
Add a 'Delete' action to the `/mcp` server picker. The action is always
shown last in the action list (red, to distinguish it from the everyday
enable/disable/reconnect toggles) and prompts for an explicit y/n
confirmation before doing anything.

Behavior: `McpManager.removeServer` disconnects the live connection,
drops the server from the in-memory enabled/disabled/pending-approval
sets, and removes the entry from the on-disk config (whatever scope it
lives in — project/user/local). The picker then re-persists the
cleaned enabled/disabled lists via the parent's `onDeleted` callback
and rebuilds the live manager so `/mcp` reflects the change
immediately, without requiring the user to send a message first.

Unlike Disable, Delete is irreversible: the config entry is gone and
the server has to be re-added with `orbcode mcp add …`. The
confirmation prompt shows the file that will be modified (looked up
from `manager.getConfigPath`) so the user doesn't have to remember
the scope rules.
Replace the plain-text OAuth callback HTML with a styled page that
matches the matterai.so look: dark background (`#0d1117`), centered
card, a colored circular icon (green for success, red for error/not
found), and a small 'OrbCode CLI · powered by Axon' brand footer.

Three states are rendered through a single `callbackPage(kind, detail)`
helper:
  - `success` — green check, 'You can close this tab and return to
    OrbCode.'
  - `error` — red X, with `error_description` from the OAuth provider
    shown as the detail (falling back to the `error` code itself).
  - `not-found` — returned for any callback path other than
    `/callback`, with a clear 'This page was not found.' message.

This was previously a single `<h1>Authorized</h1>` string for success
and equally spartan strings for the error / missing-code / 404 cases.
The 404 path is now HTML instead of plain text so the browser renders
the same styled card.
@matterai-app

matterai-app Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Code Quality new feature

Summary By MatterAI MatterAI logo

🔄 What Changed

Introduced a comprehensive MCP migration system to import server configurations from Claude Code and Claude Desktop. Added a permanent "Delete" action for MCP servers in both the TUI and CLI. Updated the OAuth callback to a professionally styled HTML page and added logic to hot-reload the MCP manager after configuration changes.

🔍 Impact of the Change

Significantly lowers the barrier for users migrating from Claude's ecosystem to OrbCode. Enhances configuration management by allowing users to prune unused servers directly from the UI, ensuring a cleaner and more manageable toolset. The hot-reloading logic improves user experience by applying changes without requiring a manual restart.

📁 Total Files Changed

Click to Expand
File ChangeLog
Version Bump package.json Incremented version to 0.3.0.
Migrate Command src/commands/mcp.ts Added migrate subcommand and CLI handler for importing servers.
Migration Logic src/commands/migrate.ts New module for discovering and parsing external MCP configs from Claude.
CLI Help src/index.tsx Added migration command to the global help output.
OAuth UI src/mcp/auth.ts Implemented a styled HTML response for OAuth loopback callbacks.
Server Lifecycle src/mcp/manager.ts Added removeServer to handle disk and memory cleanup of MCP servers.
TUI Integration src/ui/App.tsx Integrated /migrate command and implemented MCP manager hot-reloading.
Migration UI src/ui/components/McpMigrationPicker.tsx New interactive checklist component for selecting servers to import.
Picker Update src/ui/components/McpPicker.tsx Added "Delete" action with a destructive confirmation dialog.

🧪 Test Added/Recommended

Recommended

  • Unit tests for discoverSources in migrate.ts using mocked file systems to verify cross-platform path resolution.
  • Integration tests for the rebuildMcpManager flow to ensure no memory leaks or dangling connections during hot-reloads.
  • Validation tests for the normalizeExternalServer function with malformed or edge-case JSON inputs.

🔒Security Vulnerabilities

  • No critical vulnerabilities detected. File writes for settings use 0o600 permissions to protect sensitive configuration data. 🛡️

⏳ Estimated code review effort

HIGH (~35 minutes)

Tip

Quality Recommendations

  1. Add unit tests for src/commands/migrate.ts to validate path resolution across macOS, Windows, and Linux.

  2. Implement a size limit or timeout when reading external JSON files to prevent resource exhaustion from massive config files.

  3. Sanitize the detail parameter in the callbackPage function in src/mcp/auth.ts to prevent potential HTML injection if sourced from untrusted input.

  4. Consider adding a 'Select All' toggle in the McpMigrationPicker UI for better UX with many servers.

♫ Tanka Poem

Data flows like a stream, 🌊
Claude's configs find a new home, 🏠
Logic is refined, 🧪
Old servers fade to the past, 🗑️
Version three takes flight. 🚀

Sequence Diagram

sequenceDiagram
    participant U as User
    participant A as App UI
    participant M as Migrate Logic
    participant FS as File System
    
    U->>A: Enter /migrate command
    A->>M: listMigrationEntries()
    M->>FS: Read ~/.claude.json / Claude Desktop Config
    FS-->>M: Raw Config Data
    M-->>A: MigrationEntry[]
    A->>U: Display Migration Checklist
    U->>A: Select Servers & Confirm
    A->>M: applyMigration(selectedEntries)
    M->>FS: Write to ~/.orbcode/settings.json (mode 0o600)
    FS-->>M: Success
    M-->>A: MigrationResult
    A->>A: rebuildMcpManager()
    Note over A: Disconnects old servers & reloads config
    A->>U: Show Migration Success Message
Loading

Move the three new entries (MCP migration, MCP picker delete, OAuth
callback styling) from `[Unreleased]` into a dated `## [0.3.0] -
2026-06-23` section, matching the project's Keep a Changelog layout.
Leaves an empty `[Unreleased]` block above it for the next cycle.
@matterai-app

matterai-app Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Note

PR Review Skipped

PR review skipped as no relevant changes found due to large diff hunk OR part of a non-reviewable file.

📄Files skipped in review
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
  • undefined: undefined
💡Tips to use MatterAI

Command List

  • /matter summary: Generate AI Summary for the PR
  • /matter review: Generate AI Reviews for the latest commit in the PR
  • /matter review-full: Generate AI Reviews for the complete PR
  • /matter release-notes: Generate AI release-notes for the PR
  • /matter : Chat with your PR with MatterAI Agent
  • /matter remember : Generate AI memories for the PR
  • /matter explain: Get an explanation of the PR
  • /matter help: Show the list of available commands and documentation
  • Need help? Join our Discord server: https://discord.gg/fJU5DvanU3

@code-crusher code-crusher merged commit f4049d3 into main Jun 23, 2026
1 check passed
@code-crusher code-crusher deleted the release/v0.3.0 branch June 23, 2026 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Morty Proxy This is a proxified and sanitized view of the page, visit original site.