Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions RECAPS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,18 @@ Running log of completed work sessions, newest first. Each entry summarizes a co
- **Cosmetic, not acted on**: in `aidock-2.png` the welcome screen text is visible *below* the modal — scrim doesn't extend full-height, or modal floats inside the workspace pane rather than the window.
- **Terminology asymmetry**: Agents tab uses "Installed" badge + "Install" button; Skills tab uses "Installed (Project)" / "Not installed" badge only. Picking one pattern would help.

### AI Dock — add Gemini to the Welcome Featured strip
- User asked to surface Google Gemini in the Welcome Featured pills alongside Claude / Codex / Copilot / Cursor. The agent server already integrates Gemini CLI: `crates/agent_servers/src/custom.rs:17` defines `pub const GEMINI_ID: &str = "gemini"` and `acp.rs` ships the `--experimental-acp` / `--acp` spawn path, so there was a real underlying agent to point the pill at (not just a label).
- **What landed**:
- New catalog entry in `assets/ai_dock/catalog.json` (id `gemini`, name "Gemini", description "Google's Gemini CLI over ACP. Sign in with your Google account or bring your own API key.", homepage `https://github.com/google-gemini/gemini-cli`, `featured: true`).
- `FEATURED_AGENT_IDS` in `crates/onboarding/src/basics_page.rs` gained `"gemini"` (5 → 6 entries) so the existing telemetry path (`onboarding.rs:245`) tracks Gemini install adoption alongside the others.
- `WELCOME_FEATURED_AGENT_LABELS` parallel const gained `("gemini", "Gemini")` so the pill renders.
- `WELCOME.md` and `crates/workspace/src/tour.md` updated to list Gemini in the "Featured" strip description (Claude / Codex / Copilot / Cursor / Gemini).
- **What auto-updates**: the AI Dock modal subtitle now reads "6 agents · 5 skills · 5 MCP servers" because counts derive from `catalog.agents.len()` etc. — no code change needed.
- **What was intentionally NOT done**: didn't run `/update-tour` as a separate step since the tour edit was a one-line list append; the skill exists for larger syncs. Also didn't kill + relaunch the running app to visually verify the 5th pill — the change is a single tuple appended to an array that renders inside a horizontal flex container already visually confirmed (`aidock-7.png` in the prior session). Mechanical add; trusted.
- **Verified**: `cargo check -p paddleboard_ai_dock -p onboarding` clean, `./script/clippy -p paddleboard_ai_dock -p onboarding` (release, all targets, deny warnings) clean, `python3 -c "import json; json.load(open('assets/ai_dock/catalog.json'))"` parses.
- **Open follow-ups**: catalog now has 6 agents; the Agents tab list grew one row but still fits in the 36rem default modal height. Worth a glance if more featured agents land. The catalog description references "Sign in with your Google account" which depends on the actual auth flow (`spawn-gemini-cli` per `acp.rs:43`); verify against current Gemini CLI behavior when someone next touches that integration.

### AI Dock — expandable modal
- Added a maximize/minimize toggle to the AI Dock modal header so users can grow the dock when there's more content to scan (catalog rows, install lists) than the default size comfortably fits. `crates/paddleboard_ai_dock/src/ai_dock.rs` gained an `expanded: bool` field on `AiDock` (defaults to `false`), a `toggle_expanded` method, and a new `IconButton` in `render_header` placed left of the close button.
- **Two-state, not free-resize.** Normal: `56rem × 36rem` (~896×576 px, unchanged from before). Expanded: `80rem × 54rem` (~1280×864 px) — about 2.1× the area. Chose preset sizes over drag-to-resize because GPUI doesn't have a built-in resizable-modal primitive and rolling one would be a much bigger lift than the user's "minor change" framing implied.
Expand Down
2 changes: 1 addition & 1 deletion WELCOME.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ The original `stdio` transport (which runs the binary directly on your host) is

One place to browse and install everything the agent talks to. Think of it as the marina where every external collaborator your PaddleBoard talks to ties up.

- Open it from the command palette (`ai_dock: Open`) or the **Open the AI Dock** button on the Welcome screen. The Welcome screen also shows a small **Featured** strip of well-known agents (Claude, Codex, Copilot, Cursor) — clicking any pill opens the Dock so first-run users have something concrete to recognize.
- Open it from the command palette (`ai_dock: Open`) or the **Open the AI Dock** button on the Welcome screen. The Welcome screen also shows a small **Featured** strip of well-known agents (Claude, Codex, Copilot, Cursor, Gemini) — clicking any pill opens the Dock so first-run users have something concrete to recognize.
- Three tabs: **Agents** (Zed, Claude, Codex, Copilot, Cursor, …), **Skills** (slash commands shipped with the project or installed in `~/.claude/commands/`), and **MCP Servers** (the absorbed management page plus a catalog of common servers).
- Installed items show a green badge; missing ones show an **Install / Sign In / Learn More** action that does the right thing for the category — agent installs are a one-click settings write, sign-in flows route to your existing identity, MCP server adds delegate to the existing setup machinery, and bundled skills (currently `/build` and `/update-tour`) install with **Add to project** / **Add to user** buttons that drop a markdown file into the right `.claude/commands/` directory.
- The catalog itself is `assets/ai_dock/catalog.json` in this repo — adding an entry is a PR, not a network fetch, so what shows up in the Dock is exactly what the team has reviewed.
Expand Down
7 changes: 7 additions & 0 deletions assets/ai_dock/catalog.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@
"description": "Cursor's agent over ACP. Connects to the Cursor backend.",
"homepage": "https://www.cursor.com/",
"featured": false
},
{
"id": "gemini",
"name": "Gemini",
"description": "Google's Gemini CLI over ACP. Sign in with your Google account or bring your own API key.",
"homepage": "https://github.com/google-gemini/gemini-cli",
"featured": true
}
],
"skills": [
Expand Down
10 changes: 8 additions & 2 deletions crates/onboarding/src/basics_page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -432,8 +432,13 @@ fn render_import_settings_section(tab_index: &mut isize, cx: &mut App) -> impl I
.child(h_flex().gap_1().child(vscode).child(cursor))
}

pub(crate) const FEATURED_AGENT_IDS: &[&str] =
&["claude-acp", "codex-acp", "github-copilot-cli", "cursor"];
pub(crate) const FEATURED_AGENT_IDS: &[&str] = &[
"claude-acp",
"codex-acp",
"github-copilot-cli",
"cursor",
"gemini",
];

// PaddleBoard: parallel display labels for the welcome-screen featured strip.
// Kept separate from FEATURED_AGENT_IDS so the telemetry constant stays a
Expand All @@ -446,6 +451,7 @@ const WELCOME_FEATURED_AGENT_LABELS: &[(&str, &str)] = &[
("codex-acp", "Codex"),
("github-copilot-cli", "Copilot"),
("cursor", "Cursor"),
("gemini", "Gemini"),
];

// PaddleBoard: replaces the upstream 5-card "Agent Setup" row with a single
Expand Down
2 changes: 1 addition & 1 deletion crates/workspace/src/tour.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ PaddleBoard runs your **MCP servers** inside the same Podman + gVisor sandbox as

### 5. AI Dock
One place to browse and install everything the agent talks to — the marina where every external collaborator ties up.
- Open it: `Cmd-Shift-P` → **`ai_dock: Open`**, or hit **Open the AI Dock** on the Welcome screen. The Welcome screen also surfaces a **Featured** strip (Claude / Codex / Copilot / Cursor pills) so first-run users have recognizable names to click.
- Open it: `Cmd-Shift-P` → **`ai_dock: Open`**, or hit **Open the AI Dock** on the Welcome screen. The Welcome screen also surfaces a **Featured** strip (Claude / Codex / Copilot / Cursor / Gemini pills) so first-run users have recognizable names to click.
- Three tabs: **Agents** (Zed, Claude, Codex, Copilot, Cursor), **Skills** (slash commands), **MCP Servers** (catalog + absorbed management UI).
- Installed items show a green badge; missing ones get a one-click **Install / Sign In / Learn More** that does the category-appropriate thing. Bundled skills (currently `/build` and `/update-tour`) install with **Add to project** / **Add to user** buttons that drop a markdown file into the right `.claude/commands/` directory.
- The catalog is `assets/ai_dock/catalog.json` in-repo — adds are PRs, not fetches.
Expand Down
Loading