From 4a621b622b92744cad46381a1ddf7d163401f63b Mon Sep 17 00:00:00 2001 From: inventory69 Date: Tue, 10 Feb 2026 14:53:22 +0100 Subject: [PATCH] =?UTF-8?q?chore(v1.8.0):=20IMPL=5F05=20Version=20Bump=20-?= =?UTF-8?q?=20v1.7.2=20=E2=86=92=20v1.8.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Update versionCode from 19 to 20 - Update versionName from "1.7.2" to "1.8.0" - Create F-Droid changelog for versionCode 20 (EN + DE) - Update CHANGELOG.md with comprehensive v1.8.0 entry (all 16 features) - Update CHANGELOG.de.md with German v1.8.0 entry - Add commit hashes to all changelog entries for traceability Major feature release: Widgets with interactive checklists, note/checklist sorting, server deletion detection, sync status legend, live sync progress, parallel downloads, checklist UX improvements, and widget text display fix. Complete changelog lists all features with commit references. --- CHANGELOG.de.md | 112 ++++++++++++++++++ CHANGELOG.md | 112 ++++++++++++++++++ android/app/build.gradle.kts | 4 +- .../metadata/android/de-DE/changelogs/20.txt | 12 ++ .../metadata/android/en-US/changelogs/20.txt | 12 ++ 5 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 fastlane/metadata/android/de-DE/changelogs/20.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/20.txt diff --git a/CHANGELOG.de.md b/CHANGELOG.de.md index 6148bd3..2f74995 100644 --- a/CHANGELOG.de.md +++ b/CHANGELOG.de.md @@ -8,6 +8,118 @@ Das Format basiert auf [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- +## [1.8.0] - 2026-02-10 + +### 🎉 Major: Widgets, Sortierung & Erweiterte Sync-Features + +Komplettes Widget-System mit interaktiven Checklisten, Notiz-Sortierung und umfangreiche Sync-Verbesserungen! + +### 🆕 Homescreen-Widgets + +**Vollständiges Jetpack Glance Widget-Framework** ([539987f](https://github.com/inventory69/simple-notes-sync/commit/539987f)) +- 5 responsive Größenklassen (SMALL, NARROW_MED, NARROW_TALL, WIDE_MED, WIDE_TALL) +- Interaktive Checklist-Checkboxen die sofort zum Server synchronisieren +- Material You Dynamic Colors mit konfigurierbarer Hintergrund-Transparenz (0-100%) +- Widget-Sperre-Toggle zum Verhindern versehentlicher Änderungen +- Read-Only-Modus mit permanenter Options-Leiste für gesperrte Widgets +- Widget-Konfigurations-Activity mit Notiz-Auswahl und Einstellungen +- Auto-Refresh nach Sync-Abschluss +- Tippen auf Inhalt öffnet Editor (entsperrt) oder zeigt Optionen (gesperrt) +- Vollständige Resource-Cleanup-Fixes für Connection Leaks + +**Widget State Management:** +- NoteWidgetState Keys für pro-Instanz-Persistierung via DataStore +- Fünf Top-Level ActionCallbacks (Toggle Checkbox, Lock, Options, Refresh, Config) +- Type-Safe Parameter-Übergabe mit NoteWidgetActionKeys + +### 📊 Notiz- & Checklisten-Sortierung + +**Notiz-Sortierung** ([96c819b](https://github.com/inventory69/simple-notes-sync/commit/96c819b)) +- Sortieren nach: Aktualisiert (neueste/älteste), Erstellt, Titel (A-Z/Z-A), Typ +- Persistente Sortierungs-Präferenzen (gespeichert in SharedPreferences) +- Sortierungs-Dialog im Hauptbildschirm mit Richtungs-Toggle +- Kombinierte sortedNotes StateFlow im MainViewModel + +**Checklisten-Sortierung** ([96c819b](https://github.com/inventory69/simple-notes-sync/commit/96c819b), [900dad7](https://github.com/inventory69/simple-notes-sync/commit/900dad7)) +- Sortieren nach: Manual, Alphabetisch, Offen zuerst, Erledigt zuletzt +- Visueller Separator zwischen offenen/erledigten Items mit Anzahl-Anzeige +- Auto-Sort bei Item-Toggle und Neuordnung +- Drag nur innerhalb gleicher Gruppe (offen/erledigt) +- Sanfte Fade/Slide-Animationen für Item-Übergänge +- Unit-getestet mit 9 Testfällen für Sortierungs-Logik-Validierung + +### 🔄 Sync-Verbesserungen + +**Server-Löschungs-Erkennung** ([40d7c83](https://github.com/inventory69/simple-notes-sync/commit/40d7c83), [bf7a74e](https://github.com/inventory69/simple-notes-sync/commit/bf7a74e)) +- Neuer `DELETED_ON_SERVER` Sync-Status für Multi-Device-Szenarien +- Erkennt wenn Notizen auf anderen Clients gelöscht wurden +- Zero Performance-Impact (nutzt existierende PROPFIND-Daten) +- Löschungs-Anzahl im Sync-Banner: "3 synchronisiert · 2 auf Server gelöscht" +- Bearbeitete gelöschte Notizen werden automatisch zum Server hochgeladen (Status → PENDING) + +**Sync-Status-Legende** ([07607fc](https://github.com/inventory69/simple-notes-sync/commit/07607fc)) +- Hilfe-Button (?) in Hauptbildschirm TopAppBar +- Dialog erklärt alle 5 Sync-Status-Icons mit Beschreibungen +- Nur sichtbar wenn Sync konfiguriert ist + +**Live-Sync-Fortschritts-UI** ([df37d2a](https://github.com/inventory69/simple-notes-sync/commit/df37d2a)) +- Echtzeit-Phasen-Indikatoren: PREPARING, UPLOADING, DOWNLOADING, IMPORTING_MARKDOWN +- Upload-Fortschritt zeigt x/y Counter (bekannte Gesamtzahl) +- Download-Fortschritt zeigt Anzahl (unbekannte Gesamtzahl) +- Einheitliches SyncProgressBanner (ersetzt Dual-System) +- Auto-Hide: COMPLETED (2s), ERROR (4s) +- Keine irreführenden Counter wenn nichts zu synchronisieren ist +- Stiller Auto-Sync bleibt still, Fehler werden immer angezeigt + +**Parallele Downloads** ([bdfc0bf](https://github.com/inventory69/simple-notes-sync/commit/bdfc0bf)) +- Konfigurierbare gleichzeitige Downloads (Standard: 3 simultan) +- Kotlin Coroutines async/awaitAll Pattern +- Individuelle Download-Timeout-Behandlung +- Graceful sequentieller Fallback bei gleichzeitigen Fehlern +- Optimierte Netzwerk-Auslastung für schnelleren Sync + +### ✨ UX-Verbesserungen + +**Checklisten-Verbesserungen:** +- Überlauf-Verlauf für lange Text-Items ([3462f93](https://github.com/inventory69/simple-notes-sync/commit/3462f93)) +- Auto-Expand bei Fokus, Collapse auf 5 Zeilen bei Fokus-Verlust +- Drag & Drop Flackern-Fix mit Straddle-Target-Center-Erkennung ([538a705](https://github.com/inventory69/simple-notes-sync/commit/538a705)) +- Adjacency-Filter verhindert Item-Sprünge bei schnellem Drag +- Race-Condition-Fix für Scroll + Move-Operationen + +**Einstellungs-UI-Polish:** +- Sanfter Sprachwechsel ohne Activity-Recreate ([881c0fd](https://github.com/inventory69/simple-notes-sync/commit/881c0fd)) +- Raster-Ansicht als Standard für Neu-Installationen ([6858446](https://github.com/inventory69/simple-notes-sync/commit/6858446)) +- Sync-Einstellungen umstrukturiert in klare Sektionen: Auslöser & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0)) +- Changelog-Link zum About-Screen hinzugefügt ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff)) + +### 🐛 Fehlerbehebungen + +**Widget-Text-Anzeige** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d)) +- Text-Notizen zeigen nicht mehr nur 3 Zeilen in Widgets +- Von Absatz-basiert zu Zeilen-basiertem Rendering geändert +- LazyColumn scrollt jetzt korrekt durch gesamten Inhalt +- Leere Zeilen als 8dp Spacer beibehalten +- Vorschau-Limits erhöht: compact 100→120, full 200→300 Zeichen + +### 🔧 Code-Qualität + +**Detekt-Cleanup** ([1da1a63](https://github.com/inventory69/simple-notes-sync/commit/1da1a63)) +- Alle 22 Detekt-Warnungen behoben +- 7 ungenutzte Imports entfernt +- Konstanten für 5 Magic Numbers definiert +- State-Reads mit derivedStateOf optimiert +- Build: 0 Lint-Fehler + 0 Detekt-Warnungen + +### 📚 Dokumentation + +- Vollständige Implementierungs-Pläne für alle 23 v1.8.0 Features +- Widget-System-Architektur und State-Management-Docs +- Sortierungs-Logik Unit-Tests mit Edge-Case-Coverage +- F-Droid Changelogs (Englisch + Deutsch) + +--- + ## [1.7.2] - 2026-02-04 ### 🐛 Kritische Fehlerbehebungen diff --git a/CHANGELOG.md b/CHANGELOG.md index 758f009..4214d36 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,118 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). --- +## [1.8.0] - 2026-02-10 + +### 🎉 Major: Widgets, Sorting & Advanced Sync + +Complete widget system with interactive checklists, note sorting, and major sync improvements! + +### 🆕 Homescreen Widgets + +**Full Jetpack Glance Widget Framework** ([539987f](https://github.com/inventory69/simple-notes-sync/commit/539987f)) +- 5 responsive size classes (SMALL, NARROW_MED, NARROW_TALL, WIDE_MED, WIDE_TALL) +- Interactive checklist checkboxes that sync immediately to server +- Material You dynamic colors with configurable background opacity (0-100%) +- Lock widget toggle to prevent accidental edits +- Read-only mode with permanent options bar for locked widgets +- Widget configuration activity with note selection and settings +- Auto-refresh after sync completion +- Tap content to open editor (unlocked) or show options (locked) +- Complete resource cleanup fixes for connection leaks + +**Widget State Management:** +- NoteWidgetState keys for per-instance persistence via DataStore +- Five top-level ActionCallbacks (Toggle Checkbox, Lock, Options, Refresh, Config) +- Type-safe parameter passing with NoteWidgetActionKeys + +### 📊 Note & Checklist Sorting + +**Note Sorting** ([96c819b](https://github.com/inventory69/simple-notes-sync/commit/96c819b)) +- Sort by: Updated (newest/oldest), Created, Title (A-Z/Z-A), Type +- Persistent sort preferences (saved in SharedPreferences) +- Sort dialog in main screen with direction toggle +- Combined sortedNotes StateFlow in MainViewModel + +**Checklist Sorting** ([96c819b](https://github.com/inventory69/simple-notes-sync/commit/96c819b), [900dad7](https://github.com/inventory69/simple-notes-sync/commit/900dad7)) +- Sort by: Manual, Alphabetical, Unchecked First, Checked Last +- Visual separator between unchecked/checked items with count display +- Auto-sort on item toggle and reordering +- Drag-only within same group (unchecked/checked) +- Smooth fade/slide animations for item transitions +- Unit tested with 9 test cases for sorting logic validation + +### 🔄 Sync Improvements + +**Server Deletion Detection** ([40d7c83](https://github.com/inventory69/simple-notes-sync/commit/40d7c83), [bf7a74e](https://github.com/inventory69/simple-notes-sync/commit/bf7a74e)) +- New `DELETED_ON_SERVER` sync status for multi-device scenarios +- Detects when notes are deleted on other clients +- Zero performance impact (uses existing PROPFIND data) +- Deletion count shown in sync banner: "3 synced · 2 deleted on server" +- Edited deleted notes automatically re-upload to server (status → PENDING) + +**Sync Status Legend** ([07607fc](https://github.com/inventory69/simple-notes-sync/commit/07607fc)) +- Help button (?) in main screen TopAppBar +- Dialog explaining all 5 sync status icons with descriptions +- Only visible when sync is configured + +**Live Sync Progress UI** ([df37d2a](https://github.com/inventory69/simple-notes-sync/commit/df37d2a)) +- Real-time phase indicators: PREPARING, UPLOADING, DOWNLOADING, IMPORTING_MARKDOWN +- Upload progress shows x/y counter (known total) +- Download progress shows count (unknown total) +- Single unified SyncProgressBanner (replaces dual system) +- Auto-hide: COMPLETED (2s), ERROR (4s) +- No misleading counters when nothing to sync +- Silent auto-sync stays silent, errors always shown + +**Parallel Downloads** ([bdfc0bf](https://github.com/inventory69/simple-notes-sync/commit/bdfc0bf)) +- Configurable concurrent downloads (default: 3 simultaneous) +- Kotlin coroutines async/awaitAll pattern +- Individual download timeout handling +- Graceful sequential fallback on concurrent errors +- Optimized network utilization for faster sync + +### ✨ UX Improvements + +**Checklist Enhancements:** +- Overflow gradient for long text items ([3462f93](https://github.com/inventory69/simple-notes-sync/commit/3462f93)) +- Auto-expand on focus, collapse to 5 lines when unfocused +- Drag & Drop flicker fix with straddle-target-center detection ([538a705](https://github.com/inventory69/simple-notes-sync/commit/538a705)) +- Adjacency filter prevents item jumps during fast drag +- Race-condition fix for scroll + move operations + +**Settings UI Polish:** +- Smooth language switching without activity recreate ([881c0fd](https://github.com/inventory69/simple-notes-sync/commit/881c0fd)) +- Grid view as default for new installations ([6858446](https://github.com/inventory69/simple-notes-sync/commit/6858446)) +- Sync settings restructured into clear sections: Triggers & Performance ([eaac5a0](https://github.com/inventory69/simple-notes-sync/commit/eaac5a0)) +- Changelog link added to About screen ([49810ff](https://github.com/inventory69/simple-notes-sync/commit/49810ff)) + +### 🐛 Bug Fixes + +**Widget Text Display** ([d045d4d](https://github.com/inventory69/simple-notes-sync/commit/d045d4d)) +- Fixed text notes showing only 3 lines in widgets +- Changed from paragraph-based to line-based rendering +- LazyColumn now properly scrolls through all content +- Empty lines preserved as 8dp spacers +- Preview limits increased: compact 100→120, full 200→300 chars + +### 🔧 Code Quality + +**Detekt Cleanup** ([1da1a63](https://github.com/inventory69/simple-notes-sync/commit/1da1a63)) +- Resolved all 22 Detekt warnings +- Removed 7 unused imports +- Defined constants for 5 magic numbers +- Optimized state reads with derivedStateOf +- Build: 0 Lint errors + 0 Detekt warnings + +### 📚 Documentation + +- Complete implementation plans for all 23 v1.8.0 features +- Widget system architecture and state management docs +- Sorting logic unit tests with edge case coverage +- F-Droid changelogs (English + German) + +--- + ## [1.7.2] - 2026-02-04 ### 🐛 Critical Bug Fixes diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index c118a97..a8a6293 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -20,8 +20,8 @@ android { applicationId = "dev.dettmer.simplenotes" minSdk = 24 targetSdk = 36 - versionCode = 19 // 🔧 v1.7.2: Critical Bugfixes (Timestamp Sync, SyncStatus, etc.) - versionName = "1.7.2" // 🔧 v1.7.2: Critical Bugfixes + versionCode = 20 // 🎉 v1.8.0: Widgets, Sorting, UI Polish, Post-Update Changelog + versionName = "1.8.0" // 🎉 v1.8.0: Major Feature Release testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/fastlane/metadata/android/de-DE/changelogs/20.txt b/fastlane/metadata/android/de-DE/changelogs/20.txt new file mode 100644 index 0000000..858c0fe --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/20.txt @@ -0,0 +1,12 @@ +🎉 v1.8.0 — WIDGETS, SORTIERUNG & SYNC-VERBESSERUNGEN + +• Neu: Homescreen-Widgets mit interaktiven Checkboxen +• Neu: Notiz-Sortierung (Datum, Titel, Typ) +• Neu: Checklisten Auto-Sort (Offen zuerst/Erledigt zuletzt) +• Neu: Server-Löschungs-Erkennung für Multi-Device-Sync +• Neu: Sync-Status-Legende (Hilfe erklärt alle Icons) +• Verbessert: Live Sync-Fortschritt mit Phasen-Anzeige +• Verbessert: Parallele Downloads für schnelleren Sync +• Verbessert: Checklisten-Überlauf-Verlauf bei langem Text +• Behoben: Drag & Drop Flackern in Checklisten +• Behoben: Widget-Textnotizen Scrolling diff --git a/fastlane/metadata/android/en-US/changelogs/20.txt b/fastlane/metadata/android/en-US/changelogs/20.txt new file mode 100644 index 0000000..5397e05 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/20.txt @@ -0,0 +1,12 @@ +🎉 v1.8.0 — WIDGETS, SORTING & SYNC IMPROVEMENTS + +• New: Home screen widgets with interactive checkboxes +• New: Note sorting (date, title, type) +• New: Checklist auto-sort (unchecked first/checked last) +• New: Server deletion detection for multi-device sync +• New: Sync status legend (help button explains all icons) +• Improved: Live sync progress with phase indicators +• Improved: Parallel downloads for faster sync +• Improved: Checklist overflow gradient for long text +• Fixed: Drag & drop flicker in checklists +• Fixed: Widget text notes scrolling