PDF Annotation Layer for Ink — non-destructive handwritten PDF annotation for Windows 10/11.
- The original PDF is never modified; notes live separately in
<document>.pali.json(or bundled in<document>.palz). - Input via mouse or pressure-sensitive stylus (Wacom One S CTC4110WL is the reference hardware, Windows-Ink compatible).
- Export as merged PDF — the SHA-256 of the original bytes stays identical.
- Multi-user beta: per-author identity, edit-lock for foreign strokes, status (open / in progress / done) on anchor notes, audit trail.
- Multilingual UI: German is the default, English ships in the box, additional locales drop in as JSON files (see
docs/translating.md).
Current state: v0.4.0 — first stable release. Phases 1–3.6 (MVP, anchored notes, multi-user beta) complete, tablet hardware validated, polish phase shipped (portable build, About dialog, winget/Scoop manifests, multilingual UI). Phase 4 (OCR) postponed. Architecture overview in docs/architecture.md.
Download the portable ZIP from the Releases page, unzip it, and start PALI.exe — no Python required, no installer, no registry entry. On startup the app checks for new releases (including beta pre-releases) in the background and offers download + helper-batch swap.
Coming soon via winget install RTF22.PALI and scoop install pali.
# Editable install incl. dev dependencies
python -m pip install -e ".[dev,packaging]"
# Tests
pytest -q
# Linter / formatter / type-check (CI required checks)
ruff check .
ruff format --check .
python -m mypy pali
# Run the app
python -m paliRequires Python 3.11+ on Windows 10/11.
packaging\build_exe.batResult: dist\PALI\PALI.exe + DLLs (~80 MB zipped). Details in packaging/README.md.
CI: tag v*.*.* triggers .github/workflows/release.yml → PyInstaller build → GitHub release ZIP.
PALI ships German (default) and English. To contribute another language, drop a <code>.json file into pali/locales/ — see the translator guide in docs/translating.md (Deutsch: docs/translating.de.md).
MIT — see LICENSE.