# 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:** `` (place once, near the end of the page). - **Listens:** `repo:contextmenu` on `document` — `detail: { repo, x, y }` (dispatched by `` on right-click). Shows the menu at (x, y). - **Commands → endpoints:** - Get latest / Publish / Check for updates / Save my work… / Switch branch… / New branch… / Discard all changes… → `POST /api/repo/git {path, op, message?, branch?}` (op: pull/push/fetch/commit/checkout/create-branch/ discard). "Save my work…" prompts for a message; "Switch branch…"/"New branch…" prompt for the branch; "Discard all changes…" confirms (destructive). - 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). ## Notes / gotchas - Results aren't shown inline; they appear in `` (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.