Skip to content

Feat/emoji support#89

Open
untcha wants to merge 3 commits intostefanlogue:mainfrom
untcha:feat/emoji-support
Open

Feat/emoji support#89
untcha wants to merge 3 commits intostefanlogue:mainfrom
untcha:feat/emoji-support

Conversation

@untcha
Copy link
Copy Markdown

@untcha untcha commented Feb 1, 2026

✨ Add Emoji Support to Meteor

🎯 Overview

This PR introduces comprehensive emoji support to Meteor, allowing users to enhance their conventional commit workflows with visual flair while maintaining full backward compatibility with existing configurations.

✨ What's New

Core Features

  • 🎨 Emoji Configuration: Add emojis to commit types through a new emoji field in prefix configurations
  • 🔧 Toggle Control: Global useEmojis flag to enable/disable emoji display
  • 🔄 Backward Compatibility: Existing configurations work unchanged (emojis are optional and disabled by default)
  • 📐 Dynamic Formatting: Enhanced visual alignment with lipgloss-powered column formatting

Configuration Example

{
  "useEmojis": true,
  "prefixes": [
    { "type": "feat", "description": "a new feature", "emoji": "" },
    { "type": "fix", "description": "a bug fix", "emoji": "🐛" },
    { "type": "docs", "description": "documentation changes", "emoji": "📚" }
  ]
}

Visual Enhancement

  • When useEmojis is true: Options display as "feat ✨ - a new feature"
  • When useEmojis is false: Traditional display without emojis
  • Intelligent column width measurement for perfect alignment

🚀 Implementation Highlights

Performance Optimizations

  • Single-pass width measurement with measureColumnWidths function
  • Centralized style creation using createColumnStyles for consistency
  • Unified option building through buildPrefixOption function
  • Reduced duplicate calculations for better performance

Code Quality Improvements

  • Enhanced code maintainability through structural refactoring
  • Comprehensive test coverage for new functionality
  • Dynamic width adjustment supporting optional emoji integration
  • Clean separation of concerns between emoji logic and core functionality

🔧 Technical Changes

Modified Files

  • README.md: Added emoji configuration documentation and examples
  • config.go: Added UseEmojis field to configuration struct
  • pkg/config/config.go: Enhanced default configuration handling
  • pkg/config/prefix.go: Major refactor for emoji support and formatting
  • pkg/config/prefix_test.go: Comprehensive test suite additions

Key Functions

  • OptionsWithEmojis(): Optimized emoji-aware option rendering
  • measureColumnWidths(): Efficient column width calculation
  • createColumnStyles(): Centralized styling for consistent presentation
  • buildPrefixOption(): Unified prefix option construction

🎭 User Experience

This enhancement makes commit type selection more visually appealing and intuitive while preserving the clean, professional experience users expect from Meteor. The emoji integration is:

  • Optional: Disabled by default to maintain existing workflows
  • Configurable: Full control over which emojis to use
  • Consistent: Professional alignment and formatting
  • Performant: Optimized rendering with minimal overhead

🧪 Testing

  • ✅ Comprehensive unit tests for all emoji functionality
  • ✅ Backward compatibility validation
  • ✅ Performance benchmarking for formatting operations
  • ✅ Visual alignment testing across different terminal widths

This PR transforms Meteor's user interface while respecting existing workflows, making conventional commits more engaging and visually distinctive! 🚀

untcha added 3 commits October 8, 2025 10:42
The emoji feature provides: - **Separate
emoji configuration**: Define emojis as
a separate field in your prefix
configuration - **Optional emoji
usage**: Control whether emojis are
displayed using the `useEmojis` flag -
**Backward compatibility**: Existing
configurations continue to work without
changes
Refactored the prefix options by
introducing dynamic formatting of
descriptions using lipgloss for better
visual alignment. The default prefix
options are now more flexible and
support dynamic emoji column sizing,
ensuring consistent presentation in
different contexts. Added comprehensive
test cases to ensure correctness and
stability of the modified functionality.
Refactored the `OptionsWithEmojis`
function within `prefix.go` to optimize
column width measurement and emoji
alignment. Implemented single-pass width
measurement with `measureColumnWidths`
and centralized style creation using
`createColumnStyles`. This update
ensures efficient processing by reducing
duplicate calculations and enhancing the
readability of the code. Each prefix now
uses a unified option-building function
`buildPrefixOption` to render prefix
options, maintaining dynamic width
adjustment and supporting optional emoji
integration. Improved code
maintainability and performance with
these structural adjustments.
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.

1 participant