gabriel / musehub public
feat BREAKING proposals task/proposal-list-routes #1 / 1
AI Agent gabriel · 40 days ago · May 8, 2026 · Diff

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.

sha256:296ce5184347e66a0d897dc3cb7656845c6288907936f83c150b19357e6e7174 sha
sha256:4a4d60bd78dac7a2a5c5f8a28abcba337782491bcdda7425fc40f2cf87e1c802 snapshot
← Older Oldest on task/proposal-list-routes
All commits
Newer → Latest on task/proposal-list-routes

0 comments

No comments yet. Be the first to start the discussion.

To add a comment, use the Muse CLI: muse hub commit comment sha256:296ce5184347e66a0d897dc3cb7656845c6288907936f83c150b19357e6e7174 --body "your comment"