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

feat: proposal list state tabs cover all 7 ProposalState values

ProposalState has a 7-state lifecycle (drafting, open, in_review, approved, settling, merged, abandoned). The tab bar was only showing 4.

- Backend: query counts for all 7 states in parallel - Template: render all 7 tabs + all, replacing the old 4-tab layout - Remove closed_count (was the abandoned alias) from proposal_list.html

Tests: T7.1–T7.5 covering context keys, tab rendering, counts, and valid ?state= navigation for all 7 states.

sha256:c174f82334d28520ccf6b23fd1ff6dde29db294a63491875a32817f1705b01fa sha
+21 ~1 symbols
sha256:e5e8f3dd375d3995216a6c0cebf2ef72453d8006d10e1e60b6d8d7ecfcdcb16b snapshot
+21
symbols added
~1
symbol modified
0
dead code introduced
Semantic Changes 22 symbols
~ tests/test_proposal_state_tabs.py .py 21 symbols added
+ ALL_STATES variable variable ALL_STATES L31–31
+ _make_proposal function async_function _make_proposal L53–78
+ _make_repo function async_function _make_repo L38–48
+ _seq variable variable _seq L51–51
+ AsyncClient import import AsyncClient L24–24
+ AsyncSession import import AsyncSession L25–25
+ MusehubProposal import import MusehubProposal L28–28
+ MusehubRepo import import MusehubRepo L28–28
+ annotations import import annotations L19–19
+ compute_identity_id import import compute_identity_id L27–27
+ compute_proposal_id import import compute_proposal_id L27–27
+ compute_repo_id import import compute_repo_id L27–27
+ datetime import import datetime L21–21
+ now_utc_iso import import now_utc_iso L29–29
+ pytest import import pytest L23–23
+ timezone import import timezone L21–21
+ test_T7_1_context_has_all_state_counts function async_function test_T7_1_context_has_all_state_counts L86–103
+ test_T7_2_all_state_tabs_rendered function async_function test_T7_2_all_state_tabs_rendered L111–124
+ test_T7_3_tab_counts_reflect_actual_proposals function async_function test_T7_3_tab_counts_reflect_actual_proposals L132–150
+ test_T7_4_each_state_param_returns_200 function async_function test_T7_4_each_state_param_returns_200 L159–168
+ test_T7_5_all_tab_rendered function async_function test_T7_5_all_tab_rendered L176–184

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