Add tabbed GUI with display filters and restructure into core/reporti… #1

Open
arielarigossi wants to merge 0 commits from claude/serene-hopper-bpmsxx into main
arielarigossi commented 2026-10-13 11:27:15 +00:00 (Migrated from github.com)

…ng/gui

GUI

  • New QMainWindow with Overview, Packets (dissection tree + hex dump), Conversations, Endpoints, Ports, Protocols, Charts and Log tabs
  • Wireshark-style display filter bar shared by all tabs: live validation, presets, history and syntax help; double-click/right-click any row to filter by it
  • Save displayed packets as PCAP/CSV, export conversations as CSV
  • Background loading/report generation with pause/resume/cancel, drag & drop, persisted language and directories

Refactor

  • core/: Qt-free models, streaming parser, filter compiler, statistics and a thread-safe TaskControl
  • reporting/: thread-safe matplotlib Figure builders shared by GUI and report, HTML report, stdlib CSV export (pandas dropped), pipeline
  • gui/: generic column-driven table model and one module per tab
  • app.py: --no-gui headless report mode with optional filter
  • pcap-report.py is now a thin launcher instead of a duplicate copy

Fixes

  • "Unique" IP/port counts were the length of the top-10 lists
  • HTML protocol queries and ICMP filter never matched (protocol stored as transport name / raw number); report JSON no longer embeds one object per packet; report data is escaped before DOM insertion
  • Invalid setuptools build backend in pyproject.toml

Tests: 105 tests covering parser, filters, statistics, reporting, CLI and offscreen GUI.

Claude-Session: https://claude.ai/code/session_01S6sRvrppvowTqFzF96q2Tm

…ng/gui GUI - New QMainWindow with Overview, Packets (dissection tree + hex dump), Conversations, Endpoints, Ports, Protocols, Charts and Log tabs - Wireshark-style display filter bar shared by all tabs: live validation, presets, history and syntax help; double-click/right-click any row to filter by it - Save displayed packets as PCAP/CSV, export conversations as CSV - Background loading/report generation with pause/resume/cancel, drag & drop, persisted language and directories Refactor - core/: Qt-free models, streaming parser, filter compiler, statistics and a thread-safe TaskControl - reporting/: thread-safe matplotlib Figure builders shared by GUI and report, HTML report, stdlib CSV export (pandas dropped), pipeline - gui/: generic column-driven table model and one module per tab - app.py: --no-gui headless report mode with optional filter - pcap-report.py is now a thin launcher instead of a duplicate copy Fixes - "Unique" IP/port counts were the length of the top-10 lists - HTML protocol queries and ICMP filter never matched (protocol stored as transport name / raw number); report JSON no longer embeds one object per packet; report data is escaped before DOM insertion - Invalid setuptools build backend in pyproject.toml Tests: 105 tests covering parser, filters, statistics, reporting, CLI and offscreen GUI. Claude-Session: https://claude.ai/code/session_01S6sRvrppvowTqFzF96q2Tm
This branch is already included in the target branch. There is nothing to merge.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin claude/serene-hopper-bpmsxx:claude/serene-hopper-bpmsxx
git switch claude/serene-hopper-bpmsxx

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff claude/serene-hopper-bpmsxx
git switch claude/serene-hopper-bpmsxx
git rebase main
git switch main
git merge --ff-only claude/serene-hopper-bpmsxx
git switch claude/serene-hopper-bpmsxx
git rebase main
git switch main
git merge --no-ff claude/serene-hopper-bpmsxx
git switch main
git merge --squash claude/serene-hopper-bpmsxx
git switch main
git merge --ff-only claude/serene-hopper-bpmsxx
git switch main
git merge claude/serene-hopper-bpmsxx
git push origin main
Sign in to join this conversation.
No description provided.