From e755f7937190d2efd108956bb105b0462760d7a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Mon, 5 Oct 2026 14:55:00 -0400 Subject: [PATCH] wip-devtools --- log_stream.go | 122 ++++++++++++++++++ log_stream_test.go | 97 ++++++++++++++ messages_devtools.go | 6 + testdata/snapshots/darwin/log_stream-dark.png | Bin 0 -> 25790 bytes .../snapshots/darwin/log_stream-light.png | Bin 0 -> 24674 bytes 5 files changed, 225 insertions(+) create mode 100644 log_stream.go create mode 100644 log_stream_test.go create mode 100644 testdata/snapshots/darwin/log_stream-dark.png create mode 100644 testdata/snapshots/darwin/log_stream-light.png diff --git a/log_stream.go b/log_stream.go new file mode 100644 index 0000000..0e188a5 --- /dev/null +++ b/log_stream.go @@ -0,0 +1,122 @@ +package mujica + +import ( + "fmt" + "log/slog" + + "github.com/egoist/mygo/ui" + + "mujicaui/theme" +) + +// LogStreamState is a LogStream's pause, level filter and place. +type LogStreamState struct { + Paused bool + // MinLevel hides lines below it. + MinLevel LogLevel + // frozen is the line count at pause; lines after it wait. + frozen int + shown []int + scanned int + min LogLevel + rows ui.ListState +} + +// LogStreamOptions configure a LogStream. +type LogStreamOptions struct { + // Height of the line well; zero means 320. + Height float32 + Disabled bool +} + +// LogStream shows live ANSI log lines that follow the end, pause and filter by level, virtualized. +func LogStream(c *ui.Context, lines []LogLine, s *LogStreamState, opts LogStreamOptions) ChoiceResult { + if s == nil { + panic("mujica: LogStream needs a state") + } + if opts.Height < 0 || s.MinLevel < LogDebug || s.MinLevel > LogError { + panic("mujica: LogStream needs Height >= 0 and a known MinLevel") + } + h := opts.Height + if h == 0 { + h = 320 + } + var r ChoiceResult + r.Element = codePanel(c).Disabled(opts.Disabled).Height(h) + locked := r.Element.IsDisabled() + r.Element.Children(func() { + codeHeader(c, func() { + was := s.Paused + label := msg(c, "log_stream.pause") + if s.Paused { + label = msg(c, "log_stream.resume") + } + if Toggle(c, &s.Paused, label, ToggleOptions{Disabled: locked}).Changed() && !locked { + r.changed = true + } else { + s.Paused = was + } + levels := make([]Segment, 4) + for lv := LogDebug; lv <= LogError; lv++ { + levels[lv] = Segment{Label: logViewerName(c, lv)} + } + pick := int(s.MinLevel) + SegmentedControl(c, &pick, levels, SegmentedControlOptions{Label: msg(c, "log_stream.level"), Disabled: locked}) + if LogLevel(pick) != s.MinLevel && !locked { + s.MinLevel, r.changed = LogLevel(pick), true + } + ui.Box(c).Grow(1) + if s.Paused && len(lines) > s.frozen { + codeCaption(c, fmt.Sprintf(msg(c, "log_stream.waiting"), len(lines)-s.frozen)).Role(ui.RoleStatus) + } + }) + if !s.Paused { + s.frozen = len(lines) + } + logStreamFilter(lines[:min(s.frozen, len(lines))], s) + if len(s.shown) == 0 { + codeCaption(c, msg(c, "log_stream.empty")).Padding(Density(c).Unit() * 4) + return + } + s.rows.FollowEnd = !s.Paused + s.rows.Key = func(i int) any { return s.shown[i] } + d := Density(c) + ui.List(c, &s.rows, len(s.shown), func(i int) { logStreamRow(c, lines[s.shown[i]]) }).Grow(1).Padding(d.Unit(), 0) + }) + if r.changed { + slog.Debug("mujica: log_stream change", "paused", s.Paused, "min_level", s.MinLevel) + } + return r +} + +// logStreamFilter extends the shown lines, or redoes them after a filter change. +func logStreamFilter(lines []LogLine, s *LogStreamState) { + if s.min != s.MinLevel || s.scanned > len(lines) { + s.min, s.scanned, s.shown = s.MinLevel, 0, s.shown[:0] + } + for i := s.scanned; i < len(lines); i++ { + lv := lines[i].Level + if lv < LogDebug || lv > LogError { + panic("mujica: LogLine level out of range") + } + if lv >= s.MinLevel { + s.shown = append(s.shown, i) + } + } + s.scanned = len(lines) +} + +// logStreamRow shows one line: time, level word and ANSI text. +func logStreamRow(c *ui.Context, l LogLine) { + k := Tokens(c) + d := Density(c) + col := [...]ui.Color{k.TextMuted, k.Info, k.Warning, k.Danger}[l.Level] + ui.Row(c).MinHeight(d.ControlHeight() - 8).Padding(0, d.Unit()*3).Gap(d.Unit() * 3).AlignItems(ui.Center).Children(func() { + if !l.Time.IsZero() { + codeMono(c, l.Time.Format("15:04:05.000")).TextColor(k.TextMuted).Shrink(0) + } + ui.Text(c, fmt.Sprintf("%-5s", logViewerName(c, l.Level))).Font(theme.MonoFont).FontSize(FontSize(c, codeSize)). + FontWeight(700).TextColor(col).SingleLine().Shrink(0) + ui.RichText(c, codeAnsiSpans(c, l.Text)...).Font(theme.MonoFont).FontSize(FontSize(c, codeSize)).Grow(1).MinWidth(0) + }) +} diff --git a/log_stream_test.go b/log_stream_test.go new file mode 100644 index 0000000..782c686 --- /dev/null +++ b/log_stream_test.go @@ -0,0 +1,97 @@ +package mujica + +import ( + "fmt" + "testing" + + "github.com/egoist/mygo/ui" +) + +func logStreamLines(n int) []LogLine { + out := make([]LogLine, n) + for i := range out { + out[i] = LogLine{Level: LogLevel(i % 4), Text: fmt.Sprintf("\x1b[1mline\x1b[0m %d", i)} + } + return out +} + +func logStreamTester(lines *[]LogLine, s *LogStreamState, opts LogStreamOptions, changes *int) *ui.Tester { + return ui.NewTester(func(c *ui.Context) { + Use(c, Settings{}) + if LogStream(c, *lines, s, opts).Changed() { + *changes++ + } + }, 700, 400) +} + +func TestLogStreamFollowPauseResume(t *testing.T) { + lines := logStreamLines(10) + var s LogStreamState + n := 0 + tt := logStreamTester(&lines, &s, LogStreamOptions{}, &n) + if !tt.HasText("line 9") || tt.HasText("\x1b[1mline") { + t.Fatalf("texts %q", tt.Texts()) + } + _ = tt.Click("Pause") + lines = append(lines, logStreamLines(13)[10:]...) + tt.Frame() + if !s.Paused || tt.HasText("line 12") || !tt.HasText("3 new lines") { + t.Fatalf("paused: %q", tt.Texts()) + } + _ = tt.Click("Resume") + if s.Paused || !tt.HasText("line 12") || n != 2 { + t.Fatalf("resume: %q changes %d", tt.Texts(), n) + } +} + +func TestLogStreamLevelFilter(t *testing.T) { + lines := logStreamLines(8) + var s LogStreamState + n := 0 + tt := logStreamTester(&lines, &s, LogStreamOptions{}, &n) + _ = tt.Click("WARN") + if s.MinLevel != LogWarn || tt.HasText("line 5") || !tt.HasText("line 6") || !tt.HasText("line 7") { + t.Fatalf("filter: %v %q", s.MinLevel, tt.Texts()) + } + tt.Key(0, ui.KeyRight) + if s.MinLevel != LogError || tt.HasText("line 6") { + t.Fatalf("keyboard filter: %v", s.MinLevel) + } +} + +func TestLogStreamDisabledEmptyMany(t *testing.T) { + lines := logStreamLines(4) + var s LogStreamState + n := 0 + tt := logStreamTester(&lines, &s, LogStreamOptions{Disabled: true}, &n) + _ = tt.Click("Pause") + _ = tt.Click("WARN") + if n != 0 || s.Paused || s.MinLevel != LogDebug { + t.Fatalf("disabled changed: %+v", s) + } + none := []LogLine{} + tt = logStreamTester(&none, &LogStreamState{}, LogStreamOptions{}, &n) + if !tt.HasText("No log lines") { + t.Fatal("empty text missing") + } + many := logStreamLines(100000) + var ms LogStreamState + tt = logStreamTester(&many, &ms, LogStreamOptions{}, &n) + if got := len(tt.Texts()); got > 300 || !tt.HasText("line 99999") { + t.Fatalf("%d texts; last line shown %v", got, tt.HasText("line 99999")) + } +} + +func TestLogStreamSnapshot(t *testing.T) { + lines := []LogLine{ + {Level: LogInfo, Text: "server listening on :8080"}, + {Level: LogDebug, Text: "cache warm: 312 keys"}, + {Level: LogWarn, Text: "slow query \x1b[33m412 ms\x1b[0m on guests"}, + {Level: LogError, Text: "\x1b[31mpayment provider unreachable\x1b[0m"}, + {Level: LogInfo, Text: "retry 1 of 3 succeeded"}, + } + snapshot(t, "log_stream", 640, 260, func(c *ui.Context) { + var s LogStreamState + ui.Column(c).Padding(16).Children(func() { LogStream(c, lines, &s, LogStreamOptions{Height: 220}) }) + }) +} diff --git a/messages_devtools.go b/messages_devtools.go index 8829dd6..c5c325c 100644 --- a/messages_devtools.go +++ b/messages_devtools.go @@ -66,6 +66,12 @@ func init() { "dashboard_filter_bar.tags": {"Tags", "标签"}, "dashboard_filter_bar.clear": {"Clear filters", "清除过滤"}, + "log_stream.pause": {"Pause", "暂停"}, + "log_stream.resume": {"Resume", "继续"}, + "log_stream.level": {"Minimum level", "最低级别"}, + "log_stream.waiting": {"%d new lines", "%d 条新日志"}, + "log_stream.empty": {"No log lines", "没有日志"}, + "alert_list.empty": {"No alerts", "没有告警"}, }) } diff --git a/testdata/snapshots/darwin/log_stream-dark.png b/testdata/snapshots/darwin/log_stream-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..64003dff77c7648a86950345da432d28b7fec39c GIT binary patch literal 25790 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 Vc&^X_Joj{Tw{93*FVV1%_%BH@*TVn+ literal 0 HcmV?d00001 diff --git a/testdata/snapshots/darwin/log_stream-light.png b/testdata/snapshots/darwin/log_stream-light.png new file mode 100644 index 0000000000000000000000000000000000000000..68839db031f0f8f4b729de69bcfc10015184dd46 GIT binary patch literal 24674 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 P7656e>ZnvH*@piI()E%H literal 0 HcmV?d00001