From 112c7e300a69e066ed801903d9a180d71fe8981b Mon Sep 17 00:00:00 2001 From: kostyay Date: Tue, 20 Jan 2026 23:54:59 +0100 Subject: [PATCH] chore: remove .ktickets directory from git tracking Local ticket files should not be tracked in version control. Directory already in .gitignore, files kept locally. Co-Authored-By: Claude Opus 4.5 --- .ktickets/net-0055.md | 15 --------------- .ktickets/net-0a64.md | 13 ------------- .ktickets/net-10a2.md | 13 ------------- .ktickets/net-1455.md | 17 ----------------- .ktickets/net-1bb8.md | 15 --------------- .ktickets/net-1ca6.md | 13 ------------- .ktickets/net-1e6b.md | 12 ------------ .ktickets/net-20d1.md | 13 ------------- .ktickets/net-23a4.md | 13 ------------- .ktickets/net-23dd.md | 13 ------------- .ktickets/net-2416.md | 13 ------------- .ktickets/net-24c5.md | 15 --------------- .ktickets/net-25a5.md | 15 --------------- .ktickets/net-281a.md | 15 --------------- .ktickets/net-2a27.md | 13 ------------- .ktickets/net-2a5d.md | 17 ----------------- .ktickets/net-2aa7.md | 13 ------------- .ktickets/net-2d3c.md | 15 --------------- .ktickets/net-2f8c.md | 13 ------------- .ktickets/net-333a.md | 13 ------------- .ktickets/net-3412.md | 13 ------------- .ktickets/net-3541.md | 13 ------------- .ktickets/net-3658.md | 13 ------------- .ktickets/net-3e94.md | 15 --------------- .ktickets/net-41b3.md | 13 ------------- .ktickets/net-43b2.md | 13 ------------- .ktickets/net-4aaa.md | 12 ------------ .ktickets/net-4ad7.md | 13 ------------- .ktickets/net-4d78.md | 12 ------------ .ktickets/net-4dd7.md | 13 ------------- .ktickets/net-4f41.md | 19 ------------------- .ktickets/net-5440.md | 13 ------------- .ktickets/net-5728.md | 19 ------------------- .ktickets/net-57f4.md | 13 ------------- .ktickets/net-5a04.md | 15 --------------- .ktickets/net-5bad.md | 12 ------------ .ktickets/net-5dfd.md | 13 ------------- .ktickets/net-6489.md | 15 --------------- .ktickets/net-653e.md | 13 ------------- .ktickets/net-6549.md | 13 ------------- .ktickets/net-6660.md | 15 --------------- .ktickets/net-6b33.md | 13 ------------- .ktickets/net-6b57.md | 13 ------------- .ktickets/net-6ff0.md | 12 ------------ .ktickets/net-7690.md | 13 ------------- .ktickets/net-7e65.md | 16 ---------------- .ktickets/net-832b.md | 13 ------------- .ktickets/net-9266.md | 13 ------------- .ktickets/net-9420.md | 13 ------------- .ktickets/net-9dd8.md | 13 ------------- .ktickets/net-9f92.md | 13 ------------- .ktickets/net-a02b.md | 13 ------------- .ktickets/net-a1fd.md | 13 ------------- .ktickets/net-a4ba.md | 13 ------------- .ktickets/net-b075.md | 12 ------------ .ktickets/net-b4b3.md | 13 ------------- .ktickets/net-b99e.md | 16 ---------------- .ktickets/net-bb61.md | 13 ------------- .ktickets/net-c788.md | 15 --------------- .ktickets/net-c9dd.md | 13 ------------- .ktickets/net-cd75.md | 13 ------------- .ktickets/net-d394.md | 15 --------------- .ktickets/net-d405.md | 13 ------------- .ktickets/net-d5f9.md | 13 ------------- .ktickets/net-d718.md | 15 --------------- .ktickets/net-da67.md | 13 ------------- .ktickets/net-db6d.md | 12 ------------ .ktickets/net-dc1e.md | 13 ------------- .ktickets/net-e549.md | 13 ------------- .ktickets/net-e54b.md | 12 ------------ .ktickets/net-e553.md | 13 ------------- .ktickets/net-fac4.md | 13 ------------- .ktickets/net-fcf8.md | 15 --------------- .ktickets/net-fed8.md | 13 ------------- 74 files changed, 1008 deletions(-) delete mode 100644 .ktickets/net-0055.md delete mode 100644 .ktickets/net-0a64.md delete mode 100644 .ktickets/net-10a2.md delete mode 100644 .ktickets/net-1455.md delete mode 100644 .ktickets/net-1bb8.md delete mode 100644 .ktickets/net-1ca6.md delete mode 100644 .ktickets/net-1e6b.md delete mode 100644 .ktickets/net-20d1.md delete mode 100644 .ktickets/net-23a4.md delete mode 100644 .ktickets/net-23dd.md delete mode 100644 .ktickets/net-2416.md delete mode 100644 .ktickets/net-24c5.md delete mode 100644 .ktickets/net-25a5.md delete mode 100644 .ktickets/net-281a.md delete mode 100644 .ktickets/net-2a27.md delete mode 100644 .ktickets/net-2a5d.md delete mode 100644 .ktickets/net-2aa7.md delete mode 100644 .ktickets/net-2d3c.md delete mode 100644 .ktickets/net-2f8c.md delete mode 100644 .ktickets/net-333a.md delete mode 100644 .ktickets/net-3412.md delete mode 100644 .ktickets/net-3541.md delete mode 100644 .ktickets/net-3658.md delete mode 100644 .ktickets/net-3e94.md delete mode 100644 .ktickets/net-41b3.md delete mode 100644 .ktickets/net-43b2.md delete mode 100644 .ktickets/net-4aaa.md delete mode 100644 .ktickets/net-4ad7.md delete mode 100644 .ktickets/net-4d78.md delete mode 100644 .ktickets/net-4dd7.md delete mode 100644 .ktickets/net-4f41.md delete mode 100644 .ktickets/net-5440.md delete mode 100644 .ktickets/net-5728.md delete mode 100644 .ktickets/net-57f4.md delete mode 100644 .ktickets/net-5a04.md delete mode 100644 .ktickets/net-5bad.md delete mode 100644 .ktickets/net-5dfd.md delete mode 100644 .ktickets/net-6489.md delete mode 100644 .ktickets/net-653e.md delete mode 100644 .ktickets/net-6549.md delete mode 100644 .ktickets/net-6660.md delete mode 100644 .ktickets/net-6b33.md delete mode 100644 .ktickets/net-6b57.md delete mode 100644 .ktickets/net-6ff0.md delete mode 100644 .ktickets/net-7690.md delete mode 100644 .ktickets/net-7e65.md delete mode 100644 .ktickets/net-832b.md delete mode 100644 .ktickets/net-9266.md delete mode 100644 .ktickets/net-9420.md delete mode 100644 .ktickets/net-9dd8.md delete mode 100644 .ktickets/net-9f92.md delete mode 100644 .ktickets/net-a02b.md delete mode 100644 .ktickets/net-a1fd.md delete mode 100644 .ktickets/net-a4ba.md delete mode 100644 .ktickets/net-b075.md delete mode 100644 .ktickets/net-b4b3.md delete mode 100644 .ktickets/net-b99e.md delete mode 100644 .ktickets/net-bb61.md delete mode 100644 .ktickets/net-c788.md delete mode 100644 .ktickets/net-c9dd.md delete mode 100644 .ktickets/net-cd75.md delete mode 100644 .ktickets/net-d394.md delete mode 100644 .ktickets/net-d405.md delete mode 100644 .ktickets/net-d5f9.md delete mode 100644 .ktickets/net-d718.md delete mode 100644 .ktickets/net-da67.md delete mode 100644 .ktickets/net-db6d.md delete mode 100644 .ktickets/net-dc1e.md delete mode 100644 .ktickets/net-e549.md delete mode 100644 .ktickets/net-e54b.md delete mode 100644 .ktickets/net-e553.md delete mode 100644 .ktickets/net-fac4.md delete mode 100644 .ktickets/net-fcf8.md delete mode 100644 .ktickets/net-fed8.md diff --git a/.ktickets/net-0055.md b/.ktickets/net-0055.md deleted file mode 100644 index f2ab9f0..0000000 --- a/.ktickets/net-0055.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-0055 -status: closed -deps: -- net-fcf8 -created: "2026-01-17T22:32:59Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Create selection.go with resolution helpers - -New file with: findProcessIndex(name) int, findConnectionIndex(key) int, resolveSelectionIndex() int, validateSelection() for clamping when item gone. diff --git a/.ktickets/net-0a64.md b/.ktickets/net-0a64.md deleted file mode 100644 index 769969c..0000000 --- a/.ktickets/net-0a64.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-0a64 -status: closed -created: "2026-01-16T17:12:07Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-da67 -tests_passed: false ---- -# Settings modal key handling - -Ctrl+S toggle, up/down/enter/esc in settingsMode. update.go changes diff --git a/.ktickets/net-10a2.md b/.ktickets/net-10a2.md deleted file mode 100644 index 3bda15e..0000000 --- a/.ktickets/net-10a2.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-10a2 -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Apply highlight styles in view - -Check changes map, apply green/red/yellow styles to rows diff --git a/.ktickets/net-1455.md b/.ktickets/net-1455.md deleted file mode 100644 index a12da55..0000000 --- a/.ktickets/net-1455.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: net-1455 -status: closed -deps: -- net-6489 -- net-d394 -- net-d718 -created: "2026-01-17T22:33:01Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Update tests for ID-based selection - -Update model_test.go, update_test.go, view_test.go, kill_test.go. Add regression tests for sort/filter stability. diff --git a/.ktickets/net-1bb8.md b/.ktickets/net-1bb8.md deleted file mode 100644 index d2e173b..0000000 --- a/.ktickets/net-1bb8.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-1bb8 -status: closed -deps: -- net-2f8c -created: "2026-01-16T12:46:17Z" -type: task -priority: 2 -assignee: kostyay -parent: net-6ff0 -tests_passed: false ---- -# Handle x/X keys in update.go - -x→SIGTERM, X→SIGKILL; enter kill mode with target PID from current view level diff --git a/.ktickets/net-1ca6.md b/.ktickets/net-1ca6.md deleted file mode 100644 index 4a9d485..0000000 --- a/.ktickets/net-1ca6.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-1ca6 -status: closed -created: "2026-01-16T16:52:16Z" -type: bug -priority: 3 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Fix inconsistent error output to stderr - -cmd/netmon/root.go:59 uses fmt.Printf for errors; should use fmt.Fprintf(os.Stderr,...) diff --git a/.ktickets/net-1e6b.md b/.ktickets/net-1e6b.md deleted file mode 100644 index 6ad36cd..0000000 --- a/.ktickets/net-1e6b.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-1e6b -status: closed -created: "2026-01-17T22:32:49Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# ID-based selection system - -Replace positional cursor with stable item IDs. Selection survives sort/filter/refresh. Fixes cursor/selection bugs where lookup code misses filter/sort steps. diff --git a/.ktickets/net-20d1.md b/.ktickets/net-20d1.md deleted file mode 100644 index 9460dbc..0000000 --- a/.ktickets/net-20d1.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-20d1 -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Wire DNS to settings toggle - -Toggle dnsEnabled from settings, clear cache on disable diff --git a/.ktickets/net-23a4.md b/.ktickets/net-23a4.md deleted file mode 100644 index c65f82e..0000000 --- a/.ktickets/net-23a4.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-23a4 -status: closed -created: "2026-01-16T16:52:16Z" -type: task -priority: 3 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Extract kill logic from update.go - -update.go 617 LOC; extract kill mode handling to internal/ui/kill.go diff --git a/.ktickets/net-23dd.md b/.ktickets/net-23dd.md deleted file mode 100644 index 2f7e9e2..0000000 --- a/.ktickets/net-23dd.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-23dd -status: closed -created: "2026-01-16T16:52:08Z" -type: bug -priority: 1 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Fix nil panic in RenderJSON - -internal/output/json.go:57 will panic if ioStats is nil; add nil check before iterating diff --git a/.ktickets/net-2416.md b/.ktickets/net-2416.md deleted file mode 100644 index 1b522ba..0000000 --- a/.ktickets/net-2416.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-2416 -status: closed -created: "2026-01-15T11:46:26Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4d78 -tests_passed: false ---- -# Add NetIOCollector interface - -Define NetIOCollector interface in collector.go alongside existing Collector interface diff --git a/.ktickets/net-24c5.md b/.ktickets/net-24c5.md deleted file mode 100644 index dd5ed6a..0000000 --- a/.ktickets/net-24c5.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-24c5 -status: closed -deps: -- net-2416 -created: "2026-01-15T11:46:26Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4d78 -tests_passed: false ---- -# Add mock NetIOCollector for tests - -Create mockNetIOCollector in mock_collector_test.go diff --git a/.ktickets/net-25a5.md b/.ktickets/net-25a5.md deleted file mode 100644 index b9d4329..0000000 --- a/.ktickets/net-25a5.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-25a5 -status: closed -deps: -- net-da67 -created: "2026-01-16T17:11:48Z" -type: task -priority: 2 -assignee: kostyay -parent: net-db6d -tests_passed: false ---- -# DNS resolution - -Background async DNS resolution with in-memory cache. Toggleable via settings. Show hostname in remote addr diff --git a/.ktickets/net-281a.md b/.ktickets/net-281a.md deleted file mode 100644 index d77bc11..0000000 --- a/.ktickets/net-281a.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-281a -status: closed -deps: -- net-1bb8 -created: "2026-01-16T12:46:17Z" -type: task -priority: 2 -assignee: kostyay -parent: net-6ff0 -tests_passed: false ---- -# Handle y/n confirmation in kill mode - -y confirms kill via syscall.Kill; any other key cancels; set killResult message diff --git a/.ktickets/net-2a27.md b/.ktickets/net-2a27.md deleted file mode 100644 index 546a57e..0000000 --- a/.ktickets/net-2a27.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-2a27 -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Add theme colors for highlights - -NewConnFg, DeletedConnFg, ChangedConnFg in TableStyle + styles.go getters diff --git a/.ktickets/net-2a5d.md b/.ktickets/net-2a5d.md deleted file mode 100644 index 5a6cc56..0000000 --- a/.ktickets/net-2a5d.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -id: net-2a5d -status: closed -deps: -- net-3e94 -- net-7690 -- net-5440 -created: "2026-01-15T00:25:13Z" -type: task -priority: 2 -assignee: kostyay -parent: net-5bad -tests_passed: false ---- -# Implement runJSONMode() in root.go - -Wire it together: collect once, render JSON, print stdout, exit 0. Errors → JSON error object, exit 1 diff --git a/.ktickets/net-2aa7.md b/.ktickets/net-2aa7.md deleted file mode 100644 index dac4428..0000000 --- a/.ktickets/net-2aa7.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-2aa7 -status: closed -created: "2026-01-16T16:52:08Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Consolidate duplicate signalMap - -Duplicate in cmd/netmon/kill.go:23 and internal/ui/update.go:588; create internal/process/signals.go with shared map diff --git a/.ktickets/net-2d3c.md b/.ktickets/net-2d3c.md deleted file mode 100644 index bdc1856..0000000 --- a/.ktickets/net-2d3c.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-2d3c -status: closed -deps: -- net-2416 -created: "2026-01-15T11:46:26Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4d78 -tests_passed: false ---- -# Add netIOCollector field to UI Model - -Add NetIOCollector field and WithNetIOCollector constructor option diff --git a/.ktickets/net-2f8c.md b/.ktickets/net-2f8c.md deleted file mode 100644 index ef598e3..0000000 --- a/.ktickets/net-2f8c.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-2f8c -status: closed -created: "2026-01-16T12:46:17Z" -type: task -priority: 2 -assignee: kostyay -parent: net-6ff0 -tests_passed: false ---- -# Add kill state fields to Model - -Add killMode, killTarget, killResult, killResultAt fields; add killTargetInfo struct diff --git a/.ktickets/net-333a.md b/.ktickets/net-333a.md deleted file mode 100644 index e87dcf3..0000000 --- a/.ktickets/net-333a.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-333a -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Create internal/dns/resolver.go - -DNSCache struct, Lookup(), ResolveAsync() -> tea.Cmd. Failed lookups cached 5min diff --git a/.ktickets/net-3412.md b/.ktickets/net-3412.md deleted file mode 100644 index dffb1b6..0000000 --- a/.ktickets/net-3412.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-3412 -status: closed -created: "2026-01-15T00:25:13Z" -type: task -priority: 2 -assignee: kostyay -parent: net-5bad -tests_passed: false ---- -# Add --json flag to root command - -Add cobra flag to force JSON output even with TTY (testing/debugging) diff --git a/.ktickets/net-3541.md b/.ktickets/net-3541.md deleted file mode 100644 index 55ef2a9..0000000 --- a/.ktickets/net-3541.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-3541 -status: closed -created: "2026-01-17T22:25:22Z" -type: task -priority: 2 -assignee: kostyay -parent: net-b075 -tests_passed: false ---- -# Add dimmed background style - -Add style for dimming background content when help modal is visible diff --git a/.ktickets/net-3658.md b/.ktickets/net-3658.md deleted file mode 100644 index 3c5117b..0000000 --- a/.ktickets/net-3658.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-3658 -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Diff connections on DataMsg - -Call diffConnections, update changes map, store prev for next diff diff --git a/.ktickets/net-3e94.md b/.ktickets/net-3e94.md deleted file mode 100644 index a8828bf..0000000 --- a/.ktickets/net-3e94.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-3e94 -status: closed -deps: -- net-3412 -created: "2026-01-15T00:25:13Z" -type: task -priority: 2 -assignee: kostyay -parent: net-5bad -tests_passed: false ---- -# Implement TTY detection in root PreRunE - -Check isatty.IsTerminal(os.Stdout.Fd()); if no TTY or --json, run JSON mode diff --git a/.ktickets/net-41b3.md b/.ktickets/net-41b3.md deleted file mode 100644 index 835cfd8..0000000 --- a/.ktickets/net-41b3.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-41b3 -status: closed -created: "2026-01-16T16:52:16Z" -type: chore -priority: 4 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Replace repeatString with strings.Repeat - -internal/ui/styles.go:189 reimplements stdlib; use strings.Repeat() diff --git a/.ktickets/net-43b2.md b/.ktickets/net-43b2.md deleted file mode 100644 index 5ddef90..0000000 --- a/.ktickets/net-43b2.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-43b2 -status: closed -created: "2026-01-16T17:12:07Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-da67 -tests_passed: false ---- -# Test settings persistence - -Unit test load/save, manual verify modal + restart persistence diff --git a/.ktickets/net-4aaa.md b/.ktickets/net-4aaa.md deleted file mode 100644 index 6caa233..0000000 --- a/.ktickets/net-4aaa.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-4aaa -status: closed -created: "2026-01-16T16:52:00Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# Code structure & quality improvements - -Refactor netmon to improve code organization, reduce duplication, and fix potential issues identified in code review diff --git a/.ktickets/net-4ad7.md b/.ktickets/net-4ad7.md deleted file mode 100644 index bc12493..0000000 --- a/.ktickets/net-4ad7.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-4ad7 -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Display hostname in view - -formatRemoteAddr() shows hostname when resolved diff --git a/.ktickets/net-4d78.md b/.ktickets/net-4d78.md deleted file mode 100644 index 23fa369..0000000 --- a/.ktickets/net-4d78.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-4d78 -status: closed -created: "2026-01-15T11:46:17Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# Add OS abstraction layer for testability - -Add NetIOCollector interface and DI pattern to enable mocking OS calls for unit testing presentation layer diff --git a/.ktickets/net-4dd7.md b/.ktickets/net-4dd7.md deleted file mode 100644 index bb46f24..0000000 --- a/.ktickets/net-4dd7.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-4dd7 -status: closed -created: "2026-01-16T17:11:48Z" -type: task -priority: 2 -assignee: kostyay -parent: net-db6d -tests_passed: false ---- -# Service names for ports - -Show service names for well-known+registered ports (0-49151). Use embedded map + /etc/services fallback diff --git a/.ktickets/net-4f41.md b/.ktickets/net-4f41.md deleted file mode 100644 index 70d9306..0000000 --- a/.ktickets/net-4f41.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -id: net-4f41 -status: closed -created: "2026-01-17T22:25:22Z" -type: task -priority: 2 -assignee: kostyay -parent: net-b075 -tests_passed: false ---- -# Add help mode key handling - -Help mode intercepts all keys. Esc or q closes dialog (doesn't quit app) - -## Notes - -**2026-01-17T22:28:32Z** - -User wants keyboard shortcuts as constants - refactoring before completing diff --git a/.ktickets/net-5440.md b/.ktickets/net-5440.md deleted file mode 100644 index 9093cd8..0000000 --- a/.ktickets/net-5440.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-5440 -status: closed -created: "2026-01-15T00:25:13Z" -type: task -priority: 2 -assignee: kostyay -parent: net-5bad -tests_passed: false ---- -# Add one-shot collector function - -CollectOnce() in collector pkg - single snapshot + NetIO stats, no goroutines diff --git a/.ktickets/net-5728.md b/.ktickets/net-5728.md deleted file mode 100644 index 4b1c48e..0000000 --- a/.ktickets/net-5728.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -id: net-5728 -status: closed -created: "2026-01-16T16:52:16Z" -type: task -priority: 4 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Consider TTL-based process cache - -darwin.go:34-39 clears cache every collect cycle; consider TTL expiry instead for better performance - -## Notes - -**2026-01-16T16:55:21Z** - -Deferred: current clear-every-cycle approach is correct and simpler. TTL-based cache adds complexity (tracking timestamps, handling stale PIDs) for marginal perf gain. PID reuse is rare but when it happens, TTL could return wrong process name. Keep current approach. diff --git a/.ktickets/net-57f4.md b/.ktickets/net-57f4.md deleted file mode 100644 index 34b7672..0000000 --- a/.ktickets/net-57f4.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-57f4 -status: closed -created: "2026-01-16T16:52:08Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Split view.go into smaller files - -view.go 1003 LOC; split into: view_render.go (main View + layout), view_table.go (columns/headers/rows), view_sort.go (sorting funcs), format.go (formatBytes, truncateAddr, etc) diff --git a/.ktickets/net-5a04.md b/.ktickets/net-5a04.md deleted file mode 100644 index 665957d..0000000 --- a/.ktickets/net-5a04.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-5a04 -status: closed -deps: -- net-da67 -created: "2026-01-16T17:11:48Z" -type: task -priority: 2 -assignee: kostyay -parent: net-db6d -tests_passed: false ---- -# Change highlighting - -Green=new, red=deleted, yellow=state changed. Themeable colors. 3s fade. Diff connections between refreshes diff --git a/.ktickets/net-5bad.md b/.ktickets/net-5bad.md deleted file mode 100644 index 5980835..0000000 --- a/.ktickets/net-5bad.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-5bad -status: closed -created: "2026-01-15T00:25:05Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# JSON output mode for agent consumption - -Auto-detect no-TTY and output one-shot JSON snapshot instead of TUI. Enables agents to programmatically consume network data. diff --git a/.ktickets/net-5dfd.md b/.ktickets/net-5dfd.md deleted file mode 100644 index 09a7753..0000000 --- a/.ktickets/net-5dfd.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-5dfd -status: closed -created: "2026-01-17T22:25:22Z" -type: task -priority: 2 -assignee: kostyay -parent: net-b075 -tests_passed: false ---- -# Implement renderHelpModal function - -Centered overlay ~60 chars wide with dimmed background. Shows all keybindings by category: Navigation, Views, Actions. Frame border with title 'Keyboard Shortcuts' diff --git a/.ktickets/net-6489.md b/.ktickets/net-6489.md deleted file mode 100644 index ce49015..0000000 --- a/.ktickets/net-6489.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-6489 -status: closed -deps: -- net-0055 -created: "2026-01-17T22:33:00Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Update navigation in update.go - -Up/Down: resolve ID→index, offset, resolve index→ID. Enter: set SelectedID from current item. DataMsg: call validateSelection() after snapshot update. diff --git a/.ktickets/net-653e.md b/.ktickets/net-653e.md deleted file mode 100644 index 757df0e..0000000 --- a/.ktickets/net-653e.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-653e -status: closed -created: "2026-01-17T22:50:45Z" -type: task -priority: 2 -assignee: kostyay -parent: net-e54b -tests_passed: false ---- -# Modify formatRemoteAddr to show service names - -Add serviceNames param to formatRemoteAddr, use services.LookupTCP to replace port with name diff --git a/.ktickets/net-6549.md b/.ktickets/net-6549.md deleted file mode 100644 index c7bb98e..0000000 --- a/.ktickets/net-6549.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-6549 -status: closed -created: "2026-01-16T17:13:32Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-4dd7 -tests_passed: false ---- -# Create internal/services/lookup.go - -Embedded map ~50 common ports, LookupService(port, proto) string diff --git a/.ktickets/net-6660.md b/.ktickets/net-6660.md deleted file mode 100644 index 7c07245..0000000 --- a/.ktickets/net-6660.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-6660 -status: closed -deps: -- net-2d3c -created: "2026-01-15T11:46:26Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4d78 -tests_passed: false ---- -# Update update.go to use injected collector - -Replace inline NewNetIOCollector() with m.netIOCollector in fetchNetIO() diff --git a/.ktickets/net-6b33.md b/.ktickets/net-6b33.md deleted file mode 100644 index 3ec1a2a..0000000 --- a/.ktickets/net-6b33.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-6b33 -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Test change detection - -Unit test diff scenarios, manual verify highlight timing diff --git a/.ktickets/net-6b57.md b/.ktickets/net-6b57.md deleted file mode 100644 index a44016a..0000000 --- a/.ktickets/net-6b57.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-6b57 -status: closed -created: "2026-01-17T22:25:21Z" -type: task -priority: 2 -assignee: kostyay -parent: net-b075 -tests_passed: false ---- -# Update keybinding: ? opens help instead of settings - -Remove ? from settings toggle (line 286), add ? case to open helpMode diff --git a/.ktickets/net-6ff0.md b/.ktickets/net-6ff0.md deleted file mode 100644 index 27d981a..0000000 --- a/.ktickets/net-6ff0.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-6ff0 -status: closed -created: "2026-01-16T12:46:07Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# Kill process feature in TUI - -Add interactive kill process feature: x=SIGTERM, X=SIGKILL, inline confirmation in footer diff --git a/.ktickets/net-7690.md b/.ktickets/net-7690.md deleted file mode 100644 index 51f263d..0000000 --- a/.ktickets/net-7690.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-7690 -status: closed -created: "2026-01-15T00:25:13Z" -type: task -priority: 2 -assignee: kostyay -parent: net-5bad -tests_passed: false ---- -# Create internal/output/json.go - -JSONOutput struct with timestamp, applications (incl tx/rx bytes), connections, skipped_count. RenderJSON() function. diff --git a/.ktickets/net-7e65.md b/.ktickets/net-7e65.md deleted file mode 100644 index 614f5cf..0000000 --- a/.ktickets/net-7e65.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: net-7e65 -status: closed -deps: -- net-281a -- net-c788 -created: "2026-01-16T12:46:17Z" -type: task -priority: 2 -assignee: kostyay -parent: net-6ff0 -tests_passed: false ---- -# Add tests for kill feature - -Test key handling, state transitions, view rendering for kill mode diff --git a/.ktickets/net-832b.md b/.ktickets/net-832b.md deleted file mode 100644 index b18209a..0000000 --- a/.ktickets/net-832b.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-832b -status: closed -created: "2026-01-16T17:12:07Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-da67 -tests_passed: false ---- -# Add settings state to UI model - -settingsMode bool, settings *config.Settings fields in model.go diff --git a/.ktickets/net-9266.md b/.ktickets/net-9266.md deleted file mode 100644 index be50b6b..0000000 --- a/.ktickets/net-9266.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-9266 -status: closed -created: "2026-01-16T17:12:07Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-da67 -tests_passed: false ---- -# Create internal/config/settings.go - -Settings struct with YAML tags, LoadSettings(), SaveSettings() diff --git a/.ktickets/net-9420.md b/.ktickets/net-9420.md deleted file mode 100644 index 9b5203c..0000000 --- a/.ktickets/net-9420.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-9420 -status: closed -created: "2026-01-17T22:50:44Z" -type: task -priority: 2 -assignee: kostyay -parent: net-e54b -tests_passed: false ---- -# Add serviceNames field to UI model - -Add serviceNames bool to Model struct, init from config.CurrentSettings.ServiceNames diff --git a/.ktickets/net-9dd8.md b/.ktickets/net-9dd8.md deleted file mode 100644 index b79947c..0000000 --- a/.ktickets/net-9dd8.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-9dd8 -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Add DNSResolvedMsg to messages.go - -New message type: IP, Hostname, Err fields diff --git a/.ktickets/net-9f92.md b/.ktickets/net-9f92.md deleted file mode 100644 index 4ace67e..0000000 --- a/.ktickets/net-9f92.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-9f92 -status: closed -created: "2026-01-17T22:25:21Z" -type: task -priority: 2 -assignee: kostyay -parent: net-b075 -tests_passed: false ---- -# Add helpMode field to Model - -Add helpMode bool field to Model struct in model.go diff --git a/.ktickets/net-a02b.md b/.ktickets/net-a02b.md deleted file mode 100644 index 4a359c7..0000000 --- a/.ktickets/net-a02b.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-a02b -status: closed -created: "2026-01-16T17:13:32Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-4dd7 -tests_passed: false ---- -# Add formatPort() to format.go - -Format port with service name: 443 (https) diff --git a/.ktickets/net-a1fd.md b/.ktickets/net-a1fd.md deleted file mode 100644 index f891871..0000000 --- a/.ktickets/net-a1fd.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-a1fd -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Test DNS resolution - -Unit test cache ops, manual verify async resolve diff --git a/.ktickets/net-a4ba.md b/.ktickets/net-a4ba.md deleted file mode 100644 index 9531ef3..0000000 --- a/.ktickets/net-a4ba.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-a4ba -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Create internal/ui/diff.go - -ConnectionKey struct, ChangeType enum, diffConnections() function diff --git a/.ktickets/net-b075.md b/.ktickets/net-b075.md deleted file mode 100644 index c31d5de..0000000 --- a/.ktickets/net-b075.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-b075 -status: closed -created: "2026-01-17T22:25:11Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# Help dialog for keyboard shortcuts - -Add ? key to show centered overlay dialog with all keyboard shortcuts organized by category diff --git a/.ktickets/net-b4b3.md b/.ktickets/net-b4b3.md deleted file mode 100644 index d84799b..0000000 --- a/.ktickets/net-b4b3.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-b4b3 -status: closed -created: "2026-01-16T17:13:32Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-4dd7 -tests_passed: false ---- -# Test service name lookup - -Unit test common ports, verify display in TUI diff --git a/.ktickets/net-b99e.md b/.ktickets/net-b99e.md deleted file mode 100644 index 91ed456..0000000 --- a/.ktickets/net-b99e.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -id: net-b99e -status: closed -deps: -- net-24c5 -- net-6660 -created: "2026-01-15T11:46:27Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4d78 -tests_passed: false ---- -# Add tests using mock NetIOCollector - -Update update_test.go to use mock NetIOCollector for netio-related tests diff --git a/.ktickets/net-bb61.md b/.ktickets/net-bb61.md deleted file mode 100644 index dd6b842..0000000 --- a/.ktickets/net-bb61.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-bb61 -status: closed -created: "2026-01-17T22:50:46Z" -type: task -priority: 2 -assignee: kostyay -parent: net-e54b -tests_passed: false ---- -# Update format callers to pass serviceNames - -Pass m.serviceNames to formatRemoteAddr calls in view.go and view_table.go diff --git a/.ktickets/net-c788.md b/.ktickets/net-c788.md deleted file mode 100644 index 05c094c..0000000 --- a/.ktickets/net-c788.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-c788 -status: closed -deps: -- net-2f8c -created: "2026-01-16T12:46:17Z" -type: task -priority: 2 -assignee: kostyay -parent: net-6ff0 -tests_passed: false ---- -# Render kill UI in view.go - -Show confirmation prompt in footer when killMode=true; show result message when killResult set; auto-clear after 2s diff --git a/.ktickets/net-c9dd.md b/.ktickets/net-c9dd.md deleted file mode 100644 index e3daec3..0000000 --- a/.ktickets/net-c9dd.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-c9dd -status: closed -created: "2026-01-16T16:52:08Z" -type: task -priority: 2 -assignee: kostyay -parent: net-4aaa -tests_passed: false ---- -# Consolidate duplicate extractPort functions - -Duplicate in cmd/netmon/kill.go:151 and internal/ui/update.go:577; move to internal/model/network.go as ExtractPort() diff --git a/.ktickets/net-cd75.md b/.ktickets/net-cd75.md deleted file mode 100644 index c26458e..0000000 --- a/.ktickets/net-cd75.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-cd75 -status: closed -created: "2026-01-16T17:12:07Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-da67 -tests_passed: false ---- -# Render settings modal overlay - -Check settingsMode in View(), render overlay with toggle options diff --git a/.ktickets/net-d394.md b/.ktickets/net-d394.md deleted file mode 100644 index c0ebadd..0000000 --- a/.ktickets/net-d394.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-d394 -status: closed -deps: -- net-0055 -created: "2026-01-17T22:33:00Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Update rendering in view.go - -Compute cursorIdx once via resolveSelectionIndex(). Use isSelected := i == cursorIdx for highlighting. diff --git a/.ktickets/net-d405.md b/.ktickets/net-d405.md deleted file mode 100644 index 10a2dce..0000000 --- a/.ktickets/net-d405.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-d405 -status: closed -created: "2026-01-17T22:50:45Z" -type: task -priority: 2 -assignee: kostyay -parent: net-e54b -tests_passed: false ---- -# Add Service Names toggle to settings modal - -Add row to settings slice in renderSettingsModal: Service Names toggle with description diff --git a/.ktickets/net-d5f9.md b/.ktickets/net-d5f9.md deleted file mode 100644 index 5476ea8..0000000 --- a/.ktickets/net-d5f9.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-d5f9 -status: closed -created: "2026-01-17T22:32:58Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Add SelectionID type to model.go - -Add SelectionID struct with ProcessName string and ConnectionKey pointer. Add helper constructors SelectionIDFromProcess and SelectionIDFromConnection. diff --git a/.ktickets/net-d718.md b/.ktickets/net-d718.md deleted file mode 100644 index 4196be2..0000000 --- a/.ktickets/net-d718.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-d718 -status: closed -deps: -- net-0055 -created: "2026-01-17T22:33:00Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Simplify kill.go to use SelectedID directly - -Use SelectedID.ProcessName or SelectedID.ConnectionKey directly instead of cursor lookup. No filter/sort needed anymore. diff --git a/.ktickets/net-da67.md b/.ktickets/net-da67.md deleted file mode 100644 index 85f094e..0000000 --- a/.ktickets/net-da67.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-da67 -status: closed -created: "2026-01-16T17:11:48Z" -type: task -priority: 2 -assignee: kostyay -parent: net-db6d -tests_passed: false ---- -# Settings infrastructure - -Config load/save, settings modal (Ctrl+S), persist to ~/.config/netmon/config.yaml diff --git a/.ktickets/net-db6d.md b/.ktickets/net-db6d.md deleted file mode 100644 index d5088da..0000000 --- a/.ktickets/net-db6d.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-db6d -status: closed -created: "2026-01-16T17:11:41Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# DNS Resolution + Change Highlighting + Service Names + Settings - -Add TCPView-like features: background DNS resolution with cache, connection change highlighting (new/deleted/changed), port service names, settings modal with persistence diff --git a/.ktickets/net-dc1e.md b/.ktickets/net-dc1e.md deleted file mode 100644 index 4bc6cb2..0000000 --- a/.ktickets/net-dc1e.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-dc1e -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Prune expired changes on Tick - -Remove changes older than 3s in TickMsg handler diff --git a/.ktickets/net-e549.md b/.ktickets/net-e549.md deleted file mode 100644 index 6c1c11d..0000000 --- a/.ktickets/net-e549.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-e549 -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Add DNS state to model - -dnsCache *dns.DNSCache, dnsEnabled bool fields diff --git a/.ktickets/net-e54b.md b/.ktickets/net-e54b.md deleted file mode 100644 index f4373aa..0000000 --- a/.ktickets/net-e54b.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -id: net-e54b -status: closed -created: "2026-01-17T22:50:36Z" -type: epic -priority: 2 -assignee: kostyay -tests_passed: false ---- -# Well-known port service names - -Display service names instead of port numbers (e.g., :https instead of :443). Configurable via settings. diff --git a/.ktickets/net-e553.md b/.ktickets/net-e553.md deleted file mode 100644 index 03d261f..0000000 --- a/.ktickets/net-e553.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-e553 -status: closed -created: "2026-01-17T22:50:45Z" -type: task -priority: 2 -assignee: kostyay -parent: net-e54b -tests_passed: false ---- -# Wire up settings toggle handler - -Add case 1 in update.go to toggle serviceNames and persist to config diff --git a/.ktickets/net-fac4.md b/.ktickets/net-fac4.md deleted file mode 100644 index c17dadd..0000000 --- a/.ktickets/net-fac4.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-fac4 -status: closed -created: "2026-01-16T17:15:51Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-5a04 -tests_passed: false ---- -# Add highlight state to model - -prevConnections map, changes map fields diff --git a/.ktickets/net-fcf8.md b/.ktickets/net-fcf8.md deleted file mode 100644 index 7d6199d..0000000 --- a/.ktickets/net-fcf8.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -id: net-fcf8 -status: closed -deps: -- net-d5f9 -created: "2026-01-17T22:32:59Z" -type: task -priority: 2 -assignee: kostyay -parent: net-1e6b -tests_passed: false ---- -# Add SelectedID field to ViewState - -Add SelectedID SelectionID field to ViewState struct. Keep Cursor int for scroll math compatibility. diff --git a/.ktickets/net-fed8.md b/.ktickets/net-fed8.md deleted file mode 100644 index cb22064..0000000 --- a/.ktickets/net-fed8.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -id: net-fed8 -status: closed -created: "2026-01-16T17:15:39Z" -type: subtask -priority: 2 -assignee: kostyay -parent: net-25a5 -tests_passed: false ---- -# Handle DNS in update.go - -Queue resolves on DataMsg, handle DNSResolvedMsg, update cache