ui

package
v0.43.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 25, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// 基本色
	Cyan    = color.New(color.FgCyan)    // 情報・ヘッダー
	Yellow  = color.New(color.FgYellow)  // 警告・プロンプト
	Green   = color.New(color.FgGreen)   // 成功・追加
	Red     = color.New(color.FgRed)     // エラー・削除
	White   = color.New(color.FgWhite)   // 通常テキスト
	Blue    = color.New(color.FgBlue)    // リンク・参照
	Magenta = color.New(color.FgMagenta) // 特殊・ハイライト

	// Bold variants
	BoldCyan   = color.New(color.FgCyan, color.Bold)
	BoldYellow = color.New(color.FgYellow, color.Bold)
	BoldGreen  = color.New(color.FgGreen, color.Bold)
	BoldRed    = color.New(color.FgRed, color.Bold)
	BoldWhite  = color.New(color.FgWhite, color.Bold)

	// 特殊用途
	Dim   = color.New(color.Faint) // 薄い表示(コンテキスト行など)
	Bold  = color.New(color.Bold)  // 太字
	Faint = color.New(color.Faint) // 薄い表示
)

共通色定義 全パッケージで一貫した色使いを実現するための定義

View Source
var (
	Info    = Cyan     // 情報メッセージ
	Success = Green    // 成功メッセージ
	Warning = Yellow   // 警告メッセージ
	Error   = Red      // エラーメッセージ
	Prompt  = Yellow   // ユーザー入力プロンプト
	Header  = BoldCyan // セクションヘッダー
)

用途別エイリアス(セマンティックカラー)

View Source
var DefaultBoxStyle = BoxStyle{
	TopLeft:     "┌",
	TopRight:    "┐",
	BottomLeft:  "└",
	BottomRight: "┘",
	Horizontal:  "─",
	Vertical:    "│",
	LeftT:       "├",
	RightT:      "┤",
}

DefaultBoxStyle は標準のボックススタイル

View Source
var DefaultDiffOptions = DiffOptions{
	ContextLines:  3,
	ShowLineNums:  true,
	InlineMode:    true,
	MaxTotalLines: 50,
}

DefaultDiffOptions はデフォルトの差分表示オプション

Functions

func ConfirmPromptBox added in v0.31.0

func ConfirmPromptBox(message string)

ConfirmPromptBox は確認プロンプト用のボックスを表示

func Debug added in v0.43.0

func Debug(format string, args ...interface{})

Debug logs a debug message (only when XELYON_DEBUG=1)

func ErrorLog added in v0.43.0

func ErrorLog(format string, args ...interface{})

ErrorLog logs an error message

func ErrorLogWithoutEmoji added in v0.43.0

func ErrorLogWithoutEmoji(format string, args ...interface{})

ErrorLogWithoutEmoji logs an error message without prefix

func Fatal added in v0.43.0

func Fatal(format string, args ...interface{})

Fatal logs an error message and exits with code 1

func Fatalf added in v0.43.0

func Fatalf(format string, args ...interface{})

Fatalf logs an error message to stderr and exits with code 1

func InfoLog added in v0.43.0

func InfoLog(format string, args ...interface{})

InfoLog logs an info message

func IsMultilineMarker added in v0.29.0

func IsMultilineMarker(input string) bool

IsMultilineMarker checks if the input is a multiline marker

func SetLogLevel added in v0.43.0

func SetLogLevel(level LogLevel)

SetLogLevel sets the current logging level

func ShowColoredDiff added in v0.31.0

func ShowColoredDiff(oldStr, newStr string, opts *DiffOptions)

ShowColoredDiff は色付きの差分を表示 oldStr: 変更前のテキスト newStr: 変更後のテキスト opts: 表示オプション(nilならデフォルト使用)

func ShowUnifiedDiff added in v0.31.0

func ShowUnifiedDiff(diffOutput string)

ShowUnifiedDiff はUnified Diff形式で色付き表示

func SimpleDivider added in v0.31.0

func SimpleDivider(width int)

SimpleDivider はシンプルな区切り線を表示

func SuccessLog added in v0.43.0

func SuccessLog(format string, args ...interface{})

SuccessLog logs a success message

func SuccessLogWithEmoji added in v0.43.0

func SuccessLogWithEmoji(emoji, format string, args ...interface{})

SuccessLogWithEmoji logs a success message with custom emoji

func ToolConfirmBox added in v0.31.0

func ToolConfirmBox(toolName string, details []string)

ToolConfirmBox はツール確認用のボックスを表示

func TrimBracketedPasteMarkers added in v0.29.0

func TrimBracketedPasteMarkers(input string) string

TrimBracketedPasteMarkers removes bracketed paste markers from input (both forms)

func Warn added in v0.43.0

func Warn(format string, args ...interface{})

Warn logs a warning message

func WarnWithoutEmoji added in v0.43.0

func WarnWithoutEmoji(format string, args ...interface{})

WarnWithoutEmoji logs a warning message without prefix

Types

type BoxStyle added in v0.31.0

type BoxStyle struct {
	TopLeft     string
	TopRight    string
	BottomLeft  string
	BottomRight string
	Horizontal  string
	Vertical    string
	LeftT       string
	RightT      string
}

BoxStyle はボックスの罫線スタイル

type DiffOptions added in v0.31.0

type DiffOptions struct {
	ContextLines  int  // 差分前後の表示行数
	ShowLineNums  bool // 行番号を表示するか
	InlineMode    bool // インラインモード(追加・削除を連続表示)
	MaxTotalLines int  // 最大表示行数(0=無制限)
}

DiffOptions は差分表示のオプション

type LogLevel added in v0.43.0

type LogLevel int

LogLevel represents the severity of a log message

const (
	LogDebug LogLevel = iota
	LogInfo
	LogWarn
	LogError
)

func GetLogLevel added in v0.43.0

func GetLogLevel() LogLevel

GetLogLevel returns the current logging level

type MultiProgress added in v0.43.0

type MultiProgress struct {
	// contains filtered or unexported fields
}

MultiProgress は複数タスクの進捗を管理・表示

func NewMultiProgress added in v0.43.0

func NewMultiProgress() *MultiProgress

NewMultiProgress は新しいMultiProgressを作成

func NewMultiProgressWithWriter added in v0.43.0

func NewMultiProgressWithWriter(w io.Writer) *MultiProgress

NewMultiProgressWithWriter は出力先を指定してMultiProgressを作成

func (*MultiProgress) AddTask added in v0.43.0

func (mp *MultiProgress) AddTask(id int, message string)

AddTask はタスクを追加

func (*MultiProgress) Clear added in v0.43.0

func (mp *MultiProgress) Clear()

Clear は全タスクをクリア

func (*MultiProgress) Done added in v0.43.0

func (mp *MultiProgress) Done(id int)

Done はタスクを完了にマーク

func (*MultiProgress) Fail added in v0.43.0

func (mp *MultiProgress) Fail(id int, err string)

Fail はタスクをエラーにマーク

func (*MultiProgress) GetTask added in v0.43.0

func (mp *MultiProgress) GetTask(id int) *Task

GetTask はIDでタスクを取得

func (*MultiProgress) IsAllDone added in v0.43.0

func (mp *MultiProgress) IsAllDone() bool

IsAllDone は全タスクが完了したかチェック

func (*MultiProgress) Render added in v0.43.0

func (mp *MultiProgress) Render()

Render は全タスクの状態を表示

func (*MultiProgress) Start added in v0.43.0

func (mp *MultiProgress) Start(id int)

Start はタスクを実行中にマーク

func (*MultiProgress) StartRendering added in v0.43.0

func (mp *MultiProgress) StartRendering()

StartRendering はバックグラウンドで定期的に再描画を開始

func (*MultiProgress) StopRendering added in v0.43.0

func (mp *MultiProgress) StopRendering()

StopRendering は再描画を停止し、最終状態を表示

type MultilineReader added in v0.29.0

type MultilineReader struct {
	// contains filtered or unexported fields
}

MultilineReader handles multiline input with bracketed paste mode and ``` markers

func NewMultilineReader added in v0.29.0

func NewMultilineReader(r io.Reader) *MultilineReader

NewMultilineReader creates a new multiline reader

func (*MultilineReader) DisableBracketedPaste added in v0.29.0

func (m *MultilineReader) DisableBracketedPaste()

DisableBracketedPaste is a no-op (kept for API compatibility)

func (*MultilineReader) EnableBracketedPaste added in v0.29.0

func (m *MultilineReader) EnableBracketedPaste()

EnableBracketedPaste is a no-op (kept for API compatibility) Note: We don't enable bracketed paste mode because some terminals (WSL/Ubuntu) display the escape sequences as literal text. Instead, we just strip markers.

func (*MultilineReader) FlushInput added in v0.31.0

func (m *MultilineReader) FlushInput()

FlushInput discards any buffered input data This should be called after AI output completes to ignore keypresses during output

func (*MultilineReader) ReadInput added in v0.29.0

func (m *MultilineReader) ReadInput(prompt string) (string, error)

ReadInput reads user input, supporting: 1. ``` markers for explicit multiline mode 2. Single line input (default) All bracketed paste markers are automatically stripped from input

func (*MultilineReader) Reader added in v0.31.0

func (m *MultilineReader) Reader() *bufio.Reader

Reader returns the underlying bufio.Reader for sharing with other input handlers

type Pager

type Pager struct {
	// contains filtered or unexported fields
}

Pager は長い出力をページング表示

func NewPager

func NewPager() *Pager

NewPager は新しいPagerを作成

func (*Pager) Display

func (p *Pager) Display(content string)

Display はコンテンツをページング表示

type PasteMode added in v0.31.0

type PasteMode struct {
	// contains filtered or unexported fields
}

PasteMode captures multiline input for environments where bracketed paste mode is unreliable. It is also reusable from other input contexts (e.g., comment input during confirmations).

End conditions: - empty line x2 - "END" or "/end" - Ctrl+D (EOF)

Cancel: - "/cancel" or "/c" (content is discarded)

Limits: - max lines / max bytes - idle timeout

Note: This does NOT read from the OS clipboard. It is an interactive capture mode.

func NewPasteMode added in v0.31.0

func NewPasteMode(cfg config.PasteConfig) *PasteMode

func (*PasteMode) Capture added in v0.31.0

func (p *PasteMode) Capture(in io.Reader, out io.Writer) (content string, cancelled bool, err error)

Capture reads multiline input from in and writes prompts/help to out. Returns captured content, cancelled=true when user cancelled, and error when I/O fails. Deprecated: Use CaptureWithReader for better buffer sharing.

func (*PasteMode) CaptureWithReader added in v0.31.0

func (p *PasteMode) CaptureWithReader(reader *bufio.Reader, out io.Writer) (content string, cancelled bool, err error)

CaptureWithReader reads multiline input using an existing bufio.Reader. This avoids buffer conflicts when sharing stdin with other readers. Returns captured content, cancelled=true when user cancelled, and error when I/O fails.

type Progress added in v0.43.0

type Progress struct {
	// contains filtered or unexported fields
}

Progress はプログレスバーを表示

func NewProgress added in v0.43.0

func NewProgress(total int, message string) *Progress

NewProgress は新しいProgressを作成 total: 全体の数(0 の場合は不確定モード) message: 表示するメッセージ

func NewProgressWithWriter added in v0.43.0

func NewProgressWithWriter(total int, message string, w io.Writer) *Progress

NewProgressWithWriter は出力先を指定してProgressを作成

func (*Progress) Complete added in v0.43.0

func (p *Progress) Complete()

Complete はプログレスバーを100%にして停止

func (*Progress) GetCurrent added in v0.43.0

func (p *Progress) GetCurrent() int

GetCurrent は現在の進捗を取得

func (*Progress) Increment added in v0.43.0

func (p *Progress) Increment()

Increment は進捗を1増加

func (*Progress) SetMessage added in v0.43.0

func (p *Progress) SetMessage(message string)

SetMessage はメッセージを更新

func (*Progress) SetTotal added in v0.43.0

func (p *Progress) SetTotal(total int)

SetTotal は総数を更新

func (*Progress) Start added in v0.43.0

func (p *Progress) Start()

Start はプログレスバーの表示を開始

func (*Progress) Stop added in v0.43.0

func (p *Progress) Stop()

Stop はプログレスバーを停止して行をクリア

func (*Progress) Update added in v0.43.0

func (p *Progress) Update(current int)

Update は現在の進捗を設定

type Spinner

type Spinner struct {
	// contains filtered or unexported fields
}

Spinner はターミナルでアニメーションを表示

func NewSpinner

func NewSpinner() *Spinner

NewSpinner は新しいSpinnerを作成

func NewSpinnerWithWriter added in v0.31.0

func NewSpinnerWithWriter(w io.Writer) *Spinner

NewSpinnerWithWriter は出力先を指定してSpinnerを作成 run_test などで stdout 出力(コマンド結果)と混ざらないよう、stderr を指定する用途を想定。

func (*Spinner) ClearStatus added in v0.43.0

func (s *Spinner) ClearStatus()

ClearStatus はステータスメッセージをクリア

func (*Spinner) GetStatus added in v0.43.0

func (s *Spinner) GetStatus() string

GetStatus は現在のステータスメッセージを取得

func (*Spinner) SetStatus added in v0.43.0

func (s *Spinner) SetStatus(status string)

SetStatus はスピナーに追加のステータスメッセージを設定 例: "⠋ Thinking (5s) - Analyzing main.go"

func (*Spinner) Start

func (s *Spinner) Start(message string)

Start はスピナーアニメーションを開始

func (*Spinner) Stop

func (s *Spinner) Stop()

Stop はスピナーを停止して行をクリア

type Task added in v0.43.0

type Task struct {
	ID        int
	Message   string
	Status    TaskStatus
	StartTime time.Time
	EndTime   time.Time
	Error     string
}

Task は個別のタスク情報を保持

type TaskStatus added in v0.43.0

type TaskStatus string

TaskStatus はタスクの状態を表す

const (
	TaskPending TaskStatus = "pending"
	TaskRunning TaskStatus = "running"
	TaskDone    TaskStatus = "done"
	TaskError   TaskStatus = "error"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL