diff --git a/README.md b/README.md index 42e6c9c..0bf7265 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,13 @@ token that can read dashboard data, update the authenticated user's notification threads, create and self-assign issues, discover, claim, and release issue assignments, list repository labels and open milestones, set or clear due dates on assigned issues, create issue comments, close assigned issues, inspect/comment on assigned pull -requests, merge assigned pull requests, and submit pull-request reviews. +requests, merge assigned pull requests, and submit pull-request reviews. For authored +pulls, several non-overlapping one-line reviewer suggestions in the same bounded UTF-8 +file can be staged during the mobile feedback pass, reviewed together, and committed as +one race-guarded branch update. The batch preserves the original blob identity, applies +replacements from the bottom up, rejects overlapping or stale lines, and verifies the +advanced pull head and final file before reporting success; suggestions in another file +wait for the next batch so Gitea's single-file contents API cannot produce partial commits. After an exact merged commit fails release checks, its mobile release receipt can load the failed job evidence and prepare a draft rollback pull request. The server revalidates the operator's participation and push access, reverses only bounded UTF-8 files whose current diff --git a/frontend/dashboard.css b/frontend/dashboard.css index 73a6c09..acd74fb 100644 --- a/frontend/dashboard.css +++ b/frontend/dashboard.css @@ -774,6 +774,12 @@ textarea { resize: vertical; min-height: 120px; } .pull-feedback-suggestion-change > div { min-width:0; } .pull-feedback-suggestion-change pre { box-sizing:border-box; max-width:100%; max-height:160px; white-space:pre-wrap; overflow-wrap:anywhere; word-break:break-word; } .pull-feedback-suggestion-preview input { box-sizing:border-box; width:100%; min-height:44px; } +.pull-feedback-batch-review { min-width:0; display:grid; gap:10px; margin:10px 0; padding:10px; border:1px solid #3b82f6; border-radius:10px; background:#07101e; } +.pull-feedback-batch-review[hidden] { display:none; } +.pull-feedback-batch-review h5 { margin:0; } +.pull-feedback-batch-review ul { min-width:0; margin:0; padding-left:20px; overflow-wrap:anywhere; } +.pull-feedback-batch-review input { box-sizing:border-box; width:100%; min-width:0; min-height:44px; } +#review-pull-feedback-batch { position:sticky; bottom:calc(8px + env(safe-area-inset-bottom)); z-index:4; width:100%; min-height:44px; } .review-handoff { position:sticky; bottom:0; z-index:3; display:grid; gap:8px; padding:10px 4px; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:rgba(11,21,38,.98); border-top:1px solid #2a496e; } .review-handoff button { min-height:44px; } .review-handoff-link { min-height:44px; display:flex; align-items:center; justify-content:center; border:1px solid #60a5fa; border-radius:8px; color:#bfdbfe; font-weight:700; text-decoration:none; } diff --git a/frontend/index.html b/frontend/index.html index 0ee2928..c903f29 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1755,9 +1755,21 @@
+
+ +