Repository navigation
Termshark v3.0.0
This is the first release of the modernized termshark fork, honoring the work of Graham Clark (@gcla), the original author.
What's Changed from v2.4.0
Architecture
- SRP decomposition: large files split into focused, single-responsibility modules
- Centralized goroutine lifecycle management via
lifecycle.Tracker(replaces scattered WaitGroups) - UIState struct consolidates 80+ UI globals
cmain()reduced from 1,260 to 574 lines
Reliability
- Critical deadlock fix in config mutex locking (startup freeze)
- Comprehensive code quality audit: 29 issues identified and fixed
- All data races eliminated (verified with
go test -race) - Error handling improvements: panics replaced with proper error returns
Code Quality
- Modernized Go idioms:
atomic.Bool/atomic.Int32, proper error wrapping - Deprecated APIs removed (
io/ioutil, oldfsnotifypaths) - Dead code eliminated (unused interfaces, bridge types, unreachable branches)
Testing
- Test coverage expanded from ~100 to 837+ tests across 26 packages
- Integration tests rewritten for refactored API
- Race detector clean on both unit and integration test suites
Dependencies
- Updated to Go 1.22+
- Dependencies audited and modernized (
adrg/xdg,fsnotify/fsnotifyv1.7)
Documentation
- All URLs updated to point to this fork
- Tshark capabilities reference added to development docs
- Three audit documents: code quality, dependencies, security
Installation
go install github.com/georgeglarson/termshark/v2/cmd/termshark@v3.0.0Acknowledgments
This project exists because of Graham Clark's original vision for a terminal-based Wireshark experience. This fork aims to keep that vision alive with modern Go practices and continued maintenance.
🤖 Developed with assistance from Claude Code