summaryrefslogtreecommitdiff
path: root/internal
AgeCommit message (Collapse)Author
2026-03-18cleanupPaul Buetow
2026-03-18refactor: extract keyboardState, filterState, processState sub-structs from ↵Paul Buetow
tui.Model (task 429) tui.Model had 33 fields mixing keyboard tracking, filter chain, process selection, and UI presentation concerns (SRP violation). Extract three focused sub-structs: - keyboardState (kb): enhancements, lastEvent{ID,At,WasPress}, suppress{ID,Until} — 7 fields managed by keys_normalize.go - filterState (filter): global filter, history slice, label stack — 3 fields for the trace filter chain - processState (proc): pid, tid, pickerReturn — 3 fields for PID/TID selection and picker navigation Model drops from 33 to 23 top-level fields. All field accesses in tui.go, keys_normalize.go, and tui_test.go are updated accordingly. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-18refactor: split TraceRuntimeBindings into RuntimePublisher and RuntimeState ↵Paul Buetow
(task 427/ISP) TraceRuntimeBindings mixed 4 setter methods (injecting data into TUI) with 4 getter methods (reading persistent TUI-owned state), violating ISP. Split into two focused interfaces: - RuntimePublisher: SetDashboardSnapshotSource, SetEventStreamSource, SetLiveTrie, SetProbeManager — the write/inject side - RuntimeState: StreamBuffer, Recorder, StreamSequencer, FilterEpoch — the read/persistent-state side TraceRuntimeBindings now embeds both, preserving all existing call sites. RuntimePublisherFromContext() added so callers that only inject data do not see the getter surface. Three such callers are narrowed: setupBPFModule, tuiTestFlamesStarter, tuiTestLiveFlamesStarter. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-18refactor: split ior.go mega-file into focused files (task 427)Paul Buetow
ior.go had 763 lines covering 9+ concerns. Follow the eventloop_*.go pattern and extract into three focused files: - ior_bpfsetup.go: libbpfTracepoint{Program,Module} adapter types, setupBPFModule, setupBPFModuleError, setupEventChannel - ior_profiling.go: profilingControl type, setupProfiling, profilingFilesForMode, stop() - ior_parquet_sink.go: headlessParquetSink type, runHeadlessParquet, isHeadlessParquetMode, hasHeadlessParquetContentFilters, headlessParquetTraceConfig; inline parquetMetadata one-liner ior.go shrinks from 763 → 453 lines, retaining entry, dispatch, TUI wiring, and core trace execution. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-18refactor: pass flags.Config explicitly, remove flags.Get() from library code ↵Paul Buetow
(task 429) flags.Get() (global mutable singleton) was called inside library packages, coupling them to global state and making tests fragile (DIP violation). - internal.Run() now takes an explicit flags.Config; main.go calls flags.Get() once at the CLI boundary and passes it in. - tui.Run(), RunWithTraceStarter(), RunTestFlamesWithTraceStarter() removed; callers already used the WithConfig variants directly. - tui.NewModel() preserved for test ergonomics but now uses flags.NewFlags() (pure defaults) instead of flags.Get() (global state). - Tests updated to use NewModelWithConfig() with explicit config structs instead of flags.Set*() + NewModel(), eliminating all test-level global-state mutation. flags.Get() is now called only in cmd/ior/main.go, the correct boundary. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-18refactor: extract pairTracker and extend fdTracker to reduce eventLoop ↵Paul Buetow
responsibilities (task 428) The eventLoop struct held 20+ fields across 5+ responsibilities (SRP violation). Extract two cohesive sub-structs: - pairTracker: enter/exit pair matching, age-based LRU pruning, and DurationToPrev tracking. Replaces enterEvs/enterEvAges/prevPairTimes/ maxPendingEnterEvs/cacheAge fields with a single embedded value. - fdTracker (extended): absorbs procFdCache/procFdAges/maxProcFdCacheSize, moving all procfs-resolution cache logic (resolve, cache, prune, delete) off eventLoop and onto the tracker that already owns the fd table. eventLoop drops from 20 fields to 12. All methods that previously reached into eventLoop fields now live on the struct that owns the data. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-18refactor: replace reflect.TypeOf dispatch in exit handlers with type switch ↵Paul Buetow
(task 432) The exitHandlers map keyed by reflect.Type was a reflection-based dispatch table that incurred allocation and reflection overhead on every event pair in the hot processing path. Replace it with a plain type switch in handleTracepointExit, which the compiler resolves statically. Removes: initExitHandlers, typeKey, mustBeType, newTypedExitHandler, exitHandlerRegistry, the exitHandlers struct field, and the tracepointExitHandler type alias — all dead after the switch. Fixes a pre-existing uint→uint64 mismatch in stats(). Updates tests to target the new default branch directly. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-03-13Reorder flags declarations (task 390)Paul Buetow
2026-03-13Handle procfs lookup errors in event loop (task 392)Paul Buetow
2026-03-13Refactor event loop into focused units (task 389)Paul Buetow
2026-03-13docs: explain parquet recording modesPaul Buetow
2026-03-13perf: remove tui stream relay channelPaul Buetow
2026-03-13bench: add parquet recording benchmarksPaul Buetow
2026-03-13test: expand parquet recording coveragePaul Buetow
2026-03-13feat: add tui parquet recording controlsPaul Buetow
2026-03-13feat: add headless parquet recording modePaul Buetow
2026-03-12feat: persist parquet recording across TUI restartsPaul Buetow
2026-03-12feat: add parquet recorder foundationPaul Buetow
2026-03-12refactor: extract shared syscall stream row modelPaul Buetow
2026-03-12fix: restore legacy flamegraph trace output modePaul Buetow
2026-03-12internal: embed BPF object into ior binaryPaul Buetow
2026-03-11eventloop: factor malformed-event helpers (task 383)Paul Buetow
2026-03-10dashboard: centralize nil snapshot fallback (task 385)Paul Buetow
2026-03-10dashboard: unify viewport chrome calculation (task 388)Paul Buetow
2026-03-10globalfilter: genericize filter clone helpers (task 385)Paul Buetow
2026-03-10dashboard: unify offset reanchoring helper (task 394)Paul Buetow
2026-03-10config: centralize default buffer sizes (task 388)Paul Buetow
2026-03-10file: document File interface semantics (task 399)Paul Buetow
2026-03-10tui: split key normalization and help rendering (task 424)Paul Buetow
2026-03-10tui: hide stream buffer behind source interface (task 428)Paul Buetow
2026-03-10eventloop: avoid fmt.Sprintf in proc comm lookup (task 426)Paul Buetow
2026-03-10eventloop: bound pending enter and proc-fd caches (task 425)Paul Buetow
2026-03-10Prefer EDITOR for stream export openerPaul Buetow
2026-03-10task 434: unify trace filter plumbingPaul Buetow
2026-03-10task 436: handle loadFromFile close errorsPaul Buetow
2026-03-10task 433: lock in pair recycle safetyPaul Buetow
2026-03-10internal: add context to BPF setup failures (task 416)Paul Buetow
2026-03-10probemanager: surface cleanup destroy errors (task 417)Paul Buetow
2026-03-10tui/flamegraph: tighten arrow escape parsing (task 423)Paul Buetow
2026-03-10tui/flamegraph: centralize animation tick scheduling (task 422)Paul Buetow
2026-03-10file: handle fdinfo flag read failures explicitly (task 419)Paul Buetow
2026-03-10tui: simplify default key map construction (task 425)Paul Buetow
2026-03-10globalfilter: share compare-op symbol helper (task 374)Paul Buetow
2026-03-09tui: add reverse sorting for dashboard tables (task 364)Paul Buetow
2026-03-09tui: export filtered stream rows from global CSV action (task 364)Paul Buetow
2026-03-09tui: add sortable processes dashboard table (task 365)Paul Buetow
2026-03-09tui: add sortable files dashboard table modes (task 364)Paul Buetow
2026-03-09tui: add sortable syscalls dashboard table (task 363)Paul Buetow
2026-03-09tui: harden paused flame renderingPaul Buetow
2026-03-09tui: fix flamegraph click re-rootingPaul Buetow