From 056401d20a197285842d415bfc7f27460a93eebf Mon Sep 17 00:00:00 2001 From: Lixen Wraith Date: Tue, 21 Jul 2026 05:13:25 -0400 Subject: [PATCH] v0.1.3 adapters for service and 256 color removed --- rgb_256.go | 54 -------------------- service.go | 146 ----------------------------------------------------- 2 files changed, 200 deletions(-) delete mode 100644 rgb_256.go delete mode 100644 service.go diff --git a/rgb_256.go b/rgb_256.go deleted file mode 100644 index a595767..0000000 --- a/rgb_256.go +++ /dev/null @@ -1,54 +0,0 @@ -package terminal - -import "github.com/lixenwraith/color" - -// Generic xterm 256-color constants proxied to the central color package -// to maintain backwards compatibility for the terminal package. - -const ( - P256DeepNavy = color.P256DeepNavy - P256DarkBlue = color.P256DarkBlue - P256SteelBlue = color.P256SteelBlue - P256LightBlue = color.P256LightBlue - P256DeepTeal = color.P256DeepTeal - P256Teal = color.P256Teal - P256Green = color.P256Green - P256Cyan = color.P256Cyan - P256LightCyan = color.P256LightCyan - P256CobaltBlue = color.P256CobaltBlue - P256DarkPurpleBlue = color.P256DarkPurpleBlue - P256Indigo = color.P256Indigo - P256Purple = color.P256Purple - P256Violet = color.P256Violet - P256MediumPurple = color.P256MediumPurple - P256Orchid = color.P256Orchid - P256YellowGreen = color.P256YellowGreen - P256Maroon = color.P256Maroon - P256DarkCrimson = color.P256DarkCrimson - P256Crimson = color.P256Crimson - P256Red = color.P256Red - P256Rose = color.P256Rose - P256RedOrange = color.P256RedOrange - P256Orange = color.P256Orange - P256Amber = color.P256Amber - P256Gold = color.P256Gold - P256Yellow = color.P256Yellow - P256DarkAmber = color.P256DarkAmber - P256Gray = color.P256Gray -) - -// Cube256 returns the xterm 256-palette index for an RGB cube coordinate. -func Cube256(r, g, b uint8) uint8 { - return color.Cube256(r, g, b) -} - -// CubeRGB256 returns the (r, g, b) cube coordinates for a 256-palette color cube index. -func CubeRGB256(index uint8) (r, g, b uint8) { - return color.CubeRGB256(index) -} - -// Gray256 returns the xterm 256-palette index for a grayscale step. -func Gray256(step uint8) uint8 { - return color.Gray256(step) -} - diff --git a/service.go b/service.go deleted file mode 100644 index 2796ce7..0000000 --- a/service.go +++ /dev/null @@ -1,146 +0,0 @@ -package terminal - -import ( - "fmt" - "os" - "runtime/debug" - "sync" -) - -// TerminalService manages terminal lifecycle and input polling -type TerminalService struct { - term Terminal - colorMode ColorMode - eventCh chan Event - stopCh chan struct{} - doneCh chan struct{} - mu sync.Mutex - running bool -} - -// NewService creates a new terminal service -func NewService() *TerminalService { - return &TerminalService{ - eventCh: make(chan Event, 256), - stopCh: make(chan struct{}), - doneCh: make(chan struct{}), - } -} - -// Name implements Service -func (s *TerminalService) Name() string { - return "terminal" -} - -// Dependencies implements Service -func (s *TerminalService) Dependencies() []string { - return nil -} - -// Init implements Service -// args[0]: ColorMode (optional, defaults to DetectColorMode()) -func (s *TerminalService) Init(args ...any) error { - s.colorMode = DetectColorMode() - if len(args) > 0 { - if cm, ok := args[0].(ColorMode); ok { - s.colorMode = cm - } - } - - s.term = New(s.colorMode) - if err := s.term.Init(); err != nil { - return fmt.Errorf("terminal init: %w", err) - } - - // Enable mouse click reporting - if err := s.term.SetMouseMode(MouseModeClick); err != nil { - // No-op for mouse error, continue - } - - return nil -} - -// Start implements Service - launches input polling goroutine -func (s *TerminalService) Start() error { - s.mu.Lock() - if s.running { - s.mu.Unlock() - return nil - } - s.running = true - s.mu.Unlock() - - go s.pollLoop() - return nil -} - -// pollLoop reads input events until stop signal -func (s *TerminalService) pollLoop() { - defer close(s.doneCh) - - defer func() { - if r := recover(); r != nil { - EmergencyReset(os.Stdout) - os.Stdout.Sync() - os.Stderr.Sync() - fmt.Fprintf(os.Stderr, "\r\n\x1b[31mTERMINAL POLL CRASHED: %v\x1b[0m\r\n", r) - fmt.Fprintf(os.Stderr, "Stack Trace:\r\n%s\r\n", debug.Stack()) - os.Stderr.Sync() - os.Exit(1) - } - }() - - for { - select { - case <-s.stopCh: - return - default: - } - - ev := s.term.PollEvent() - if ev.Type == EventClosed || ev.Type == EventError { - return - } - - select { - case s.eventCh <- ev: - case <-s.stopCh: - return - } - } -} - -// Stop implements Service - signals stop and restores terminal -func (s *TerminalService) Stop() error { - s.mu.Lock() - if !s.running { - s.mu.Unlock() - return nil - } - s.running = false - s.mu.Unlock() - - close(s.stopCh) - - // Post synthetic close event to unblock PollEvent - if s.term != nil { - s.term.PostEvent(Event{Type: EventClosed}) - } - - <-s.doneCh - - if s.term != nil { - s.term.Fini() - } - return nil -} - -// Terminal returns the wrapped terminal instance -func (s *TerminalService) Terminal() Terminal { - return s.term -} - -// Events returns the input event channel -func (s *TerminalService) Events() <-chan Event { - return s.eventCh -} \ No newline at end of file