Skip to content

Commit 0962a01

Browse files
committed
Merge branch 'feature/v1.10.0' into main
v1.10.0: Editor Overhaul, Share / Export & Sync Reliability New Features: - Share & Export from editor: Share as Text, Share as PDF, Export to Calendar - Expandable FAB speed-dial menu with staggered spring animation - Delete note from editor with timed undo snackbar - Batch server deletion with DELETING phase and progress banner - Adaptive layouts for tablets & landscape (720 dp / 600 dp caps) - Undo/Redo in note editor (50-step stack, debounced snapshots) - Configurable WebDAV connection timeout (1–30 s slider) - Markdown auto-sync timeout protection (10 s, optimistic toggle) - Save on Back Navigation (saves dirty notes when autosave is on) Bug Fixes: - Download progress now determinate (DOWNLOADING + Markdown import) - FGS timeout on Android 15+ (ensureActive checkpoints) - WorkManager quota/standby stops now surfaced in banner - Overflow menu anchored correctly to ⋮ button - Pre-heading content no longer lost during Markdown import - Checklist autosave triggered correctly on all item changes - Minimal scroll when adding new checklist items - False autosave on checklist cursor tap prevented - Undo to saved state resets isDirty and cancels autosave - Foreign non-note JSON files filtered before download - Note count strings use proper Android plural forms Documentation: - README (EN + DE) updated to v1.10.0 with new highlights - FEATURES (EN + DE) updated with v1.10.0 editor features - CHANGELOG (EN + DE) updated with full feature descriptions Special Thanks: - @james0336 for requesting PDF export <3 - @GitNichtGibtsNicht for requesting autosave on back <3
2 parents 9712c5d + 73680d6 commit 0962a01

38 files changed

Lines changed: 2566 additions & 504 deletions

CHANGELOG.de.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,121 @@ Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
88

99
---
1010

11+
## [1.10.0] - 2026-03-01
12+
13+
### ✏️ Editor-Überarbeitung, Teilen / Export & Sync-Zuverlässigkeit
14+
15+
Großes Release mit PDF-Export, Text- und Kalender-Teilen, überarbeitetem FAB-Menü, Löschen aus dem Editor mit Rückgängig, Batch-Serverlöschung mit Fortschrittsanzeige, adaptiven Tablet-Layouts, WorkManager-Zuverlässigkeitsverbesserungen und echten deterministischen Fortschrittsbalken für alle Sync-Phasen.
16+
17+
### ✨ Neue Features
18+
19+
**Teilen & Exportieren aus dem Editor** ([e2b9f79](https://github.com/inventory69/simple-notes-sync/commit/e2b9f79), [2aca873](https://github.com/inventory69/simple-notes-sync/commit/2aca873), [57c4e96](https://github.com/inventory69/simple-notes-sync/commit/57c4e96)) _(Danke an [@james0336](https://github.com/james0336) für den PDF-Export-Wunsch!)_
20+
- Neues Überlaufmenü (⋮) in der Editor-Toolbar: Als Text teilen, Als PDF teilen, In Kalender exportieren
21+
- PDF nativ über `PdfDocument`-API erstellt — keine Drittanbieter-Bibliothek erforderlich
22+
- Teilen via `FileProvider` für sichere Freigabe mit beliebigen PDF-Viewern
23+
- Kalender-Export füllt Titel, ganztägiges Startdatum (heute) und Notizinhalt als Beschreibung vor
24+
25+
**Aufklappendes FAB-Menü** ([85d68c4](https://github.com/inventory69/simple-notes-sync/commit/85d68c4), [61788e3](https://github.com/inventory69/simple-notes-sync/commit/61788e3))
26+
- FAB durch Speed-Dial ersetzt: Tippen auf `+` zeigt animierte Sub-Action-Buttons für Text-Notiz und Checkliste
27+
- `+`-Icon rotiert zu `×` beim Aufklappen; Sub-Actions gleiten mit gestaffelter Feder-Animation ein
28+
- Transparentes Dismiss-Overlay schließt das Menü beim Tippen außerhalb
29+
- Sub-Action-Buttons und Label-Pills nutzen `secondaryContainer`-Farbe als visuelle Einheit
30+
- Stärkere Schatten-Elevation (8–10 dp) für klare visuelle Trennung vom Notiz-Grid in hellem und dunklem Theme
31+
32+
**Notiz aus Editor löschen mit Rückgängig** ([f3fd806](https://github.com/inventory69/simple-notes-sync/commit/f3fd806))
33+
- Löschaktion von blockierendem Dialog auf ein Bottom Sheet umgestellt
34+
- Nach Bestätigung schließt der Editor und der Hauptscreen zeigt eine timed Rückgängig-Snackbar
35+
- Rückgängig stellt die Notiz wieder her und bricht eine geplante Server-Löschung ab
36+
37+
**Batch-Serverlöschung mit Fortschrittsanzeige** ([39a873f](https://github.com/inventory69/simple-notes-sync/commit/39a873f))
38+
- Neue `DELETING`-Sync-Phase im Banner beim Batch-Löschen mehrerer Notizen vom Server
39+
- Fortschrittsbalken zeigt `aktuell / gesamt` mit dem aktuellen Notiz-Titel
40+
- Phase wechselt sanft zu `COMPLETED` mit einer Ergebnis-Meldung
41+
42+
**Adaptive Layouts für Tablets & Querformat** ([a117cbe](https://github.com/inventory69/simple-notes-sync/commit/a117cbe))
43+
- Editor-Inhalt auf maximal 720 dp Breite begrenzt und auf breiten Bildschirmen zentriert
44+
- Einstellungs-Screens auf maximal 600 dp Breite begrenzt und zentriert
45+
- Haupt-Grid nutzt `Adaptive(180 dp)` Spalten — auf Tablets und im Querformat erscheinen automatisch mehr Spalten
46+
- Vorbereitung für Android 16 (targetSdk 36), das `screenOrientation`-Locks auf Displays ≥ 600 dp ignoriert
47+
48+
**Rückgängig/Wiederherstellen im Notiz-Editor** ([484bf3a](https://github.com/inventory69/simple-notes-sync/commit/484bf3a))
49+
- Vollständige Undo/Redo-Unterstützung für Text-Notizen und Checklisten via Toolbar-Buttons
50+
- Debounced Snapshots: schnelles Tippen wird zu einem einzelnen Undo-Schritt gruppiert (500 ms Fenster)
51+
- Stack auf 50 Einträge begrenzt; wird beim Notizwechsel geleert
52+
- Wiederhergestellte Snapshots aktualisieren die Cursor-Position korrekt
53+
54+
**Konfigurierbarer WebDAV-Verbindungs-Timeout** ([b1aebc4](https://github.com/inventory69/simple-notes-sync/commit/b1aebc4))
55+
- Neuer Settings-Slider (1–30 s, Standard 8 s) zur Konfiguration des WebDAV-Timeouts
56+
- Wird auf alle OkHttpClient-Instanzen angewendet (Connect, Read, Write)
57+
- Einheitliche Fehlermeldungen für Timeout, Auth-Fehler, Nicht gefunden und Server-Fehler
58+
59+
**Markdown-Auto-Sync Timeout-Schutz** ([7f74ae9](https://github.com/inventory69/simple-notes-sync/commit/7f74ae9))
60+
- Aktivierung von Markdown-Auto-Sync hat jetzt einen 10-s-Timeout für den initialen Export
61+
- UI-Toggle aktualisiert optimistisch und kehrt bei Fehler oder Timeout zurück
62+
- Verhindert, dass der Einstellungs-Screen bei unerreichbaren Servern hängt
63+
64+
**Speichern beim Zurücknavigieren** ([402382c](https://github.com/inventory69/simple-notes-sync/commit/402382c)) _(Danke an [@GitNichtGibtsNicht](https://github.com/GitNichtGibtsNicht) für den Autosave-beim-Zurück-Wunsch!)_
65+
- Ungespeicherte Notizen werden beim Verlassen des Editors automatisch gespeichert (System-Zurück + Toolbar-Zurück)
66+
- Nur aktiv wenn Autosave aktiviert ist; synchrones Speichern ohne Sync auszulösen
67+
- Autosave-Toggle-Beschreibung erwähnt jetzt dieses Verhalten
68+
69+
### 🐛 Fehlerbehebungen
70+
71+
**Download-Fortschritt immer indeterminate** ([c83aae3](https://github.com/inventory69/simple-notes-sync/commit/c83aae3))
72+
- `ParallelDownloader` trackte `abgeschlossen / gesamt` intern korrekt, aber `syncNotes()` hat `total = 0` hardcodiert
73+
- Behoben: `total` wird jetzt korrekt weitergegeben → DOWNLOADING-Phase zeigt einen echten `LinearProgressIndicator`
74+
- `importMarkdownFiles()` meldet jetzt ebenfalls Datei-für-Datei-Fortschritt: Banner zeigt `X / Y dateiname.md` mit determiniertem Balken
75+
76+
**FGS-Timeout auf Android 15+** ([1e6eb64](https://github.com/inventory69/simple-notes-sync/commit/1e6eb64))
77+
- `ensureActive()`-Checkpoints in der Download-Schleife und beim Markdown-Import von `WebDavSyncService` hinzugefügt, damit Coroutines bei WorkManager-Abbruch auf targetSdk 35+ sofort reagieren
78+
- `CancellationException`-Handler in `SyncWorker` loggt jetzt den Stop-Grund (API 31+)
79+
80+
**WorkManager-Quota / Standby-Stops nicht sichtbar** ([3d66a19](https://github.com/inventory69/simple-notes-sync/commit/3d66a19))
81+
- Detailliertes Stop-Reason-Logging: 16 WorkManager-Stop-Codes auf lesbare Namen gemappt
82+
- Wenn ein Sync durch JobScheduler-Quota oder App-Standby gestoppt wird, erscheint beim nächsten App-Start ein Info-Banner
83+
84+
**Konsistente Position des Editor-Überlaufmenüs** ([242ece3](https://github.com/inventory69/simple-notes-sync/commit/242ece3))
85+
- Überlaufmenü (⋮) ist jetzt am ``-Button verankert, auch bei Checklisten-Notizen
86+
- Zuvor war das Menü an der äußeren Actions-`Row` verankert und erschien bei Checklisten zu weit links
87+
88+
**Markdown-Import: Inhalt vor Überschrift verloren** ([e33ac23](https://github.com/inventory69/simple-notes-sync/commit/e33ac23))
89+
- Inhalt vor dem ersten `#`-Heading wurde beim Markdown-Import still verworfen
90+
- Checklisten-Erkennung verbessert: mehr Item-Muster werden jetzt erkannt
91+
92+
**Checklisten-Autosave nicht bei Item-Änderungen ausgelöst** ([5401df3](https://github.com/inventory69/simple-notes-sync/commit/5401df3))
93+
- Löschen, Hinzufügen und Verschieben von Checklisten-Items markiert die Notiz jetzt korrekt als geändert und löst Autosave aus
94+
95+
**Minimales Scrollen beim Hinzufügen neuer Checklisten-Items** ([c2fbe0b](https://github.com/inventory69/simple-notes-sync/commit/c2fbe0b))
96+
- Neue Checklisten-Items scrollen nur so weit, dass das Item sichtbar wird, statt zur Listenoberseite zu springen
97+
98+
**Falsches Autosave beim Tippen in Checkliste** ([9ea7089](https://github.com/inventory69/simple-notes-sync/commit/9ea7089))
99+
- Antippen eines Checklisten-Items zum Platzieren des Cursors löst kein falsches Autosave mehr aus
100+
- No-Op-Guards in `updateChecklistItemText()` und `updateChecklistItemChecked()`
101+
102+
**Undo auf Originalzustand löste trotzdem Autosave aus** ([cf5027b](https://github.com/inventory69/simple-notes-sync/commit/cf5027b))
103+
- Rückgängig-Machen aller Änderungen zum letzten Speicherzustand setzt `isDirty` jetzt korrekt zurück und bricht das ausstehende Autosave ab
104+
- Neues `savedSnapshot`-Property erfasst den Zustand beim Laden und nach jedem expliziten Speichern
105+
106+
**Fremde JSON-Dateien unnötig heruntergeladen** ([c409243](https://github.com/inventory69/simple-notes-sync/commit/c409243))
107+
- Nicht-Notiz-JSON-Dateien (z.B. `google-services.json`) werden jetzt vor dem Download via UUID-Format-Check gefiltert
108+
109+
**Notiz-Anzahl-Strings nicht korrekt pluralisiert** ([8ca8df3](https://github.com/inventory69/simple-notes-sync/commit/8ca8df3))
110+
- Notiz-Anzahl-Strings in korrekte Android-Pluralformen konvertiert (EN + DE)
111+
112+
### 🎨 UI-Verbesserungen
113+
114+
**Sanfte Sync-Banner-Animationen** ([c409243](https://github.com/inventory69/simple-notes-sync/commit/c409243))
115+
- Banner-Einblendung: fadeIn (300 ms, EaseOutCubic) — kein abruptes „Reinschieben von oben" mehr
116+
- Banner-Ausblendung: fadeOut + shrinkVertically (300/400 ms, EaseInCubic)
117+
- Phasen-Übergänge nutzen AnimatedContent-Crossfade (250 ms) für Textwechsel
118+
- Mindest-Anzeigedauer pro aktiver Phase (400 ms) verhindert unlesbare Blitze
119+
- Auto-Hide-Job vom Flow-Collector entkoppelt — garantierte Mindest-Anzeigedauer
120+
121+
**Markdown-Ordner in Sync-Einstellungen erwähnt** ([a8bb80c](https://github.com/inventory69/simple-notes-sync/commit/a8bb80c))
122+
- Sync-Ordner-Hinweis erwähnt jetzt explizit das `notes-md/`-Unterverzeichnis, das für Markdown-Auto-Sync verwendet wird
123+
124+
---
125+
11126
## [1.9.0] - 2026-02-25
12127

13128
### 🔄 Sync-Qualität, Performance & UI

CHANGELOG.md

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,121 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
88

99
---
1010

11+
## [1.10.0] - 2026-03-01
12+
13+
### ✏️ Editor Overhaul, Share / Export & Sync Reliability
14+
15+
Major release adding PDF export, text and calendar sharing, a redesigned FAB menu, delete-from-editor with undo, batch server deletion with progress, adaptive tablet layouts, WorkManager reliability improvements, and real determinate progress bars for all sync phases.
16+
17+
### ✨ New Features
18+
19+
**Share & Export from Editor** ([e2b9f79](https://github.com/inventory69/simple-notes-sync/commit/e2b9f79), [2aca873](https://github.com/inventory69/simple-notes-sync/commit/2aca873), [57c4e96](https://github.com/inventory69/simple-notes-sync/commit/57c4e96)) _(Thanks to [@james0336](https://github.com/james0336) for requesting PDF export!)_
20+
- New overflow menu (⋮) in the editor toolbar: Share as Text, Share as PDF, Export to Calendar
21+
- PDF generated natively via `PdfDocument` API — no third-party library required
22+
- Shared via `FileProvider` for secure, permission-free sharing with any PDF viewer
23+
- Calendar export pre-fills title, all-day start date (today), and note content as description
24+
25+
**Expandable FAB Menu** ([85d68c4](https://github.com/inventory69/simple-notes-sync/commit/85d68c4), [61788e3](https://github.com/inventory69/simple-notes-sync/commit/61788e3))
26+
- FAB replaced with an expanding speed-dial: tap `+` to reveal animated sub-action buttons for Text Note and Checklist
27+
- `+` icon rotates to `×` when expanded; sub-actions slide in with staggered spring animation
28+
- Transparent dismiss overlay closes the menu on outside tap
29+
- Sub-action buttons and label pills use `secondaryContainer` colour, forming a visual unit
30+
- Stronger shadow elevation (8–10 dp) ensures the FAB visually floats above note cards in both light and dark theme
31+
32+
**Delete Note from Editor with Undo** ([f3fd806](https://github.com/inventory69/simple-notes-sync/commit/f3fd806))
33+
- Delete action moved from a blocking dialog to a bottom sheet confirmation
34+
- After confirming, the editor closes and the main screen shows a timed undo snackbar
35+
- Undo restores the note from the deleted state and cancels any scheduled server deletion
36+
37+
**Batch Server Deletion with Progress** ([39a873f](https://github.com/inventory69/simple-notes-sync/commit/39a873f))
38+
- New `DELETING` sync phase shown in the banner when deleting multiple notes from the server
39+
- Progress bar shows `current / total` with the current note title
40+
- Phase transitions smoothly to `COMPLETED` with a result message
41+
42+
**Adaptive Layouts for Tablets & Landscape** ([a117cbe](https://github.com/inventory69/simple-notes-sync/commit/a117cbe))
43+
- Editor content capped at 720 dp width, centred on wide screens
44+
- Settings screens capped at 600 dp width, centred
45+
- Main screen grid uses `Adaptive(180 dp)` columns — more columns appear automatically on tablets and in landscape
46+
- Prepares for Android 16 (targetSdk 36) which ignores `screenOrientation` locks on displays ≥ 600 dp
47+
48+
**Undo/Redo in Note Editor** ([484bf3a](https://github.com/inventory69/simple-notes-sync/commit/484bf3a))
49+
- Full undo/redo support for text notes and checklists via toolbar buttons
50+
- Debounced snapshots: rapid keystrokes grouped into a single undo step (500 ms window)
51+
- Stack limited to 50 entries; cleared on note switch to prevent cross-note undo
52+
- Restoring a snapshot correctly updates the cursor position
53+
54+
**Configurable WebDAV Connection Timeout** ([b1aebc4](https://github.com/inventory69/simple-notes-sync/commit/b1aebc4))
55+
- New Settings slider (1–30 s, default 8 s) to configure the WebDAV connection timeout
56+
- Applied to all OkHttpClient instances (connect, read, write) used by Sardine
57+
- Consistent, user-facing error messages for timeout, auth failure, not found, and server errors
58+
59+
**Markdown Auto-Sync Timeout Protection** ([7f74ae9](https://github.com/inventory69/simple-notes-sync/commit/7f74ae9))
60+
- Enabling Markdown auto-sync now has a 10 s timeout for the initial export
61+
- UI toggle updates optimistically and reverts if the export fails or times out
62+
- Prevents the Settings screen from hanging on unreachable servers
63+
64+
**Save on Back Navigation** ([402382c](https://github.com/inventory69/simple-notes-sync/commit/402382c)) _(Thanks to [@GitNichtGibtsNicht](https://github.com/GitNichtGibtsNicht) for requesting autosave on back!)_
65+
- Dirty notes are saved automatically when navigating back from the editor (system back + toolbar back)
66+
- Only active when autosave is enabled; synchronous save without triggering sync
67+
- Autosave toggle description updated to mention this behaviour
68+
69+
### 🐛 Bug Fixes
70+
71+
**Download Progress Always Indeterminate** ([c83aae3](https://github.com/inventory69/simple-notes-sync/commit/c83aae3))
72+
- `ParallelDownloader` already tracked `completed / total` internally but `syncNotes()` hardcoded `total = 0`
73+
- Fixed: `total` is now passed through → DOWNLOADING phase shows a real `LinearProgressIndicator`
74+
- `importMarkdownFiles()` also reports per-file progress: banner shows `X / Y filename.md` with a determinate bar
75+
76+
**FGS Timeout on Android 15+** ([1e6eb64](https://github.com/inventory69/simple-notes-sync/commit/1e6eb64))
77+
- Added `ensureActive()` checkpoints in `WebDavSyncService` download loop and markdown import so coroutines respond promptly to WorkManager cancellation on targetSdk 35+
78+
- `CancellationException` handler in `SyncWorker` now logs the stop reason (API 31+)
79+
80+
**WorkManager Quota / Standby Stops Not Surfaced** ([3d66a19](https://github.com/inventory69/simple-notes-sync/commit/3d66a19))
81+
- Added detailed stop reason logging: 16 WorkManager stop codes mapped to human-readable names
82+
- When a sync is stopped due to JobScheduler quota or app standby, an info banner is shown next time the app comes to foreground
83+
84+
**Consistent Editor Overflow Menu Position** ([242ece3](https://github.com/inventory69/simple-notes-sync/commit/242ece3))
85+
- Overflow menu (⋮) is now anchored to the `` button in both text and checklist note types
86+
- Previously the menu anchored to the outer actions `Row`, appearing too far left on checklist notes
87+
88+
**Markdown Import: Pre-Heading Content Lost** ([e33ac23](https://github.com/inventory69/simple-notes-sync/commit/e33ac23))
89+
- Content before the first `#` heading was silently discarded during Markdown import
90+
- Checklist detection improved: more item patterns are now recognised
91+
92+
**Checklist Autosave Not Triggered on Item Changes** ([5401df3](https://github.com/inventory69/simple-notes-sync/commit/5401df3))
93+
- Deleting, adding, and reordering checklist items now correctly marks the note as dirty and triggers autosave
94+
95+
**Minimal Scroll When Adding New Checklist Items** ([c2fbe0b](https://github.com/inventory69/simple-notes-sync/commit/c2fbe0b))
96+
- New checklist items scroll just enough to become visible instead of jumping to the top
97+
98+
**False Autosave on Checklist Cursor Tap** ([9ea7089](https://github.com/inventory69/simple-notes-sync/commit/9ea7089))
99+
- Tapping a checklist item to position the cursor no longer triggers a false autosave
100+
- No-op guards added to `updateChecklistItemText()` and `updateChecklistItemChecked()`
101+
102+
**Undo to Saved State Still Triggered Autosave** ([cf5027b](https://github.com/inventory69/simple-notes-sync/commit/cf5027b))
103+
- Undoing all changes back to the last saved state now resets `isDirty` and cancels the pending autosave
104+
- New `savedSnapshot` property captures state at load time and after every explicit save
105+
106+
**Foreign JSON Files Downloaded Unnecessarily** ([c409243](https://github.com/inventory69/simple-notes-sync/commit/c409243))
107+
- Non-note JSON files (e.g. `google-services.json`) filtered before download via UUID format check
108+
109+
**Note Count Strings Not Pluralized Correctly** ([8ca8df3](https://github.com/inventory69/simple-notes-sync/commit/8ca8df3))
110+
- Note count strings converted to proper Android plural forms (EN + DE)
111+
112+
### 🎨 UI Improvements
113+
114+
**Smooth Sync Banner Animations** ([c409243](https://github.com/inventory69/simple-notes-sync/commit/c409243))
115+
- Banner enter: fadeIn (300 ms, EaseOutCubic) — no more abrupt push from top
116+
- Banner exit: fadeOut + shrinkVertically (300/400 ms, EaseInCubic)
117+
- Phase transitions use AnimatedContent crossfade (250 ms) for text changes
118+
- Minimum display duration per active phase (400 ms) prevents unreadable flashes
119+
- Auto-hide job decoupled from flow collector — guaranteed minimum display time
120+
121+
**Markdown Folder Mentioned in Sync Settings** ([a8bb80c](https://github.com/inventory69/simple-notes-sync/commit/a8bb80c))
122+
- Sync folder hint now explicitly mentions the `notes-md/` subdirectory used for Markdown auto-sync
123+
124+
---
125+
11126
## [1.9.0] - 2026-02-25
12127

13128
### 🔄 Sync Quality, Performance & UI

README.de.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ alt="Get it on F-Droid" align="center" height="80" /></a>
7474
- 🔒 **Self-hosted** – Deine Daten bleiben bei dir (WebDAV)
7575
- 💾 **Lokales Backup** – Export/Import als JSON-Datei (optional verschlüsselt)
7676
- 🖥️ **Desktop-Integration** – Markdown-Export für Obsidian, VS Code, Typora
77+
- 📤 **Teilen & Exportieren** – Als Text oder PDF teilen, in Kalender exportieren
78+
- ↩️ **Rückgängig/Wiederherstellen** – Vollständige Undo/Redo-Historie im Notiz-Editor
7779
- 🎨 **Material Design 3** – Dynamischer Dark/Light Mode & Farben
7880

7981
➡️ **Vollständige Feature-Liste:** [docs/FEATURES.de.md](docs/FEATURES.de.md)
@@ -140,6 +142,6 @@ MIT License – siehe [LICENSE](LICENSE)
140142
<div align="center">
141143
<br /><br />
142144

143-
**v1.8.2** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
145+
**v1.10.0** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
144146

145147
</div>

README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ alt="Get it on F-Droid" align="center" height="80" /></a>
7474
- 🔒 **Self-hosted** - Your data stays with you (WebDAV)
7575
- 💾 **Local backup** - Export/Import as JSON file (encryption available)
7676
- 🖥️ **Desktop integration** - Markdown export for Obsidian, VS Code, Typora
77+
- 📤 **Share & export** - Share as text or PDF, export to calendar
78+
- ↩️ **Undo/Redo** - Full undo/redo history in the note editor
7779
- 🎨 **Material Design 3** - Dynamic dark/light mode & colors based on system settings
7880

7981
➡️ **Complete feature list:** [FEATURES.md](docs/FEATURES.md)
@@ -150,6 +152,6 @@ MIT License - see [LICENSE](LICENSE)
150152
<div align="center">
151153
<br /><br />
152154

153-
**v1.8.2** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
155+
**v1.10.0** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
154156

155157
</div>

0 commit comments

Comments
 (0)