Skip to content

Better & more decorations #17

Description

@scoobynko

Summary

Improve the existing ornaments and borders, and add more of both.

Current state

  • Ornaments (src/welchost/ornaments.py): none | ghosts | stars | bars | dots — predefined ASCII blocks flanking the banner.
  • Borders (decoration.border_style): panel | box | double | rounded | ascii | none.

Scope

  • Add new ornament sets and richer border styles.
  • Revisit the existing ones — the current sets were a first pass and some read better than others at different banner heights.
  • Consider whether ornaments should adopt the banner palette the way the styled metadata row now does (info.accent inherits the banner color), rather than rendering unstyled.

Requirements

  • Stay data-driven. New ornaments are plain data in ornaments.py, not rendering code. Same for border glyph sets. Adding an option should not mean touching the renderer.
  • WYSIWYG in the preview. Every new option must render identically in the TUI BannerPreview and in the generated welcome_banner.py. These are two separate code paths (render.py vs. the Jinja2 template) and they drift silently — cover new options with a parity test like the one added for the metadata row.
  • Width-aware. Ornaments flank the banner and count toward measured width; fit.art_width() already accounts for this, so new ornaments must feed the same measurement rather than bypassing it.
  • Backward compatible. Existing welchost.toml files naming today's ornaments keep working, round-trip lossless.

Areas

Decoration, Rendering · Effort M

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions