Skip to content

Add a top-level omnyshell ide [path] command (v1.57.0) - #114

Merged
gmpassos merged 1 commit into
masterfrom
feat/cli-ide-command
Aug 15, 2026
Merged

gmpassos merged 1 commit into
masterfrom
feat/cli-ide-command

Conversation

@gmpassos

Copy link
Copy Markdown
Contributor

Why

The TUI IDE was only reachable from inside a session, as the :ide local command — so editing a directory meant starting omnyshell local . first and paying for a PTY shell you did not need.

What

omnyshell ide                  # the current directory
omnyshell ide /path/to/project # or an explicit root (`~/…` is expanded)

Rather than duplicate the launch wiring, :ide's AI-provider and command_shield setup moves into a shared runIdeApp() that both entry points call, and the root resolution :ide already had becomes the public resolveLocalIdeRoot(). Passing no input stream lets Terminal own stdin and raw mode itself — what a standalone command needs; the in-session path keeps forwarding the line editor's stdin as before.

:ide remains the way to edit a remote node's filesystem from omnyshell connect; the new command is local-only. Argument errors are reported before the TTY check, so a bad path is diagnosed as a bad path.

resolveLocalIdeRoot, runIdeApp, Workspace and LocalWorkspace are exported from omnyshell_client.dart, so an embedder can launch the IDE the way the CLI does.

Also fixes an analyzer error in IdeApp.run: inputSub is a mutable local captured by the listener closure, so the promotion from inputSub!.pause() was invalidated by the await in the loop.

Release

Ships as 1.57.0 (pubspec.yaml + omnyShellVersion), which also covers the dependency bumps already staged in the manifest (omnyhub ^1.7.0, uuid ^4.6.0). Included as separate noise: a dart format reflow of nine test files.

Verification

  • dart analyze . → no issues; touched files formatted.
  • dart test test/unit → 676 passed (9 skipped, pre-existing).
  • omnyshell --help lists ide; help ide shows usage + examples; --version prints 1.57.0.
  • ide /nopeerror: omnyshell ide: no such directory: /nope (exit 1); ide a btakes at most one directory argument (exit 1).

Not verified: launching the full-screen IDE itself — in the dev sandbox the Dart VM reports stdout.hasTerminal == false even under a real pty, so the TTY guard always trips (same limitation for local and dashboard). Worth a manual omnyshell ide in a real terminal; the regression risk is concentrated in :ide now routing through the shared runIdeApp.

🤖 Generated with Claude Code

The TUI IDE was only reachable from inside a session, as the `:ide` local
command — so editing a directory meant starting `omnyshell local .` first and
paying for a PTY shell you did not need. It is now a command of its own:

    omnyshell ide                  # the current directory
    omnyshell ide /path/to/project # or an explicit root (`~/…` is expanded)

Rather than duplicate the launch wiring, `:ide`'s AI-provider and
`command_shield` setup moves into a shared `runIdeApp()`, which both entry
points call; the root resolution `:ide` already had becomes the public
`resolveLocalIdeRoot()`. Passing no `input` stream lets `Terminal` own stdin
and raw mode itself, which is exactly what a standalone command needs — the
in-session path keeps forwarding the line editor's stdin as before.

`:ide` remains the way to edit a *remote* node's filesystem from
`omnyshell connect`; the new command is local-only. Argument errors are
reported before the TTY check, so a bad path is diagnosed as a bad path.

Also fixes an analyzer error in `IdeApp.run`: `inputSub` is a mutable local
captured by the listener closure, so the promotion from `inputSub!.pause()`
was invalidated by the `await` in the loop.

Ships as 1.57.0, which also covers the dependency bumps already staged in the
manifest (omnyhub ^1.7.0, uuid ^4.6.0), plus a formatter reflow of nine test
files.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Aug 15, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 32.00000% with 17 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
lib/src/application/client/ide_command.dart 29.16% 17 Missing ⚠️

📢 Thoughts on this report? Let us know!

@gmpassos
gmpassos merged commit 23bc8ec into master Aug 15, 2026
5 of 6 checks passed
@gmpassos
gmpassos deleted the feat/cli-ide-command branch August 15, 2026 04:53
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