Skip to content

Commit 7e8c355

Browse files
committed
Merge branch 'feature/v1.11.0'
Release v1.11.0 β€” Notifications, FAB Polish & Checklist Sorting New features: - Notification settings with Android 13+ permission handling - Sort checklists by creation date (ascending + descending) - Developer options hidden behind easter-egg gesture Bug fixes: - Autosave no longer triggers for empty checklist items - Correct sync count with markdown auto-sync enabled - No misleading "Importing Markdown" banner when 0 files changed UI improvements: - Animated FAB scrim and unified action pills - Sync settings restructured into sections - Smooth 700 ms fade transitions in settings navigation versionCode: 25, versionName: 1.11.0 Thanks to @FromKaniv for the Ukrainian translation and @ksuheyl for the Turkish translation!
2 parents 411f824 + f910c67 commit 7e8c355

33 files changed

Lines changed: 3953 additions & 411 deletions

β€ŽCHANGELOG.de.mdβ€Ž

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

99
---
1010

11+
## [1.11.0] - 2026-03-10
12+
13+
### πŸ”” Benachrichtigungen, FAB-Überarbeitung & Checklisten-Sortierung
14+
15+
Fokussiertes Release mit konfigurierbaren Benachrichtigungseinstellungen und Android 13+ Berechtigungshandling, auf- und absteigende Sortierung nach Erstellungsdatum fΓΌr Checklisten, ΓΌberarbeitetem FAB-Overlay mit animiertem Scrim und vereinheitlichten Action-Pills, umstrukturierten Sync-Einstellungen, versteckten Entwickleroptionen und mehreren Bugfixes rund um Autosave-Verhalten und Sync-ZΓ€hlung.
16+
17+
### ✨ Neue Features
18+
19+
**Benachrichtigungseinstellungen mit Berechtigungshandling** ([c1f5078](https://github.com/inventory69/simple-notes-sync/commit/c1f5078))
20+
- Drei neue Toggles unter Sync & Benachrichtigungen: Global ein/aus, Nur-Fehler-Modus, Server-nicht-erreichbar-Warnung
21+
- VollstΓ€ndiger Android 13+ POST_NOTIFICATIONS Permission-Flow: Abfrage beim ersten Aktivieren, ErklΓ€rungsdialog bei Ablehnung, Weiterleitung zu App-Einstellungen bei dauerhafter Ablehnung
22+
- Berechtigungsstatus wird bei jedem Screen-Resume geprΓΌft β€” Toggle synchronisiert mit Systemstatus
23+
24+
**Checklisten nach Erstellungsdatum sortieren (auf- und absteigend)** ([a265e3c](https://github.com/inventory69/simple-notes-sync/commit/a265e3c))
25+
- Neue Sortieroption β€žErstellungsdatum ↑" (Γ€lteste zuerst) und β€žErstellungsdatum ↓" (neueste zuerst)
26+
- Jedes Checklisten-Item erhΓ€lt einen `createdAt`-Zeitstempel, der ΓΌber Bearbeitungen und Syncs erhalten bleibt
27+
- AbwΓ€rtskompatibel: alte Items ohne Zeitstempel verwenden Index als Fallback
28+
- Separator zwischen offenen/erledigten Gruppen bleibt bei beiden Richtungen erhalten
29+
30+
**Entwickleroptionen hinter Easter Egg versteckt** ([186a345](https://github.com/inventory69/simple-notes-sync/commit/186a345))
31+
- Debug & Diagnose-Einstellungen standardmÀßig ausgeblendet
32+
- Freischaltung durch 5Γ— Tippen auf die App-Info-Karte im Über-Screen (Android-Entwickleroptionen-Stil)
33+
- Nur fΓΌr die Sitzung: wird beim App-Neustart zurΓΌckgesetzt, nicht in SharedPreferences persistiert
34+
- Countdown-Toast fΓΌr die letzten 2 Taps, BestΓ€tigungs-Toast bei Freischaltung
35+
36+
### πŸ› Fehlerbehebungen
37+
38+
**Autosave bei leeren Checklisten-Items ausgelΓΆst** ([f7e25db](https://github.com/inventory69/simple-notes-sync/commit/f7e25db))
39+
- HinzufΓΌgen oder LΓΆschen leerer Checklisten-Items lΓΆst kein Autosave mehr aus
40+
- No-Change-Guard in `performSave()` und `saveOnBack()` ΓΌberspringt Speichern wenn nur leere Items vom gespeicherten Stand abweichen
41+
- Autosave-Indikator erscheint nicht mehr irrefΓΌhrend nach dem HinzufΓΌgen eines leeren Items
42+
43+
**Markdown-Auto-Sync: DoppelzΓ€hlung** ([7dd092e](https://github.com/inventory69/simple-notes-sync/commit/7dd092e))
44+
- Das Erstellen einer Notiz mit aktiviertem Markdown-Auto-Sync zeigt nicht mehr β€ž2 Notizen synchronisiert" statt 1
45+
- Exportierte Markdown-Dateien werden im selben Sync-Zyklus per Notiz-ID-Tracking vom Re-Import ausgeschlossen
46+
- Technische Re-Uploads nach Markdown-Import zΓ€hlen nicht mehr zum Sync-Count
47+
- `null` vs. `emptyList()`-Inkonsistenz im Checklisten-Inhaltsvergleich behoben
48+
49+
**IrrefΓΌhrendes β€žMarkdown importieren"-Banner bei unverΓ€nderter Dateilage** ([e352ce1](https://github.com/inventory69/simple-notes-sync/commit/e352ce1))
50+
- Progress-Banner zeigt keinen Dateinamen (z. B. β€žTest Neu.md") mehr wenn tatsΓ€chlich 0 Dateien importiert werden
51+
- Fast-Path ΓΌberspringt die IMPORTING_MARKDOWN-Phase vollstΓ€ndig wenn alle Server-Dateien unverΓ€ndert sind
52+
- Dateiname im Progress-Update wird nur noch gesetzt wenn die Datei tatsΓ€chlich heruntergeladen wird
53+
54+
### 🎨 UI-Verbesserungen
55+
56+
**Animierter FAB-Scrim und verbesserte Farben** ([4a8a202](https://github.com/inventory69/simple-notes-sync/commit/4a8a202))
57+
- FAB-Overlay deckt jetzt den gesamten Bildschirm ab, inklusive Statusleiste (aus dem Scaffold herausbewegt)
58+
- Semi-transparenter animierter Scrim (50 % Schwarz, 250 ms Tween) ersetzt transparentes Dismiss-Overlay
59+
- Sub-Action-Farben von `secondaryContainer` auf `primaryContainer` geΓ€ndert fΓΌr bessere Hierarchie
60+
61+
**Vereinheitlichte Action-Pills** ([847154f](https://github.com/inventory69/simple-notes-sync/commit/847154f))
62+
- Label-Text und Icon in einer einzigen breiten Pill pro Aktion zusammengefasst (Aegis Authenticator-Stil)
63+
- Gesamte Pill ist ein Klickziel β€” kein separates Label + Icon-FAB mehr
64+
- Verwendet `surfaceContainerHigh` / `onSurface` fΓΌr konsistente Darstellung im Dark Mode
65+
66+
**Sync-Einstellungen umstrukturiert** ([e9d48cb](https://github.com/inventory69/simple-notes-sync/commit/e9d48cb))
67+
- Screen umbenannt von β€žSync-Einstellungen" zu β€žSync & Benachrichtigungen"
68+
- Sektions-Header umbenannt von β€žNetzwerk & Performance" zu β€žNetzwerk"
69+
- Sub-Header β€žSofort-Sync" und β€žHintergrund-Sync" entfernt fΓΌr saubereres Layout
70+
- Sync-Trigger, Netzwerk und Benachrichtigungen in separate Composables extrahiert fΓΌr isolierte Recomposition
71+
72+
**Smooth Fade-Transitions in der Settings-Navigation** ([1ef565d](https://github.com/inventory69/simple-notes-sync/commit/1ef565d))
73+
- Alle Settings-Routen nutzen jetzt einen 700 ms Fade statt des abrupten Standard-Crossfades
74+
- Global auf NavHost-Ebene definiert β€” kein duplizierter Code pro Route
75+
76+
### 🌍 Übersetzungen
77+
78+
Dank an [@FromKaniv](https://github.com/FromKaniv) für die ukrainische Übersetzung und [@ksuheyl](https://github.com/ksuheyl) für die türkische Übersetzung!
79+
80+
---
81+
1182
## [1.10.0] - 2026-03-01
1283

1384
### ✏️ Editor-Überarbeitung, Teilen / Export & Sync-ZuverlÀssigkeit

β€ŽCHANGELOG.mdβ€Ž

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

99
---
1010

11+
## [1.11.0] - 2026-03-10
12+
13+
### πŸ”” Notifications, FAB Polish & Checklist Sorting
14+
15+
Focused release adding configurable notification settings with Android 13+ permission handling, ascending and descending sort-by-creation-date for checklists, a redesigned FAB overlay with animated scrim and unified action pills, restructured sync settings, hidden developer options, and several bug fixes around autosave behaviour and sync counting.
16+
17+
### ✨ New Features
18+
19+
**Notification Settings with Permission Handling** ([c1f5078](https://github.com/inventory69/simple-notes-sync/commit/c1f5078))
20+
- Three new toggles in Sync & Notifications settings: global enable, errors-only mode, server unreachable warning
21+
- Full Android 13+ POST_NOTIFICATIONS permission flow: request on first enable, rationale dialog on deny, app-settings redirect on permanent deny
22+
- Permission state re-checked on every screen resume β€” toggle syncs with system state
23+
24+
**Sort Checklists by Creation Date (Ascending + Descending)** ([a265e3c](https://github.com/inventory69/simple-notes-sync/commit/a265e3c))
25+
- New sort option "Date created ↑" (oldest first) and "Date created ↓" (newest first)
26+
- Each checklist item gets a `createdAt` timestamp, preserved across edits and syncs
27+
- Backward compatible: old items without timestamp use index as fallback
28+
- Separator between unchecked/checked groups maintained for both directions
29+
30+
**Developer Options Hidden Behind Easter Egg** ([186a345](https://github.com/inventory69/simple-notes-sync/commit/186a345))
31+
- Debug & Diagnostics settings hidden by default
32+
- Unlock by tapping the app info card 5Γ— in About screen (Android developer-options style)
33+
- Session-only: resets on app restart, not persisted to SharedPreferences
34+
- Countdown toast for last 2 taps, unlock confirmation toast
35+
36+
### πŸ› Bug Fixes
37+
38+
**Autosave Triggered for Empty Checklist Items** ([f7e25db](https://github.com/inventory69/simple-notes-sync/commit/f7e25db))
39+
- Adding or deleting empty checklist items no longer triggers autosave
40+
- No-change guard in `performSave()` and `saveOnBack()` skips save when only empty items differ from saved state
41+
- Autosave indicator no longer misleadingly appears after adding an empty item
42+
43+
**Markdown Auto-Sync Double-Counting** ([7dd092e](https://github.com/inventory69/simple-notes-sync/commit/7dd092e))
44+
- Creating a note with markdown auto-sync enabled no longer shows "2 notes synced" instead of 1
45+
- Exported markdown files excluded from re-import in the same sync cycle via note ID tracking
46+
- Technical re-uploads after markdown import no longer inflated the sync count
47+
- `null` vs `emptyList()` mismatch in checklist content comparison fixed
48+
49+
**Misleading "Importing Markdown" Banner When No Files Changed** ([e352ce1](https://github.com/inventory69/simple-notes-sync/commit/e352ce1))
50+
- Progress banner no longer shows a filename (e.g. "Test Neu.md") when 0 files are actually imported
51+
- Fast-path skips IMPORTING_MARKDOWN phase entirely when all server files are unchanged
52+
- Filename in progress update now only shown when a file is actually being downloaded
53+
54+
### 🎨 UI Improvements
55+
56+
**Animated FAB Scrim and Improved Colors** ([4a8a202](https://github.com/inventory69/simple-notes-sync/commit/4a8a202))
57+
- FAB overlay now covers the entire screen including status bar (moved out of Scaffold)
58+
- Semi-transparent animated scrim (50% black, 250 ms tween) replaces transparent dismiss overlay
59+
- Sub-action colours changed from `secondaryContainer` to `primaryContainer` for better hierarchy
60+
61+
**Unified Action Pills** ([847154f](https://github.com/inventory69/simple-notes-sync/commit/847154f))
62+
- Label text and icon combined into a single wide pill per action (Aegis Authenticator style)
63+
- Entire pill is one click target β€” no more separate label + icon FAB
64+
- Uses `surfaceContainerHigh` / `onSurface` for consistent appearance in dark mode
65+
66+
**Sync Settings Restructured** ([e9d48cb](https://github.com/inventory69/simple-notes-sync/commit/e9d48cb))
67+
- Screen renamed from "Sync Settings" to "Sync & Notifications"
68+
- Section header renamed from "Network & Performance" to "Network"
69+
- Sub-headers "Instant Sync" and "Background Sync" removed for cleaner layout
70+
- Sync triggers, network, and notifications extracted into separate composables for recomposition isolation
71+
72+
**Smooth Fade Transitions in Settings Navigation** ([1ef565d](https://github.com/inventory69/simple-notes-sync/commit/1ef565d))
73+
- All settings routes now use a 700 ms fade transition instead of the abrupt default crossfade
74+
- Defined globally on NavHost level β€” no per-route duplication
75+
76+
### 🌍 Translations
77+
78+
Thanks to [@FromKaniv](https://github.com/FromKaniv) for the Ukrainian translation and [@ksuheyl](https://github.com/ksuheyl) for the Turkish translation!
79+
80+
---
81+
1182
## [1.10.0] - 2026-03-01
1283

1384
### ✏️ Editor Overhaul, Share / Export & Sync Reliability

β€ŽREADME.de.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,6 @@ MIT License – siehe [LICENSE](LICENSE)
150150
<div align="center">
151151
<br /><br />
152152

153-
**v1.10.0** · Built with ❀️ using Kotlin + Jetpack Compose + Material Design 3
153+
**v1.11.0** · Built with ❀️ using Kotlin + Jetpack Compose + Material Design 3
154154

155155
</div>

β€ŽREADME.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,6 @@ MIT License - see [LICENSE](LICENSE)
160160
<div align="center">
161161
<br /><br />
162162

163-
**v1.10.0** · Built with ❀️ using Kotlin + Jetpack Compose + Material Design 3
163+
**v1.11.0** · Built with ❀️ using Kotlin + Jetpack Compose + Material Design 3
164164

165165
</div>

β€Žandroid/app/build.gradle.ktsβ€Ž

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ android {
2020
applicationId = "dev.dettmer.simplenotes"
2121
minSdk = 24
2222
targetSdk = 36
23-
versionCode = 24 // πŸ†• v1.10.0: Undo/Redo, Timeout, Save-on-Back, Banner Polish
24-
versionName = "1.10.0" // πŸ†• v1.10.0: Calendar Export, Share, PDF
23+
versionCode = 25 // πŸ†• v1.11.0: Notifications, FAB Rework, Sort-by-Creation, Sync Fix
24+
versionName = "1.11.0" // πŸ†• v1.11.0: Notifications, Checklist Sort, FAB Polish, ProGuard Audit
2525

2626
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
2727
}
@@ -115,6 +115,10 @@ android {
115115
kotlinOptions {
116116
jvmTarget = "11"
117117
}
118+
119+
lint {
120+
baseline = file("lint-baseline.xml")
121+
}
118122
}
119123

120124
dependencies {

0 commit comments

Comments
Β (0)