Repository navigation
Building From Source
| Rust | stable, per rust-toolchain.toml (rustfmt and clippy come with it) |
| Windows | nothing else |
| Linux | libfontconfig1-dev libxkbcommon-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb1-dev libgl1-mesa-dev libwayland-dev |
| PowerShell 7 | for the gate and the build scripts. Cross-platform; pwsh on Linux |
| Optional |
cargo-nextest (about 2.5x faster tests), cargo-deny (the licence stage) |
The exact Linux package list is in .github/workflows/ci.yml, named
individually rather than through a meta-package so that a failure says which
one went missing.
git clone https://github.com/dboles99/bachelorpluslite
cd bachelorpluslite
cargo run --releasecargo run --release -- --help # every flag it accepts
cargo run --release -- --editor-view # the custom editor surface
cargo run --release -- --self-check # load, print a marker, exit./scripts/Install-GitHooks.ps1This wires the gate into pre-commit and pre-push. It verifies the
executable bit, because a hook without it is skipped silently -- the hardest
failure mode to notice.
Fifteen crates plus the binary. docs/architecture/ARCHITECTURE.md owns the
map -- what each crate is for, its size, and the seams between them -- and
this page does not restate it.
The shape worth knowing before you change anything:
-
bp-uiconnects; it does not decide. If you are writing anifabout what a feature should do insidebp-ui, that logic belongs in a library crate where it can be tested without a window. -
bp-platformtakes the platform as a parameter, not as acfg. That is what lets the Linux leg of the gate execute the Windows rules and vice versa. The compile target is consulted in exactly one place,Platform::HOST. -
fuzz/is its own workspace, so--workspacewalks past it. It has its own gate stages.
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 -- action-id ranges, the two editor
views, Slint if scoping, and the one about a menu callback that cannot take
the keyboard focus, which shipped a defect that typed a passphrase into the
open document.
unwrap_used, panic, todo and unimplemented are warnings at the
workspace and errors under the gate's -D warnings. They were all at zero
before they were switched on.
expect_used, unreachable and indexing_slicing are deliberately not
enabled; each is a change to the code rather than to the policy and wants its
own pass.
Say so and give the reason. Dependency choices are ADR material here, and
a new one has to pass cargo deny check licenses -- the allow-list in
deny.toml is the GPL-3.0-only compatibility audit written down
(ADR-0071).
If it changes the graph, regenerate the notices:
./scripts/New-ThirdPartyNotices.ps1The gate checks this, so a stale notices file fails rather than shipping.
This page is generated from docs/developer/01-building.md and
edits made here will be overwritten. Change the source and open a pull request.
Using it
- Installation
- Your first note
- Documents
- Editing
- Tabs and windows
- Find and replace
- Across files
- Undo and recovery
- Encoding
- Settings
- Notes
- Default editor
Reference
Problems
Contributing
Generated from docs/.