A lightweight, cross-platform text editor written in modern C++. UmbraNote feels familiar like Windows Notepad, with optional encrypted notes, PDF export, and a clean native UI on Windows and Linux.
- Familiar editing — New, Open, Save, Find/Replace, Go To, Word Wrap, Font picker, and status bar line/column display
- Open any text-like file — Notepad-style open dialog (All Files by default) with auto-detect for UTF-8, UTF-16, and system ANSI
- UTF-8 by default — Plain text files are saved as UTF-8 without BOM
- Encrypted notes — High-security
.zrofiles using Argon2id + XChaCha20-Poly1305, optional keyfile, and legacy v1/v2 support - PDF export — Export the current document to PDF from the File menu
- Cross-platform core — Shared
core/library with native Win32 and GTK4 frontends - libsodium — Memory-hard Argon2id and modern AEAD for v3 encryption (bundled at build time if missing)
Add screenshots after your first GitHub release:
docs/screenshots/windows-editor.pngdocs/screenshots/linux-editor.png
git clone https://github.com/YOUR_USERNAME/UmbraNote.git
cd UmbraNote
build.bat
UmbraNote.exegit clone https://github.com/YOUR_USERNAME/UmbraNote.git
cd UmbraNote
chmod +x build.sh
./build.sh
./UmbraNote| Platform | Toolchain | Libraries |
|---|---|---|
| Windows 10+ | Visual Studio 2022 Build Tools or VS 2022 with C++ workload | CMake 3.16+, Git (first build fetches libsodium if needed) |
| Linux | GCC or Clang with C++17 | CMake 3.16+, OpenSSL (libssl-dev), GTK4 (libgtk-4-dev), libsodium (libsodium-dev) |
build.batEquivalent script:
scripts\build-windows.batOutput: UmbraNote.exe in the repository root and releases/windows/UmbraNote.exe.
After building, sign release artifacts in the same detached ASCII-armored format used by YellowSphere:
scripts\sign-release.batCreate the UmbraNote release key once (private key stored in gitignored .gnupg-release/):
scripts\init-release-key.batThen sign:
scripts\sign-release.batThis writes releases/windows/UmbraNote.exe.asc, docs/SHA256SUMS, docs/SHA256SUMS.asc, and docs/UmbraNote_Release_Signing_2026_pubkey.asc.
Verify:
gpg --import docs/UmbraNote_Release_Signing_2026_pubkey.asc
gpg --verify docs/SHA256SUMS.asc docs/SHA256SUMS
gpg --verify releases/windows/UmbraNote.exe.asc releases/windows/UmbraNote.exeSee docs/RELEASE_SIGNING.md for key storage layout and fingerprint.
./build.shEquivalent script:
./scripts/build-linux.shOutput: UmbraNote in the repository root.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config ReleaseWindows binary path:
build/platform/win32/UmbraNote.exe
Linux binary path:
build/platform/linux/UmbraNote
| Action | Shortcut |
|---|---|
| New | Ctrl+N |
| Open | Ctrl+O |
| Save | Ctrl+S |
Ctrl+P |
|
| Undo | Ctrl+Z |
| Cut | Ctrl+X |
| Copy | Ctrl+C |
| Paste | Ctrl+V |
| Find | Ctrl+F |
| Find Next | F3 |
| Replace | Ctrl+H |
| Go To | Ctrl+G |
| Select All | Ctrl+A |
UmbraNote/
├── .github/
│ └── workflows/
│ └── ci.yml # GitHub Actions build matrix
├── core/
│ ├── include/zeronote/ # Public core headers
│ ├── crypto.cpp # AES-256-GCM + PBKDF2
│ ├── pdf_export.cpp # PDF writer
│ ├── text_codec.cpp # UTF-8 / UTF-16 file I/O
│ └── CMakeLists.txt
├── platform/
│ ├── win32/ # Windows Win32 application
│ │ ├── main.cpp
│ │ ├── notepad.cpp
│ │ ├── resource.rc
│ │ └── app.manifest
│ └── linux/ # Linux GTK4 application
│ └── main.cpp
├── docs/
│ └── FILE_FORMATS.md # .txt, .zro, and PDF details
├── scripts/
│ ├── build-windows.bat
│ └── build-linux.sh
├── build.bat # Windows wrapper
├── build.sh # Linux wrapper
├── CMakeLists.txt
├── CONTRIBUTING.md
├── LICENSE
└── README.md
UmbraNote is split into a portable core and thin platform shells:
┌─────────────────────────────────────────┐
│ platform/win32 or linux │
│ menus, dialogs, editor widget, shell │
└──────────────────┬──────────────────────┘
│
┌──────────────────▼──────────────────────┐
│ core │
│ text_codec crypto pdf_export │
└─────────────────────────────────────────┘
- Windows uses BCrypt for cryptography.
- Linux uses OpenSSL for the same file format and API surface.
- UI code converts to UTF-8 at the boundary so file logic stays portable.
See docs/FILE_FORMATS.md for on-disk layouts and docs/SECURITY.md for the v3 threat model.
| Extension | Purpose |
|---|---|
.txt |
Plain UTF-8 text |
.zro |
Password-encrypted UmbraNote document |
.pdf |
Exported PDF output |
- Linux encrypted open/save dialogs
- macOS port
- Dark mode
- Recent files list
- Autosave and session restore
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request.
This project is licensed under the MIT License. See LICENSE.