8 Commits
Author SHA1 Message Date
gurix 4cb8cbf334 merge: resolve STATE.md conflict (accept agent version) 2026-03-27 15:56:21 +01:00
gurix 936aeeafd8 merge: resolve STATE.md conflict from wave 1 (keep executor version) 2026-03-26 21:00:15 +01:00
gurix 1f877e7574 feat(06-01): implement config package with TOML load, merge, validate
- Load() discovers, parses, validates, and merges TOML config over defaults
- SoundOverride struct with *float64/*string pointer fields for partial-merge (CFG-04)
- parseFile uses BurntSushi/toml DecodeFile + Undecoded() for unknown-key errors (CFG-05)
- discoverPath probes ./netsynth.toml then ~/.config/netsynth/config.toml (CFG-02)
- merge applies non-nil overrides per class; warns on unknown class names (D-09)
- parseWaveform maps sine/square/sawtooth/triangle strings to WaveformType
- Harmonics regenerated via WaveformPresetHarmonics when waveform/frequency changes
- All 9 tests pass; go vet clean
2026-03-26 20:57:00 +01:00
gurix dc7aed2498 chore(02-01): install gcc, ffprobe, and go-lame dependency
- Add github.com/sjzar/go-lame v0.0.9 to go.mod for MP3 encoding
- gcc and ffprobe available via apt (gcc 13.3.0, ffprobe 6.1.1)
- CGO_ENABLED=1 build verified successful
2026-03-26 11:56:43 +01:00
gurix 1be56a5a35 feat(01-04): wire Cobra CLI with capture-classify-aggregate pipeline
- cmd/netsynth/main.go: Cobra root command with -i, --list-interfaces, --verbose flags
- Signal handling via signal.NotifyContext for clean Ctrl+C shutdown
- 3-stage pipeline: capture.StartCapture -> classify.NewClassifier -> aggregate.Aggregate
- Permission errors surface platform-specific sudo/setcap hint (CAPT-04)
- --verbose flag wires aggregate.PrintWindowLine callback for per-window output
- Exit summary via aggregate.PrintSummary with dropped packet warning
- cmd/netsynth/main_test.go: 3 tests covering flag parsing and help output
- go.mod: cobra v1.10.2 and go-pcap promoted to direct dependencies
2026-03-25 12:22:10 +01:00
gurix 9446dd5c27 feat(01-02): implement capture package with OpenCapture, ListInterfaces, StartCapture
- ListInterfaces uses net.Interfaces() stdlib (no pcap dependency for listing)
- OpenCapture wraps packetcap/go-pcap with platform-specific permission error handling
- StartCapture uses buffered channel (512) with atomic drop counter
- Dynamic link type detection via layers.LinkType(handle.LinkType())
- Linux error shows setcap cap_net_raw+ep hint; macOS shows sudo hint
- Add github.com/packetcap/go-pcap v0.0.0-20251215 to go.mod
2026-03-25 12:17:16 +01:00
gurix 25e0dc3ece chore(01-01): tidy go.mod after classifier implementation
- go mod tidy updates go.mod to reflect actual imports
- gopacket is now a direct dependency (used in classifier.go)
- go-pcap and cobra remain in go.sum for future plans
2026-03-25 12:13:01 +01:00
gurix 15e8143389 feat(01-01): install Go 1.24, initialize module, create shared types
- Initialize Go module github.com/netsynth/netsynth with Go 1.24.1
- Create classify/types.go with 11 TrafficClass constants (ICMP, DNS, HTTPS,
  HTTP, SSH, SMTP, NTP, DHCP, other-TCP, other-UDP, unknown)
- Add ClassifiedPacket and WindowSnapshot shared types
- Add Phase 1 dependencies: gopacket v1.5.0, go-pcap, cobra v1.10.2
2026-03-25 12:11:02 +01:00