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>
58 lines
1.9 KiB
HTML
58 lines
1.9 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>GitManager</title>
|
|
<link rel="stylesheet" href="/static/app.css">
|
|
<!-- Web components declare themselves; the page does not micro-manage them
|
|
(AGENT.md §1.1). Each fetches its own data on connect. -->
|
|
<script type="module" src="/components/repo-list/repo-list.js"></script>
|
|
<script type="module" src="/components/repo-detail/repo-detail.js"></script>
|
|
<script type="module" src="/components/activity-feed/activity-feed.js"></script>
|
|
<script type="module" src="/components/handoff-bar/handoff-bar.js"></script>
|
|
<script type="module" src="/components/pr-list/pr-list.js"></script>
|
|
<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; }
|
|
/* Repo list docks LEFT, detail panel docks RIGHT by default (AGENT.md §4).
|
|
A real dockable layout is layered on later; this is the static default. */
|
|
main { padding: 20px; display: flex; flex-direction: column; gap: 16px; }
|
|
.cols {
|
|
display: grid;
|
|
grid-template-columns: minmax(280px, 360px) 1fr;
|
|
gap: 16px;
|
|
align-items: start;
|
|
}
|
|
.right { display: grid; gap: 16px; }
|
|
@media (max-width: 720px) { .cols { grid-template-columns: 1fr; } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>GitManager</h1>
|
|
<span style="color: var(--color-fg-muted)">multi-repo dashboard</span>
|
|
<nav><a href="/help">Help</a></nav>
|
|
</header>
|
|
<main>
|
|
<handoff-bar></handoff-bar>
|
|
<div class="cols">
|
|
<repo-list></repo-list>
|
|
<div class="right">
|
|
<repo-detail></repo-detail>
|
|
<pr-list hidden></pr-list>
|
|
</div>
|
|
</div>
|
|
<activity-feed></activity-feed>
|
|
</main>
|
|
</body>
|
|
</html>
|