Repository navigation
Roadmap
What is open, and what has landed, drawn from the issues and CONTRIBUTING.md §3. Issue numbers are canonical: if this page and an issue disagree, the issue is right.
Released: v1.10.0 (2026-09-29). Eleven formats; batches, attachment expansion and mailboxes that round-trip as mailboxes; presets; four anonymisation methods with variants, vaults and restore; verified exports with reports; durable processing with an admission queue; chunked encryption and streaming reads; server-side search, RegEx and global rules; the Hush assistant; 25 AI providers including local models; a labelled corpus and a benchmark harness; label-driven releases. Everything shipped is in Release History.
Almost everything open is either depth on something that works or a claim that has not been measured.
| Issue | Why it matters | |
|---|---|---|
| Run the first model benchmark |
#153 benchmark help wanted
|
Run Haiku 4.5 and Sonnet 5 on the labelled corpus with pnpm bench:models, commit the results and charts, and write up what it found, including if the deterministic-first claim does not hold. The harness is done and no numbers exist yet. |
| Corpus and benchmarks (tracking) |
#144 benchmark testing
|
The umbrella for the corpus (534 of 600 documents, not yet human-reviewed), scoring and model benchmarks. |
| Issue | Why it matters | |
|---|---|---|
| PDF: preserve the text layer |
#40 help wanted
|
The most leverage per line of code. A redacted page is rasterised today, which guarantees removal but loses selectable, searchable, accessible text, including everything never redacted. Content-stream surgery would keep it. It is hard across fonts and encodings, and nearly right means leaking, so it must land behind the same verification gate. |
| PST: Outlook archives |
#90 formats
|
The form corporate email takes for archival and discovery. The same container→batch shape MBOX proved, behind an opaque binary format with no native Node parser. |
| Issue | Why it matters | |
|---|---|---|
| Non-English detection |
#43 help wanted
|
Detectors (DOB, Account, street suffixes, name heuristics) and prompts are English-shaped. On a German, French or Japanese document it finds structured formats and little else, silently. A contribution for one language you speak is welcome on its own. |
| Issue | Why it matters | |
|---|---|---|
| Browser end-to-end tests |
#35 testing
|
pnpm smoke covers the wiring over HTTP but never touches the editor. Wanted: Playwright per format that accepts and rejects on the canvas and in the inspector, draws a region, searches, makes a rule, exports, downloads, and asserts the accepted values are not in the bytes. |
| Issue | Why it matters | |
|---|---|---|
| A real screen-reader pass + contrast |
#42 accessibility help wanted
|
The mechanical half has landed (labelled, focusable redactions; live regions for review and search; a shortcut sheet; a keyboard-reachable zoom slider). What remains cannot be done by reading code: whether reviewing this way is workable for someone who uses a screen reader daily, and a WCAG contrast audit. |
| Touch: draw a region with a finger |
#45 good first issue ux
|
Region drawing uses mouse events. On a tablet the escape hatch for everything detection misses is missing. It needs pointer events and finger-sized handles on both the image and PDF canvases. |
-
Small XLSX files are intermittently misread by
loadWorkbook(a buffer-pool offset bug), surfaced by the benchmark corpus. See Troubleshooting. - The upload panel's size message says "25 MB" while the enforced ceiling is 50 MiB.
| Issue | Release | |
|---|---|---|
| Batch download in original format; mailboxes rebuilt; provenance folders; >50-document batches | #143 | 1.10.0 |
| Model benchmarks and charts | #59, #55 | 1.9.2–1.9.3 |
| A labelled synthetic corpus and a scorer | #57 | 1.9.1 |
| Search, RegEx and global rules, Hush, shortcuts, word-level click | #142 | 1.9.0 |
| Sweep robust to concurrent deletes | #140 | 1.8.0 |
| OpenAI-compatible profiles, ChatGPT sign-in, local-model CI | #126 | 1.8.0 |
| Streaming I/O part 2: page-at-a-time model, ranged Office/PDF, streamed downloads | #129 | 1.7.0 |
| Chunked encryption and streaming I/O | #102 | 1.6.0 |
| A fake model provider for orchestration tests | #30 | 1.6.1 |
| OCR tests with a pinned model and geometry assertions | #33 | 1.6.1 |
| UI walkthrough fixes: multi-copy exports, Accept all vs Ignore, undo scope | #121 | 1.5.0 |
| Setup UX for large model catalogs, finishing the install | #119 | 1.4.0 |
| Bring your own AI provider | #115 | 1.3.0 |
| MinIO → RustFS | #117 | 1.3.0 |
| A changelog from fragments; release automation | #105, #104 | 1.1.1–1.2.0 |
| HTML email bodies as markdown | #101 | 1.1.1 |
| MBOX: a mailbox as a batch | #88 | 1.1.0 |
Earlier work (formats, methods, batches, presets, reports, concurrency, the pre-1.0 hardening pass): Release History.
Reasons in Contributing §2.
-
Accounts and auth. Fork it; ownership flows through
requireDocument. - Telemetry that leaves the machine.
- Vendor lock-in. A Vercel-only code path is a bug.
- Compliance-named presets. Enforced at import.
- Subscription sign-in where the vendor's terms forbid it (there is no Claude sign-in).
Anonify: AI proposes, the application applies, and only what a person accepted is removed.
Repository · Report a bug · Request a feature · Security policy · Apache-2.0
This wiki describes v1.10.0 and summarises and links the in-repo documentation. Where the two disagree, the files under docs/, CHANGELOG.md and SECURITY.md are canonical.
Getting going
Using it
- Supported Formats
- Review Workspace
- Search and Rules
- Hush Assistant
- Redaction Presets
- Export and Anonymisation
- Batches and Mailboxes
How it works
- Architecture
- Processing Workflow
- Redaction Engine
- Storage and Encryption
- Streaming IO
- Data Model
- API Reference
- Security Model
When it breaks
Contributing
Repository · Issues · Releases · Changelog