Skip to content

feat: Integrate Noora terminal UI design system - #46

Merged
alexey1312 merged 9 commits into
mainfrom
alexey1312/integrate-noora-terminal-ui
Feb 3, 2026
Merged

feat: Integrate Noora terminal UI design system#46
alexey1312 merged 9 commits into
mainfrom
alexey1312/integrate-noora-terminal-ui

Conversation

@alexey1312

Copy link
Copy Markdown
Collaborator

Description

Migrate TerminalUI to use Noora semantic formatting for consistent terminal output styling across the CLI.

  • Add NooraUI wrapper with progress, spinner, and formatting APIs
  • Create ExFigErrorFormatter and ExFigWarningFormatter for custom styling
  • Update TerminalUI to delegate formatting to Noora
  • Add comprehensive tests for new formatters
  • Document NooraUI patterns in terminal-ui.md

Changes

Component Change
NooraUI.swift New wrapper for Noora progress and formatting APIs
ExFigErrorFormatter Custom error formatting with Noora styles
ExFigWarningFormatter Custom warning formatting with Noora styles
TerminalUI Simplified to delegate to Noora
terminal-ui.md Updated docs with NooraUI convenience methods

alexey1312 and others added 8 commits February 3, 2026 18:43
Phase 1 of Noora integration (P0):
- Add NooraUI convenience methods for success/error/warning/info/debug
- Migrate TerminalUI.info/success/warning/error/debug to use NooraUI
- Add formatAsTerminalText() to ExFigWarningFormatter and ExFigErrorFormatter
- Add comprehensive NooraUI tests (16 new tests)
- Add TerminalText API tests for formatters

This replaces direct Rainbow color calls with semantic Noora components
(.success, .danger, .accent, .primary, .muted) for consistent theming.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add documentation for new NooraUI methods:
- formatSuccess/Error/Warning/Info/Debug
- formatMultilineError/Warning
- Decision matrix for Noora vs custom components

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add NooraUI.progressBarStep() wrapper for percentage-based progress
- Add NooraUI.progressStep() wrapper for spinner with dynamic messages
- Document decision matrix: when to use Noora vs custom components
- Add migration guide: Rainbow to Noora for future formatters
- Keep custom Spinner/ProgressBar for batch mode integration (80+ call sites)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
All tasks completed:
- Phase 1: Semantic text formatting with Noora TerminalText
- Phase 2: Progress wrappers (progressBarStep, progressStep)
- Documentation: decision matrix, migration guide

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@alexey1312 alexey1312 changed the title Integrate Noora terminal UI design system feat: Integrate Noora terminal UI design system Feb 3, 2026
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello @alexey1312, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly refactors the terminal user interface by integrating the Noora design system. The primary goal is to achieve a more consistent, semantic, and maintainable approach to CLI output styling. This involves introducing a NooraUI adapter to centralize formatting logic, updating existing error and warning formatters to produce semantic TerminalText, and modifying the TerminalUI facade to delegate its message formatting to the new NooraUI layer. While core animation components like spinners and progress bars retain their custom implementations for specific UX benefits, the overall text output now benefits from Noora's structured approach, laying the groundwork for future UI enhancements and easier theming.

Highlights

  • Noora Integration: The Noora terminal UI design system has been integrated to provide semantic and consistent styling for CLI output.
  • NooraUI Adapter: A new NooraUI wrapper has been introduced, offering convenience methods for common formatting patterns (success, error, warning, info, debug) and new standalone progress bar and spinner functionalities.
  • Formatter Migration: ExFigErrorFormatter and ExFigWarningFormatter have been updated to leverage Noora's TerminalText for semantic error and warning messages, improving consistency and maintainability.
  • TerminalUI Delegation: The core TerminalUI methods now delegate their formatting responsibilities to NooraUI, streamlining the output logic and centralizing styling.
  • Documentation & Migration Guide: Comprehensive documentation has been added, including a detailed design document, a proposal, updated terminal UI rules, and a migration guide for transitioning from the Rainbow library to Noora.
Changelog
  • .claude/rules/terminal-ui.md
    • Updated documentation to introduce the Noora design system, detail NooraUI patterns, and provide a migration guide from Rainbow to Noora for terminal text formatting.
  • CLAUDE.md
    • Modified the dependencies table to reflect the addition of Noora and swift-yyjson, the removal of toon-swift, and an update to swift-log.
  • Package.resolved
    • Updated dependency versions and hashes, including the addition of Noora and tuist/path, and the removal of toon-swift.
  • Package.swift
    • Replaced the toon-swift dependency with tuist/Noora.
  • Sources/ExFig/TerminalUI/ExFigErrorFormatter.swift
    • Added Noora import and new formatAsTerminalText methods to format errors semantically using TerminalText.
  • Sources/ExFig/TerminalUI/ExFigWarningFormatter.swift
    • Added Noora import and a new formatAsTerminalText method to format warnings semantically using TerminalText.
  • Sources/ExFig/TerminalUI/NooraUI.swift
    • Introduced a new file defining the NooraUI enum, which acts as an adapter for the Noora library, providing static methods for semantic text formatting and standalone progress indicators.
  • Sources/ExFig/TerminalUI/TerminalUI.swift
    • Refactored info, success, warning, error, and debug methods to utilize NooraUI for consistent semantic formatting, simplifying their internal logic.
  • Sources/ExFig/TerminalUI/WarningFormatter.swift
    • Removed the ToonFormat import, indicating a shift away from its usage.
  • Tests/ExFigTests/TerminalUI/ExFigErrorFormatterTests.swift
    • Added new test cases to verify the correct semantic formatting of errors using the formatAsTerminalText methods and NooraUI.
  • Tests/ExFigTests/TerminalUI/ExFigWarningFormatterTests.swift
    • Added new test cases to ensure warnings are correctly formatted into TerminalText via formatAsTerminalText and NooraUI.
  • Tests/ExFigTests/TerminalUI/NooraUITests.swift
    • Introduced a new test file dedicated to validating the functionality and output of the NooraUI adapter's convenience and raw formatting methods.
  • openspec/changes/archive/2026-02-03-integrate-noora-terminal-ui/design.md
    • Added a detailed design document outlining the architectural changes, component mapping, trade-offs, and a phased migration strategy for integrating Noora.
  • openspec/changes/archive/2026-02-03-integrate-noora-terminal-ui/proposal.md
    • Added a proposal document explaining the motivation, scope, design decisions, non-goals, risks, and success criteria for the Noora integration.
  • openspec/changes/archive/2026-02-03-integrate-noora-terminal-ui/specs/terminal-ui/spec.md
    • Added a specification document detailing new and modified requirements for the NooraUI adapter, TerminalUI integration, and formatter behavior.
  • openspec/changes/archive/2026-02-03-integrate-noora-terminal-ui/tasks.md
    • Added a task list documenting the completed steps for semantic text formatting, progress component evaluation, validation, and documentation.
Activity
  • All planned tasks for integrating the Noora terminal UI design system have been completed.
  • This includes implementing semantic text formatting, evaluating and integrating new progress components where appropriate, and thoroughly updating documentation and tests.
  • The integration followed a phased approach, focusing first on semantic text formatting and then on progress components, ensuring a smooth transition and comprehensive coverage.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request successfully integrates the Noora design system for semantic terminal UI, which is a great step towards standardizing terminal output. The refactoring of TerminalUI and its formatters to use the new NooraUI wrapper simplifies the codebase and improves maintainability by centralizing formatting logic. The comprehensive documentation and tests for the new components are excellent.

I have identified a couple of areas for improvement: a bug in how multi-line warnings are constructed in ExFigWarningFormatter and a minor inconsistency in the dependency documentation.

Comment thread Sources/ExFig/TerminalUI/ExFigWarningFormatter.swift Outdated
Comment thread CLAUDE.md Outdated
@alexey1312
alexey1312 merged commit 01b1e0f into main Feb 3, 2026
1 check passed
@alexey1312
alexey1312 deleted the alexey1312/integrate-noora-terminal-ui branch February 3, 2026 14:29
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