gabriel / musehub public
feat BREAKING task/proposal-models-v2 #2 / 19
AI Agent gabriel · 127 days ago · May 8, 2026 · Diff

feat: proposal list UX overhaul — prl-kv chip system, 3-row right column, spectral sigil, fast detail page

- Replace all line-1 badges with unified prl-kv key:value chip system (type, risk, merge strategy, blocked, ready, settling, draft) — all lowercase, color-coded by severity - Add 3-row right column: semver impact / health (breakage + gap chips) / provenance - Show spectral sigil avatar instead of colored initial circle for proposal authors - Move 'All' tab first and make it the default state (was 'open') - Add ptype_short macro mapping full proposal_type enum to display labels - Add risk bar inline progress indicator inside risk chip - Remove prl-row-detail-wrap HTMX div that was opening a side panel on row click - Skip load_symbol_history() when no modified/deleted symbols — reduces proposal detail page load from ~9s to <250ms warm by skipping full table scan - Add seed_local_proposals.py for populating local DB with representative test fixtures - Increase row padding (14px → 20px) and add title margin for breathing room

sha256:83d0034ce052598e2d83a28f9bb854b64c3aeb028adedabdc320dffe02f37d5c sha
+48 ~7 −39 symbols
sha256:c9bcea4e1ecff2d67a49e6dd300dde1fde67775471c6b0ef0ee38ab039522ae6 snapshot
+48
symbols added
~7
symbols modified
−39
symbols removed
0
dead code introduced
Semantic Changes 94 symbols
~ scripts/seed_local_proposals.py .py 12 symbols added
+ DEPS variable variable DEPS L65–70
+ DSN variable variable DSN L18–18
+ PROPOSALS variable variable PROPOSALS L21–61
+ _dep_id function function _dep_id L73–75
+ annotations import import annotations L9–9 ← moved from tests/test_proposal_domain_heat.py
+ datetime import import datetime L14–14
+ hashlib import import hashlib L11–11
+ json import import json L12–12
+ psycopg2 import import psycopg2 L16–16
+ sys import import sys L13–13
+ timezone import import timezone L14–14 ← moved from tests/test_proposal_domain_heat.py
+ main function function main L78–137
~ tests/test_proposal_domain_heat.py .py 21 symbols removed
_make_proposal function async_function _make_proposal L55–76
_make_repo function async_function _make_repo L40–52
_seq variable variable _seq L37–37
AsyncClient import import AsyncClient L30–30
AsyncSession import import AsyncSession L31–31
MusehubProposal import import MusehubProposal L34–34
MusehubRepo import import MusehubRepo L34–34
annotations import import annotations L25–25 → moved to scripts/seed_local_proposals.py
compute_identity_id import import compute_identity_id L33–33
compute_proposal_id import import compute_proposal_id L33–33
compute_repo_id import import compute_repo_id L33–33
datetime import import datetime L27–27
now_utc_iso import import now_utc_iso L35–35
pytest import import pytest L29–29
timezone import import timezone L27–27 → moved to scripts/seed_local_proposals.py
test_H8_1_domain_heat_below_state_tabs function async_function test_H8_1_domain_heat_below_state_tabs L84–102
test_H8_2_domain_heat_heading function async_function test_H8_2_domain_heat_heading L110–120
test_H8_3_heat_heading_includes_state_label function async_function test_H8_3_heat_heading_includes_state_label L128–146
test_H8_4_domain_with_proposals_shows_name_and_count function async_function test_H8_4_domain_with_proposals_shows_name_and_count L154–170
test_H8_5_all_domains_rendered_including_zero function async_function test_H8_5_all_domains_rendered_including_zero L178–198
test_H8_6_heat_heading_reflects_state_filter function async_function test_H8_6_heat_heading_reflects_state_filter L206–221
~ src/scss/components/_proposals.scss .scss 33 symbols added, 16 symbols removed, 4 symbols modified
prl-avatar rule .prl-avatar L311–322
prl-domain-name rule .prl-domain-name L540–540
prl-domain-pill rule .prl-domain-pill L513–530
prl-domain-pill--critical rule .prl-domain-pill--critical L529–529
prl-domain-pill--high rule .prl-domain-pill--high L528–528
prl-domain-pill--low rule .prl-domain-pill--low L526–526
prl-domain-pill--medium rule .prl-domain-pill--medium L527–527
prl-domain-pill--none rule .prl-domain-pill--none L525–525
prl-domain-pip rule .prl-domain-pip L532–538
prl-domain-pip--active rule .prl-domain-pip--active L537–537
prl-domain-risk rule .prl-domain-risk L541–541
prl-row-domains rule .prl-row-domains L506–511
prl-sort rule .prl-sort L153–161
prl-sort-label rule .prl-sort-label L163–167
prl-sort-opt rule .prl-sort-opt L169–185
prl-sort-opt:hover rule .prl-sort-opt:hover L177–177
+ prl-badge--breakage rule .prl-badge--breakage L434–442
+ prl-badge--gap rule .prl-badge--gap L444–452
+ prl-controls-divider rule .prl-controls-divider L153–158
+ prl-kv rule .prl-kv L236–246
+ prl-kv--blocked rule .prl-kv--blocked L338–342
+ prl-kv--breakage rule .prl-kv--breakage L345–349
+ prl-kv--draft rule .prl-kv--draft L381–385
+ prl-kv--gap rule .prl-kv--gap L350–354
+ prl-kv--ready rule .prl-kv--ready L371–375
+ prl-kv--risk-critical rule .prl-kv--risk-critical L324–329
+ prl-kv--risk-high rule .prl-kv--risk-high L319–323
+ prl-kv--risk-low rule .prl-kv--risk-low L309–313
+ prl-kv--risk-medium rule .prl-kv--risk-medium L314–318
+ prl-kv--semver-major rule .prl-kv--semver-major L357–360
+ prl-kv--semver-minor rule .prl-kv--semver-minor L361–364
+ prl-kv--semver-patch rule .prl-kv--semver-patch L365–368
+ prl-kv--settling rule .prl-kv--settling L376–380
+ prl-kv--strategy rule .prl-kv--strategy L332–335
+ prl-kv--type rule .prl-kv--type L279–282
+ prl-kv--type-agent-delegation rule .prl-kv--type-agent-delegation L303–306
+ prl-kv--type-canonical-release rule .prl-kv--type-canonical-release L287–290
+ prl-kv--type-identity-transition rule .prl-kv--type-identity-transition L283–286
+ prl-kv--type-midi-evolution rule .prl-kv--type-midi-evolution L295–298
+ prl-kv--type-payment-settlement rule .prl-kv--type-payment-settlement L299–302
+ prl-kv--type-stem-integration rule .prl-kv--type-stem-integration L291–294
+ prl-kv-k rule .prl-kv-k L383–383
+ prl-kv-risk-bar rule .prl-kv-risk-bar L328–328
+ prl-kv-v rule .prl-kv-v L384–384
+ prl-pill rule .prl-pill L166–184
+ prl-pill-group rule .prl-pill-group L160–164
+ prl-pill:hover rule .prl-pill:hover L176–176
+ prl-row:nth-child(even) rule .prl-row:nth-child(even) L200–200
+ prl-sigil rule .prl-sigil L489–495
~ src/scss/pages/_proposals.scss .scss 3 symbols added, 2 symbols removed, 1 symbol modified
prl-row-domains rule .prl-row-domains L47–52
prl-row-footer rule .prl-row-footer L64–72
+ prl-controls rule .prl-controls L30–38
+ prl-meta-provenance rule .prl-meta-semver, .prl-meta-health, .prl-meta-provenance L70–77
+ prl-row-meta-right rule .prl-row-meta-right L58–68

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:83d0034ce052598e2d83a28f9bb854b64c3aeb028adedabdc320dffe02f37d5c --body "your comment"