All notable changes to StyledConsole will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
This release adds a command-line interface for exploring StyledConsole features and a JSON Schema for IDE autocomplete.
- CLI Tool: New
styledconsolecommand with 6 subcommands:styledconsole demo— Interactive feature showcasestyledconsole palette [name]— List or preview 90 color palettesstyledconsole effects [name]— List or preview 47 effect presetsstyledconsole icons [search]— List or search 200+ iconsstyledconsole render <file>— Render YAML/JSON config filesstyledconsole schema— Get JSON Schema path for IDE configuration
- JSON Schema: Full schema for declarative configs at
styledconsole/schemas/styledconsole.schema.json- Enables IDE autocomplete and validation for YAML/JSON config files
- Supports VS Code, JetBrains, and other schema-aware editors
- Covers all 11 object types: text, frame, banner, table, layout, vertical, horizontal, grid, group, spacer, rule
- Includes shorthand syntax definitions (frame:, banner:, row:, column:, grid:)
- Documents all 32+ effect presets and 9 border styles
- Schema API: New
styledconsole.schemasmodule withget_schema_path()andget_schema()functions - Entry Point:
styledconsolecommand available after installation via[project.scripts] - CLI Tests: 20 new tests covering all CLI functionality
- Updated Getting Started guide with CLI section
- Added CLI Preview Tool section to main README
- Updated docs/README.md with CLI quick start commands
This release focuses on improving the onboarding experience with comprehensive "Golden Path" documentation, new complex examples, and a visual overhaul of the gallery.
- Golden Path Guide (
docs/GETTING_STARTED.md): A comprehensive 30-second to 5-minute guide covering:- First frame creation
- Emojis, colors, and gradients
- Background effects and progress bars
- Building complete dashboards
- New Complex Examples:
enum_showcase.py: Demonstrates all v0.10.2 Enums (Border, Effect, Align, etc.)background_combinations.py: Large dashboards with background gradients and alertsgrid_dashboard.py: 2x2/3-column grids, complete dashboard layouts, cyberpunk themes
- Gallery Updates:
- Added Background Layer Effects section
- Added 90 Curated Color Palettes section
- README Overhaul:
- Added positioning statement: "StyledConsole is to Rich what Tailwind is to CSS"
- Highlighted "Getting Started" link
- Updated Key Features table with Background Effects and Enums
- Documentation:
docs/README.mdnow features a prominent "Start Here" section
-
StrEnum Types for IDE Autocomplete: New enum types provide IDE autocomplete and type safety while maintaining backward compatibility with string values:
Border:SOLID,ROUNDED,DOUBLE,HEAVY,THICK,ROUNDED_THICK,ASCII,MINIMAL,DOTSEffect: 47 preset effects includingFIRE,OCEAN,RAINBOW,CYBERPUNK, etc.Align:LEFT,CENTER,RIGHTDirection:VERTICAL,HORIZONTAL,DIAGONALTarget:CONTENT,BORDER,BOTHLayoutMode:VERTICAL,HORIZONTAL,GRIDExportFormat:HTML,TEXT,PNG,WEBP,GIF
from styledconsole import Console, Border, Effect, Align console = Console() console.frame("Hello", border=Border.ROUNDED, effect=Effect.OCEAN, align=Align.CENTER) # String values still work for backward compatibility console.frame("Hello", border="rounded", effect="ocean", align="center")
-
Background Layer Support for Effects: Gradient effects can now be applied to background colors in addition to foreground text:
from styledconsole import EffectSpec # Foreground gradient (default) effect = EffectSpec.gradient("red", "blue", layer="foreground") # Background gradient effect = EffectSpec.gradient("red", "blue", layer="background")
-
Intelligent Error Messages with Suggestions: Error messages now include "Did you mean?" suggestions using fuzzy matching:
- Border styles:
"rounde"→ Did you mean 'rounded'? - Effect presets:
"rainbo"→ Did you mean 'rainbow'? - Palette names:
"ocea"→ Did you mean 'ocean'? - Object types:
"fram"→ Did you mean 'frame'? - Color names:
"gren"→ Did you mean 'green'? - Alignment:
"middle"→ Did you mean 'center'?
- Border styles:
-
Suggestions Utility Module: New
styledconsole.utils.suggestionsmodule with Levenshtein distance-based fuzzy matching utilities
resolve_effect()now returns 4 values:(position, color, target, layer)instead of 3- Registry base class now uses fuzzy matching for error suggestions
- Unit tests for
presets/layouts.py(15 new tests) - Unit tests for
presets/tables.py(19 new tests)
- Updated project contact email to styledconsole@proton.me
- Test coverage improved from 79% to 81%
This release introduces a complete architectural redesign with four composable API layers, giving developers full control over how they build terminal UIs.
from styledconsole import FrameBuilder, BannerBuilder, TableBuilder, LayoutBuilder
frame = (FrameBuilder()
.title("Dashboard")
.content("Hello World")
.effect("ocean")
.build())from styledconsole import Frame, Banner, Table, Layout, Text, Style, ConsoleObject
frame = Frame(
title="Status",
content=Text("Online", style=Style(color="green")),
border_style="rounded"
)from styledconsole import TerminalRenderer, HTMLRenderer, RenderContext
renderer = TerminalRenderer()
renderer.render(frame, context=RenderContext(width=80))from styledconsole import Declarative, load_dict, load_yaml, load_json, from_template
# From Python dict
ui = load_dict({"type": "frame", "title": "Hello", "content": "World"})
# From YAML/JSON files
ui = load_yaml("config.yaml")
ui = load_json("config.json")
# From Jinja2 templates
ui = from_template("dashboard.j2", context={"user": "Alice"})- Builder Classes:
FrameBuilder,BannerBuilder,TableBuilder,LayoutBuilderwith fluent method chaining - Model Classes:
Frame,Banner,Table,Layout,Text,Style,ConsoleObjectbase class - Renderer Protocol:
TerminalRenderer,HTMLRenderer,RenderContextfor multi-target output - Declarative Facade:
Declarativeclass withload_dict(),load_yaml(),load_json(),from_template()functions - Template System: Jinja2 integration with built-in component macros and filters
- 11 v0.10 Examples: Complete examples demonstrating all four API layers in
10_v010_api/
The existing Console API remains fully supported. The new layers are additive:
# v0.9.x style (still works)
console = Console()
console.frame("Hello", effect="ocean")
# v0.10.0 style (new option)
frame = FrameBuilder().content("Hello").effect("ocean").build()
TerminalRenderer().render(frame)See MIGRATION.md for the complete migration guide.
- 968 tests passing (975 total, 7 Kitty terminal-specific skipped)
- 79.23% code coverage
- Full backward compatibility with v0.9.x API
This release focuses on cleaner integration with the underlying Rich library, fixing duplication and improving visual stability.
- Internal Core Refactoring:
- Theme Integration:
StyledConsolethemes now natively power Rich markup (e.g.,[success]Text[/]). - Color Blending: Replaced custom RGB interpolation with
rich.color.blend_rgbfor more accurate gradients. - Text Styling: Refactored
utils/color.pyto userich.text.Textobjects, improving nested style and multiline support.
- Theme Integration:
- Emoji Support:
- VS16 Fix: Added
utils/rich_compat.pywithpatched_cell_len()to correctly measure emojis in modern terminals (fixing alignment issues). - Sanitization: Standardized emoji fallback logic in
utils/sanitize.py.
- VS16 Fix: Added
- StyledColumns Bug: Fixed an issue where
StyledColumnswould strip color from ASCII fallback icons when emoji support was disabled. - Layout Issues: Fixed "Safey Analysis" frame layout in
emoji_integration_demo.py.
This release expands the effects system with palettes, phase animations, horizontal/grid layouts, and the StyledColumns component.
-
Horizontal & Grid Layouts for
frame_group(): Arrange frames side-by-side or in gridsconsole.frame_group(items, layout="horizontal", gap=2) console.frame_group(items, layout="grid", columns=3, item_width=30) console.frame_group(items, layout="grid", columns="auto", min_columns=2)
columns=parameter: Number of columns or"auto"for terminal-width calculationmin_columns=parameter: Minimum columns when using auto-calculationitem_width=parameter: Width of each item frame in horizontal/grid layouts
-
Palette System (
data/palettes.py): 90 curated color palettes with category filteringfrom styledconsole import PALETTES, get_palette, list_palettes, get_palette_categories # Get palette colors ocean = get_palette("ocean_depths") # {"colors": [...], "categories": [...]} # List palettes by category vibrant = list_palettes("vibrant") # ["fire", "neon", "sunset", ...] pastel = list_palettes("pastel") # ["pastel_candy", "soft_dream", ...] # Create effect from palette console.frame("Content", effect=EffectSpec.from_palette("ocean_depths"))
- Categories: warm, cool, vibrant, muted, pastel, dark, bright, monochrome, rainbow
-
Extended Color Registry (
data/colors.py): 949+ named colors- CSS4 colors (148), Rich colors (251), Extended colors (944 filtered)
- Filtering API to exclude crude/inappropriate names
-
Phase Animation System: Smooth gradient animations with phase cycling
from styledconsole import EffectSpec, cycle_phase, PHASE_INCREMENT_DEFAULT phase = 0.0 for frame in range(30): effect = EffectSpec.rainbow(phase=phase) console.frame("Animated!", effect=effect) phase = cycle_phase(phase) # Increments and wraps at 1.0
phase=parameter onEffectSpec.gradient(),.multi_stop(),.rainbow()cycle_phase()helper for smooth animation loopsPHASE_FULL_CYCLE(1.0) andPHASE_INCREMENT_DEFAULT(0.033) constants.with_phase()method for functional-style updates
-
Neon Rainbow Palette: Cyberpunk-style vivid colors for rainbows
console.frame("NEON", effect=EffectSpec.rainbow(neon=True))
-
StyledColumns (
columns.py): Policy-aware Rich Columns wrapperfrom styledconsole import Console, StyledColumns console = Console() columns = StyledColumns(["Item 1", "Item 2", "Item 3"], padding=(0, 2)) console.print(columns) # Or via Console API console.columns(["A", "B", "C"], equal=True, expand=True)
- Automatic emoji-to-ASCII sanitization when
policy.emoji=False - VS16 emoji width fix for proper column alignment in modern terminals
- Full Rich Columns API compatibility
- Automatic emoji-to-ASCII sanitization when
-
EffectSpec.from_palette(): Create multi-stop gradients from named paletteseffect = EffectSpec.from_palette("fire", direction="horizontal") console.frame("Fire gradient from palette!", effect=effect)
-
Palette Utilities (
utils/palette.py):create_palette_effect(): Quick effect creation from palette namepalette_from_dict(): Import custom palettes from dict format
Console.frame(): Now acceptseffect=parameter alongside legacy gradient paramsConsole.frame_group(): Extended withcolumns=,min_columns=,item_width=parametersRenderingEngine: Refactored with_render_vertical_frame_group()and_render_horizontal_frame_group()private methods
- Added
requests>=2.31.0for palette fetching utilities - Added
beautifulsoup4>=4.12.0for HTML parsing in examples - Added
lxml>=5.0.0for XML processing
- 968 tests passing (975 total, 7 Kitty terminal-specific skipped)
- 79.23% code coverage
- New test file:
test_columns.pyfor StyledColumns
- PyPI Publishing: Version bump to resolve TestPyPI filename reuse issue with v0.9.9.3
Effects system is now fully integrated into the Console API with effect= parameter.
effect=parameter forConsole.frame(): Apply effects directly in frame callsconsole.frame("Hello", effect="fire") console.frame("World", effect=EFFECTS.ocean) console.frame("Custom", effect=EffectSpec.gradient("red", "blue"))
effect=parameter forConsole.banner(): Apply effects to ASCII art bannersconsole.banner("SUCCESS", effect="rainbow_neon") console.banner("ALERT", effect=EFFECTS.fire)
- Public exports:
EFFECTSandEffectSpecnow exported from mainstyledconsolemodule - StyleContext.effect field: New field to hold resolved effect specification
start_color/end_colorinframe(): Useeffect=EffectSpec.gradient(start, end)insteadborder_gradient_start/border_gradient_endinframe(): Useeffect=EffectSpec.gradient(..., target='border')insteadrainbow=Trueinbanner(): Useeffect="rainbow"insteadstart_color/end_colorinbanner(): Useeffect=EffectSpec.gradient(start, end)instead
All deprecated parameters continue to work with deprecation warnings. They will be removed in v1.0.0.
- Kitty Terminal ZWJ Emoji Alignment: Fixed frame alignment issues when using ZWJ (Zero Width Joiner) emoji sequences like 👨💻 (Developer) or 🏳️🌈 (Rainbow Flag) in Kitty terminal
- Kitty renders ZWJ components separately when fonts lack ligature support, resulting in wider visual width than other terminals
visual_width()now correctly calculates component-summed widths (e.g., 👨💻 = 4 cells instead of 2) specifically for Kitty- Other modern terminals (WezTerm, iTerm2, Ghostty, Alacritty) continue to use single-glyph width-2 calculation
- Fixes misalignment in
core/emoji_integration_demo.pyandvalidation/emoji_comparison.py
- Wide Symbol Character Width: Fixed width calculation for wide non-emoji symbols like trigram (☰) in modern terminals
_grapheme_width_modern()now correctly trustswcwidthresults for all characters, not just zero-width- Previously incorrectly calculated trigram (☰ U+2630) as width 1 when it should be width 2
- Fixes frame border misalignment for lines containing wide Unicode symbols
- 968 tests passing (core test suite)
- 31 effect integration tests
- 41 effect system tests
- 80.42% code coverage
- Full backward compatibility maintained
Note: Version 0.9.9.2 was never officially released. Its bug fixes have been integrated into v0.9.9.3.
New declarative effects system with 32 pre-configured presets and extensible architecture.
- EffectSpec (
effects/spec.py): Frozen dataclass for declarative effect definitions- Factory methods:
EffectSpec.gradient(),EffectSpec.multi_stop(),EffectSpec.rainbow() - Immutable with
with_direction(),with_target(),reversed()modifiers
- Factory methods:
- EffectRegistry (
effects/registry.py): Named effect preset catalog- 10 gradient presets: fire, ocean, sunset, forest, aurora, lavender, peach, mint, steel, gold
- 7 rainbow presets: standard, pastel, neon, muted, reverse, horizontal, diagonal
- 6 themed presets: matrix, cyberpunk, retro, vaporwave, dracula, nord_aurora
- 5 semantic presets: success, warning, error, info, neutral
- 4 border-only presets: border_fire, border_ocean, border_rainbow, border_gold
- Effect Resolver (
effects/resolver.py): Bridge between specs and strategiesresolve_effect()converts EffectSpec or preset name to strategy tuple- Direction, color source, and target filter mapping
- MultiStopGradient: 3+ color gradient interpolation with custom stop positions
- EnhancedRainbow: Rainbow with saturation, brightness, and reverse controls
- ReversedColorSource: Wrapper strategy for reversing any color source
- 1028 tests passing (159 new tests for effects system)
- 82.11% code coverage
- All pre-commit hooks passing
Restructured documentation for better PyPI compatibility and added GitHub Sponsors support.
- README.md: Simplified, text-focused README that renders properly on PyPI (no images)
- docs/GALLERY.md: New auto-generated visual showcase with all example images
- GitHub Sponsors: Added GitHub Sponsors to FUNDING.yml and README badges
- Generation System: Updated
scripts/readme/generate.pyto produce both README and GALLERY
- PyPI Rendering: README now renders correctly on PyPI without broken image links
- Version Badges: Updated all version references to 0.9.9.1
Major feature release adding comprehensive image export capabilities, table/layout system, and critical bug fixes.
- Image Export System: Full-featured image export with emoji rendering, font styles, and customizable themes
export_image()method supporting PNG, WebP, and GIF formats- Smart emoji renderer with fallback font support for special characters
- Font loader with automatic font discovery across Linux, macOS, and Windows
- Image theme system with customizable background, text, and border colors
- Automatic image cropping to remove unnecessary padding
- Table System: Declarative table API with gradient support
StyledTableclass with Rich-based renderingGradientTablefor automatic border gradient effects- Support for border styles, colors, and custom formatting
- Layout Presets: Pre-configured layouts for common use cases
- Three-column layout, two-column split, header-content-footer
- JSON data display, statistics dashboard, error report layouts
- Virtual Terminal Mode: Consistent rendering for image/HTML export
- Forces predictable terminal behavior for export consistency
- Patches Rich's cell width calculations for perfect alignment
- README Generation Pipeline: Automated documentation with live examples
scripts/readme/package for generating README from template- Automatic image generation from code examples
- Consistent visual identity across all documentation images
- Console.theme Property: Added missing
@propertydecorator for proper attribute access - Emoji Renderer Alignment: Fixed emoji width calculations to respect Rich's patched
cell_len - Font Loader Complexity: Refactored to reduce cyclomatic complexity from 31 to acceptable levels
- Type Safety: Fixed all mypy type errors with proper annotations and
type: ignorecomments - Code Quality: Fixed ruff lint issues (unpacking syntax, dict lookups, line length)
- Complexity Checks: Added
console.pyandimage_exporter.pyto MI exclusion list (architectural coordinators) - Render Target System: Enhanced with "image" and "html" targets for export-aware rendering
- Terminal Manager: Added virtual mode for consistent export behavior
- ✅ 869 tests passing (all tests including new features)
- ✅ 80.08% code coverage
- ✅ All pre-commit hooks passing (ruff, mypy, complexity checks)
- ✅ Python 3.10-3.14 compatibility verified
- Updated README with accurate test count (869) and coverage (80%)
- Added comprehensive image export documentation
- Included visual examples for all major features
- Updated USER_GUIDE with table and export examples
This is a test release to validate the TestPyPI publication workflow and prepare for the 0.9.9 release. Focus on infrastructure improvements and documentation organization.
- Examples Execution: Examples now use
uv runfrom main repository for correct package context. - Documentation Structure: Simplified public documentation (README, CONTRIBUTING) to focus on user-facing content.
- Version Badge: Updated README version badge to reflect current release.
- Examples Runner: Fixed module import issues by detecting main repository and using
uv run python. - TTY Detection: Added graceful degradation for terminal validation scripts running in non-interactive environments.
- Code Quality: Fixed linting errors (line length, f-string usage, iterable unpacking).
- ✅ All 37 examples passing
- ✅ 943 tests passing (90% coverage)
- ✅ Code quality checks passing (
make qa) - ✅ No TODO/debug statements in codebase
This update introduces a unified Registry pattern for managing styles, icons, and themes, improving extensibility and maintainability.
core/registry.py: GenericRegistrybase class with case-insensitive lookup and attribute-style access.tests/unit/test_registry.py: Comprehensive unit tests for the registry system.- Support Info: Added Ko-fi support badges and section to README.md.
- Repository Funding: Created
.github/FUNDING.ymlfor Ko-fi sponsorship.
- Border Styles: Migrated
styles.pyto useBorderRegistry. - Box Mappings: Migrated
box_mapping.pyto useBoxRegistry. - Icon System: Refactored
IconProviderto useIconRegistrywhile maintaining full backward compatibility. - Theme System: Replaced
THEMESclass withThemeRegistryinstance and restored legacy filters. - Gradient Engine: Consolidated logic into
effects/engine.py(migrated fromcore/gradient_utils.py).
- Icon Alignment: Fixed edge cases where icons would cause slight frame misalignments in certain terminals.
- Theme Filtering: Restored
solid_themes()andgradient_themes()methods in the new registry. - Nested Gradients: Fixed rendering issues with nested gradient frames.
core/gradient_utils.py: All functionality migrated toeffects/engine.pyandutils/color.py.
This patch introduces a StyleContext Context Object to centralize rendering
style parameters, adds defensive validation and filtering, and tightens emoji
validation heuristics for terminal safety.
StyleContext: Immutable dataclass encapsulating frame/style parameters.- Early ZWJ/Skin-tone detection:
validate_emoji()now flags ZWJ and skin-tone sequences as unsafe for general terminal output (still allowed in modern terminals).
- Defensive construction:
FrameGroupContextnow filters captured kwargs toStyleContextfields, preventing TypeErrors when extra args are present. - Stricter validation:
StyleContext.__post_init__now validatesmargintuple length and requires paired gradient fields (start_color/end_color).
- Added unit tests for context validation and group kwarg filtering.
- Full test-suite run: 936 tests passing after fixes.
This release adds automatic detection of modern terminals (Kitty, WezTerm, iTerm2, Ghostty, Alacritty, Windows Terminal) with full Unicode/emoji support.
- Modern terminal detection: Auto-detect terminals (Kitty, WezTerm, iTerm2, Ghostty, Alacritty, Windows Terminal) with correct VS16/ZWJ support.
is_modern_terminal(): New helper function for terminal capability check.TerminalProfile: Enhanced withterminal_nameandmodern_emojifields._grapheme_width_modern(): Correct width calculation for modern terminals.- Environment Overrides:
STYLEDCONSOLE_MODERN_TERMINALandSTYLEDCONSOLE_LEGACY_EMOJIsupport.
visual_width(): Now uses modern width calculation when in modern terminal.emoji_safe: AutomaticallyTruefor modern terminals.- Width calculation: VS16 emojis now correctly width 2 in modern terminals.
This release establishes icons as the primary facade for terminal output,
with EMOJI serving as the underlying data layer.
- Internal Refactoring:
icon_data.pynow usesEMOJI.*references instead of literals. - Documentation Hierarchy: Updated guides to recommend
iconsas the primary API. - Export reordering:
__init__.pyreordered to prioritizeicons. - Example Migration: All 38 example files updated to use
icons.
DRY emoji architecture using emoji package as single source of truth.
emoji_registry.py: New single source of truth for 4000+ emojis.- CLDR Canonical Names: All emoji names updated to follow CLDR standard.
CuratedEmojis: Category-organized name lists for discovery.- Emoji Search:
EMOJI.search()andEMOJI.get()methods.
- Memory Optimization: Added
slots=TruetoIcondataclass.
EmojiConstants: Now triggersDeprecationWarning, useEMOJIdirectly.
Icon Provider with colored ASCII fallback, Runtime Policy for env-aware rendering, and QA standardization.
- Icon Provider: 224 curated icons with automatic colored ASCII fallback.
RenderPolicy: Centralized environment detection (NO_COLOR,TERM=dumb,CI).- Progress Theming: Bar charts and progress indicators now inherit theme colors.
- Makefile Standards: Unified
make qa,make test, andmake hookstargets.
- Policy Integration: propagates through color, box mapping, progress, and animation.
- Animation Fallback: Static print fallback for non-TTY environments.
Introduction of the semantic theme system and multi-color gradient engine.
- Theme Engine: Support for Primary/Secondary/Success/Error semantic mappings.
- Predefined Themes: Monokai, Moonlight, Fire, Sunny, and Oceanic.
- Gradient Frames: Support for
border_gradient_startandborder_gradient_end.
Added support for organized layouts and nested frame groups.
FrameGroupContext: Context manager for consistent layout alignment viaconsole.group().- Width Alignment:
align_widths=Trueflag for uniform inner frames.
Major overhaul of text measurement logic and modularization.
- Visual Width: Consolidated all width logic into
utils/text.py. - Grapheme Splitting: Improved handling of complex Unicode sequences.
- Refactoring: Split
text.pyinto modular components for better maintainability.
Refinement of internal rendering logic and code quality improvements based on comprehensive code review.
- Rendering Logic: Simplified
RenderingEngineAPI; internal cleanup of ANSI state handling. - Type Safety: Improved type hints across
coreandutilsmodules. - Presets: Updated
Dashboardpreset for better visual stability on Windows terminals.
- Memory Leak: Fixed minor memory leak in
ExportManagerwhen handling large HTML outputs. - Color Parsing: Corrected rounding errors in RGB-to-Hex conversion.
Formalized project structure and documentation suite.
- Developer & User Guides: Initial comprehensive documentation suite in
docs/. CONTRIBUTING.md: Contribution guidelines.DOCUMENTATION_POLICY.md: Rules for maintainable documentation.
Initial support for animated terminal output and core architecture cleanup.
- Animation Engine: Frame-based animation with frame rate control.
- Rainbow Cycling: Built-in cycling gradient effects.
- Border Styles: Added
ROUNDED_THICKandTHICKborder styles.
- 🚨 BREAKING CHANGE: Removed deprecated
FrameRendererandFrameclasses. UseConsole.frame()instead. - Refactor: Significant reduction in cyclomatic complexity across
console.py.
A major architectural shift to use rich natively for rendering, improving stability and compatibility.
- Rich Integration: Replaced custom rendering logic with native
rich.panel.Panel. - Layouts: Updated
LayoutComposerfor full Rich compatibility. - Text Alignment: Leveraged Rich's
Text.align()API for perfect visual centering.
- ANSI Wrapping: Resolved critical ANSI wrapping bugs by leveraging Rich's internal layout engine.
- Alignment: Fixed visual misalignment in
THICKborder style.
First official release of StyledConsole - production ready!
- High-Level Console API: Main
Consoleclass withframe,banner,text, andrulemethods. - Gradient Effects:
gradient_frame(),diagonal_gradient_frame(), andrainbow_frame(). - CSS4 Color Support: Full support for 148 named CSS4 colors.
- Banner System: Integration with
pyfigletfor 120+ ASCII fonts with gradient support. - Layout Management: Support for stacking and side-by-side frame positioning.
- Terminal Detection: Auto-detection of color depth and emoji safety.
- Export Manager: Support for exporting terminal output to HTML and plain text.
- Color Migration: Migrated all internal examples from hex codes to CSS4 names.
- Emoji Heuristics: Initial implementation of "Tier 1" safe emoji list.