feat: v3.5.0 — classic/bold redesigned as 5-row shade weights for exact footprint parity#21
Merged
Merged
Conversation
…ct footprint parity classic/bold were tall 9-row letterforms that could not share the 5-row footprint of the other styles: in a minimized, non-zen window with metadata they towered over the others, covered the session goal, or silently fell back to the block style (the "press B and only block shows" bug). Redesign them as 5-row shade-weight variants of block — the EXACT same 5-row × 4-col geometry, inked with ▒ (classic, light weight) / ▓ (bold, heavy) instead of full █. All six styles now share one identical footprint; classic and bold render their own ink at every window size, never falling back to block or hiding the goal. planCounter drops the tall-font / fallback-to-block path; uniformCounterScale becomes a thin wrapper over computeSessionScale. Verified across 1189 windows: footprint parity in every window, zero fallbacks, goal visibility consistent across all six styles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dogfooding v3.4.1 in a minimized window surfaced two persistent issues with
classic/bold:dbroke the visual composition.classic/boldshowed the plainblockstyle instead (a silent fallback), while every other style rendered perfectly.Root cause:
classic/boldwere defined as 9-row tall letterforms (STYLE_METRICSrows: 9 vs 5 for every other style). A 9-row glyph physically cannot occupy the same 5 rows asblock/simple/outline/minimal, so the v3.4.1 footprint logic did the only thing it could in a short window — fell back toblock— and in taller windows they towered / covered the goal. No scaling trick fixes this; the fonts themselves had to become 5 rows.Fix: Redesign
classic/boldas 5-row shade-weight variants ofblock— the EXACT same 5-row × 4-col geometry, inked with▒(classic, light weight) /▓(bold, heavy) instead of full█. All six styles now share one identical footprint; classic/bold render their own ink at every window size, never falling back to block or hiding the goal. The tall-font / fallback-to-block path is removed fromplanCounter;uniformCounterScalebecomes a thin wrapper.What changed
src/lib/bigfont.ts— classic/boldSTYLE_METRICS→{rows:5,digitW:4,colonW:1}(parity with block); render classic as block geometry inked▒, bold inked▓; removed the 9-row glyph tables +renderTallSolid;uniformCounterScalesimplified.src/tui/views/session.ts—planCountersimplified to a single 5-row ladder (noisTall/tallKeepsFootprint/block fallback).src/schemas/config.ts— classic/bold docstrings updated.bigfont.test.ts+session-view.test.tsupdated for 5-row▒/▓fonts: base-row parity, exact width/row-count parity with block,classic→▒/bold→▓(never█), and "no fallback to block in a tight window" guards.[3.5.0], version bump.Verification
build✓ ·typecheck✓ ·lint✓ · 604 tests ✓🤖 Generated with Claude Code