Files
GitManager/components/repo-menu/repo-menu.md
T
TBNilles 68b6c3a3f8 Slice 11: branch-picker submenu in the right-click menu
Replace the Switch branch text prompt with a flyout submenu populated from GET /api/repo (the repo's branches; current one disabled); clicking a branch checks it out. Flips leftward near the viewport edge. New branch still prompts. Verified live: submenu lists branches and switches.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-20 17:44:55 -04:00

40 lines
2.2 KiB
Markdown

# repo-menu
## Intent
The right-click command menu (AGENT.md §6) — the app's reason for being: run git
in **plain language** ("Get latest", "Publish", "Save my work…") without a
terminal. A self-contained overlay control (§1.1) that any list can summon via an
event. Safe commands run on click; the destructive one confirms first (§1.4).
## Public surface
- **Tag:** `<repo-menu>` (place once, near the end of the page).
- **Listens:** `repo:contextmenu` on `document``detail: { repo, x, y }`
(dispatched by `<repo-list>` on right-click). Shows the menu at (x, y).
- **Commands → endpoints:**
- Get latest / Publish / Check for updates / Save my work… / New branch… /
Discard all changes… → `POST /api/repo/git {path, op, message?, branch?}`
(op: pull/push/fetch/commit/create-branch/checkout/discard). "Save my work…"
prompts for a message; "New branch…" prompts for a name; "Discard all
changes…" confirms (destructive).
- **Switch branch ▸** — a flyout submenu populated from `GET /api/repo?path=`
(the repo's branches; current one disabled). Clicking a branch → checkout.
- Set as active project → `POST /api/active-project`.
- Ask Claude to switch here → `POST /api/switch` (the handoff request).
- Copy path → clipboard.
- Dismisses on outside click, Esc, or scroll.
## History
- 2026-09-20: created — slice 6; plain-language git commands + coordination
actions, backed by the shared service layer (same ops Claude gets via MCP).
- 2026-09-20: added "Switch branch…" (checkout) and "New branch…" (create-branch),
both prompting for the branch name (slice 9).
- 2026-09-20: "Switch branch" is now a flyout submenu listing the repo's branches
(fetched from /api/repo), not a text prompt (slice 11). "New branch…" still prompts.
## Notes / gotchas
- Results aren't shown inline; they appear in `<activity-feed>` (each op records a
`git-*` event with ok/failed), and errors raise a browser alert.
- Network ops (pull/push/fetch) need git credentials reachable from the server;
inside Docker that means a mounted SSH agent / credential helper (§11) — until
then they'll report an auth error. commit/discard are local and always work.