Complete persistent project history (paging, retention, and migrations)
Maintainers usually reply within 1 day
@andyintheshell is already working on this.
Since Oct 23, 2026.
Assessment
This issue has not been assessed yet.
Description
Context
0.1.0 keeps HTTP history in memory, bounded by --history-limit and
--history-bytes. Closing the app loses captured exchanges, notes, site-map
state, and search material. Persistent, searchable history is the largest
remaining Milestone 3 item and the workflow research's only P0 gap.
Scope
- Add a SQLite-backed store with schema versioning and forward migrations.
- Persist exchange metadata, request/response heads and retained bodies,
timestamps/durations, lifecycle state, notes, and source information needed by
the site map. - Enforce bounded retention on disk: exchange count, retained-body bytes, and a
configurable database path/budget. Keep the current "retain one oversized
exchange" behavior. - Load a bounded recent window at startup and page older rows on demand. Do not
load every body into memory. - Make history filtering, Search, and the site map work against the store.
FTS5 can index searchable text, but decoded-body matching must still handle
gzip/deflate/Brotli and bounded previews. - Provide Clear history and database deletion actions. Document what is stored,
where it lives, that it is local, and whether it is encrypted. - Handle missing, locked, corrupt, and read-only databases without taking down
the proxy or UI. Use WAL/checkpointing safely.
Acceptance criteria
- Restart restores retained HTTP history and notes; Search finds restored
exchanges. - Disk usage respects configured retention bounds and evicts oldest first.
- The app remains usable with a missing, locked, or corrupt database and
reports the problem. - Migrations, retention, and corruption recovery have automated coverage.
- Safety, workbench, parity, roadmap, and packaging docs describe the store
and its deletion/retention behavior.
References
- Dominant language
- Rust
- Stars
- 1
- Forks
- 0
- Avg merge
- 34m
- Merged PRs (30d)
- 66
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 ·
Maintainers usually reply within 1 day
-
enhancement help wanted priority: p3
Difficulty 5/5 Over a week Newbie friendliness 25/100
andyintheshell/perseid#72 ·
Maintainers usually reply within 1 day
-
enhancement priority: p3
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#71 ·
Maintainers usually reply within 1 day
-
enhancement priority: p3
Difficulty 5/5 Over a week Newbie friendliness 35/100
andyintheshell/perseid#70 ·
Maintainers usually reply within 1 day
-
accessibility enhancement help wanted priority: p2
Difficulty 5/5 Over a week Newbie friendliness 38/100
andyintheshell/perseid#69 ·
Maintainers usually reply within 1 day
All issues in andyintheshell/perseid
Similar issues
-
bug easy good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
lacs-project/sysknife#659 ·
Maintainers usually reply within 2 days
-
E_FIT_INPUT_MISSING (mixture overrides): the message says ferx-r bundles lack mixture_overridesOpenP3
Difficulty 1/5 Under an hour Newbie friendliness 83/100
Maintainers usually reply within 1 day
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
registrystack/registry-stack#2431 ·
Maintainers usually reply within 1 day
-
contribution
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
farion1231/cc-switch#8863 · 1 comment ·
Maintainers usually reply within 1 day