From 2be29b684a17fa2b83f5d6228c26456cebce0d8b Mon Sep 17 00:00:00 2001 From: timmy Date: Fri, 7 Aug 2026 15:01:02 +0000 Subject: [PATCH] feat: plan mobile work by milestone (#203) --- frontend/index.html | 103 ++++++++++++++++++++++++++++++++++++++- frontend/issue-sheet.js | 35 +++++++++++++ frontend/my-work.js | 43 +++++++++++++--- src/gitea_proxy.py | 74 ++++++++++++++++++++++++++++ src/main.py | 78 ++++++++++++++++++++++++++++- src/models.py | 6 +++ tests/test_issue_api.py | 87 +++++++++++++++++++++++++++++++++ tests/test_my_work.py | 96 ++++++++++++++++++++++++++++++++++++ tests/test_work_pages.py | 2 + 9 files changed, 514 insertions(+), 10 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 9d57284..74f5a67 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -62,6 +62,8 @@ textarea { resize: vertical; min-height: 120px; } .work-filters { display:flex; gap:8px; flex-wrap:wrap; } .work-filter { min-height: 44px; } .work-filter[aria-pressed="true"] { border-color:var(--accent); background:#1d4f7a; } +.milestone-lane { display:flex; align-items:center; gap:8px; min-width:min(100%,260px); } +.work-milestone-filter { min-width:180px; flex:1; padding:8px; border-radius:8px; border:1px solid #1f3a5f; background:#0b1526; color:var(--text); } .my-work-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:10px; } .my-work-card { min-height: 44px; display:grid; gap:8px; padding:12px; border:1px solid #1f3a5f; border-radius:12px; background:#0f1d33; color:var(--text); } .my-work-card-main { display:block; width:100%; color:var(--text); text-align:left; font:inherit; background:transparent; border:0; padding:0; } @@ -153,6 +155,9 @@ textarea { resize: vertical; min-height: 120px; } .issue-due-editor input { box-sizing:border-box; width:100%; max-width:100%; } .issue-due-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; } .issue-due-editor input, .issue-due-editor button { min-height:44px; } +.issue-milestone-editor { display:grid; gap:8px; max-width:100%; margin:14px 0; padding:12px; border:1px solid #2a496e; border-radius:12px; } +.issue-milestone-editor select { width:100%; padding:8px; border-radius:8px; border:1px solid #1f3a5f; background:#0b1526; color:var(--text); } +.work-milestone-filter, .issue-milestone-editor select, .issue-milestone-editor button { min-height:44px; } .issue-sheet-actions { position:sticky; bottom:0; z-index:3; display:grid; gap:8px; margin-top:14px; padding:10px 4px; padding-bottom:calc(10px + env(safe-area-inset-bottom)); background:rgba(11,21,38,.98); border-top:1px solid #2a496e; } .issue-sheet-actions button, .issue-sheet-actions a { min-height:44px; display:flex; align-items:center; justify-content:center; } .issue-sheet-actions a { border:1px solid #60a5fa; border-radius:10px; font-weight:700; } @@ -269,6 +274,12 @@ textarea { resize: vertical; min-height: 120px; } +
@@ -412,6 +423,13 @@ textarea { resize: vertical; min-height: 120px; }
Load an issue to schedule it.
+
+ Milestone + + + +
Load an issue to plan it.
+