Add Intruder result sorting, filtering, and response match/extraction columns

Open
#178 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Clearly specified
Activity status
Active
Tech stack
rust
Domain
desktop, security

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

enhancement focus: community parity focus: usability priority: p2

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

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from andyintheshell/perseid

All issues in andyintheshell/perseid

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.