feat(proposals): Phase 3 UI route extensions and fragment templates
Extend proposal_list_page with full ProposalListFilters params and enrich_proposal_list_batch so every rendered row carries the complete ProposalListEntry payload (risk bands, domain dots, approval status, etc.). Heat and readiness data fetched in parallel via asyncio.gather.
Add three new routes to ui_proposals.py: GET /{owner}/{repo}/proposals/rows — HTMX bare fragment; non-HTMX → 302 GET /{owner}/{repo}/proposals/{id}/summary — single-row expansion panel; 404 on miss GET /{owner}/{repo}/proposals/heat — domain heat bar fragment for #domain-heat swap
Add two new Jinja2 fragment templates: fragments/proposal_row_detail.html — risk breakdown, approval status, touched symbols fragments/domain_heat.html — per-domain count + avg-risk bars
Update test_musehub_ui_proposal_ssr.py: replace stale merge-button test (removed in MSign read-only cleanup) with CLI-hint assertion.
Add 29 Tier-3 (E2E) + Tier-7 (security) tests: list page renders, HTMX fragment swap, row summary 200/404, heat fragment, input validation (state/ sort/author_type/limit/assigned_reviewer pattern), 401 on private repos.
0 comments
muse hub commit comment sha256:296ce5184347e66a0d897dc3cb7656845c6288907936f83c150b19357e6e7174 --body "your comment"
No comments yet. Be the first to start the discussion.