Sign in to any Nextcloud server (also private ones in a subfolder, with their own port or a self-signed certificate) through the browser with Login Flow v2; the app gets an app password of its own, which "Disconnect" revokes again. A background thread syncs the storage folder with the folder ink-notes on the server every 30 seconds and shortly after saving, three-way against the state after the last pass: one-sided changes are copied, manifests and library.json are merged, a page changed on both sides is kept twice (the server's version as conflict copy, which disk_watch turns into a page), empty pages give way, deletions go into the trash on both sides and lose against changes. Changes to the open notebook wait while it has unsaved changes. Folder ETags spare listing unchanged notebooks; the pass stops instead of deleting when the storage folder or the server folder is missing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
110 lines
3.7 KiB
TOML
110 lines
3.7 KiB
TOML
[package]
|
|
name = "ink-notes"
|
|
version = "0.41.1"
|
|
edition = "2021"
|
|
description = "Notizbuch-App für Stift, Touch und Maus unter Linux"
|
|
repository = "https://gitea.pansi.eu/harald/ink-notes"
|
|
license = "MIT"
|
|
readme = "README.md"
|
|
rust-version = "1.92"
|
|
|
|
[dependencies]
|
|
# Fenster- & Event-Handling (Wayland/X11, Stylus)
|
|
winit = { version = "0.29", features = ["rwh_06"] }
|
|
|
|
# Low-Level GPU-Rendering (Vulkan/Direct3D12 via WSLg)
|
|
wgpu = "0.19"
|
|
|
|
# Daten-Casting für GPU-Buffer
|
|
bytemuck = { version = "1.16", features = ["derive"] }
|
|
|
|
# Vektor-Mathematik
|
|
glam = { version = "0.27", features = ["serde"] }
|
|
|
|
# Asynchroner Starter für wgpu-Device-Setup
|
|
pollster = "0.3"
|
|
|
|
# PDF: writing the export (own writer in src/pdf_writer.rs) and merging imported PDFs
|
|
lopdf = { version = "0.46", default-features = false }
|
|
serde = { version = "1.0.229", features = ["derive"] }
|
|
serde_json = "1.0.151"
|
|
|
|
# Immediate-Mode UI (Toolbar & Menüs)
|
|
egui = "0.27"
|
|
egui-wgpu = "0.27"
|
|
egui-winit = { version = "0.27", default-features = false, features = ["links"] }
|
|
webbrowser = "0.8"
|
|
semver = "1.0"
|
|
sha2 = "0.10"
|
|
ureq = { version = "2.10", default-features = false, features = ["tls", "gzip", "json"] }
|
|
url = "2.5"
|
|
# Nextcloud sync (Issue #49): pinning a self-signed certificate needs our own verifier;
|
|
# same versions and features as ureq uses
|
|
rustls = { version = "0.23", default-features = false, features = ["logging", "ring", "std", "tls12"] }
|
|
webpki-roots = "0.26"
|
|
|
|
# Bilder einfügen: Dekodieren (PNG/JPEG/GIF/WebP/BMP) und Systemzwischenablage
|
|
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp", "bmp"] }
|
|
minisign-verify = "0.3.0"
|
|
fs2 = "0.4"
|
|
hayro = "0.8"
|
|
hayro-svg = "0.8"
|
|
|
|
# Import von Xournal++-Notizbüchern (gzip-komprimiertes XML mit base64-Bildern)
|
|
flate2 = "1.1"
|
|
quick-xml = "0.41"
|
|
base64 = "0.22"
|
|
# Rnote-Import: SVG-Bilder (z. B. PDF-Seiten) rastern
|
|
resvg = { version = "0.49", default-features = false, features = ["raster-images"] }
|
|
|
|
# Text-Werkzeug: Schriftmetriken und Rasterung (Schriften aus egui)
|
|
ab_glyph = "0.2"
|
|
|
|
# Pen input with pressure on Linux (Wayland/X11) and Windows (Windows Ink)
|
|
[target.'cfg(not(target_os = "android"))'.dependencies]
|
|
octotablet = "0.1.0"
|
|
# Systemzwischenablage (Bilder und Text)
|
|
arboard = { version = "3", default-features = false, features = ["image-data"] }
|
|
|
|
# Bildschirmtastatur unter Wayland anfordern (eigenes text-input-Objekt, siehe src/osk.rs)
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
wayland-client = "0.31"
|
|
wayland-backend = { version = "0.3", features = ["client_system"] }
|
|
wayland-protocols = { version = "0.31", features = ["client", "unstable"] }
|
|
|
|
# Android (Issue #42): winit bound to the native activity. The library is built as
|
|
# cdylib and packed into an APK by scripts/package-android.sh
|
|
[target.'cfg(target_os = "android")'.dependencies]
|
|
winit = { version = "0.29", features = ["rwh_06", "android-native-activity"] }
|
|
android_logger = { version = "0.13", default-features = false }
|
|
# Saving exports to Downloads through Android's MediaStore
|
|
jni = { version = "0.21", default-features = false }
|
|
log = "0.4"
|
|
|
|
[package.metadata.android]
|
|
package = "eu.pansi.inknotes"
|
|
apk_name = "ink-notes"
|
|
|
|
[package.metadata.android.sdk]
|
|
min_sdk_version = 26
|
|
target_sdk_version = 34
|
|
|
|
[profile.dev]
|
|
opt-level = 1 # Erhöht Rendering-Performance auch im Debug-Modus
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
opt-level = 3
|
|
strip = true
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3.27.0"
|
|
# Prüft den WGSL-Shader in den Tests (dieselbe Version wie in wgpu 0.19)
|
|
naga = { version = "0.19", features = ["wgsl-in"] }
|
|
|
|
# winit 0.29 with touch support for the client-side title bar on Wayland (Issue #36),
|
|
# see vendor/winit/README.ink-notes.md
|
|
[patch.crates-io]
|
|
winit = { path = "vendor/winit" }
|