Roadmap.

What comes next, what isn't there yet and what works differently than you'd expect — said plainly. 132 things are done; the changelog has them by release. Numbers like D45 are entries in the decision log.

Next (rough priority)

  1. Own extension registry (GitHub repo with index.json, PR to publish) for extensions Zed's catalog can't carry (languages, agents, code plugins)
  2. Code plugins in TypeScript via JavaScriptCore, same package format
  3. Developer ID signing and notarization (the script is ready for it, D129)

Not implemented yet

Everything below is known to be missing; nothing here is in progress.

Beyond an editor (non-goals for now, product.md)

  • No debugger (no breakpoints, no Debug Adapter Protocol)
  • No refactoring tools of Orbit's own: refactorings are what the language server offers as code actions and rename

Language features (LSP)

  • An inline peek editor for references (Peek References is a jump list, D111); no outline panel on purpose (D82)
  • Inlay hints can't be clicked, double-clicked to insert or hovered for their tooltip
  • Other companions (Stylelint, Biome's server, Prettier's lint); companions and project roots are picked per file when it opens (a dependency or lockfile added later needs Restart Language Servers)
  • Diagnostics for the whole project (workspace diagnostics): Problems lists open files, the agent's changed files (D75), the files using them (D198) and what servers push on their own; nothing else is checked
  • Imported servers (D65) aren't tested one by one (only Prisma's install runs in make test-language-installs); 93 of nvim-lspconfig's need code and are missing (Angular, Flow, Julia, PowerShell, Roslyn…); choosing another server for a language than the ranked one needs it installed and the first one not; RubyGems / NuGet / opam packages can't be installed (D57)

Formatting

  • Format Selection (D140) formats the whole file and keeps only the selection's changes
  • Formatter chains (D203) come only from settings; detection picks one tool, ESLint only when nothing else formats the file
  • Presets for languages Orbit has no server for (ktfmt / ktlint, google-java-format, mix format, dart format, CSharpier, nixfmt, sqlfluff); they work only as custom commands in .orbit/settings.json
  • Global formatter installs for Node tools (only the repo's node_modules copy is used, on purpose); Pint and PHP CS Fixer don't use their cache
  • Rules can't be edited in Settings, only in the JSON file (simple options can, D183); the Formatting section refreshes when Settings opens, not when the files change
  • .orbit/settings.json (D108) has no font, indentation, terminal or per-agent model options; keys are checked by the JSON server's schema (D182), not by Orbit itself

Editor

  • Combined injections (PHP's HTML as one document, injection.combined): each piece is parsed on its own; embedded languages in read-only views (diffs, agent transcripts) aren't colored
  • Multiple carets (D202): a snippet accepted at several carets has no Tab walk; linked editing with several carets isn't linked

Git and terminal

  • A three-pane merge editor (conflicts are resolved inline, D134)

Known limitations

What works differently than you'd expect today. Things built but not yet tried by hand are in manual-checks.md.

Agents and review

  • Claude Code needs the standalone claude CLI logged in (claude → /login).
  • Merging an agent's edit into unsaved edits makes those edits count as agent changes in the inline review (its baseline is the disk before the turn).
  • An agent's unreviewed changes in a file moved or renamed in the explorer lose their inline review. A review note follows its code only while the code is unchanged.
  • Isolated sessions: a project on a non-APFS volume gets a full (slow) copy; Apply is all-or-nothing per file; undoing an applied change in the project counts it as not applied again. Restore points aren't available there.
  • Listing an agent's conversations spawns that agent once per folder per launch. Agents installed while Orbit runs find Node.js / uv only on the PATH resolved at launch.
  • Usage: Codex reports its subagents' context without saying so, so the ring can briefly show a subagent's; Claude's limits arrive only with its events (one window each), Codex's are as fresh as its last logged turn.
  • The transcript's rows are lazy, so scrolling up a long chat can shift as rows come in. Turn summaries aren't restored with a reloaded conversation.
  • No per-agent status of which MCP servers connected.

Language features

  • sourcekit-lsp understands SwiftPM packages fully; Xcode projects get single-file results only (no build server).
  • Squiggles move with edits until the server republishes. A server that fails stays off until Restart Language Servers or reopening the folder. Go to Symbol in Project only asks servers already running.
  • Renaming a file in the explorer doesn't ask servers to update imports (workspace/willRenameFiles).
  • One server per file type. RubyGems / NuGet / opam packages can't be installed (Ruby is found on PATH only).
  • Vue: .ts files importing components don't see their props (their TypeScript server has no Vue plugin; a TypeScript 7 project can't load one). sqlls crashes on start, so .sql gets sqls first.
  • Grammars compile on first open and need Xcode's command line tools and network; a failed build isn't retried until restart.
  • The Swift cross-file rename in make test-languages fails now and then (sourcekit-lsp's index not ready yet); it passes on a rerun.

Editor and workspace

  • The split editor has two sides, side by side. Tabs can't be dragged out of the window; dragging in the explorer moves one item.
  • Undoing a new file in the explorer drops its unsaved edits.
  • Location history: moving a tab between sides records passing through the tab left behind; no mouse back / forward buttons. Open Quickly doesn't open preview tabs.
  • Markdown preview: no side-by-side view; preview tabs aren't restored on launch; code colors follow a theme change only after the next edit.
  • Replace in files: the panel's Undo puts back the last replace only and skips files edited since; ⌘Z doesn't reach it.
  • Shortcuts: function keys and keys without ⌘⌃⌥ can't be recorded; a command has one user key (Move Line keeps ⌥↑ beside a reassigned menu key).
  • No keyboard focus for sidebar panels other than the explorer; focused native lists outside it select in the system accent.
  • Cloning shows only a spinner and has no sign-in prompt (a private repository needs git credentials already set up).
  • Downloaded packages that run programs get no consent prompt yet; nothing downloadable brings one until Orbit has its own catalog.

Terminal, tasks and browser

  • The terminal panel hides when the last shell exits.
  • Problem matchers cover tsc, clang / Swift / Go, Rust and ESLint only (no Python tracebacks, Vite / esbuild boxes, Jest); a fixed error stays listed until the task reruns.
  • The browser has no tabs of its own, no find in page and no device sizes.