diff options
| author | srdusr <[email protected]> | 2026-05-18 23:30:00 +0200 |
|---|---|---|
| committer | srdusr <[email protected]> | 2026-05-18 23:30:00 +0200 |
| commit | 4fa511ac5f2aa422456c49610a2cf29dfee46dfd (patch) | |
| tree | c033651e2fcd3a3f1131998f86a5118bcfc56034 /internal/proxy/dialer_test.go | |
| parent | 1707cf827592bc3de7ea9c2805b7adea49b3cbc5 (diff) | |
| download | mitmux-4fa511ac5f2aa422456c49610a2cf29dfee46dfd.tar.gz mitmux-4fa511ac5f2aa422456c49610a2cf29dfee46dfd.zip | |
History deletion: delete one entry (x) or clear everything (X)
Store had full CRUD for match-and-replace rules but no way to delete or
prune history at all - it only ever grew, with no way to remove an
accidental capture or start a new engagement clean short of manually
deleting the DB file outside the tool entirely.
internal/store: DeleteEntry(id) removes one history row and its
history_fts search index row in a transaction. ClearHistory() empties
both tables entirely; rules are untouched. internal/ipc: new
"delete_entry" and "clear_history" request types, Client.DeleteEntry/
ClearHistory methods.
TUI: 'x' deletes the selected history entry, 'X' clears the whole
database. Both gated behind a y/n confirmation - a small reusable
confirmPrompt/confirmYes model state, checked first in the history
list's key handling, so any key other than y/Y safely cancels rather
than falling through to whatever that key normally does elsewhere (this
also means ctrl+c during a pending confirmation cancels the prompt
rather than quitting - a deliberate fail-safe, not an oversight: quick
to dismiss, and a second ctrl+c then quits normally).
'X' is explicitly NOT scoped to an active search filter - it always
clears the true total (read from daemon status, not len(m.entries),
which would understate the count under a filter and make the
confirmation prompt itself misleading about what's about to happen).
Verified live in tmux against a running daemon with real captured
entries: 'x' shows "delete #N? y/n", 'n' cancels with the entry
untouched, 'y' deletes it and the list/count both refresh correctly;
'X' shows "clear all N history entries (not just this view)? y/n" with
the true count, 'y' empties the database (confirmed via direct SQLite
query: both history and history_fts at 0 rows afterward) and the TUI
correctly shows "history (0)" / "0 requests"; 'x'/'X' on an empty list
correctly no-op without crashing.
go build/vet/gofmt/test/mod tidy all clean.
Diffstat (limited to 'internal/proxy/dialer_test.go')
0 files changed, 0 insertions, 0 deletions