- Add GitHub Actions workflow, retire Bitbucket notifications (#90)
- Wire gcov coverage into the build (#82)
- Honor
jsonfrom config file andMMTREADER_JSONenvironment variable (#98) - Report product version distinctly from SDK version in
--versionbanner (#93) - Rename shadowed
rcvariable in online capture loop (#89) - Restore
.debfallback viacompgenglob expansion (#86) - Remove
eval-built command strings and add adversarial smoke proof (#85) - Graceful SIGTERM stop and extraction-failure summary (#84)
- Fix config precedence for env vars and prevent buffer overflow (#83)
- Restore Jenkins test stage running
make test(#79) - Groundwork: Jenkins make, SDK pin, test wiring (#78)
- Named dispatch modes,
PROTO_META,PRIu64(#92) - Split
parse_optionsinto layered helpers (#91) - Dead-code sweep across engine, cli, config, colors (#88)
- Extract shared assert header
tests/test_util.h(#80)
- Regenerate user-guide and architecture samples from real output (#99)
- Align README and DEVELOPMENT docs with the real build (#95)
- Document
cap_net_rawcapability tradeoff (#81) - Add
CLAUDE.mdandAGENTS.mdagent config files (#77) - Document agent install/run notes for the C toolchain (#76)
- Enable
-Wall -Wextraand verify the tree is warning-free (#94) - Pin base image and bump toolchain to current GCC (#87)
-
Honor the
jsonconfig-file key and theMMTREADER_JSONenvironment variable (#96).cli_options_tcarried two fields meaning one thing —output_format, which every output decision reads, andjson, whose only reader was a verbose debug printf. The config and environment paths wrotejsonalone, sojson = 1andMMTREADER_JSON=1were silently ignored; only-j/--json, which wrote both, had any effect.jsonis gone andoutput_formatis now the single carrier. -
Apply
-c/--configfiles before the CLI flags are parsed (#96). The named config file used to be re-read after the option loop and re-copied unconditionally, so it beat explicit flags (-b 100 --config <buffer=777>used 777) and skipped the environment entirely — the opposite precedence from~/.mmtreader.conf. Both files now load before the flags, under one rule: compiled defaults <~/.mmtreader.conf<--configfile < environment < CLI flags. Seedocs/CONFIG.md. -
Report mmtReader's own product version distinctly from the MMT-DPI SDK version (#70,
F-BUG-005).--versionand the startup banner now print two labeled lines, and the product version is injected at build time viamake MMTREADER_VERSION=...(-DMMTREADER_VERSION).
- Breaking (JSON): the
--json"version"field changed from a bare string holding the SDK version to an object:{"mmtreader": "0.4.0", "mmt_dpi": "1.8.0 (42cac8b7)"}. Consumers reading.versionas a string must read.version.mmt_dpiinstead.
- Align README,
docs/DEVELOPMENT.md,docs/TESTING.md,AGENT_ENVIRONMENT.mdand the mmt-reader skill with the real build (#72,F-DOCS-001,F-DOCS-002): the manual compile command now namesflows.cand links,libconfuseis gone as a prerequisite (config.chas its own INI parser), the-Wall -Wextrawarning gate and-DMMTREADER_VERSIONinjection are documented, and every test total is re-measured from an actual run (14 numbered groups, 299 unit asserts, 52/52 CLI checks, 6/6 SDK checks). - Replace the invented README sample output and JSON sample with output
captured from
./mmtReader analyze -t smallFlows.pcap -a, and drop a duplicated Usage Examples block. - Regenerate every sample block in
docs/USER_GUIDE.mdfrom real output (#97). The guide was left out of #72 and still showed aTCP.HTTP.Googleprotocol path format,Input:/Sessions:labels thatcli/output.cnever prints, a JSON sample predating both theprotocol_paths[]split and theversionobject from #70, and a whole "PCAP Statistics" section for a feature that does not exist —pcap_stats()is never called. Every block is now spliced from an actual./mmtReader analyze -t smallFlows.pcaprun; every command shown carries its requiredanalyze/capturesubcommand and points at the bundledsmallFlows.pcap, so it runs verbatim and exits 0. The config and environment sections now agree withdocs/CONFIG.mdon which keys are live and on the defaults <~/.mmtreader.conf<--config< environment < CLI precedence fixed in #96. - Correct two identifiers in
docs/ARCHITECTURE.md(#97): the sorted-list helper isproto_info_insert()(cli/output.c:104), notinsert_proto_info(), andengine_print_stats_ex()lives incore/engine.c:281, notcli/output.c. Its output sequence also no longer lists the non-existent PCAP-statistics section.
- Add mmtReader AI agent skill for network traffic analysis (#34) (a154152)
- Stop
engine_destroy()from printing the statistics summary (#39) (#42) (089be40) - Take traffic statistics from the MMT-DPI API instead of recomputing them (#40) (c2927d4)
- Route live capture through the engine's packet accounting (#37) (ae0c0fb)
- Remove double quotes from Mermaid node labels and message text to fix parser errors (72ffba0)
- Use
<br/>instead of\nfor line breaks in Mermaid sequence diagrams (f32e946)
- Pin
input_statsto MMT-DPI's per-protocol accounting (#38) (#43) (045bce9)
- Fix README and PLAYBOOK to match actual binary output (3f503c0)
- Add Use Case 6 — AI Agent-Assisted Analysis (5a91a04)
- Add MMT-Reader AI Agent Playbook (b646712)
- Rewrite README as AI Agent-focused landing page with visual workflow (0277af4)