diff --git a/README.md b/README.md index fa4a926..4678a9e 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,13 @@ python3 -m pip install -r requirements.txt Point the dashboard at the Gitea server root (without `/api/v1`) and provide a token that can read dashboard data, update the authenticated user's notification threads, create and self-assign issues, create issue comments, close assigned -issues, and submit pull-request reviews. Pull-request replies and mobile My Work -issue comments use Gitea's issue-comment API; mobile issue capture requires issue -creation and assignment permission, while closing an assigned issue and native -Comment, Approve, and Request changes reviews require repository write permission. +issues, inspect/comment on assigned pull requests, merge assigned pull requests, and +submit pull-request reviews. Pull-request replies and mobile My Work issue and PR +comments use Gitea's issue-comment API; mobile issue capture requires issue +creation and assignment permission. Closing an assigned issue, native Comment, +Approve, and Request changes reviews, and assigned-PR merge require repository +write permission. The dashboard rechecks the current pull-request head, CI success, +draft state, and mergeability immediately before every merge. Serve the dashboard only to trusted users on its own origin; cross-origin API access is intentionally disabled. Then start the API and bundled frontend: diff --git a/frontend/index.html b/frontend/index.html index a686200..91064b0 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -139,6 +139,17 @@ textarea { resize: vertical; min-height: 120px; } .create-issue-form label { display:grid; gap:6px; } .create-issue-form select { min-height:44px; padding:8px; border-radius:8px; border:1px solid #1f3a5f; background:#0b1526; color:#e5e7eb; } .create-issue-actions { position:sticky; bottom:0; display:grid; gap:8px; padding:10px 0; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:#0b1526; } +.pull-sheet { position:fixed; inset:0; z-index:58; display:none; justify-content:flex-end; background:rgba(5,12,21,.72); backdrop-filter:blur(4px); } +.pull-sheet.open { display:flex; } +.pull-sheet-panel { width:min(560px,100%); height:100dvh; overflow:auto; padding:18px; padding-bottom:calc(90px + env(safe-area-inset-bottom)); background:#0b1526; border-left:1px solid #2a496e; } +.pull-sheet-header { display:flex; align-items:center; justify-content:space-between; gap:10px; } +.pull-sheet-header button, .pull-sheet-actions button, .pull-sheet-actions a, .pull-comment-composer button { min-height:44px; } +.pull-sheet-content { overflow-wrap:anywhere; white-space:pre-wrap; } +.pull-file, .pull-comment-card { margin:8px 0; padding:10px; border:1px solid #203a5c; border-radius:10px; } +.pull-comment-composer textarea { width:100%; min-height:110px; resize:vertical; } +.pull-sheet-actions { position:sticky; bottom:0; display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:10px 0; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:#0b1526; } +.pull-sheet-actions a { display:grid; place-items:center; border:1px solid #60a5fa; border-radius:10px; font-weight:700; } +.pull-retry { min-height:44px; width:100%; margin-top:10px; } @media (max-width: 600px) { header { align-items:flex-start; } .my-work { margin:0; } @@ -149,6 +160,7 @@ textarea { resize: vertical; min-height: 120px; } .update-sheet-panel { width:100%; border-left:0; padding:14px; } .issue-sheet-panel { width:100%; border-left:0; padding:14px; } .create-issue-panel { width:100%; border-left:0; padding:14px; } + .pull-sheet-panel { width:100%; border-left:0; padding:14px; } } .obi { width:14px; height:14px; background: url('data:image/svg+xml;utf8,') center/contain no-repeat; display:inline-block; } .footer { padding: 12px; text-align: center; color:#4e6b8a; font-size:12px; } @@ -365,6 +377,31 @@ textarea { resize: vertical; min-height: 120px; } +
Add comment
+ + + +