Skip to content

Commit 9712c5d

Browse files
committed
Merge branch 'feature/v1.9.0' into main
v1.9.0: Filter, Search, Markdown Preview, Widget Polish, Sync Quality New Features: - Filter Chip Row with inline search and sort - Markdown preview with formatting toolbar - Notes Import Wizard (WebDAV, .md, .json, .txt) - Parallel uploads (~2× faster) - Custom app title setting - Configurable WebDAV sync folder name - Opt-in autosave with debounce timer - Scroll to top after manual sync Widget Polish: - Monet tint preserved in translucent backgrounds - Seamless options bar (background removed) - Strikethrough for completed checklist items - Auto-refresh when leaving app Checklist Improvements: - Un-check restores item to original position - Consistent scroll on check/un-check - Prevent scroll jump on first visible item Sync Fixes: - Server switch no longer causes false deletion status - Deletion detection guard raised (≥10) - Parallel MD export race condition fixed via Mutex - E-Tag cached for "local newer" download skip Cleanup: - Image support deferred to v2.0.0 - Tune button color fix, sort button redesign - Lint/detekt cleanup, code quality improvements - Weblate PR-based translation workflow - Documentation updated, broken links fixed Big Thanks to following user: - @Incrovantilist (discussion #20) - @j-lakeman (discussion #25) - @jwjenkin (discussion #27) - @isawaway (issue #22) <3
2 parents d0d5376 + 8576b35 commit 9712c5d

100 files changed

Lines changed: 8636 additions & 644 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ body:
148148
attributes:
149149
label: ✅ Checklist
150150
options:
151-
- label: Ich habe die [Troubleshooting-Sektion](https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#troubleshooting) gelesen / I have read the troubleshooting section
151+
- label: Ich habe die [Troubleshooting-Sektion](https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#-troubleshooting) gelesen / I have read the troubleshooting section
152152
required: false
153153
- label: Ich habe "Verbindung testen" in den Einstellungen probiert / I have tried "Test connection" in settings
154154
required: false

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ contact_links:
77
url: https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md
88
about: Schritt-für-Schritt Anleitung / Step-by-step guide
99
- name: "🐛 Troubleshooting"
10-
url: https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#troubleshooting
10+
url: https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#-troubleshooting
1111
about: Häufige Probleme und Lösungen / Common issues and solutions
1212
- name: "✨ Feature Requests & Ideas"
1313
url: https://github.com/inventory69/simple-notes-sync/discussions/categories/ideas

.github/ISSUE_TEMPLATE/question.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ body:
2727
required: false
2828
- label: Ich habe den [Quick Start Guide](https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md) gelesen / I have read the Quick Start Guide
2929
required: false
30-
- label: Ich habe das [Troubleshooting](https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#troubleshooting) durchgearbeitet / I have checked the troubleshooting section
30+
- label: Ich habe das [Troubleshooting](https://github.com/inventory69/simple-notes-sync/blob/main/QUICKSTART.md#-troubleshooting) durchgearbeitet / I have checked the troubleshooting section
3131
required: false
3232

3333
- type: textarea
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
name: Weblate PR Label
2+
on:
3+
pull_request:
4+
types: [opened]
5+
6+
jobs:
7+
label:
8+
name: Label Weblate PRs
9+
runs-on: ubuntu-latest
10+
if: github.event.pull_request.user.login == 'weblate'
11+
permissions:
12+
pull-requests: write
13+
steps:
14+
- name: Add translation label
15+
uses: actions/github-script@v7
16+
with:
17+
script: |
18+
await github.rest.issues.addLabels({
19+
owner: context.repo.owner,
20+
repo: context.repo.repo,
21+
issue_number: context.issue.number,
22+
labels: ['translation', 'weblate']
23+
});

CHANGELOG.de.md

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

99
---
1010

11+
## [1.9.0] - 2026-02-25
12+
13+
### 🔄 Sync-Qualität, Performance & UI
14+
15+
Großes Release mit Notiz-Filterung, Markdown-Vorschau, konfigurierbarem Sync-Ordner, Opt-in-Autosave, Widget-Polish und signifikanten Sync-Verbesserungen — Server-Wechsel-Datenverlust behoben, parallele Uploads, Import-Assistent und drei Sync-Edge-Cases gelöst.
16+
17+
### 🐛 Fehlerbehebungen
18+
19+
**Erster Sync schlägt fehl wenn /notes/-Ordner auf Server fehlt** ([e012d17](https://github.com/inventory69/simple-notes-sync/commit/e012d17))
20+
- Der erste Sync schlägt nicht mehr still fehl, wenn das Verzeichnis `/notes/` noch nicht auf dem Server angelegt wurde
21+
- Ursache: `checkServerForChanges()` lieferte `false` (keine Änderungen) statt `true` (fortfahren), wenn `lastSyncTime > 0` und der Ordner fehlte
22+
- Fix: gibt `true` zurück, damit der initiale Upload startet — der Server legt den Ordner beim ersten PUT automatisch an
23+
24+
**Server-Wechsel verursacht falschen "Auf Server gelöscht"-Status** ([0985209](https://github.com/inventory69/simple-notes-sync/commit/0985209))
25+
- Der Wechsel zu einem neuen Server markiert lokale Notizen nicht mehr fälschlich als gelöscht
26+
- Ursache: E-Tag- und Content-Hash-Caches des alten Servers wurden nicht geleert — Upload-Skip feuerte fälschlich, Notizen erschienen als SYNCED ohne tatsächlich hochgeladen zu sein
27+
- Fix: `clearServerCaches()` leert alle E-Tag-, Content-Hash-, Sync-Timestamp- und Deletion-Tracker-Einträge bei Server-Wechsel
28+
- `resetAllSyncStatusToPending()` setzt jetzt auch DELETED_ON_SERVER auf PENDING zurück
29+
30+
**Server-Löscherkennung zu aggressiv bei wenigen Notizen** ([56c0363](https://github.com/inventory69/simple-notes-sync/commit/56c0363))
31+
- Nutzer mit 2–9 Notizen, die alle über die Nextcloud-Web-UI löschten, bekamen nie den DELETED_ON_SERVER-Status
32+
- Guard-Schwellenwert von >1 auf ≥10 angehoben
33+
34+
**Race Condition bei parallelem Markdown-Export mit gleichen Titeln** ([56c0363](https://github.com/inventory69/simple-notes-sync/commit/56c0363))
35+
- Zwei Notizen mit identischem Titel konnten sich gegenseitig die Markdown-Datei überschreiben
36+
- Ursache: gleichzeitige `exists()``put()`-Sequenz ohne Synchronisation
37+
- Fix: Markdown-Export wird per Mutex serialisiert (JSON-Uploads bleiben parallel)
38+
39+
**E-Tag nicht gecacht bei "Lokal neuer"-Download-Skip** ([56c0363](https://github.com/inventory69/simple-notes-sync/commit/56c0363))
40+
- Wenn eine lokale Notiz neuer war als die Server-Version, wurde der Server-E-Tag nicht gespeichert
41+
- Verursachte unnötige Re-Downloads bei jedem folgenden Sync
42+
- Fix: E-Tag wird jetzt auch im else-Branch der Download-Ergebnis-Verarbeitung gespeichert
43+
44+
**Tune-Button-Farbe passt nicht zur Standard-Iconfarbe** ([135559a](https://github.com/inventory69/simple-notes-sync/commit/135559a))
45+
- Untoggled-Tune-Button nutzt jetzt die Standard-TopAppBar-Iconfarbe statt einer eigenen Farbe
46+
47+
**Import-Assistent verliert Checklisten-Inhalt** ([5031848](https://github.com/inventory69/simple-notes-sync/commit/5031848))
48+
- Checklisten-Erkennung beim Markdown-Import behält jetzt den vollständigen Notiz-Inhalt
49+
50+
**Checklisten-Scroll-Sprung beim Abhaken des ersten sichtbaren Items** ([8238af4](https://github.com/inventory69/simple-notes-sync/commit/8238af4))
51+
- Abhaken des ersten sichtbaren Checklisten-Items verursacht keinen Scroll-Sprung mehr
52+
53+
**Checklisten-Originalreihenfolge verloren nach Einfügen/Löschen** ([e601642](https://github.com/inventory69/simple-notes-sync/commit/e601642))
54+
- Originalreihenfolge wird nach Einfüge-/Löschoperationen zementiert, um Reihenfolge-Glitches zu verhindern
55+
56+
**Inkonsistentes Scrollen beim Check/Un-Check** ([19dfb03](https://github.com/inventory69/simple-notes-sync/commit/19dfb03))
57+
- Konsistentes Scroll-Verhalten beim Abhaken und Aufheben von Checklisten-Items
58+
59+
### ✨ Neue Features
60+
61+
**Notizen-Import-Assistent** ([e012d17](https://github.com/inventory69/simple-notes-sync/commit/e012d17))
62+
- Neuer Import-Screen in den Einstellungen — Notizen von WebDAV-Server oder lokalem Speicher importieren
63+
- Unterstützte Formate: `.md` (mit/ohne YAML-Frontmatter), `.json` (Simple Notes Format oder generisch), `.txt` (Klartext)
64+
- WebDAV-Scan: rekursiver Unterordner-Scan (Tiefe 1), berücksichtigt bestehende DeletionTracker-Einträge
65+
- Notizen mit YAML-Frontmatter oder Simple Notes JSON werden als SYNCED importiert; andere als PENDING
66+
- Erreichbar über Einstellungen → Import
67+
68+
**Parallele Uploads** ([187d338](https://github.com/inventory69/simple-notes-sync/commit/187d338))
69+
- Notizen werden parallel statt sequentiell hochgeladen — ~2× schneller bei mehreren geänderten Notizen
70+
- Upload-Zeit für 4 Notizen von ~11,5 s auf ~6 s reduziert (auf Gerät gemessen)
71+
- Zweiter Sync mit unveränderten Notizen: Upload-Phase ~0 ms (alle per Content-Hash übersprungen)
72+
- Begrenzte Parallelität via Semaphore; Datei-I/O-Schreibzugriffe via Mutex serialisiert
73+
- Neu: `/notes-md/`-Existenzprüfung pro Sync-Lauf gecacht (spart ~480 ms × N exists()-Aufrufe)
74+
75+
**Vereinheitlichte Parallele-Verbindungen-Einstellung** ([ef200d0](https://github.com/inventory69/simple-notes-sync/commit/ef200d0))
76+
- Parallele Downloads (1/3/5/7/10) und Uploads (versteckt, max 6) zu einer einzelnen "Parallele Verbindungen"-Einstellung zusammengeführt
77+
- Neue Optionen: 1, 3, 5 (reduziert von 5 Optionen — 7 und 10 entfernt da Uploads auf 6 begrenzt)
78+
- Nutzer mit 7 oder 10 werden automatisch auf 5 migriert
79+
- Uploads zur Laufzeit auf `min(Einstellung, 6)` begrenzt
80+
81+
**Filter Chip Row** ([952755f](https://github.com/inventory69/simple-notes-sync/commit/952755f), [71a0469](https://github.com/inventory69/simple-notes-sync/commit/71a0469), [07c41bb](https://github.com/inventory69/simple-notes-sync/commit/07c41bb))
82+
- Neue Filter-Leiste unter der TopAppBar — Notizen filtern nach Alle / Text / Checklisten
83+
- Inline-Suchfeld für schnelle Notiz-Filterung nach Titel
84+
- Sortier-Button aus Dialog in kompaktes Filter-Row-Icon verschoben
85+
- Tune-Button in TopAppBar schaltet Filter-Zeile ein/aus
86+
87+
**Markdown-Vorschau** ([e83a89a](https://github.com/inventory69/simple-notes-sync/commit/e83a89a))
88+
- Live-Markdown-Vorschau für Textnotizen mit Formatierungs-Toolbar
89+
- Unterstützt Überschriften, Fett, Kursiv, Durchgestrichen, Listen, Trennlinien, Code-Blöcke
90+
- Umschalten zwischen Bearbeitungs- und Vorschaumodus
91+
92+
**Benutzerdefinierter App-Titel** ([bf478c7](https://github.com/inventory69/simple-notes-sync/commit/bf478c7))
93+
- Konfigurierbarer App-Name in den Einstellungen
94+
95+
**Konfigurierbarer WebDAV-Sync-Ordner** ([58cdf1e](https://github.com/inventory69/simple-notes-sync/commit/58cdf1e))
96+
- Eigener Sync-Ordnername (Standard: `notes`, konfigurierbar für Multi-App-Setups)
97+
98+
**Opt-in Autosave** ([5800183](https://github.com/inventory69/simple-notes-sync/commit/5800183))
99+
- Autosave mit Debounce-Timer (3s nach letzter Bearbeitung, konfigurierbar in Einstellungen)
100+
- Standardmäßig deaktiviert, Opt-in über Einstellungen
101+
102+
**Nach oben scrollen nach manuellem Sync** ([4697e49](https://github.com/inventory69/simple-notes-sync/commit/4697e49))
103+
- Notizliste scrollt nach Abschluss eines manuellen Syncs nach oben
104+
105+
### 🔄 Verbesserungen
106+
107+
**Widget: Monet-Farbton in transluzenten Hintergründen** ([0f5a734](https://github.com/inventory69/simple-notes-sync/commit/0f5a734))
108+
- Monet-Dynamic-Color-Farbton in transluzenten Widget-Hintergründen erhalten
109+
110+
**Widget: Options-Leisten-Hintergrund entfernt** ([5e3273a](https://github.com/inventory69/simple-notes-sync/commit/5e3273a))
111+
- Options-Leisten-Hintergrund für nahtlose Widget-Integration entfernt
112+
113+
**Widget: Durchstreichung für erledigte Items** ([eb9db2e](https://github.com/inventory69/simple-notes-sync/commit/eb9db2e))
114+
- Erledigte Checklisten-Items in Widgets zeigen jetzt Durchstreichung
115+
116+
**Widget: Auto-Refresh bei onStop** ([2443908](https://github.com/inventory69/simple-notes-sync/commit/2443908))
117+
- Widgets aktualisieren automatisch beim Verlassen der App (onStop Lifecycle Hook)
118+
119+
**Checkliste: Abhaken-Rückgängig stellt Originalposition wieder her** ([188a0f6](https://github.com/inventory69/simple-notes-sync/commit/188a0f6))
120+
- Aufheben eines Hakens stellt das Item an seiner Originalposition wieder her
121+
122+
**Sortier-Button: Kompakter Icon-Button** ([a1bd15a](https://github.com/inventory69/simple-notes-sync/commit/a1bd15a))
123+
- AssistChip durch kompakten IconButton + SwapVert-Icon ersetzt
124+
125+
### 🛠️ Intern
126+
127+
**Code-Qualität** ([6708156](https://github.com/inventory69/simple-notes-sync/commit/6708156))
128+
- Deprecated `Icons.Outlined.Notes``Icons.AutoMirrored.Outlined.Notes` behoben
129+
- Ungenutzten `Color`-Import aus ServerSettingsScreen + Detekt-Baseline-Eintrag entfernt
130+
- Logger-Timestamps nutzen `Locale.ROOT` statt `Locale.getDefault()`
131+
- Obsoleten `Build.VERSION_CODES.N`-Check entfernt (minSdk=24)
132+
133+
**Detekt-Compliance** ([f0e143c](https://github.com/inventory69/simple-notes-sync/commit/f0e143c))
134+
- `ALL_DELETED_GUARD_THRESHOLD`-Konstante für MagicNumber-Compliance extrahiert
135+
136+
**ProGuard/R8-Verifikation**
137+
- Release-Build verifiziert — keine Regeländerungen für v1.9.0 nötig
138+
139+
**Image Support auf v2.0.0 verschoben** ([845ba03](https://github.com/inventory69/simple-notes-sync/commit/845ba03))
140+
- Lokales Bild-Embedding aus v1.9.0 Scope entfernt
141+
- Feature als v2.0.0 Spezifikation mit vollständigem Architektur-Vorschlag erhalten
142+
143+
**Weblate PR-Workflow** ([efd782f](https://github.com/inventory69/simple-notes-sync/commit/efd782f))
144+
- Weblate-Integration auf PR-basierten Übersetzungs-Workflow umgestellt
145+
146+
**Dokumentation** ([395d154](https://github.com/inventory69/simple-notes-sync/commit/395d154))
147+
- Dokumentation für v1.8.2 und v1.9.0 aktualisiert (FEATURES, UPCOMING, QUICKSTART)
148+
- Fehlerhafte Links in Docs behoben (schließt #22)
149+
150+
---
151+
11152
## [1.8.2] - 2026-02-16
12153

13154
### 🔧 Stabilität, Editor- & Widget-Verbesserungen

0 commit comments

Comments
 (0)