Skip to content

feat(cortex-settings): AI section with /orchestrate Claude/Codex toggle#1

Merged
lawsmd merged 1 commit into
mainfrom
claude/cortex-orchestrate-claude-api-kjqkm
May 20, 2026
Merged

feat(cortex-settings): AI section with /orchestrate Claude/Codex toggle#1
lawsmd merged 1 commit into
mainfrom
claude/cortex-orchestrate-claude-api-kjqkm

Conversation

@lawsmd
Copy link
Copy Markdown
Owner

@lawsmd lawsmd commented May 20, 2026

Adds a new "AI" section to Cortex Settings exposing the single toggle
"Allow Claude Code / Codex as orchestrate child agents", which is the
user-facing surface for FeatureFlag::LocalClaudeCodexChildHarnesses.

Upstream gates that flag for local /orchestrate children; on this fork
the whole point is to route them through the user's local Claude Code
login, so the new setting defaults to on and hydrates the runtime flag
at startup and on every toggle. The two existing gate sites
(local_child_harnesses.rs, orchestration_controls.rs) react live via
their existing is_enabled() checks — no restart needed.

Adds a new "AI" section to Cortex Settings exposing the single toggle
"Allow Claude Code / Codex as orchestrate child agents", which is the
user-facing surface for FeatureFlag::LocalClaudeCodexChildHarnesses.

Upstream gates that flag for local /orchestrate children; on this fork
the whole point is to route them through the user's local Claude Code
login, so the new setting defaults to on and hydrates the runtime flag
at startup and on every toggle. The two existing gate sites
(local_child_harnesses.rs, orchestration_controls.rs) react live via
their existing is_enabled() checks — no restart needed.
@lawsmd lawsmd merged commit 694aa36 into main May 20, 2026
3 checks passed
lawsmd pushed a commit that referenced this pull request May 22, 2026
…v#9600)

Closes warpdotdev#9196.

### Description

Two `show_code_review_button` gates were dropping panel-open requests on
the floor when the user had hidden the toolbar button:

**1. Data-path gate at `Workspace::setup_code_review_panel`
(`view.rs:7982`)**

```rust
if !*TabSettings::as_ref(ctx).show_code_review_button {
    return;
}
```

`update_right_panel_open_state` calls into this whenever the right panel
is being opened (chip click, `Shift+Cmd+=` keybinding, etc.), so the
early return silently swallowed every explicit user action.

**2. Render-path gate at `Workspace::render_config_panel` and
`render_config_panel_maximized` (`view.rs:18981` / `19040`)**

```rust
if !item.is_available(app) || !item.is_panel() { return None; }
…
if !HeaderToolbarItemKind::CodeReview.is_available(app) { return None; }
```

`HeaderToolbarItemKind::is_available` for `CodeReview` returns
`*TabSettings::as_ref(app).show_code_review_button.value()`
(`header_toolbar_item.rs:89`). So even after fix #1 set
`pane_group.right_panel_open = true` and `setup_code_review_panel` ran,
the next render frame saw `is_available() == false` and returned `None`
— the `right_panel_view` was never added to the layout.

This second gate is what @moirahuang flagged when their local repro
still showed nothing happening after the first fix landed. The data was
correct; the panel was just never composed into the UI.

### Fix

1. **Drop the early return at `setup_code_review_panel`.** The setting
is meant to gate only the toolbar button's visibility (already enforced
correctly by `header_toolbar_item.rs::is_available`, which feeds
`render_header_toolbar_button` at `view.rs:17276`).
2. **Switch panel-render call sites from `is_available` →
`is_supported`.** `is_available`'s own doc-comment says it's
specifically *"Whether this item should be shown in the **toolbar** —
checks both `is_supported` and user show/hide preferences."* Using it to
gate panel rendering conflates two unrelated concerns. Panel rendering
should only care about whether the feature is compiled in
(`is_supported`), not whether the user has hidden the toolbar button.

For `CodeReview`, `is_supported` is `cfg!(feature = "local_fs")`. For
the other variants in the same match (`TabsPanel`, `ToolsPanel`),
`is_available` already equals `is_supported` (default `_ => true` arm in
the inner match), so behaviour is unchanged. `AgentManagement` and
`NotificationsMailbox` return `None` unconditionally inside
`render_config_panel`, so the change is moot for them too.

### Caller audit for `setup_code_review_panel`

5 call sites in `view.rs`:

1. `view.rs:3681` — `TransferredTab` flow, only runs when the source tab
already had `right_panel_open == true`.
2. `view.rs:8136` — `update_right_panel_open_state` with `should_open ==
true`. **The diff-button path** that warpdotdev#9196 is about.
3. `view.rs:13372` — `PaneFocused` event, gated on `right_panel_open`
already true.
4. `view.rs:13490` — `RepoChanged` event, gated on `right_panel_open`
already true.
5. `view.rs:14458` — session env update, gated on `right_panel_open`
already true.

None of these need the `show_code_review_button` gate — they're either
explicit user actions or gated on `right_panel_open` already being open.
The toolbar button toggle continues to do its job at
`render_header_toolbar_button` independently.

### Testing

Reproduced @moirahuang's test locally on macOS 26.4.1 (Apple Silicon)
against `WarpOss.app` built from this branch:

1. Settings → "Show code review button" → **OFF**
2. `echo "x" >> README.md` inside a git repo
3. Click the diff stats chip on the prompt (`+1 -0`)

**Result:** Code review panel opens on the right showing the diff, while
the toolbar button stays hidden — exactly the expected behaviour from
issue warpdotdev#9196. Inverse case (toggle ON) also verified: toolbar button
visible, panel still works the same.

- `cargo fmt -p warp -- --check` passes.
- `cargo nextest` skipped locally — Metal toolchain unavailable on my
machine, mirroring warpdotdev#9277. CI will exercise the change.

### Server API

No server changes.

### Agent Mode

Not applicable.

### Changelog Entries

`CHANGELOG-BUG-FIX`: The diff button on the terminal prompt now opens
the code review panel even when the toolbar's "Show code review button"
toggle is disabled (regression from a recent release).

Co-authored-by: anshul-garg27 <13553550+anshul-garg27@users.noreply.github.com>
@lawsmd lawsmd deleted the claude/cortex-orchestrate-claude-api-kjqkm branch May 22, 2026 01:54
lawsmd added a commit that referenced this pull request May 22, 2026
Customize Warp's authentication / login surfaces (three canonical views
+ the 7-slide agent onboarding deck) to match Cortex's aesthetic.
Mapped in docs/investigations/auth-onboarding-three-views.md.

Auth view changes:

- View #1 (IntroSlide, `crates/onboarding/src/slides/intro_slide.rs`):
  swap CORTEX ASCII to `figlet ansi_shadow`, brain glyph on top (35%
  smaller at 146pt), centered title/brain column, outline-pink CTA
  buttons that invert on hover (`CortexPinkOutline` button theme),
  "Powered by Warp" credit under the title, Cortex version chip in
  the top-left corner.

- View warpdotdev#2 (LoginSlideView, `app/src/auth/login_slide.rs`): all three
  sub-screens (SelectAuthPathway, BrowserOpen, PrivacySettings)
  routed through Cortex-specific centered single-column helpers;
  upstream two-column `layout::static_left + render_visual` path
  retired.

- View warpdotdev#3 (AuthView / AuthViewBody, `app/src/auth/auth_view_body.rs`):
  Initial-variant reskin with horizontal naked-pink-brain +
  Welcome-to/CORTEX-figlet header, centered "Powered by Warp" credit,
  and three vertically-stacked pink-outline CTA buttons (Sign up /
  Sign in / Skip for now) with hover-invert behavior. Texts rephrased
  to clarify these are Warp account actions ("Sign up for a Warp
  account" rather than just "Sign up"). Non-Initial
  Warp-Drive-share-boundary variants stay upstream-shaped.

Agent onboarding deck (6 slides — Intention, Customize, Agent,
ThirdParty, Project, ThemePicker): each slide's render method now
bypasses `layout::static_left` so the right-side Warp UI screenshot
disappears; content renders centered single-column.

Foundation:

- Removed `SKIP_WARP_ACCOUNT_LOGIN` const and dropped
  `skip_firebase_anonymous_user` from `app/Cargo.toml` default
  features so the login surface fires as the default product
  experience rather than being bypassed by the personal-use posture.

- New `crates/warp_core/src/cortex.rs` module hosts shared Cortex
  branding constants (`BRAIN_PINK`, `CORTEX_ASCII`). `Icon` enum
  gained a `WarpLogoWithLightTitle` variant mapped to the existing
  warp-logo-with-light-title.svg asset for the "Powered by Warp"
  wordmark rendering.

Dev launcher (`scripts/launch-cortex-dev.bat`) defaults to clearing
`HasCompletedOnboarding` on every launch so iteration on Views #1 / warpdotdev#2
surfaces them reliably; commented inline with the swap to flip into
AuthView (View warpdotdev#3) iteration mode.

Upstream-shaped helpers preserved with \`#[allow(dead_code)]\` for
merge clarity wherever the Cortex path supersedes them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
lawsmd added a commit that referenced this pull request May 22, 2026
…i-kjqkm

feat(cortex-settings): AI section with /orchestrate Claude/Codex toggle
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