- 标题自定义编辑:HISTORY 详情按 e 编辑标题,UserTitle 持久化到缓存且最高优先级 - AI 摘要质量修复:困惑回复检测词表收紧,消息提取过滤噪音,修复 JSON 包裹困惑回复漏网 - 数据维护命令:--fix-titles 清理低质量摘要,--regen-summaries 并发生成 - 修复代码审查 9 个问题:退格 UTF-8 损坏、中文输入、flush 调度、误杀合法摘要、 按键全局拦截、UserTitle 未同步窗口标题、wt 启动回落、cmd 注入防护、前缀误隐藏会话 - 启动链 wt.exe 回退与 cmd start 标题转义 - gofmt 规范化,新增 launch_test.go
75 lines
3.4 KiB
Go
75 lines
3.4 KiB
Go
package style
|
|
|
|
import (
|
|
"charm.land/lipgloss/v2"
|
|
)
|
|
|
|
// ── palette: cool gray + single accent (teal) ──
|
|
var (
|
|
BgDark = lipgloss.Color("#1a1b26") // deep navy
|
|
BgPanel = lipgloss.Color("#292e42") // panel bg / borders
|
|
Dim = lipgloss.Color("#565f89") // muted text
|
|
Fg = lipgloss.Color("#a9b1d6") // normal text
|
|
Bright = lipgloss.Color("#c0caf5") // bright text
|
|
Accent = lipgloss.Color("#7aa2f7") // blue accent
|
|
Success = lipgloss.Color("#9ece6a") // green
|
|
Warning = lipgloss.Color("#e0af68") // yellow
|
|
Cyan = lipgloss.Color("#7dcfff") // cyan highlight
|
|
Purple = lipgloss.Color("#bb9af7") // purple for selected
|
|
Red = lipgloss.Color("#f7768e") // red
|
|
|
|
// ── component styles ──
|
|
TitleStyle = lipgloss.NewStyle().Bold(true).Foreground(Accent)
|
|
SubtitleStyle = lipgloss.NewStyle().Foreground(Dim)
|
|
|
|
TabActiveStyle = lipgloss.NewStyle().Bold(true).Background(BgPanel).Foreground(Bright).Padding(0, 1)
|
|
TabInactiveStyle = lipgloss.NewStyle().Foreground(Dim).Padding(0, 1)
|
|
TabSep = lipgloss.NewStyle().Foreground(BgPanel)
|
|
|
|
SelStyle = lipgloss.NewStyle().Foreground(BgDark).Background(Purple).Bold(true)
|
|
NormStyle = lipgloss.NewStyle().Foreground(Fg)
|
|
NumStyle = lipgloss.NewStyle().Foreground(Cyan)
|
|
MarkStyle = lipgloss.NewStyle().Foreground(Success).Bold(true)
|
|
|
|
HelpStyle = lipgloss.NewStyle().Foreground(Dim)
|
|
InputStyle = lipgloss.NewStyle().Foreground(Warning).Bold(true)
|
|
|
|
KeyStyle = lipgloss.NewStyle().Foreground(Dim).Width(6).Inline(true)
|
|
ValStyle = lipgloss.NewStyle().Foreground(Fg).Inline(true)
|
|
TechStyle = lipgloss.NewStyle().Foreground(Accent).Bold(true).Inline(true)
|
|
DeployStyle = lipgloss.NewStyle().Foreground(Success).Inline(true)
|
|
DetailTitle = lipgloss.NewStyle().Foreground(Cyan).Bold(true)
|
|
)
|
|
|
|
var GroupStyles = map[string]lipgloss.Style{
|
|
"CORE": lipgloss.NewStyle().Bold(true).Foreground(Red),
|
|
"LAB": lipgloss.NewStyle().Bold(true).Foreground(Success),
|
|
"TOOLS": lipgloss.NewStyle().Bold(true).Foreground(Warning),
|
|
"ME": lipgloss.NewStyle().Bold(true).Foreground(Purple),
|
|
"TEMP": lipgloss.NewStyle().Bold(true).Foreground(Cyan),
|
|
"HISTORY": lipgloss.NewStyle().Bold(true).Foreground(Cyan),
|
|
}
|
|
|
|
// --- 历史会话专用样式 ---
|
|
var (
|
|
SessionTimeStyle = lipgloss.NewStyle().Foreground(Dim).Width(12).Inline(true)
|
|
SessionMsgCntStyle = lipgloss.NewStyle().Foreground(Accent).Inline(true)
|
|
SessionSummaryStyle = lipgloss.NewStyle().Foreground(Dim).Italic(true).Inline(true)
|
|
DirCountStyle = lipgloss.NewStyle().Foreground(Accent).Inline(true)
|
|
ScanningStyle = lipgloss.NewStyle().Foreground(Warning).Bold(true)
|
|
|
|
// ── 渲染热路径预构建样式 (避免每帧 NewStyle) ──
|
|
AccentFg = lipgloss.NewStyle().Foreground(Accent)
|
|
DimFg = lipgloss.NewStyle().Foreground(Dim)
|
|
SepFg = lipgloss.NewStyle().Foreground(BgPanel)
|
|
SuccessBoldFg = lipgloss.NewStyle().Foreground(Success).Bold(true)
|
|
WarningFg = lipgloss.NewStyle().Foreground(Warning)
|
|
WarningBoldFg = lipgloss.NewStyle().Foreground(Warning).Bold(true)
|
|
RedFg = lipgloss.NewStyle().Foreground(Red)
|
|
CyanFg = lipgloss.NewStyle().Foreground(Cyan)
|
|
AccentItalicFg = lipgloss.NewStyle().Foreground(Accent).Italic(true)
|
|
AccentBoldFg = lipgloss.NewStyle().Foreground(Accent).Bold(true)
|
|
TabActiveAccent = lipgloss.NewStyle().Bold(true).Background(BgPanel).Foreground(Accent)
|
|
TabActiveCyan = lipgloss.NewStyle().Bold(true).Background(BgPanel).Foreground(Cyan)
|
|
)
|