Skip to content

fix: keep minor tetrad symbols lowercase in chord labels - #131

Merged
privera-git merged 1 commit into
mainfrom
fix/tetrad-symbol-capitalization
Jul 14, 2026
Merged

privera-git merged 1 commit into
mainfrom
fix/tetrad-symbol-capitalization

Conversation

@privera-git

Copy link
Copy Markdown
Owner

Summary

  • Blanket capitalization (CSS text-transform: capitalize in FreePlayPicker.vue, JS capitalize() in TheoryModal.vue) was uppercasing the leading letter of raw chord notation symbols, turning m7 into M7 and mΔ7 into MΔ7 in the Free Play picker and the theory modal.
  • Added isChordSymbolQuality() in src/music/display.ts to distinguish word-phrase labels (triads, scales, intervals — which should be title-cased) from raw chord symbols (which must never be case-transformed).
  • As a side effect of the same root-cause fix, sus2/sus4 in the Triads picker now render lowercase instead of Sus2/Sus4, which is the correct notation — confirmed with the user.

Test plan

  • npm run lint
  • npm run test:unit -- --run (509 tests passing, includes new regression tests in FreePlayPicker.spec.ts and TheoryModal.spec.ts)
  • npm run build
  • Manually verified in the browser: Free Play → Tetrads shows m7/mΔ7 lowercase; Triads still shows Major Triad/Minor Triad title-cased

Blanket capitalization (CSS text-transform and JS capitalize()) was
uppercasing the leading letter of raw chord symbols like m7 and mΔ7,
turning them into M7/MΔ7 in the Free Play picker and theory modal.
Only word-phrase labels (triads, scales, intervals) should be
title-cased; chord notation symbols must stay as-is.
@privera-git
privera-git merged commit fb2e4bb into main Jul 14, 2026
2 checks passed
@privera-git
privera-git deleted the fix/tetrad-symbol-capitalization branch July 14, 2026 01:00
privera-git added a commit that referenced this pull request Jul 17, 2026
)

Follow-up to #131: the same blanket capitalization (text-transform:
capitalize) was still uppercasing raw chord symbols like m7b5 in
IdleView's quality label. Reuses formatQualityLabel/isChordSymbolQuality
from music/display.ts so only word-phrase labels get title-cased.

Co-authored-by: Patricio Rivera Alfaro <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant