Skip to content

feat(web): unify flow characteristic charts - #101

Merged
flamboh merged 1 commit into
mainfrom
t3code/unify-flow-charts-split-ports
Aug 24, 2026
Merged

feat(web): unify flow characteristic charts#101
flamboh merged 1 commit into
mainfrom
t3code/unify-flow-charts-split-ports

Conversation

@flamboh

@flamboh flamboh commented Aug 24, 2026

Copy link
Copy Markdown
Owner

Problem

The flow characteristics panel used its own card, controls, and static line charts. It did not match the rest of the dashboard, and port cardinality was buried inside the same card as flow duration and TTL.

Solution

  • Use the shared chart card styling for flow characteristics.
  • Keep average flow duration and TTL together in a responsive split chart.
  • Move unique ports into its own draggable chart card while sharing one characteristics request.
  • Add synchronized hover, click drill-down, five-minute file navigation, drag-to-explore, coverage-aware line styling, and theme-aware tooltips.
  • Remove the explanatory captions and section copy.

Review path

Use a local SQLite dataset with duration and port aggregates, then open its dashboard.

  1. Confirm "Flow Characteristics" contains duration and TTL side by side on wide screens and stacked on smaller screens.
  2. Confirm "Unique Ports" is a separate reorderable card.
  3. Hover between time-series charts and verify the crosshair follows the same bucket.
  4. Click a coarse bucket to drill down, click a five-minute bucket to open its file, and drag across a range to explore it.
  5. Switch IP families and port ranges.

Expected edge cases:

  • A family without TTL observations shows "No data for this metric" without hiding duration.
  • Selecting no port ranges shows the card's empty-selection state.
  • Multiple sources retain distinct dash patterns instead of adding exact port cardinalities together.
  • Stale characteristics requests cannot replace newer filter results.

Verification

  • bun run format
  • bun run lint
  • bun run typecheck
  • bun run test:web (134 tests)
  • Targeted Chromium check against the linked UONet database for card separation, TTL empty state, canvases, and daily-to-hourly click navigation

The full managed e2e command could not start because another worktree owns port 4173 and its Nix runtime does not match the existing better-sqlite3 build. The targeted browser flow passed through a dedicated dev server.

Built with GPT-5.6 Sol in the Codex harness through T3 Code.

@flamboh
flamboh force-pushed the t3code/unify-flow-charts-split-ports branch from d9648ed to 3e8c55a Compare August 24, 2026 06:38
@flamboh
flamboh merged commit bae1396 into main Aug 24, 2026
3 checks passed
@flamboh
flamboh deleted the t3code/unify-flow-charts-split-ports branch August 24, 2026 06:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant