Fixes RUSTSEC key material in the Debug output of client session values;
ink-notes doesn't use a custom session store, so it wasn't affected.
Flatpak cargo sources updated alongside.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
NativeActivity draws the whole window, also below the system bars, so the
top toolbar button lay under the status bar and taps there went to
Android (no other notebook could be opened). InkActivity now reports the
system bar and cutout insets; the app shrinks egui's screen rect to the
free area and adds the side insets to the page centering. The page itself
still scrolls below the bars.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- scripts/setup-android-sdk.sh installs fixed versions of the Android
command-line tools (checksum verified), platform 34, build-tools
34.0.0 and NDK 28.2
- packaging/android/Containerfile + scripts/build-apk-container.sh build
the APK in a container (podman or docker) with JDK 17 and Rust 1.99
- New CI job "Android APK (experimental)": builds the APK and keeps it
as a workflow artifact, signed with the key from the secrets
ANDROID_KEYSTORE_B64/ANDROID_KEYSTORE_PASS/ANDROID_KEY_ALIAS if set.
Not part of the release yet; its failure doesn't block the release.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
InkActivity extends NativeActivity:
- An invisible view with its own input connection receives the soft
keyboard's text (commitText, deleteSurroundingText), so characters
without a key event (umlauts by long press, ...) arrive as well. The
field is a visible-password field, so keyboards commit each character
instead of composing words.
- Import and "insert image" open the system file dialog
(ACTION_OPEN_DOCUMENT); the chosen file is copied to the cache folder
and handed to Rust by path.
src/android_bridge.rs calls the activity through JNI and receives its
native calls; package-android.sh compiles the class with javac and d8.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- The drawing surface is created once the native window exists (Resumed)
and released when the app goes to the background (Suspended); before
that everything is saved, as Android may stop the app at any time
- Android's back button acts like Escape instead of closing the app
- Panics are written to logcat; no update check on Android yet
- scripts/package-android.sh builds target/ink-notes_<version>_arm64.apk
without Gradle (NDK, aapt2, zipalign, apksigner); signing key from
ANDROID_KEYSTORE/ANDROID_KEYSTORE_PASS/ANDROID_KEY_ALIAS, otherwise
the debug key
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
printpdf 0.7 pinned lopdf 0.31; newer printpdf versions are a complete
rewrite. The export now uses src/pdf_writer.rs, a small writer on top of
lopdf 0.46 with the subset of the printpdf API the export used: pages with
layers (optional content groups), paths, embedded TrueType fonts (Type0,
Identity-H, ToUnicode), images and bookmarks. Bookmark titles are written
as UTF-16BE directly, so the post-processing step for them is gone.
pdf_merge uses lopdf 0.46 as well.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shared groundwork:
- paths.rs: folders for data, settings and downloads per system (Linux XDG
unchanged, Windows %APPDATA%/%LOCALAPPDATA%, Android app folder)
- Linux-only parts behind cfg: Wayland on-screen keyboard (osk/wayland.rs),
display backend and app id, the vendored winit touch extensions
- run_with(event_loop) so that other entry points can start the app
Windows (#48):
- cross-compiled with MinGW into a portable ink-notes_<version>_x86_64.exe
(system DLLs only), no console window in release builds
- file picker: user folders and drives; held notebook locks are detected
(ERROR_LOCK_VIOLATION)
- updater: replaces the running .exe via rename, active at the next start
- octotablet panicking without the Tablet PC components no longer crashes
the app
- release: .exe built in CI and part of the signed checksums
- all library tests pass under wine
Android (#42):
- android_main entry point, winit with android-native-activity,
android_logger; octotablet and arboard left out there
- cargo check and the cdylib build for aarch64-linux-android pass; the window
surface does not follow the activity lifecycle yet
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The import (menu entry and drag & drop) now also accepts .rnote files
from Rnote 0.5.10 on, including the transformation and document config
layouts that changed in 0.13 and 0.15. Taken over: brush strokes with
their pressure curve, shapes as outlines, texts, bitmap images and SVG
images, which are rasterized with resvg (Rnote stores imported PDF
pages as SVG). Fixed-size and continuous documents keep their pages;
infinite ones become an endless notebook.
The parts shared with the Xournal++ import moved to src/import.rs.
resvg and its dependencies were added to the Flatpak cargo sources.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Die Vorlage der Release-Notes ist vollständig übersetzt. CONTRIBUTING (en/de) und README
vermerken, dass neue Code-Kommentare englisch geschrieben werden.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CONTRIBUTING, SECURITY, docs/ARCHITECTURE und docs/FILE_FORMAT sind jetzt englisch; die
deutschen Fassungen bleiben als *.de.md erhalten und verlinken sich gegenseitig. Inhaltlich
nachgezogen: Live-Strich mit gleicher Tessellierung, runde Ecken, Nachgleiten, eingerasteter
Textmarker, Farben im Dateiformat sind sRGB. Kommentare im Flatpak-Manifest auf Englisch.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- packaging/screenshots/notes.png: Notizen mit Textmarker, Handschrift
und Textfeldern
- packaging/screenshots/shapes.png: erkannte Formen (Achsenkreuz,
Dreieck, Kreis, Oktaeder, Sechseck, Ellipse)
- Metainfo: Screenshots mit englischer und deutscher Beschriftung
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- packaging/flatpak/eu.pansi.ink-notes.yml: Runtime freedesktop 26.08,
Rust aus rust-stable, Abhängigkeiten offline aus cargo-sources.json.
Rechte: Wayland/X11, GPU, Lesen von Bildern/Downloads/Schreibtisch,
Schreiben in den Dokumente-Ordner (kein Zugriff auf den ganzen
Home-Ordner).
- Im Flatpak sucht und installiert ink-notes keine Updates selbst
(Vorgabe von Flathub); der Update-Dialog verweist auf die
Software-Verwaltung.
- Export-Ordner aus user-dirs.dirs (z. B. ~/Dokumente) statt fest
~/Documents; nur dieser Ordner ist im Flatpak beschreibbar.
- Metainfo und Desktop-Datei auf Englisch mit deutscher Übersetzung,
Release-Einträge, unterstützte Eingabegeräte.
- Test: cargo-sources.json deckt Cargo.lock ab.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fenster meldet die App-Kennung eu.pansi.ink-notes (Wayland: app_id, X11:
WM_CLASS), passend zur .desktop-Datei (StartupWMClass): Dock und Taskleiste
zeigen das ink-notes-Symbol statt eines allgemeinen Symbols
- Unter X11 zusätzlich das eingebaute Symbol als Fenstersymbol (64 × 64)
- Fenstertitel ohne Werbezusatz
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>