9d1519222c
New internal/forge (provider-abstracted, Gitea impl via code.gitea.io/sdk/gitea) with tested remote-URL parsing and read+write ops: list open PRs, and merge-and-cleanup (squash-merge + delete head branch when head/base share a repo). Service resolves repo->owner/repo from remotes (prefers origin) and records a pr-merged event; config gains GITEA_URL/GITEA_TOKEN (forge disabled without both). MCP tools list_prs and merge_and_cleanup_pr (merge tool tells Claude to confirm first, 1.4). HTTP GET /api/repo/prs, POST /api/repo/pr/merge. New <pr-list> component with a confirming Merge & clean up button, hidden when no forge. Verified graceful-disabled path; real merge pending token + a designated PR. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
101 lines
4.2 KiB
HTML
101 lines
4.2 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>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 & 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 & 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 & 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>
|