Repository navigation
Project Memory
Mirrored from
PROJECT_MEMORY.md(content sha25627f26622c0c4) byscripts/Sync-Wiki.ps1. Edit the source, not this page -- the next sync overwrites it.
This file is the original brief, kept as written. It records what was asked for before anything was built, which is why it is worth not editing: several of its items have since been decided differently, and the value is in being able to see that.
Every decision made since lives in DECISIONS.md, which indexes 57 ADRs. Where the two disagree, the ADR is current. The most visible example is in "Suggested implementation style" below: Slint was "a leading candidate to be benchmarked"; it was benchmarked and chosen (ADR-0015).
The ADR numbers are not contiguous, and the gap is deliberate. They run 0001-0056 and then jump to 0080; 0057-0079 are deliberately unused, because the repository derived from this one holds those numbers for entirely different decisions and this project's records link to several of them by number (ADR-0080 records why, on the far side of the gap). So 57 ADRs is the count, not the highest number.
Two items in "Locked user decisions" below have since been narrowed rather than delivered as written, and they are left standing because a brief that quietly edits itself to agree with what happened stops being evidence of what was asked for:
-
item 7's "run-selection" is not a row. Running a selection works in only
one of the two editor surfaces, which is the half-feature
project/WORK_QUEUE.mdwarns against (ADR-0048); - item 9's "memory mapping" was declined with measurements rather than built (ADR-0027).
CLAUDE.md is the entry point for working here.
Project: BachelorPad+
Repository folder target: bachelorpadplus_rust
Language: Rust
Primary target OS: Windows 10, Windows 11, Linux
BachelorPad+ is not merely a Notepad clone. It is a fast text appliance that remains simple for ordinary note-taking while exposing deeper capabilities progressively.
Core phrase:
Notepad when you want it. More when you need it.
- Target Windows 10, Windows 11 and Linux.
- Use Rust as the primary language.
- Default filename pattern is:
Semantic Title_DDMMMYYYY.ext. - Creation date is the default filename date and does not change on every save.
- Status bar shows last successful save and full path.
- Support Markdown, YAML, JSON, JSONL/NDJSON, CSV/TSV, TOML, XML, common source formats and Jupyter notebooks.
- Support notebook-style execution, including mixed-language cells and run-selection.
- Support local semantic organization, semantic naming, related notes, duplicate detection and hybrid search.
- Include all proposed Rust-oriented performance features: rope buffer, memory mapping, huge-file mode, parallel processing, safe/atomic save, file watching, recovery journals, structural undo and inspection tools.
- Include Light, Dark, Organic and Green themes.
- Include clipboard-history access in the editor context menu, plus an optional BachelorPad+ clipboard system.
- Include full security/cryptography feature set:
.bpadx, passphrases, Argon2id, AEAD, DPAPI/Hello on Windows where appropriate, Linux keyring services where appropriate, encrypted recovery/history, security profiles, privacy mode, secure clipboard, secret scanning, hashing, signatures, redaction, audit history and semantic privacy controls. - Allow BachelorPad+ to be set as the user's default text editor on Windows 10/11 and Linux using supported operating-system mechanisms.
- Do not replace or patch Windows
notepad.exe. - Branding is an original retro-futurist consumer-appliance style: humorous, chunky, industrial, exaggerated convenience, but no copied characters, logos, names, fictional companies, props, typography, dialogue, or distinctive protected assets.
- Project governance should use:
project -> task -> step -> prompts/rosettas -> artifacts -> metadata -> database -> notewhere logical and useful.
- Core editing never depends on AI/cloud services.
- Cloud semantic services are optional.
- Security policy constrains recovery, clipboard, history, metadata, embeddings and network use.
- Physical file renames/moves require user approval.
- No custom cryptography.
- Notebook code never auto-runs.
- Cross-platform behavior lives in shared crates; platform-specific behavior is isolated behind traits/adapters.
- Plain files remain standard files unless encryption or a BachelorPad-specific notebook/storage feature requires otherwise.
- Cargo workspace.
- Slint is a leading UI candidate, but final UI toolkit should be benchmarked/prototyped before irreversible commitment.
- SQLite for local metadata.
-
bp-*crate naming. - Strong tests, fuzzing and benchmark baselines from early phases.
Generated from dboles99/bachelorpadplus_rust@feat/phase-01-foundation-ui by scripts/Sync-Wiki.ps1. Licence: GPL-3.0-only.