Conversation
Shift the story from 'give your CLI a face' to personalizing/branding your project, and foreground the embed-in-your-code angle. Add status badges and a little flair to the hero. Closes #109
Long input previously overflowed the terminal with no recourse. --wrap <cols> (alias --max-width) greedily packs whole words onto each line, measuring against the rendered banner width so it accounts for the font. An oversized lone word still gets its own line. Config key: wrap. Closes #110
Extends the 'embed a banner in your own code' story beyond rust/go/python/shell. Each new -F target bakes color in and carries a one-line 'how to print' comment. Ruby output escapes '#' so banner content can't trigger string interpolation. Closes #111
Show that sigil scales from a single flat color and a small font up to a fully-themed banner. Adds a step-by-step spectrum (each image adds one thing) and a composite that stacks the same word at three sizes/styles in one image — literally small and large text together. Assets are reproducible: assets/generate.sh shells out to sigil -F svg and assets/compose.py stacks renders onto a shared backdrop.
Gradients: coral, glacier, nebula, moss, peach, twilight (21 -> 27). Themes: synthwave, arctic, sepia (11 -> 14). Strengthen the theme test to assert every built-in names a real gradient preset unless it overrides with explicit colors. Closes #112
'sigil config path' prints the user and project config files sigil reads and whether each exists; 'sigil config show' prints the effective merged settings before CLI flags. Documented in the README Config section, with integration tests. Closes #113
Spreads a single color into a soft two-tone Oklab sweep (darker+hue-nudged low end, through the base, into a lighter high end) so a brand color needs no hand-picked stops. Precedence: --colors > --from > --gradient. Config key: from. Roadmap: --from brand color (issue to be filed at push time).
For any snippet format (rust/go/python/js/ts/c/cpp/ruby/shell), --func wraps the banner in a self-contained, ready-to-call print_banner function with the literal baked in. No-op for non-snippet formats. Config key: func. Roadmap: print-function snippets (issue to be filed at push time).
Places a single icon on the banner's vertically-centered row (width-aware, so wide emoji align) with a small gap before the text — the icon+wordmark look. Works across term/SVG/PNG since it lives in the glyph grid. Config key: icon. Roadmap: --icon prefix (issue to be filed at push time).
Lays out each character on its own and concatenates the rows with N blank columns between them (trading FIGlet smushing for even spacing). Config key: letter_spacing. Roadmap: letter-spacing (issue to be filed at push time).
Renders the main text and a --subtitle line (in --subtitle-font, default small), centers each, and stacks them into one banner sharing the gradient, border, and animation — the logo + tagline pattern in a single render. Config keys: subtitle, subtitle_font. Roadmap: --subtitle multi-font stacking (issue to be filed at push time).
Lays the text out in every bundled font and picks the tallest-then-widest one whose banner fits within N columns (falling back to the narrowest if none fit), overriding --font. Config key: fit. Roadmap: --fit auto font (issue to be filed at push time).
--direction radial sweeps outward from the banner's center (a ring), and conic sweeps around it (a cone). Both plug into the existing per-cell t() so they work with reverse/cycle and every renderer. Roadmap: radial/conic direction (issue to be filed at push time).
--colors now accepts an optional @position in [0,1] per stop, e.g. "#000@0,#fff@0.8", to bias where colors land. Gradient gains with_positions(); even spacing is unchanged when no positions are given. Roadmap: positioned gradient stops (issue to be filed at push time).
Instead of only a text summary, 'sigil themes' now paints a small Sigil banner in each theme (font + gradient + border + effects) when color is on, matching how 'sigil fonts' previews fonts. Falls back to labels-only when piped or --no-color. Roadmap: truecolor themes preview (issue to be filed at push time).
Renders a random font/gradient (and maybe a border/shadow) for the given text, then prints the exact flags to reproduce it plus a '--seed N' shortcut. Complements the existing --random flag with a friendlier, self-documenting one-shot. Roadmap: sigil random subcommand (issue to be filed at push time).
Wraps the plain (no-color) banner in a triple-backtick fence so it drops straight into Markdown docs. Aliases: markdown, md. Roadmap: markdown export (issue to be filed at push time).
Loads gradient stops from a palette file — one '#rrggbb'/'rrggbb' or decimal 'R G B' per line — so GIMP .gpl palettes and plain hex lists both work; headers and comments are skipped. Overridden by --colors. Config key: gradient_file. Roadmap: palette import (issue to be filed at push time).
[package.metadata.binstall] points at the release archives produced by the existing release workflow (sigil-<target>.tar.gz, .zip on Windows), so 'cargo binstall sigil' fetches a prebuilt binary instead of compiling. Documented in the README install section. Roadmap: distribution polish (issue to be filed at push time).
New mark module + subcommand: hashes the input to seed a SplitMix PRNG, builds a 5x5 mirror-symmetric grid, and paints the lit cells along a gradient — a deterministic, unique emblem (same input, same mark) exported as SVG. Leans into the name: sigil makes you a sigil. Roadmap: generative sigil mark (issue to be filed at push time).
'-F png --animate sweep' now writes a looping APNG whose gradient shimmers, using the png crate's animation support (no new deps): 30 frames spanning one palette pass, delay 1/fps, loops forever. Static -F png is unchanged. Roadmap: APNG export (issue to be filed at push time).
New RenderOptions.background_gradient + bg_cell_color helper, sampled along the sweep direction. Wired into every renderer: terminal (per-cell bg escapes), SVG (per-cell rects), PNG/APNG (per-cell fill), and HTML (per-cell spans). Spec is a preset name or comma hex stops. Config key: bg_gradient. Roadmap: background gradient (issue to be filed at push time).
--fill shade replaces glyph characters with block-shade glyphs (░▒▓█) chosen by the gradient's brightness at each cell, so the gradient reads even with --no-color or on 256-color terminals. Frame/border chars are kept; applies to terminal, SVG, and HTML. Config key: fill. Roadmap: block-shading fill (issue to be filed at push time).
New gallery subcommand writes a self-contained HTML page with your text rendered as inline SVGs across every font, gradient, and theme (each card captioned with its flags) — a shareable way to explore combos. Roadmap: sigil gallery (issue to be filed at push time).
# Conflicts: # README.md # src/config.rs # src/export.rs # src/main.rs # src/render.rs # tests/cli.rs
Consolidate the v0.3 feature work: bump to 0.3.0 and document all of it in the changelog (color/gradients, typography/layout, output/tooling, and the messaging revamp).
Loop-based invariants (no new deps): every preset samples across the full range in every interp space without panicking and pins its endpoints; and adjust_t always returns a value in [0,1] under reverse/cycle.
Pin byte-exact raw rendering, JSON/SVG/markdown shape, mark determinism, shade-without-color, and a composed-features smoke test — so a rendering refactor can't silently change what users see.
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.
Consolidated v0.3.0 feature release. Integrates eight feature branches into one proven-coexisting tree (35 commits: every feature commit preserved via
--no-ffmerges, plus the release and regression-test work).Highlights
Color & gradients
--from <hex>derives a full gradient from one brand color (Oklab)#hex@pos,--gradient-filepalette import,--bg-gradient(all 5 renderers)radial/conicdirections; 6 new gradients + 3 new themesTypography & layout
--subtitle(logo + tagline),--wrap,--fit,--letter-spacing,--icon,--fill shadeOutput & tooling
-F js|ts|c|cpp|ruby|markdown;--funcfunction formsigil mark(generative logo),sigil gallery(HTML showcase),sigil random,sigil configsigil themeslive previews;cargo binstallsupportMessaging — reframed around "brand your project in seconds" + a simple→elaborate README gallery.
Quality
clippy -D warningsclean; release build clean--from+--subtitle+--fill shade+ radial)Closes #109, #110, #111, #112, #113.
See CHANGELOG.md for the full list.