Files
ink-notes/Cargo.toml
T
haraldandClaude Opus 5.5 b8748c56d4 feat(sync): built-in Nextcloud sync (Issue #49, stage 2)
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>
2026-10-28 19:24:49 +01:00

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" }