Skip to content

About

Notepad when you want it. More when you need it. A free, open source Notepad replacement for Windows and Linux that knows which of your notes are about the same subject. No network, no telemetry, no execution.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Latest commit

 

History

190 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BachelorPad+ Lite

A text editor that stops where it should. Windows 10, Windows 11 and Linux. Free software under GPL-3.0-only.

Notepad when you want it. More when you need it.

Download · bpad.prompt-forge.dev · Manual · Wiki


BachelorPad+ Lite is Windows 11 Notepad's feature set, plus one thing Notepad does not have: a note layer that knows which of your documents are about the same subject.

It opens instantly, it never touches the network, and it cannot run anything.

This started as a much larger product and was deliberately cut down. Ten crates were removed on purpose, each with a written decision behind it (ADR-0057, ADR-0059--ADR-0064), until what was left was Notepad plus the one idea worth keeping. The larger one is still being built; there is a waitlist.

What works today

Editing. Tabs, find and replace, search across a folder, go to line, undo and redo, overtype on the Insert key, zoom, every encoding Notepad opens -- UTF-8, UTF-16 and the legacy code pages, saved back as they came -- LF and CRLF, Light/Dark/Organic/Green themes plus System. A rope underneath, so an edit costs what it changes rather than what the file weighs.

The note layer, which is the part that is not Notepad:

  • semantic filenames -- Title_DDMMMYYYY.ext, proposed from the document itself and never applied without you seeing it first
  • related notes -- what else have I written that is about this
  • duplicate detection -- automatically on save, and on demand
  • a research report over your whole collection, which tells you what it did not look at
  • per-document privacy profiles governing what is written down at all

Recovery. A journal keeps unsaved work through a crash, a kill or a power cut, and asks on the next launch -- and keeps it until you say Discard, not merely until you close the question (ADR-0084).

Default-editor registration on Windows and Linux, which never seizes an association -- it shows you what it would do and hands you the means (ADR-0012).

Format recognition for Markdown, YAML, JSON, JSONL/NDJSON, TOML, CSV/TSV, XML and source code. The operations over them left under ADR-0062.

What it refuses to do

Execute anything No scripting, no macros, no cells, no interpreters (ADR-0057)
Reach the network No telemetry, no update check, no crash reporting, no AI (ADR-0006)
Launch another program Not even a browser for its own help (ADR-0075)
Seize a file association It writes a script you read and run (ADR-0012)
Delete out of your profile Even files left behind by removed features (ADR-0070)
Rename a file silently Every rename is proposed and approved first

What it does not have

No macOS build (ADR-0072, which says what it would cost). No printing. No Markdown preview, which is undecided rather than impossible (ADR-0081). No drag and drop to open yet -- it is buildable, and does not work on a native Wayland session when it is (the same ADR). No encryption; that left with ADR-0064. No claim to be accessible yet: F10 reaches the menus and the controls are named for a screen reader, but nobody has run NVDA or Orca on it, and until somebody has it does not say so (ADR-0088).

Typing slows down in a large file: the default view lays out the whole document on every key, and from 512 KiB the status bar says so and names --editor-view, which does not (ADR-0092).

Duplicate line, move line and the Insert menu need --editor-view, because they have to know where the caret is and the toolkit's text widget will not say (ADR-0018).

Install

From the releases page (ADR-0093):

You have Download
Windows 10 or 11 the -setup.exe -- no administrator prompt, installs for you alone
Ubuntu, Debian, Mint the .deb -- sudo apt install ./bachelorpad-lite_*_amd64.deb
Fedora, openSUSE the .rpm -- sudo dnf install ./bachelorpad-lite-*.x86_64.rpm
Any other Linux the .AppImage -- chmod +x it and run it
Arch the PKGBUILD -- makepkg -si
Either, unpacked anywhere the .zip or the .tar.gz

The installer offers, unticked, to put the program in Open with; it never makes itself the default for anything (ADR-0012).

Windows needs nothing installed first. Linux needs glibc 2.35 or later -- Ubuntu 22.04, Debian 12, Mint 21, Fedora 36 or newer (ADR-0087).

The downloads are unsigned. Windows SmartScreen will warn; choose More info, then Run anyway. Signing is a 1.x release's, through SignPath or the Microsoft Store (ADR-0094), and self-signing was refused outright, because a self-signed certificate is only satisfied once the user installs a root certificate they have no reason to trust (ADR-0055). SHA256SUMS.txt is attached to every release and answers tampering in transit, which is the threat a certificate answers worst.

Full instructions: Installation and first launch.

Build it yourself

git clone https://github.com/dboles99/bachelorpluslite
cd bachelorpluslite
cargo run --release

Linux needs libfontconfig1-dev libxkbcommon-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb1-dev libgl1-mesa-dev libwayland-dev.

./scripts/Install-GitHooks.ps1      # once per clone
./scripts/Invoke-LocalCI.ps1 -Linux # the gate: both legs, ~7 minutes
./scripts/New-Release.ps1 -Linux    # archives for both targets, with checksums

scripts/Invoke-LocalCI.ps1 is the authoritative gate and runs from pre-commit and pre-push. Every commit in this repository has passed it. GitHub Actions runs the same stages under the same names for pull requests and releases (ADR-0073); when the two disagree, the local one is right.

More: Building from source, Testing and the gate.

Documentation

docs/ is the one source. Everything else is generated from it (ADR-0075) -- the manual, the in-app help the archives carry, the GitHub Wiki, and the website. Three reference pages are generated from the code rather than from prose, because the flag list, the shortcut list and the menu map already have a home there and a second copy would be wrong within a session.

The manual Everything, one file
docs/user/ One topic per file
docs/tutorials/ Start-to-finish walkthroughs
docs/developer/ Building, testing, releasing, architecture
Help › User Guide The same pages, inside the editor, as a document

Licence

GPL-3.0-only. Not -or-later, and the difference is the decision: Slint's grant is to version 3 and no other, so a project offering "or later" would be offering terms it has not been granted (ADR-0071).

LICENSE is the text. THIRD-PARTY-NOTICES.md lists all 626 crates linked into the binary, generated from the resolve graph and checked by the gate.

Contributing

Issues and pull requests are welcome. Read CONTRIBUTING.md first -- particularly the part about a separate BachelorPad+, which is why contributions need a sign-off.

Before touching crates/bp-ui/, read prompts/rosettas/R011_WIRE_CAPABILITY_INTO_SHELL.md. It holds the traps that have each cost somebody a session.

For a security problem, do not open a public issue -- SECURITY.md.

How this project works, if you are curious

DECISIONS.md is the index of the architecture decision records and the one home for every lesson learned. The lessons are the interesting part: this repository writes down the shape of each mistake, not only the fix.

A sample, all of them real:

  • A comment claiming something is not a property of the code. Ask what would fail if it stopped being true; if nothing would, the comment is a wish.
  • Two claims about the same fact coexist for exactly as long as nothing asks.
  • A test that proves two things agree is evidence about two things. Before trusting a constant as the one home for a value, grep for the value.
  • A claim in the record is not a property of the repository. An ADR whose reasoning rests on an external fact should name the command that would test it.
  • Deleting the code that writes a file does not delete the file.
  • The dangerous unsupported platform is not the one that fails to compile. It is the one that compiles and answers as something else.

About

Notepad when you want it. More when you need it. A free, open source Notepad replacement for Windows and Linux that knows which of your notes are about the same subject. No network, no telemetry, no execution.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages