lib/clacky/ui2.rb
# frozen_string_literal: true # UI2 - MVC-based terminal UI system for Clacky # Provides split-screen interface with scrollable output and fixed input require_relative "ui2/thinking_verbs" require_relative "ui2/progress_indicator" require_relative "ui2/terminal_detector" require_relative "ui2/theme_manager" require_relative "ui2/screen_buffer" require_relative "ui2/layout_manager" require_relative "ui2/view_renderer" require_relative "ui2/ui_controller" require_relative "ui2/components/base_component" require_relative "ui2/components/input_area" require_relative "ui2/components/message_component" require_relative "ui2/components/tool_component" require_relative "ui2/components/common_component" require_relative "ui2/components/welcome_banner" require_relative "ui2/components/modal_component" module Clacky module UI2 # Version of the UI2 system VERSION = "1.0.0" # Quick start: Create a UI controller and run # @param config [Hash] Optional configuration (working_dir, mode, model) # @example # controller = Clacky::UI2::UIController.new # controller.on_input { |input| puts "Got: #{input}" } # controller.start def self.start(config = {}, &block) controller = UIController.new(config) controller.on_input(&block) if block_given? controller.start end end end