Files
TBNilles 6ef1c195e3 Slice 6: right-click command menu + git write actions
git boundary: Pull/Push/Commit/DiscardAll (discard is 1.4-destructive). Scanner.RefreshRepo re-scans one repo after a mutation. Service GitFetch/GitPull/GitPush/GitCommit/GitDiscard record a git-* activity event and refresh on success; service.New takes a refresh hook. HTTP POST /api/repo/git. New <repo-menu> overlay with plain-language commands (Get latest/Publish/Check for updates/Save my work/Set active/Ask Claude to switch/Copy path/Discard all changes), summoned by repo-list's repo:contextmenu. Added service test for commit/discard on a temp repo. Verified the menu live for safe commands.

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

122 lines
5.1 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>GitManager — Help</title>
<link rel="stylesheet" href="/static/app.css">
<style>
header {
display: flex; align-items: baseline; gap: 16px;
padding: 12px 20px; background: var(--surface-1);
border-bottom: 1px solid var(--border);
}
header h1 { margin: 0; font-size: 16px; }
header nav { margin-left: auto; }
main { max-width: 760px; padding: 20px; }
h2 { font-size: 15px; margin-top: 28px; }
code { background: var(--surface-2); padding: 1px 5px; border-radius: var(--radius-sm); }
</style>
</head>
<body>
<header>
<h1>GitManager</h1>
<nav><a href="/">← Dashboard</a></nav>
</header>
<main>
<h1>Using GitManager</h1>
<p>
GitManager scans the folders you configure and shows every Git repository
it finds, with each repo's current branch, whether it has uncommitted
changes, and how far ahead or behind its upstream it is.
</p>
<h2>Getting started</h2>
<ol>
<li>Copy <code>.env.example</code> to <code>.env</code>.</li>
<li>Set <code>GIT_REPO_ROOTS</code> to the folders that hold your repos.</li>
<li>Run <code>docker compose up</code> and open the dashboard.</li>
</ol>
<h2>Reading the dashboard</h2>
<ul>
<li><strong>Branch</strong> — the checked-out branch (or <code>HEAD</code> when detached).</li>
<li><strong>Dirty</strong> — the working tree has staged or unstaged changes.</li>
<li><strong>Ahead / behind</strong> — commits your branch leads or trails its upstream by.</li>
</ul>
<h2>Right-click commands</h2>
<p>
Right-click any repository for a menu of plain-language commands — no git
knowledge needed:
</p>
<ul>
<li><strong>Get latest</strong> — pull the newest changes.</li>
<li><strong>Publish</strong> — push your commits.</li>
<li><strong>Check for updates</strong> — fetch without changing your files.</li>
<li><strong>Save my work…</strong> — commit everything (asks for a message).</li>
<li><strong>Set as active project</strong> / <strong>Ask Claude to switch here</strong>.</li>
<li><strong>Copy path</strong>.</li>
<li><strong>Discard all changes…</strong> — throw away uncommitted edits
(asks you to confirm; can't be undone).</li>
</ul>
<p>
What each command did shows up in the activity panel. (Get latest / Publish /
Check for updates need your server to have git credentials; until then they'll
report a sign-in error.)
</p>
<h2>Repository details</h2>
<p>
Click any repository in the list to open its details on the right: its
full path and current branch, its remotes and their URLs, every local
branch (with the one you're on marked and its upstream shown), and the 20
most recent commits.
</p>
<h2>Active project &amp; activity</h2>
<p>
Clicking a repository also makes it your <strong>active project</strong>
the one you're currently focused on — shown in the activity panel at the
bottom. That panel also lists recent actions by both you and Claude, updating
live. When GitManager is connected to Claude, Claude can see your active
project and this activity, so you stay on the same page.
</p>
<h2>Pull requests: Merge &amp; clean up</h2>
<p>
When a repository is hosted on your Gitea server, its open pull requests
appear under the details panel. Each has a <strong>Merge &amp; clean up</strong>
button: it squash-merges the pull request and <strong>deletes its
branch</strong> in one step, so finished work doesn't leave branches lying
around. You'll be asked to confirm — it names the pull request and the branch
that will be deleted — because it can't be undone (the merged history stays
on the server; only the branch is removed). If you don't use a Gitea server,
this section stays hidden.
</p>
<h2>Handing a project off to Claude</h2>
<p>
When GitManager is connected to Claude, you can hand the current project
off. Select the repository (that makes it your active project), then click
<strong>"Ask Claude to switch to …"</strong> in the handoff bar. Claude
won't drop what it's doing — it finishes to a safe stopping point (saving
any in-progress work) and then switches. You'll see a "waiting…" message
while it wraps up, and a confirmation with a short note of where it left the
previous project once it has switched. You can <strong>Cancel</strong> a
pending request any time before Claude completes it.
</p>
<h2>Background refresh</h2>
<p>
The dashboard refreshes on its own. By default it does <em>not</em> reach
the network — enable <code>SCAN_FETCH_ENABLED</code> if you want
ahead/behind counts kept current via <code>git fetch</code>.
</p>
<!-- Keep this page task-oriented and update it whenever a user-facing
feature changes, in the same change (AGENT.md §9.3). -->
</main>
</body>
</html>