Skip to content

Lateania: rich character sheet, class portraits, and roster tables#348

Merged
mpiorowski merged 4 commits into
mpiorowski:mainfrom
hardlygospel:feat/lateania-character-sheet
Jun 16, 2026
Merged

Lateania: rich character sheet, class portraits, and roster tables#348
mpiorowski merged 4 commits into
mpiorowski:mainfrom
hardlygospel:feat/lateania-character-sheet

Conversation

@hardlygospel

Copy link
Copy Markdown
Contributor

Thanks for late.sh, @mpiorowski! This makes Lateania's UI feel a lot more alive — inspired by the dense, visual character/roster panels in team-management TUIs.

What

  • Full-width character sheet. The Character panel (c) now expands into a dashboard when the terminal has room (≥72×14): an accent-tinted class portrait, the six ability scores as dot ratings (the class's primary score highlighted), HP/resource as filled meters, combat numbers, the passive trait, earned titles, and an XP meter. On cramped terminals it falls back to the existing narrow side panel, so nothing regresses for small windows.
  • Class portraits. Each of the five classes gets an ASCII portrait bust, tinted by a per-class accent colour and captioned with a class emblem.
  • Roster tables. The room Foes and Adventurers lists and the Follow (party) panel now render as aligned rows: a name column plus a small HP meter tinted by remaining health. (The Follow panel previously ignored the occupant HP it already had in hand.)

All rendering stays lock-free and snapshot-only — no changes to the service, world, or persistence. Reuses the existing build_composer-style helpers and the snapshot's existing data; no new fields on PlayerView.

Tests

Added unit tests for the pure helpers (dot-rating scaling, meter fill/clamp, unicode-aware name fit/ellipsize).

cargo test -p late-ssh --lib door::lateania   # passing, incl. new ui tests
cargo clippy -p late-ssh --lib                # clean
cargo fmt --check                             # clean

Updated door/lateania/CONTEXT.md to describe the new sheet/roster rendering.

Bring a richer, more visual layer to Lateania's UI:

- The Character panel (c) now expands to a full-width dashboard when the
  terminal has room (>=72x14): an accent-tinted class portrait, the six
  ability scores as dot ratings with the class's primary score
  highlighted, HP/resource shown as filled meters, combat numbers, the
  passive trait, earned titles, and an XP meter. It falls back to the
  existing narrow side panel on cramped terminals.
- Each class gets an ASCII portrait bust, tinted by a per-class accent
  colour and captioned with a class emblem.
- The room Foes and Adventurers lists and the Follow (party) panel now
  render as aligned roster rows: name column plus a small HP meter
  tinted by remaining health. The Follow panel previously ignored the
  occupant HP it already carried.

All rendering stays lock-free and snapshot-only. Adds unit tests for the
score-dot, meter, and name-fit helpers.

Signed-off-by: Tony Hosaroygard <tasmaniamate@gmail.com>
@hardlygospel hardlygospel requested a review from mpiorowski as a code owner June 16, 2026 12:36
@mpiorowski mpiorowski merged commit f6fa684 into mpiorowski:main Jun 16, 2026
1 check passed
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.

2 participants