Add Intruder result sorting, filtering, and response match/extraction columns
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start with crates/perseid/src/app/intruder/view/results.rs, which renders the current results table, and inspect the unified history in #169. Use synthetic traffic to assess the current retained rows and identify how sorting, filtering, selection, and response data are represented. Done means meeting the acceptance criteria, testing the listed edge cases, and documenting limits; the requested durable storage and off-UI-thread work make this broad design and implementation work.
Written by the indexing model from the issue text.
Description
Review baseline
Source review of main at 47e7fce3106584f4f333db4eada6dcd0c33c8bbe (2026-11-05), including unified history (#169). This is not a native-app runtime reproduction. Use synthetic traffic for tests and issue evidence.
Workflow gap and evidence
crates/perseid/src/app/intruder/view/results.rs renders results in sequence order with Payloads/Status/Length/Time. Headers are labels, not sort controls, and there are no result filters or response match/extraction columns. An outlier is hard to find in even a modest authorization or input-validation run.
Acceptance criteria
- Stable ascending/descending sorting by sequence, status, numeric length, duration, and payload, with documented error/missing-value ordering.
- Composable filters for status/error, payload text, length range, and response literal/regex match, plus a visible active-filter summary and reset.
- Bounded user-defined response match/extraction columns with invalid-regex feedback and explicit decoded-versus-captured-byte semantics.
- Selection remains tied to attack/sequence identity while results arrive or sort/filter changes; filtering never deletes results.
- Operate over the full logically retained result set when durable storage is available, not just the visible window; keep expensive work off the UI thread.
- Tests cover numeric sorting/ties, failures, zero results, regex errors, truncated/binary responses, and incoming results; document limits.
Separate from #57 (Proxy HTTP filters), #61 (payload processing before sending), and #62 (saved attack definitions). Can initially ship against current retained rows with clearly stated limits.
- Dominant language
- Rust
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 12m
- Merged PRs (30d)
- 137
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from andyintheshell/perseid
-
documentation
Difficulty 1/5 Under an hour Newbie friendliness 85/100
andyintheshell/perseid#73 · 2 comments ·
Maintainers usually reply within 1 day
-
documentation focus: pro parity priority: p3
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#192 ·
Maintainers usually reply within 1 day
-
enhancement focus: collaborator priority: p0
Difficulty 5/5 Over a week Newbie friendliness 25/100
andyintheshell/perseid#191 · 1 comment ·
Maintainers usually reply within 1 day
-
enhancement focus: community parity focus: usability priority: p2
Difficulty 5/5 Over a week Newbie friendliness 45/100
andyintheshell/perseid#179 ·
Maintainers usually reply within 1 day
-
enhancement focus: community parity focus: usability priority: p1
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#177 ·
Maintainers usually reply within 1 day
All issues in andyintheshell/perseid
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
aaif-goose/goose#13364 ·
Maintainers usually reply within 1 day
-
ai_p2
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
ClickHouse/ClickHouse#130006 ·
Maintainers usually reply within 1 day
-
[Bug]: PostgreSQL backend: Queue.remove() / Job.remove() never emit the QueueEvents "removed" eventPossibly taken @1AbdullahButt claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
taskforcesh/bullmq#5085 ·
Maintainers usually reply within 1 day