feat: blame page revamp + blob/blame perf fixes
- Blame page full redesign: new .blm-* CSS, symbol cards with colored borders, expandable history panels, file-level blame with line-annotated code view - ui_blame.py: fast path via symbol history index (O(1) vs O(N) snapshot scan), 50-commit cap on fallback scan, file content loading for file-level blame - ui_blob.py: load_symbol_history called once; _fetch_file_history uses index fast path with dedup; _fetch_file_symbols/intel accept pre-loaded history - musehub_repository.get_last_commit_for_file: index fast path - TDD: test_blame_page_perf, test_blob_page_perf, test_last_commit_index_lookup - blame.ts: replace MIDI tooltip with code blame hash navigation - SCSS: _blame.scss component + page partials, app.scss imports both
sha256:3232d72dcec2a511e1cf003a83fb340c1204a29bd79e6fe78d205f2fe94b96ef
sha
+259
~11
−5
symbols
sha256:762bca7dc21f63efda2e816fb95ae1b58a0780d4ba07fa20a2cf456034aced7c
snapshot
+259
symbols added
~11
symbols modified
−5
symbols removed
0
dead code introduced
Semantic Changes
275 symbols
+
blm-code-cell
rule .blm-code-row:target .blm-code-cell,
.blm-code-row:hover .blm-code-cell L637–638
+
test_snapshot_diff_blame_caps_fallback_scan
function
async_function test_snapshot_diff_blame_caps_fallback_scan L232–265
+
test_snapshot_diff_blame_falls_back_when_no_history
function
async_function test_snapshot_diff_blame_falls_back_when_no_history L212–228
+
test_snapshot_diff_blame_returns_entry_from_history_index
function
async_function test_snapshot_diff_blame_returns_entry_from_history_index L182–208
+
test_snapshot_diff_blame_skips_manifest_scan_when_history_exists
function
async_function test_snapshot_diff_blame_skips_manifest_scan_when_history_exists L148–178
+
test_blob_page_calls_load_symbol_history_once
function
async_function test_blob_page_calls_load_symbol_history_once L269–301
+
test_fetch_file_history_deduplicates_commits
function
async_function test_fetch_file_history_deduplicates_commits L238–262
+
test_fetch_file_history_falls_back_when_no_history_entries
function
async_function test_fetch_file_history_falls_back_when_no_history_entries L216–234
+
test_fetch_file_history_returns_commits_from_history_index
function
async_function test_fetch_file_history_returns_commits_from_history_index L188–212
+
test_fetch_file_history_skips_snapshot_scan_when_history_exists
function
async_function test_fetch_file_history_skips_snapshot_scan_when_history_exists L152–184
+
test_get_last_commit_falls_back_to_snapshot_scan_when_no_history
function
async_function test_get_last_commit_falls_back_to_snapshot_scan_when_no_history L216–230
+
test_get_last_commit_ignores_entries_for_other_files
function
async_function test_get_last_commit_ignores_entries_for_other_files L267–289
+
test_get_last_commit_matches_symbol_entries_for_file
function
async_function test_get_last_commit_matches_symbol_entries_for_file L234–263
+
test_get_last_commit_returns_most_recent_history_entry
function
async_function test_get_last_commit_returns_most_recent_history_entry L186–212
+
test_get_last_commit_skips_snapshot_scan_when_history_exists
function
async_function test_get_last_commit_skips_snapshot_scan_when_history_exists L156–182
~
musehub/templates/musehub/pages/blame.html
.html
4 symbols added, 4 symbols removed, 1 symbol modified
0 comments
To add a comment, use the Muse CLI:
muse hub commit comment sha256:3232d72dcec2a511e1cf003a83fb340c1204a29bd79e6fe78d205f2fe94b96ef --body "your comment"
No comments yet. Be the first to start the discussion.