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

feat: domain heat widget below tabs, all domains, state-scoped

- Move domain heat section below state tabs in the proposal list layout - Rename heading from 'Active domain heat' to 'DOMAIN HEAT (X proposals)' where X reflects the active state filter (open, in_review, etc.) - Render all known domains (code, midi, stems, pay, prose) including zero-count entries — previously only domains with count > 0 showed - Fix code domain count: use total proposals, not just risk_score > 0 - Pass current state filter to get_domain_heat instead of hardcoded 'open' - hx-get URL now uses current state param for live refresh

Tests: H8.1–H8.6 covering position, heading, state label, counts, and zero-domain rendering.

sha256:a503ce92ef2d437debf912a9b6512d731c364e6cc3ec5da7daea1564612c0e40 sha
+21 ~2 symbols
sha256:e5c957b5a2aef5e9bd26395434f697db5e472d2862ec45407ae67a772edc4b00 snapshot
+21
symbols added
~2
symbols modified
0
dead code introduced
Semantic Changes 23 symbols
~ tests/test_proposal_domain_heat.py .py 21 symbols added
+ _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
+ 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
+ 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

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