All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project follows Semantic Versioning.
0.3.0 - 2026-02-25
- Per-flow analysis in Flows/Details:
- health badge (green/yellow/red)
- directional asymmetry label
- TCP timing metrics (handshake RTT, server think, transfer duration)
- Timeline view (
T) with two sub-tabs:- Gantt (phase-colored flow duration bars: handshake / TLS / data / close)
- Scatter (per-packet direction/retransmit markers)
- Timeline educational features:
- Hostname labels instead of raw IPs (with HTTPS/HTTP/DNS port hints)
- Color legend explaining what each phase/dot color means
- Pattern callouts (simultaneous opens, DNS→TLS correlations, retransmission warnings)
- Plain-English "What happened" narrative in details panel
- Timeline keyboard controls and drilldown:
Tab/Shift-Tabswitch Gantt/ScatterPgUp/PgDnpagingEnterto open Packets for selected timeline flow
- Timeline navigation hints in Overview onboarding and Help modal.
- New weird detectors:
- deprecated TLS versions (<= 1.1)
- chatty hosts bursts (>= 10 flows to a destination within 60s)
- TLS version hint extraction on packets and TLS version display in flow details.
FlowStatsnow stores per-flowfirst_ts/last_tsfor timeline rendering.
- UI refactor: extracted hexdump rendering into
ui/hexdump.rs. - UI refactor: extracted overview page builder into
ui/overview.rs. - README expanded with flow analysis and detector examples.
- Asymmetry labels now use beginner-friendly
DL/ULwhen local side can be inferred, with safeA>B/B>Afallback when ambiguous (avoids canonical-direction inversion). - Chatty-host detector now groups by first observed packet destination (not canonical key destination).
- TLS version detection now uses ServerHello version selection (including TLS 1.3 supported_versions), avoiding ClientHello legacy-version mislabeling.
- Timeline row label truncation is now UTF-8 safe (prevents panic around multibyte characters like
↔). - Timeline range and per-flow first/last timestamps now use min/max packet timestamps (robust to out-of-order capture rows).
- Details pane now follows the selected Timeline row (instead of stale Flows selection).
- Scatter renderer packet-count tracking no longer overflows on very dense columns.
- Timeline narrative direction wording now uses local-aware asymmetry labels, with neutral fallback when local/remote inference is ambiguous.
- Timeline DNS→TLS pattern callout now requires hostname + time correlation (reduces false positives).
- Timeline rendering reuses a shared hostname index per frame (avoids duplicate per-frame rebuilds).
- Selected timeline rows now preserve Gantt phase colors and Scatter direction colors while highlighted.
- Gantt phase classification now marks data-carrying packets as data phase instead of handshake phase.
0.2.1 - 2026-02-25
- Linux Arch install instructions for
tsharkin README.
- Removed legacy Go scaffolding from the repo (Rust-only runtime path).
- Refactored UI modal/help/explain/search rendering into a dedicated
ui/modals.rsmodule. - Hardened live capture process handling and stream error reporting.
- Live
tsharkcapture now terminates when quitting the app (q) and on TUI teardown. - Rust compiler warnings in tests/fixtures and hints cleanup.
0.2.0 - 2026-02-23
- Interactive launcher when running
babysharkwith no args (choose Live capture vs Open PCAP). - Lowercase navigation aliases (
dDomains,wWeird,fFlows outside Packets). Backspaceas an alias for back navigation (in addition toEsc).- Number shortcuts
1–9to jump-select items in Overview/Domains/Weird. - Packets view paging/scrolling (
PgUp/PgDn). - Hostname hints in Flows and Packets (best-effort IP → hostname labels).
- Learning mode toggle (
L) with inline guidance in the Flows details pane. - Domains clarity:
ips=*marker + separate “Observed IPs (from flows)” vs “DNS A/AAAA IPs (when visible)”. - CONTRIBUTING.md (issues-first policy; PRs closed during early launch window).
- MIT license.
- README improvements: quickstart, troubleshooting, and screenshot companion explainers.
- UI wording: replaced “click” with “select” where mouse is not supported.
- Explain/Glossary: clearer “follow stream” definition and TLS encryption expectations.
- CI: removed Go steps; CI now runs Rust tests only.
- Domains/Weird Enter drilldown: clamp selection so Enter always applies when items exist.
0.1.0 - 2026-02-23
- TUI views:
- Overview dashboard (traffic mix, top ports/hosts/flows, drill-down entry points).
- Flows list with filtering (
/) and protocol toggles (t/u). - Packets view and Follow stream view.
- Weird stuff view (
W) with detectors and drill-down. - Domains view (
D) with drill-down to flows. - Explain modal (
?) and Glossary (g).
- Live capture support via
tshark(--list-ifaces,--live <iface>), including surfacing stderr/status. - Domain extraction (best-effort): DNS qname, HTTP Host, TLS SNI.
- Domain IP hints:
- DNS A/AAAA when visible
- Observed IPs from flows for DoH/DoT/cached DNS scenarios
- Basic “weird” detectors (e.g., TCP resets, handshake not completed, latency-ish, reliability hints).
- Export/reporting from Flows (
E).