summaryrefslogtreecommitdiff
path: root/internal/tui/eventstream
AgeCommit message (Collapse)Author
2026-05-20task 27: assert non-zero requested_sleep_ns in CSV export testPaul Buetow
2026-05-20task 27: add KindSleep and requested sleep metricPaul Buetow
2026-05-19t6 address family recording reviewPaul Buetow
2026-05-18t6 add syscall family dashboard aggregationPaul Buetow
2026-05-13refactor: break down functions exceeding 50 lines into smaller helpersPaul Buetow
Split 22 production files across the codebase — event loop, TUI models, probe manager, dashboard, export, flag parsing, code generation, and ioworkload scenarios — so that no function body exceeds 50 lines. Each extracted helper carries its own comment explaining its role. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13perf: replace string += concatenation with strings.Builder in TUI render hot ↵Paul Buetow
paths Swap out ad-hoc += string concatenation in the flamegraph toolbar/status lines, dashboard filter summary, bubble/treemap status lines, eventstream view, processes tab, and probes list for strings.Builder, eliminating redundant allocations on every render tick. Also update dashboard/model_test.go fake SnapshotSource implementations to match the updated interface signature. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13add compile-time interface assertions for public types (task c4)Paul Buetow
Extend the var _ Interface = (*Concrete)(nil) coverage started in j3 to cover the remaining public types not yet guarded: - *file.FdFile → file.File (file/file.go) - streamrow.Row → globalfilter.Candidate (streamrow/row.go; adds globalfilter import — no cycle since globalfilter does not import streamrow) - *streamrow.RingBuffer → eventstream.Source (tui/eventstream/ringbuffer.go; already a type alias for streamrow.RingBuffer) - *probemanager.Manager → tui/probes.Manager (tui/probes/model.go) - All 9 generated *types.*Event types → event.Event in the new file internal/event/interface_assertions.go (non-generated, lives in the event package which already imports types, so no new import cycle) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13fix: prevent path traversal in TUI stream CSV export filenamePaul Buetow
User-supplied filenames are now sanitised through filepath.Base before being joined with exportDir, so inputs like "../../etc/passwd" can no longer write files outside the intended export directory. Pure directory references ("..") are rejected outright. Two new tests cover both the unit-level sanitisation and the end-to-end exportRowsToCSV path. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13fix: use shell-aware tokenizer in resolveEditorCommand to handle EDITOR ↵Paul Buetow
paths with spaces Replace strings.Fields with a new shellSplit function that implements POSIX-like quoting rules (single-quotes, double-quotes, backslash escapes), so EDITOR values such as '/My Editor/hx' or "/path/with spaces/hx" --wait are correctly parsed rather than mangled into multiple path components. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13split globalfilter presentation and parsing into sub-packagesPaul Buetow
Move ParseDurationNs to globalfilter/parser and move CompareOpSymbol, AppendStringSummary, AppendNumericSummary, FilterSummary to globalfilter/presenter. The domain Filter type retains only matching, equality, clone, and active-predicate logic. All callers updated; tests for the new sub-packages added. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12invert dependency: internal no longer imports internal/tuiPaul Buetow
Introduce internal/runtime as a neutral contract package that both the core engine (internal) and the TUI layer (internal/tui) depend on. - internal/runtime: defines TraceStarter, StreamSource, EventSink, LiveTrieSource, SnapshotSource, ProbeManager, RuntimePublisher, RuntimeState, TraceRuntimeBindings, and all context key/helper functions (RuntimeBindingsFromContext, RuntimePublisherFromContext, ContextWithRuntimeBindings, ContextWithTraceFilters, TraceFiltersFromContext). These were previously defined in internal/tui, forcing the core package to import the TUI layer. - internal/streamrow: add RingBuffer (moved from internal/tui/eventstream) so the core tracing engine can use the ring buffer without importing the TUI layer. - internal/tui/eventstream/ringbuffer.go: change to a thin re-export of streamrow.RingBuffer via a type alias, preserving the existing API for all callers within the TUI layer. - internal/tui/tui.go: replace locally-defined interface declarations (TraceStarter, SnapshotSource, ProbeManager, RuntimePublisher, RuntimeState, TraceRuntimeBindings) with type aliases from internal/runtime. Delegate all context helper functions to runtime. - internal/ior.go, internal/ior_bpfsetup.go: remove imports of internal/tui and internal/tui/eventstream; use internal/runtime and internal/streamrow instead. Add SetTUIRunners injection point so the concrete TUI runner functions are wired in by cmd/ior/main.go. - cmd/ior/main.go: call internal.SetTUIRunners with the concrete TUI runner functions before internal.Run, completing the wiring without creating a cycle. - Test files (internal/ior_mode_test.go, internal/bench_pipeline_test.go): updated to use runtime.* and streamrow.* types in place of tui.* and eventstream.* types. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12refactor: extract shared syscall stream row modelPaul Buetow
2026-03-10Prefer EDITOR for stream export openerPaul Buetow
2026-03-09tui: export filtered stream rows from global CSV action (task 364)Paul Buetow
2026-03-08tui: unify table navigation and renderingPaul Buetow
2026-03-08tui: restore global filter stack and anchored matchesPaul Buetow
2026-03-08task 374: remove stream-local filter stackPaul Buetow
2026-03-08task 373: preserve stream history across filter restartPaul Buetow
2026-03-08task 372: restart tracing when filters changePaul Buetow
2026-03-08task 370: extract reusable trace filter modalPaul Buetow
2026-03-08task 366: extract shared global filter typesPaul Buetow
2026-03-08eventstream: surface close errors during CSV exportPaul Buetow
2026-03-06refactor: use interfaces for TUI runtime binding sources (task 382)Paul Buetow
2026-03-05Normalize Go import grouping with local ior sectionPaul Buetow
2026-03-05Add package-level docs across internal packagesPaul Buetow
2026-03-05refactor(stream): back scrolling with viewport statePaul Buetow
2026-03-05feat(tui): detect terminal theme and apply palettesPaul Buetow
2026-03-05refactor(tui): migrate source key handling to KeyPressMsgPaul Buetow
2026-03-05feat(tui): migrate Bubble Tea stack to charm.land v2Paul Buetow
2026-03-01Route non-fatal event-loop warnings to TUIPaul Buetow
2026-02-27tui: add stream regex search and unify help visibilityPaul Buetow
2026-02-26tui: add paused stream CSV export and foreground editor openPaul Buetow
2026-02-26tui: add stackable enter-filters with esc undo in streamPaul Buetow
2026-02-26tui: add paused stream column selection and split pid/tidPaul Buetow
2026-02-26tui: polish fd trace view key handling and docsPaul Buetow
2026-02-26tui: add fd trace drilldown and fd column in streamPaul Buetow
2026-02-26tui: add paused stream row selection and highlightPaul Buetow
2026-02-25Fix stream paused scrolling and apply pending TUI/probe updatesPaul Buetow
2026-02-25Improve TUI layout and increase sparkline heightPaul Buetow
2026-02-25Clamp stream rows to single-line panel widthPaul Buetow
2026-02-25Polish stream filter UX and expand TUI viewportPaul Buetow
2026-02-25Add event stream model with filtering and scroll statePaul Buetow
2026-02-25Add event stream filter modalPaul Buetow
2026-02-25Add stream event table rendererPaul Buetow
2026-02-25Add event stream filtering and duration parsingPaul Buetow
2026-02-25Add thread-safe eventstream ring bufferPaul Buetow
2026-02-25Add TUI StreamEvent constructor and testsPaul Buetow