Skip to content

The empty-state create surface can now launch the claude CLI in a…#217

Merged
inkeep-oss-sync[bot] merged 1 commit into
mainfrom
copybara/sync
Jun 19, 2026
Merged

The empty-state create surface can now launch the claude CLI in a…#217
inkeep-oss-sync[bot] merged 1 commit into
mainfrom
copybara/sync

Conversation

@inkeep-oss-sync

Copy link
Copy Markdown
Contributor

The empty-state create surface can now launch the claude CLI in a docked terminal. Alongside the existing app agents, the agent-picker dropdown now offers a Terminal → Claude option. Selecting it switches the primary button to Create with Claude CLI; clicking Create then opens the docked terminal with the same create-scope prompt built from your typed brief — bringing the new-file empty state to parity with the editor's "Open with AI" menu (desktop only; absent on the web host).

The Open-in-Agent menus ("Open/Edit with AI", the file-tree right-click submenu, and the sidebar empty-space submenu) and the empty-state agent picker are now organized into labeled Desktop (app launches) and Terminal (CLI launch) sections, so the two launch modes are visually distinct. The CLI row's visible label is now "Claude" (its accessible name remains "Claude CLI"). Section labels render only for non-empty sections, and existing launch behavior is unchanged.

…#1985)

* [US-001] Section Open with AI menu into Desktop and Terminal groups

Add 'Desktop' and 'Terminal' section labels to OpenInAgentMenuContent. Installed app launchers sit under Desktop; the docked-terminal launcher sits under Terminal as a 'Claude' row whose accessible name stays 'Claude CLI' (WCAG 2.5.3). The separator renders only when both sections are present.

Export OpenInAgentMenuContent so its DOM test can resolve it. The terminal-row test's SKIP_IN_CI 'render anomaly' was actually a missing export plus the autoOpen prop removed in #1945, not a CI-only issue; restore the export, drop the dead prop, and let the test run in CI. Extend both handoff DOM tests for the section labels and gating, and regenerate the Lingui catalogs for the new strings.

* [US-002] Section Open-in-Agent submenus into Desktop and Terminal groups

Apply the section layout established for the header menu to the two
sibling Open-in-Agent submenus.

- OpenInAgentContextSubmenu (file-tree right-click, DropdownMenuSub*):
  add a Desktop DropdownMenuLabel over installed agents and a Terminal
  label over the CLI row; the separator renders only when both sections
  are present.
- OpenInAgentEmptySpaceSubmenu (sidebar empty space, ContextMenu*): same
  treatment with ContextMenuLabel/ContextMenuSeparator. The
  hide-entire-submenu early-return is rewritten in terms of the section
  flags with identical behavior.

The CLI row visible text changes from 'Claude CLI' to 'Claude'; its
accessible name stays 'Claude CLI' (WCAG 2.5.3), and the existing
data-testids plus No-workspace hint behavior are unchanged. Catalogs
regenerated (only new source-location references; no new strings). DOM
tests extended in both files for both-sections-present, per-section
gating, and the terminal launch path.

* [US-003] Add empty-state Terminal Claude CLI launch row

Bring the empty-state create composer to parity with the Open-in-Agent
menus: the chevron dropdown now groups the agent-selection items under a
Desktop label and, on desktop hosts, adds a Terminal section with a
Claude row that launches the docked-terminal CLI.

- Call useTerminalLaunch() and gate the Terminal section on a non-null
  launcher (absent on the web host). The separator renders only when both
  the Desktop and Terminal sections are present.
- The Claude row builds its handoff input with buildCreateHandoffInput,
  the same builder the app Create button uses, so the CLI launch carries
  the typed brief and scenario with no new prompt logic. It is disabled
  when the input is null (workspace unresolved) and does not write the
  preferred agent, keeping select-default and launch distinct.
- Visible text is 'Claude'; the accessible name stays 'Claude CLI' (WCAG
  2.5.3). Catalogs regenerated (only new source-location references; no
  new strings).

Add CreatePromptComposer.dom.test.tsx covering both-sections rendering,
web-host gating, the launch path carrying the typed brief, the disabled
no-launch case, and that Desktop items still select the default.

* [US-004] Add changeset for empty-state Claude CLI launch + menu sectioning

Release-notes changeset ("@inkeep/open-knowledge": patch) covering the new
empty-state "Terminal -> Claude" CLI launch row (parity with "Open with AI")
and the Desktop/Terminal sectioning of the Open-in-Agent menus and create
composer dropdown.

* docs(prd-7139): spec for empty-state Claude CLI launch + menu sectioning

* fixup! local-review: address findings (pass 1)

* fixup! local-review: address findings (pass 2)

* fix(prd-7139): empty-state Terminal Claude selects CLI create mode instead of launching on click

* fix(prd-7139): host the docked terminal on the empty state so the create CLI launch opens it

* feat(prd-7139): collapse empty state to a downward-gazing mascot while the terminal is open

* fix(prd-7139): use plain section divs in the Open with AI popover (a11y lint)

* fix(prd-7139): fieldset/legend menu sections, +CSS size budget, composer test coverage

* fix(prd-7139): match docked-terminal kill-strip background to the xterm canvas

---------

GitOrigin-RevId: 1da14ce3ee9ab3b08967c31b430c8d70efc62c9b

@inkeep-internal-ci inkeep-internal-ci Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval from agents-private public-mirror-sync (run: https://github.com/inkeep/agents-private/actions/runs/27803998423). Source of truth is the monorepo; direct edits on inkeep/open-knowledge are overwritten on next sync.

@inkeep-oss-sync inkeep-oss-sync Bot merged commit 1b59b16 into main Jun 19, 2026
@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@inkeep-oss-sync inkeep-oss-sync Bot deleted the copybara/sync branch June 19, 2026 03:45
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.

2 participants