diff --git a/frontend/dashboard.css b/frontend/dashboard.css index ab5031a..b26e1e9 100644 --- a/frontend/dashboard.css +++ b/frontend/dashboard.css @@ -469,28 +469,30 @@ textarea { resize: vertical; min-height: 120px; } .issue-sheet-panel { width:min(560px,100%); height:100%; overflow:auto; padding:18px; background:#0b1526; border-left:1px solid #2a496e; } .issue-sheet-header { display:flex; align-items:center; justify-content:space-between; gap:10px; } .issue-sheet-header button { min-height:44px; } -.mobile-issue-detail-nav, .mobile-pull-detail-nav, .mobile-update-detail-nav { display:none; } +.mobile-issue-detail-nav, .mobile-pull-detail-nav, .mobile-update-detail-nav, .mobile-review-detail-nav { display:none; } @media (max-width:600px) { - .issue-sheet-panel, .pull-sheet-panel, .update-sheet-panel { padding-top:max(12px,env(safe-area-inset-top)); } - .mobile-issue-detail-nav, .mobile-pull-detail-nav, .mobile-update-detail-nav { + .issue-sheet-panel, .pull-sheet-panel, .update-sheet-panel, .review-sheet-panel { padding-top:max(12px,env(safe-area-inset-top)); } + .mobile-issue-detail-nav, .mobile-pull-detail-nav, .mobile-update-detail-nav, .mobile-review-detail-nav { position:sticky; top:env(safe-area-inset-top); z-index:6; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:4px; margin:8px -6px 12px; padding:6px; background:rgba(11,21,38,.98); border-block:1px solid #2a496e; } - .mobile-issue-detail-nav button, .mobile-pull-detail-nav button, .mobile-update-detail-nav button { + .mobile-issue-detail-nav button, .mobile-pull-detail-nav button, .mobile-update-detail-nav button, .mobile-review-detail-nav button { min-width:0; min-height:44px; padding:4px; overflow-wrap:anywhere; border-color:transparent; font-size:12px; } - .mobile-issue-detail-nav button[aria-current="location"], .mobile-pull-detail-nav button[aria-current="location"], .mobile-update-detail-nav button[aria-current="location"] { + .mobile-issue-detail-nav button[aria-current="location"], .mobile-pull-detail-nav button[aria-current="location"], .mobile-update-detail-nav button[aria-current="location"], .mobile-review-detail-nav button[aria-current="location"] { border-color:#60a5fa; background:#17365a; color:#fff; } #issue-overview, #issue-conversation, #issue-comment, #issue-planning { scroll-margin-top:72px; } #pull-overview, #pull-conversation, #pull-comment, #pull-review { scroll-margin-top:72px; } #update-conversation, #update-subject-context, #update-reply-workspace { scroll-margin-top:72px; } + #review-overview, #review-files-workspace, #review-feedback, #review-history-workspace { scroll-margin-top:72px; } } @media (min-width:601px) { .mobile-issue-detail-nav, .mobile-pull-detail-nav { display:none; } } @media (min-width:601px) { .mobile-update-detail-nav { display:none; } } +@media (min-width:601px) { .mobile-review-detail-nav { display:none; } } .completed-filed-actions { position:fixed; right:0; bottom:0; z-index:57; box-sizing:border-box; width:min(560px,100%); display:grid; grid-template-columns:minmax(0,1fr); align-items:center; gap:8px; margin:0; padding:10px 12px calc(10px + env(safe-area-inset-bottom)); border:1px solid #4ade80; border-radius:12px 0 0; background:rgba(11,21,38,.98); overflow-wrap:anywhere; } .completed-filed-actions[hidden] { display:none; } .completed-filed-actions button { min-height:44px; min-width:0; } diff --git a/frontend/dashboard.js b/frontend/dashboard.js index b50053b..1cd6859 100644 --- a/frontend/dashboard.js +++ b/frontend/dashboard.js @@ -1366,6 +1366,19 @@ prefersReducedMotion:() => window.matchMedia('(prefers-reduced-motion: reduce)').matches, }); mobileUpdateDetailNavigation.start(); + const mobileReviewDetailNavigation = createMobileReviewDetailNavigation({ + root:qs('#review-sheet .review-sheet-panel'), + buttons:Object.fromEntries(Array.from(document.querySelectorAll('[data-review-section]')).map(button => [button.dataset.reviewSection, button])), + targets:{ + overview:qs('#review-overview'), + files:qs('#review-files-workspace'), + feedback:qs('#review-feedback'), + history:qs('#review-history-workspace'), + }, + summaryComposer:qs('#review-summary'), + prefersReducedMotion:() => window.matchMedia('(prefers-reduced-motion: reduce)').matches, + }); + mobileReviewDetailNavigation.start(); const issueDetailPosition = createWorkDetailPosition({ panel: qs('#issue-sheet .issue-sheet-panel') }); const pullDetailPosition = createWorkDetailPosition({ panel: qs('#pull-sheet .pull-sheet-panel') }); const reviewDetailPosition = createWorkDetailPosition({ panel: qs('#review-sheet .review-sheet-panel') }); @@ -4748,6 +4761,7 @@ async function openReviewSheet(item, trigger, cachedDetail = null) { if (!item || !await ensurePullWorkflow(trigger)) return; reviewDetailPosition.open(workDetailIdentity('review', item)); + mobileReviewDetailNavigation.reset(); selectedReview = item; reviewTrigger = trigger; offlineReview = Boolean(cachedDetail); diff --git a/frontend/index.html b/frontend/index.html index 9816f55..d3ffeb5 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -1330,6 +1330,13 @@ Close + + Overview + Files + Feedback + History + + Choose a review request. Retry loading review @@ -1339,6 +1346,8 @@ Refresh checks + + Changed files Wrap lines @@ -1359,7 +1368,8 @@ 0 of 0 files reviewed Next unreviewed - + + Draft feedback Intended decision @@ -1383,8 +1393,10 @@ Continue to merge + Review history + DeferLater todayTomorrowChoose date & timeCancel @@ -1558,6 +1570,7 @@ +