docs(v1.8.1): comprehensive metadata & documentation update for F-Droid release
Complete overhaul of all metadata and documentation for v1.8.1: F-Droid Critical: - Fix broken umlauts in de-DE/10.txt changelog (für, hinzugefügt, aufgeräumt) - Shorten de-DE/7.txt changelog for brevity - Remove trailing newline from en-US/title.txt Version & Accuracy: - Update README badges (Android 7.0+) and footer (v1.8.1) - Add widgets, sorting, parallel sync to highlights - Fix APK names in workflows (removed "universal") - Update cache action v3 → v4 in PR workflow - Fix CONTRIBUTING.md filename references - Update QUICKSTART guides (APK name, typo, Android version, docs links) Feature Documentation: - Update full_description.txt (both locales) - remove NEW/NEU labels, add v1.8.0+ features - Major FEATURES.md update - add Views & Layout, Widgets sections, updated tech stack - Add UPCOMING.md v1.7.0-1.8.1 as released sections - Update DOCS.md roadmap references and dates to Feb 2026 - Create missing en-US changelogs 1.txt, 2.txt Supplementary Fixes: - Update BACKUP.md - add encryption docs, fix cross-references - Add CHANGELOG.md reference links v1.2.1-v1.8.1 (15 missing) - Fix DEBUG_APK.md duplicate header - Rewrite fastlane/README.md with both locales and limits table - Create SELF_SIGNED_SSL.de.md (full German translation) Affects: 26 files across READMEs, docs/, fastlane/, workflows
This commit is contained in:
4
.github/workflows/build-production-apk.yml
vendored
4
.github/workflows/build-production-apk.yml
vendored
@@ -61,11 +61,11 @@ jobs:
|
||||
run: |
|
||||
mkdir -p apk-output
|
||||
|
||||
# Standard Flavor - Universal APK
|
||||
# Standard Flavor
|
||||
cp android/app/build/outputs/apk/standard/release/app-standard-release.apk \
|
||||
apk-output/simple-notes-sync-v${{ env.VERSION_NAME }}-standard.apk
|
||||
|
||||
# F-Droid Flavor - Universal APK
|
||||
# F-Droid Flavor
|
||||
cp android/app/build/outputs/apk/fdroid/release/app-fdroid-release.apk \
|
||||
apk-output/simple-notes-sync-v${{ env.VERSION_NAME }}-fdroid.apk
|
||||
|
||||
|
||||
6
.github/workflows/pr-build-check.yml
vendored
6
.github/workflows/pr-build-check.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
distribution: 'temurin'
|
||||
java-version: '17'
|
||||
- name: Gradle Cache
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
@@ -69,14 +69,14 @@ jobs:
|
||||
continue-on-error: true
|
||||
- name: Build-Ergebnis pruefen
|
||||
run: |
|
||||
if [ -f "android/app/build/outputs/apk/standard/debug/app-standard-universal-debug.apk" ]; then
|
||||
if [ -f "android/app/build/outputs/apk/standard/debug/app-standard-debug.apk" ]; then
|
||||
echo "✅ Standard Debug APK erfolgreich gebaut"
|
||||
ls -lh android/app/build/outputs/apk/standard/debug/*.apk
|
||||
else
|
||||
echo "❌ Standard Debug APK Build fehlgeschlagen"
|
||||
exit 1
|
||||
fi
|
||||
if [ -f "android/app/build/outputs/apk/fdroid/debug/app-fdroid-universal-debug.apk" ]; then
|
||||
if [ -f "android/app/build/outputs/apk/fdroid/debug/app-fdroid-debug.apk" ]; then
|
||||
echo "✅ F-Droid Debug APK erfolgreich gebaut"
|
||||
ls -lh android/app/build/outputs/apk/fdroid/debug/*.apk
|
||||
else
|
||||
|
||||
@@ -968,6 +968,21 @@ Das komplette UI wurde von XML-Views auf Jetpack Compose migriert. Die App ist j
|
||||
|
||||
---
|
||||
|
||||
[1.8.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.8.1
|
||||
[1.8.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.8.0
|
||||
[1.7.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.2
|
||||
[1.7.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.1
|
||||
[1.7.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.0
|
||||
[1.6.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.6.1
|
||||
[1.6.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.6.0
|
||||
[1.5.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.5.0
|
||||
[1.4.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.4.1
|
||||
[1.4.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.4.0
|
||||
[1.3.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.2
|
||||
[1.3.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.1
|
||||
[1.3.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.0
|
||||
[1.2.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.2
|
||||
[1.2.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.1
|
||||
[1.2.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.0
|
||||
[1.1.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.1.2
|
||||
[1.1.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.1.1
|
||||
|
||||
15
CHANGELOG.md
15
CHANGELOG.md
@@ -967,6 +967,21 @@ The complete UI has been migrated from XML Views to Jetpack Compose. The app is
|
||||
|
||||
---
|
||||
|
||||
[1.8.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.8.1
|
||||
[1.8.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.8.0
|
||||
[1.7.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.2
|
||||
[1.7.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.1
|
||||
[1.7.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.7.0
|
||||
[1.6.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.6.1
|
||||
[1.6.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.6.0
|
||||
[1.5.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.5.0
|
||||
[1.4.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.4.1
|
||||
[1.4.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.4.0
|
||||
[1.3.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.2
|
||||
[1.3.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.1
|
||||
[1.3.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.3.0
|
||||
[1.2.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.2
|
||||
[1.2.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.1
|
||||
[1.2.0]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.2.0
|
||||
[1.1.2]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.1.2
|
||||
[1.1.1]: https://github.com/inventory69/simple-notes-sync/releases/tag/v1.1.1
|
||||
|
||||
@@ -94,10 +94,10 @@ Nutze die [Feature Request Template](https://github.com/inventory69/simple-notes
|
||||
Dokumentations-Verbesserungen sind auch Contributions!
|
||||
|
||||
**Dateien:**
|
||||
- `README.md` / `README.en.md` - Übersicht
|
||||
- `QUICKSTART.md` / `QUICKSTART.en.md` - Schritt-für-Schritt Anleitung
|
||||
- `DOCS.md` / `DOCS.en.md` - Technische Details
|
||||
- `server/README.md` / `server/README.en.md` - Server Setup
|
||||
- `README.de.md` / `README.md` - Übersicht
|
||||
- `QUICKSTART.de.md` / `QUICKSTART.md` - Schritt-für-Schritt Anleitung
|
||||
- `docs/DOCS.de.md` / `docs/DOCS.md` - Technische Details
|
||||
- `server/README.de.md` / `server/README.md` - Server Setup
|
||||
|
||||
**Bitte:** Halte beide Sprachen (DE/EN) synchron!
|
||||
|
||||
@@ -219,10 +219,10 @@ Use the [Feature Request Template](https://github.com/inventory69/simple-notes-s
|
||||
Documentation improvements are also contributions!
|
||||
|
||||
**Files:**
|
||||
- `README.md` / `README.en.md` - Overview
|
||||
- `QUICKSTART.md` / `QUICKSTART.en.md` - Step-by-step guide
|
||||
- `DOCS.md` / `DOCS.en.md` - Technical details
|
||||
- `server/README.md` / `server/README.en.md` - Server setup
|
||||
- `README.de.md` / `README.md` - Overview
|
||||
- `QUICKSTART.de.md` / `QUICKSTART.md` - Step-by-step guide
|
||||
- `docs/DOCS.de.md` / `docs/DOCS.md` - Technical details
|
||||
- `server/README.de.md` / `server/README.md` - Server setup
|
||||
|
||||
**Please:** Keep both languages (DE/EN) in sync!
|
||||
|
||||
@@ -260,4 +260,4 @@ By contributing, you agree that your code will be published under the [MIT Licen
|
||||
|
||||
Öffne ein [Issue](https://github.com/inventory69/simple-notes-sync/issues) oder nutze die [Question Template](https://github.com/inventory69/simple-notes-sync/issues/new/choose).
|
||||
|
||||
**Frohe Weihnachten & Happy Coding! 🎄**
|
||||
**Happy Coding! 🚀**
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
- ✅ Android 8.0+ Smartphone/Tablet
|
||||
- ✅ Android 7.0+ Smartphone/Tablet
|
||||
- ✅ WLAN-Verbindung
|
||||
- ✅ Eigener Server mit Docker (optional - für Self-Hosting)
|
||||
|
||||
@@ -52,7 +52,7 @@ ip addr show | grep "inet " | grep -v 127.0.0.1
|
||||
### Schritt 2: App installieren
|
||||
|
||||
1. **APK herunterladen:** [Neueste Version](https://github.com/inventory69/simple-notes-sync/releases/latest)
|
||||
- Wähle: `simple-notes-sync-vX.X.X-standard-universal.apk`
|
||||
- Wähle: `simple-notes-sync-vX.X.X-standard.apk`
|
||||
|
||||
2. **Installation erlauben:**
|
||||
- Android: Einstellungen → Sicherheit → "Unbekannte Quellen" für deinen Browser aktivieren
|
||||
@@ -261,7 +261,7 @@ Für zuverlässigen Auto-Sync:
|
||||
## 🆘 Weitere Hilfe
|
||||
|
||||
- **GitHub Issues:** [Problem melden](https://github.com/inventory69/simple-notes-sync/issues)
|
||||
- **Vollständige Docs:** [DOCS.md](DOCS.md)
|
||||
- **Vollständige Docs:** [DOCS.md](docs/DOCS.md)
|
||||
- **Server Setup Details:** [server/README.md](server/README.md)
|
||||
|
||||
---
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- ✅ Android 8.0+ smartphone/tablet
|
||||
- ✅ Android 7.0+ smartphone/tablet
|
||||
- ✅ WiFi connection
|
||||
- ✅ Own server with Docker (optional - for self-hosting)
|
||||
|
||||
@@ -52,7 +52,7 @@ ip addr show | grep "inet " | grep -v 127.0.0.1
|
||||
### Step 2: Install App
|
||||
|
||||
1. **Download APK:** [Latest version](https://github.com/inventory69/simple-notes-sync/releases/latest)
|
||||
- Choose: `simple-notes-sync-vX.X.X-standard-universal.apk`
|
||||
- Choose: `simple-notes-sync-vX.X.X-standard.apk`
|
||||
|
||||
2. **Allow installation:**
|
||||
- Android: Settings → Security → Enable "Unknown sources" for your browser
|
||||
@@ -77,7 +77,7 @@ ip addr show | grep "inet " | grep -v 127.0.0.1
|
||||
|
||||
> **💡 Note:** Enter only the base URL (without `/notes`). The app automatically creates `/notes/` for JSON files and `/notes-md/` for Markdown export.
|
||||
|
||||
4. **Press "Test connection"****
|
||||
4. **Press "Test connection"**
|
||||
- ✅ Success? → Continue to step 4
|
||||
- ❌ Error? → See [Troubleshooting](#troubleshooting)
|
||||
|
||||
@@ -261,8 +261,8 @@ For reliable auto-sync:
|
||||
## 🆘 Further Help
|
||||
|
||||
- **GitHub Issues:** [Report problem](https://github.com/inventory69/simple-notes-sync/issues)
|
||||
- **Complete docs:** [DOCS.en.md](DOCS.en.md)
|
||||
- **Server setup details:** [server/README.en.md](server/README.en.md)
|
||||
- **Complete docs:** [DOCS.md](docs/DOCS.md)
|
||||
- **Server setup details:** [server/README.md](server/README.md)
|
||||
|
||||
---
|
||||
|
||||
|
||||
10
README.de.md
10
README.de.md
@@ -8,7 +8,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](https://www.android.com/)
|
||||
[](https://www.android.com/)
|
||||
[](https://kotlinlang.org/)
|
||||
[](https://developer.android.com/compose/)
|
||||
[](https://m3.material.io/)
|
||||
@@ -66,12 +66,14 @@ alt="Get it on F-Droid" align="center" height="80" /></a>
|
||||
- 📝 **Offline-first** – Funktioniert ohne Internet
|
||||
- 📊 **Flexible Ansichten** – Listen- und Grid-Layout
|
||||
- ✅ **Checklisten** – Tap-to-Check, Drag & Drop
|
||||
- 🌍 **Mehrsprachig** – Deutsch/Englisch mit Sprachauswahl
|
||||
- 🔄 **Konfigurierbare Sync-Trigger** – onSave, onResume, WiFi, periodisch (15/30/60 Min), Boot
|
||||
- 📌 **Widgets** – Home-Screen Quick-Note und Notizlisten-Widget
|
||||
- 🔀 **Smartes Sortieren** – Nach Titel, Änderungsdatum, Erstelldatum, Farbe
|
||||
- ⚡ **Paralleler Sync** – Lädt bis zu 5 Notizen gleichzeitig herunter
|
||||
- 🌍 **Mehrsprachig** – Deutsch/Englisch mit Sprachauswahl
|
||||
- 🔒 **Self-hosted** – Deine Daten bleiben bei dir (WebDAV)
|
||||
- 💾 **Lokales Backup** – Export/Import als JSON-Datei (optional verschlüsselt)
|
||||
- 🖥️ **Desktop-Integration** – Markdown-Export für Obsidian, VS Code, Typora
|
||||
- 🔋 **Akkuschonend** – ~0.2% mit Defaults, bis zu ~1.0% mit Periodic Sync
|
||||
- 🎨 **Material Design 3** – Dynamischer Dark/Light Mode & Farben
|
||||
|
||||
➡️ **Vollständige Feature-Liste:** [docs/FEATURES.de.md](docs/FEATURES.de.md)
|
||||
@@ -138,6 +140,6 @@ MIT License – siehe [LICENSE](LICENSE)
|
||||
<div align="center">
|
||||
<br /><br />
|
||||
|
||||
**v1.7.0** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
|
||||
**v1.8.1** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
|
||||
|
||||
</div>
|
||||
|
||||
10
README.md
10
README.md
@@ -8,7 +8,7 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||
[](https://www.android.com/)
|
||||
[](https://www.android.com/)
|
||||
[](https://kotlinlang.org/)
|
||||
[](https://developer.android.com/compose/)
|
||||
[](https://m3.material.io/)
|
||||
@@ -66,12 +66,14 @@ alt="Get it on F-Droid" align="center" height="80" /></a>
|
||||
- 📝 **Offline-first** - Works without internet
|
||||
- 📊 **Flexible views** - Switch between list and grid layout
|
||||
- ✅ **Checklists** - Tap-to-check, drag & drop
|
||||
- 🌍 **Multilingual** - English/German with language selector
|
||||
- 🔄 **Configurable sync triggers** - onSave, onResume, WiFi-connect, periodic (15/30/60 min), boot
|
||||
- 📌 **Widgets** - Home screen quick-note and note list widgets
|
||||
- 🔀 **Smart sorting** - By title, date modified, date created, color
|
||||
- ⚡ **Parallel sync** - Downloads up to 5 notes simultaneously
|
||||
- 🌍 **Multilingual** - English/German with language selector
|
||||
- 🔒 **Self-hosted** - Your data stays with you (WebDAV)
|
||||
- 💾 **Local backup** - Export/Import as JSON file (encryption available)
|
||||
- 🖥️ **Desktop integration** - Markdown export for Obsidian, VS Code, Typora
|
||||
- 🔋 **Battery-friendly** - ~0.2% with defaults, up to ~1.0% with periodic sync
|
||||
- 🎨 **Material Design 3** - Dynamic dark/light mode & colors based on system settings
|
||||
|
||||
➡️ **Complete feature list:** [FEATURES.md](docs/FEATURES.md)
|
||||
@@ -148,6 +150,6 @@ MIT License - see [LICENSE](LICENSE)
|
||||
<div align="center">
|
||||
<br /><br />
|
||||
|
||||
**v1.7.0** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
|
||||
**v1.8.1** · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3
|
||||
|
||||
</div>
|
||||
|
||||
@@ -276,8 +276,9 @@ Schritt-für-Schritt:
|
||||
|
||||
### Daten-Schutz
|
||||
- ✅ **Lokal gespeichert** - Kein Cloud-Upload ohne deine Aktion
|
||||
- ✅ **Keine Verschlüsselung** - Klartextformat für Lesbarkeit
|
||||
- ⚠️ **Sensible Daten?** - Backup-Datei selbst verschlüsseln (z.B. 7-Zip mit Passwort)
|
||||
- ✅ **Optionale Verschlüsselung** _(v1.7.0+)_ - Backup-Dateien mit Passwort schützen
|
||||
- ✅ **Menschenlesbar** - Klartextformat (JSON) wenn unverschlüsselt
|
||||
- ⚠️ **Sensible Daten?** - Verschlüsselung aktivieren oder externe Tools nutzen (z.B. 7-Zip)
|
||||
|
||||
### Empfehlungen
|
||||
- 🔐 Backup-Dateien in verschlüsseltem Container speichern
|
||||
@@ -321,4 +322,4 @@ Schritt-für-Schritt:
|
||||
- [FEATURES.md](FEATURES.md) - Vollständige Feature-Liste
|
||||
- [DESKTOP.md](DESKTOP.md) - Desktop-Integration mit Markdown
|
||||
|
||||
**Letzte Aktualisierung:** v1.2.1 (2026-01-05)
|
||||
**Letzte Aktualisierung:** v1.8.1 (2026-02-11)
|
||||
|
||||
@@ -276,8 +276,9 @@ Step-by-step:
|
||||
|
||||
### Data Protection
|
||||
- ✅ **Locally stored** - No cloud upload without your action
|
||||
- ✅ **No encryption** - Plain text format for readability
|
||||
- ⚠️ **Sensitive data?** - Encrypt backup file yourself (e.g., 7-Zip with password)
|
||||
- ✅ **Optional encryption** _(v1.7.0+)_ - Password-protect backup files
|
||||
- ✅ **Human-readable** - Plain JSON format when unencrypted
|
||||
- ⚠️ **Sensitive data?** - Enable encryption or use external tools (e.g., 7-Zip)
|
||||
|
||||
### Recommendations
|
||||
- 🔐 Store backup files in encrypted container
|
||||
@@ -317,8 +318,8 @@ Step-by-step:
|
||||
---
|
||||
|
||||
**📚 See also:**
|
||||
- [QUICKSTART.en.md](../QUICKSTART.en.md) - App installation and setup
|
||||
- [FEATURES.en.md](FEATURES.en.md) - Complete feature list
|
||||
- [DESKTOP.en.md](DESKTOP.en.md) - Desktop integration with Markdown
|
||||
- [QUICKSTART.md](../QUICKSTART.md) - App installation and setup
|
||||
- [FEATURES.md](FEATURES.md) - Complete feature list
|
||||
- [DESKTOP.md](DESKTOP.md) - Desktop integration with Markdown
|
||||
|
||||
**Last update:** v1.2.1 (2026-01-05)
|
||||
**Last update:** v1.8.1 (2026-02-11)
|
||||
|
||||
@@ -48,8 +48,6 @@ git push origin fix/my-bug
|
||||
|
||||
## 📱 Installation auf Gerät
|
||||
|
||||
## 📱 Installation auf Gerät
|
||||
|
||||
### Mit ADB (Empfohlen - sauberes Testing)
|
||||
```bash
|
||||
# Gerät verbinden
|
||||
|
||||
@@ -541,17 +541,7 @@ androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
|
||||
|
||||
## 🔮 Roadmap
|
||||
|
||||
### v1.1
|
||||
- [ ] Suche & Filter
|
||||
- [ ] Dark Mode
|
||||
- [ ] Tags/Kategorien
|
||||
- [ ] Markdown Preview
|
||||
|
||||
### v2.0
|
||||
- [ ] Desktop Client (Flutter)
|
||||
- [ ] End-to-End Verschlüsselung
|
||||
- [ ] Shared Notes (Collaboration)
|
||||
- [ ] Attachment Support
|
||||
Siehe [UPCOMING.md](UPCOMING.md) für die vollständige Roadmap und geplante Features.
|
||||
|
||||
---
|
||||
|
||||
@@ -564,4 +554,4 @@ androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung:** 25. Dezember 2025
|
||||
**Letzte Aktualisierung:** Februar 2026
|
||||
|
||||
14
docs/DOCS.md
14
docs/DOCS.md
@@ -541,17 +541,7 @@ androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
|
||||
|
||||
## 🔮 Roadmap
|
||||
|
||||
### v1.1
|
||||
- [ ] Search & Filter
|
||||
- [ ] Dark Mode
|
||||
- [ ] Tags/Categories
|
||||
- [ ] Markdown Preview
|
||||
|
||||
### v2.0
|
||||
- [ ] Desktop Client (Flutter)
|
||||
- [ ] End-to-End Encryption
|
||||
- [ ] Shared Notes (Collaboration)
|
||||
- [ ] Attachment Support
|
||||
See [UPCOMING.md](UPCOMING.md) for the full roadmap and planned features.
|
||||
|
||||
---
|
||||
|
||||
@@ -564,4 +554,4 @@ androidx.localbroadcastmanager:localbroadcastmanager:1.1.0
|
||||
|
||||
---
|
||||
|
||||
**Last updated:** December 25, 2025
|
||||
**Last updated:** February 2026
|
||||
|
||||
@@ -37,6 +37,50 @@
|
||||
|
||||
---
|
||||
|
||||
## 📊 Ansichten & Layout _(NEU in v1.7.0+)_
|
||||
|
||||
### Darstellungsmodi
|
||||
- ✅ **Listenansicht** - Klassisches Listen-Layout
|
||||
- ✅ **Rasteransicht** _(NEU in v1.7.0)_ - Pinterest-artiges Staggered Grid mit dynamischen Vorschauzeilen
|
||||
- ✅ **Layout-Umschalter** - Zwischen Listen- und Grid-Ansicht wechseln
|
||||
- ✅ **Adaptive Spalten** - 2-3 Spalten basierend auf Bildschirmgröße
|
||||
- ✅ **Grid als Standard** _(v1.8.0)_ - Neue Installationen starten im Grid-Modus
|
||||
|
||||
### Notiz-Sortierung _(NEU in v1.8.0)_
|
||||
- ✅ **Nach Änderungsdatum** - Neueste oder älteste zuerst
|
||||
- ✅ **Nach Erstelldatum** - Nach Erstellungszeitpunkt
|
||||
- ✅ **Nach Titel** - A-Z oder Z-A
|
||||
- ✅ **Nach Typ** - Textnotizen vs. Checklisten
|
||||
- ✅ **Persistente Einstellungen** - Sortier-Option bleibt nach App-Neustart
|
||||
- ✅ **Sortier-Dialog** - Richtungswahl im Hauptbildschirm
|
||||
|
||||
### Checklisten-Sortierung _(NEU in v1.8.0)_
|
||||
- ✅ **Manuell** - Eigene Drag & Drop Reihenfolge
|
||||
- ✅ **Alphabetisch** - A-Z Sortierung
|
||||
- ✅ **Offene zuerst** - Unerledigte Items oben
|
||||
- ✅ **Erledigte zuletzt** - Abgehakte Items unten
|
||||
- ✅ **Visueller Trenner** - Zwischen offenen/erledigten Gruppen mit Anzahl
|
||||
- ✅ **Auto-Sortierung** - Neu sortieren beim Abhaken/Öffnen
|
||||
- ✅ **Drag über Grenzen** - Items wechseln Status beim Überqueren des Trenners
|
||||
|
||||
---
|
||||
|
||||
## 📌 Homescreen-Widgets _(NEU in v1.8.0)_
|
||||
|
||||
### Widget-Features
|
||||
- ✅ **Textnotiz-Widget** - Beliebige Notiz auf dem Homescreen anzeigen
|
||||
- ✅ **Checklisten-Widget** - Interaktive Checkboxen mit Sync zum Server
|
||||
- ✅ **5 Größenklassen** - SMALL, NARROW_MED, NARROW_TALL, WIDE_MED, WIDE_TALL
|
||||
- ✅ **Material You Farben** - Dynamische Farben passend zum System-Theme
|
||||
- ✅ **Einstellbare Transparenz** - Hintergrund-Opazität (0-100%)
|
||||
- ✅ **Sperr-Umschalter** - Versehentliche Bearbeitungen verhindern
|
||||
- ✅ **Auto-Aktualisierung** - Updates nach Sync-Abschluss
|
||||
- ✅ **Konfigurations-Activity** - Notiz-Auswahl und Einstellungen
|
||||
- ✅ **Checklisten-Sortierung** _(v1.8.1)_ - Widgets übernehmen Sortier-Option
|
||||
- ✅ **Visuelle Trenner** _(v1.8.1)_ - Zwischen offenen/erledigten Items
|
||||
|
||||
---
|
||||
|
||||
## 🌍 Mehrsprachigkeit _(NEU in v1.5.0)_
|
||||
|
||||
### Unterstützte Sprachen
|
||||
@@ -129,9 +173,12 @@
|
||||
### Sync-Mechanismus
|
||||
- ✅ **Upload** - Lokale Änderungen zum Server
|
||||
- ✅ **Download** - Server-Änderungen in App
|
||||
- ✅ **Parallele Downloads** _(NEU in v1.8.0)_ - Bis zu 5 gleichzeitige Downloads
|
||||
- ✅ **Konflikt-Erkennung** - Bei gleichzeitigen Änderungen
|
||||
- ✅ **Konfliktfreies Merging** - Last-Write-Wins via Timestamp
|
||||
- ✅ **Sync-Status Tracking** - LOCAL_ONLY, PENDING, SYNCED, CONFLICT
|
||||
- ✅ **Server-Löschungs-Erkennung** _(NEU in v1.8.0)_ - Erkennt auf anderen Geräten gelöschte Notizen
|
||||
- ✅ **Sync-Status Tracking** - LOCAL_ONLY, PENDING, SYNCED, CONFLICT, DELETED_ON_SERVER
|
||||
- ✅ **Live Fortschritts-UI** _(NEU in v1.8.0)_ - Phasen-Anzeige mit Upload/Download-Zählern
|
||||
- ✅ **Fehlerbehandlung** - Retry bei Netzwerkproblemen
|
||||
- ✅ **Offline-First** - App funktioniert ohne Server
|
||||
|
||||
@@ -140,6 +187,9 @@
|
||||
- ✅ **HTTP/HTTPS** - HTTP nur lokal, HTTPS für extern
|
||||
- ✅ **Username/Password** - Basic Authentication
|
||||
- ✅ **Connection Test** - In Einstellungen testen
|
||||
- ✅ **WiFi-Only Sync** _(NEU in v1.7.0)_ - Option nur über WiFi zu synchronisieren
|
||||
- ✅ **VPN-Unterstützung** _(NEU in v1.7.0)_ - Sync funktioniert korrekt über VPN-Tunnels
|
||||
- ✅ **Self-Signed SSL** _(NEU in v1.7.0)_ - Unterstützung für selbstsignierte Zertifikate
|
||||
- ✅ **Server-URL Normalisierung** - Automatisches `/notes/` und `/notes-md/` _(NEU in v1.2.1)_
|
||||
- ✅ **Flexible URL-Eingabe** - Beide Varianten funktionieren: `http://server/` und `http://server/notes/`
|
||||
|
||||
@@ -196,11 +246,12 @@
|
||||
## 🛠️ Technische Details
|
||||
|
||||
### Plattform
|
||||
- ✅ **Android 8.0+** (API 26+)
|
||||
- ✅ **Android 7.0+** (API 24+)
|
||||
- ✅ **Target SDK 36** (Android 15)
|
||||
- ✅ **Kotlin** - Moderne Programmiersprache
|
||||
- ✅ **Jetpack Compose** - Deklaratives UI-Framework
|
||||
- ✅ **Material Design 3** - Neueste Design-Richtlinien
|
||||
- ✅ **ViewBinding** - Typ-sichere View-Referenzen
|
||||
- ✅ **Jetpack Glance** _(v1.8.0)_ - Widget-Framework
|
||||
|
||||
### Architektur
|
||||
- ✅ **MVVM-Light** - Einfache Architektur
|
||||
@@ -218,6 +269,7 @@
|
||||
- ✅ **Gson** - JSON Serialization
|
||||
- ✅ **WorkManager** - Background Tasks
|
||||
- ✅ **OkHttp** - HTTP Client (via Sardine)
|
||||
- ✅ **Glance** _(v1.8.0)_ - Widget-Framework
|
||||
|
||||
### Build-Varianten
|
||||
- ✅ **Standard** - Universal APK (100% FOSS, keine Google-Dependencies)
|
||||
@@ -247,22 +299,12 @@
|
||||
|
||||
## 🔮 Zukünftige Features
|
||||
|
||||
Geplant für kommende Versionen:
|
||||
Geplant für kommende Versionen – siehe [UPCOMING.md](UPCOMING.md) für die vollständige Roadmap.
|
||||
|
||||
### v1.4.0 - Checklisten
|
||||
- ⏳ **Checklisten-Notizen** - Neuer Notiz-Typ mit Checkboxen
|
||||
- ⏳ **Erledigte Items** - Durchstreichen/Abhaken
|
||||
- ⏳ **Drag & Drop** - Items neu anordnen
|
||||
|
||||
### v1.5.0 - Internationalisierung
|
||||
- ⏳ **Mehrsprachigkeit** - Deutsch + Englisch UI
|
||||
- ⏳ **Sprachauswahl** - In Einstellungen wählbar
|
||||
- ⏳ **Vollständige Übersetzung** - Alle Strings in beiden Sprachen
|
||||
|
||||
### v1.6.0 - Modern APIs
|
||||
- ⏳ **LocalBroadcastManager ersetzen** - SharedFlow stattdessen
|
||||
- ⏳ **PackageInfo Flags** - PackageInfoFlags.of() verwenden
|
||||
- ⏳ **Komplexitäts-Refactoring** - Lange Funktionen aufteilen
|
||||
### v2.0.0 - Legacy Cleanup
|
||||
- ⏳ **Veraltete Activities entfernen** - Durch Compose-Varianten ersetzen
|
||||
- ⏳ **LocalBroadcastManager → SharedFlow** - Moderne Event-Architektur
|
||||
- ⏳ **WebDavSyncService aufteilen** - SyncOrchestrator, NoteUploader, NoteDownloader
|
||||
|
||||
---
|
||||
|
||||
@@ -305,4 +347,4 @@ A: Ja! Lade die APK direkt von GitHub oder nutze F-Droid.
|
||||
|
||||
---
|
||||
|
||||
**Letzte Aktualisierung:** v1.3.2 (2026-01-10)
|
||||
**Letzte Aktualisierung:** v1.8.1 (2026-02-11)
|
||||
|
||||
@@ -37,6 +37,50 @@
|
||||
|
||||
---
|
||||
|
||||
## 📊 Views & Layout _(NEW in v1.7.0+)_
|
||||
|
||||
### Display Modes
|
||||
- ✅ **List View** - Classic list layout
|
||||
- ✅ **Grid View** _(NEW in v1.7.0)_ - Pinterest-style staggered grid with dynamic preview lines
|
||||
- ✅ **Layout toggle** - Switch between list and grid in settings
|
||||
- ✅ **Adaptive columns** - 2-3 columns based on screen size
|
||||
- ✅ **Grid as default** _(v1.8.0)_ - New installations default to grid view
|
||||
|
||||
### Note Sorting _(NEW in v1.8.0)_
|
||||
- ✅ **Sort by Updated** - Newest or oldest first
|
||||
- ✅ **Sort by Created** - By creation date
|
||||
- ✅ **Sort by Title** - A-Z or Z-A
|
||||
- ✅ **Sort by Type** - Text notes vs checklists
|
||||
- ✅ **Persistent preferences** - Sort option saved across app restarts
|
||||
- ✅ **Sort dialog** - Direction toggle in main screen
|
||||
|
||||
### Checklist Sorting _(NEW in v1.8.0)_
|
||||
- ✅ **Manual** - Custom drag & drop order
|
||||
- ✅ **Alphabetical** - A-Z sorting
|
||||
- ✅ **Unchecked First** - Unchecked items on top
|
||||
- ✅ **Checked Last** - Checked items at bottom
|
||||
- ✅ **Visual separator** - Between unchecked/checked groups with count
|
||||
- ✅ **Auto-sort on toggle** - Re-sorts when checking/unchecking items
|
||||
- ✅ **Drag across boundaries** - Items auto-toggle state when crossing separator
|
||||
|
||||
---
|
||||
|
||||
## 📌 Homescreen Widgets _(NEW in v1.8.0)_
|
||||
|
||||
### Widget Features
|
||||
- ✅ **Text note widget** - Display any note on homescreen
|
||||
- ✅ **Checklist widget** - Interactive checkboxes that sync to server
|
||||
- ✅ **5 size classes** - SMALL, NARROW_MED, NARROW_TALL, WIDE_MED, WIDE_TALL
|
||||
- ✅ **Material You colors** - Dynamic colors matching system theme
|
||||
- ✅ **Configurable opacity** - Background transparency (0-100%)
|
||||
- ✅ **Lock toggle** - Prevent accidental edits
|
||||
- ✅ **Auto-refresh** - Updates after sync completion
|
||||
- ✅ **Configuration activity** - Note selection and settings
|
||||
- ✅ **Checklist sorting** _(v1.8.1)_ - Widgets respect saved sort option
|
||||
- ✅ **Visual separators** _(v1.8.1)_ - Between unchecked/checked items
|
||||
|
||||
---
|
||||
|
||||
## 🌍 Multilingual Support _(NEW in v1.5.0)_
|
||||
|
||||
### Supported Languages
|
||||
@@ -129,9 +173,12 @@
|
||||
### Sync Mechanism
|
||||
- ✅ **Upload** - Local changes to server
|
||||
- ✅ **Download** - Server changes to app
|
||||
- ✅ **Parallel downloads** _(NEW in v1.8.0)_ - Up to 5 simultaneous downloads
|
||||
- ✅ **Conflict detection** - On simultaneous changes
|
||||
- ✅ **Conflict-free merging** - Last-Write-Wins via timestamp
|
||||
- ✅ **Sync status tracking** - LOCAL_ONLY, PENDING, SYNCED, CONFLICT
|
||||
- ✅ **Server deletion detection** _(NEW in v1.8.0)_ - Detects notes deleted on other devices
|
||||
- ✅ **Sync status tracking** - LOCAL_ONLY, PENDING, SYNCED, CONFLICT, DELETED_ON_SERVER
|
||||
- ✅ **Live progress UI** _(NEW in v1.8.0)_ - Phase indicators with upload/download counters
|
||||
- ✅ **Error handling** - Retry on network issues
|
||||
- ✅ **Offline-first** - App works without server
|
||||
|
||||
@@ -140,6 +187,9 @@
|
||||
- ✅ **HTTP/HTTPS** - HTTP only local, HTTPS for external
|
||||
- ✅ **Username/password** - Basic authentication
|
||||
- ✅ **Connection test** - Test in settings
|
||||
- ✅ **WiFi-only sync** _(NEW in v1.7.0)_ - Option to sync only on WiFi
|
||||
- ✅ **VPN support** _(NEW in v1.7.0)_ - Sync works correctly through VPN tunnels
|
||||
- ✅ **Self-signed SSL** _(NEW in v1.7.0)_ - Support for self-signed certificates
|
||||
- ✅ **Server URL normalization** - Automatic `/notes/` and `/notes-md/` _(NEW in v1.2.1)_
|
||||
- ✅ **Flexible URL input** - Both variants work: `http://server/` and `http://server/notes/`
|
||||
|
||||
@@ -196,11 +246,12 @@
|
||||
## 🛠️ Technical Details
|
||||
|
||||
### Platform
|
||||
- ✅ **Android 8.0+** (API 26+)
|
||||
- ✅ **Android 7.0+** (API 24+)
|
||||
- ✅ **Target SDK 36** (Android 15)
|
||||
- ✅ **Kotlin** - Modern programming language
|
||||
- ✅ **Jetpack Compose** - Declarative UI framework
|
||||
- ✅ **Material Design 3** - Latest design guidelines
|
||||
- ✅ **ViewBinding** - Type-safe view references
|
||||
- ✅ **Jetpack Glance** _(v1.8.0)_ - Widget framework
|
||||
|
||||
### Architecture
|
||||
- ✅ **MVVM-Light** - Simple architecture
|
||||
@@ -218,6 +269,7 @@
|
||||
- ✅ **Gson** - JSON serialization
|
||||
- ✅ **WorkManager** - Background tasks
|
||||
- ✅ **OkHttp** - HTTP client (via Sardine)
|
||||
- ✅ **Glance** _(v1.8.0)_ - Widget framework
|
||||
|
||||
### Build Variants
|
||||
- ✅ **Standard** - Universal APK (100% FOSS, no Google dependencies)
|
||||
@@ -247,22 +299,12 @@
|
||||
|
||||
## 🔮 Future Features
|
||||
|
||||
Planned for upcoming versions:
|
||||
Planned for upcoming versions – see [UPCOMING.md](UPCOMING.md) for the full roadmap.
|
||||
|
||||
### v1.4.0 - Checklists
|
||||
- ⏳ **Checklist notes** - New note type with checkboxes
|
||||
- ⏳ **Completed items** - Strike-through/check off
|
||||
- ⏳ **Drag & drop** - Reorder items
|
||||
|
||||
### v1.5.0 - Internationalization
|
||||
- ⏳ **Multi-language** - German + English UI
|
||||
- ⏳ **Language selection** - Selectable in settings
|
||||
- ⏳ **Full translation** - All strings in both languages
|
||||
|
||||
### v1.6.0 - Modern APIs
|
||||
- ⏳ **Replace LocalBroadcastManager** - Use SharedFlow instead
|
||||
- ⏳ **PackageInfo Flags** - Use PackageInfoFlags.of()
|
||||
- ⏳ **Complexity refactoring** - Split long functions
|
||||
### v2.0.0 - Legacy Cleanup
|
||||
- ⏳ **Remove deprecated Activities** - Replace with Compose equivalents
|
||||
- ⏳ **LocalBroadcastManager → SharedFlow** - Modern event architecture
|
||||
- ⏳ **WebDavSyncService split** - SyncOrchestrator, NoteUploader, NoteDownloader
|
||||
|
||||
---
|
||||
|
||||
@@ -305,4 +347,4 @@ A: Yes! Download the APK directly from GitHub or use F-Droid.
|
||||
|
||||
---
|
||||
|
||||
**Last update:** v1.3.2 (2026-01-10)
|
||||
**Last update:** v1.8.1 (2026-02-11)
|
||||
|
||||
146
docs/SELF_SIGNED_SSL.de.md
Normal file
146
docs/SELF_SIGNED_SSL.de.md
Normal file
@@ -0,0 +1,146 @@
|
||||
# Selbstsignierte SSL-Zertifikate
|
||||
|
||||
**Seit:** v1.7.0
|
||||
**Status:** ✅ Unterstützt
|
||||
|
||||
**🌍 Sprachen:** **Deutsch** · [English](SELF_SIGNED_SSL.md)
|
||||
|
||||
---
|
||||
|
||||
## Übersicht
|
||||
|
||||
Simple Notes Sync unterstützt die Verbindung zu WebDAV-Servern mit selbstsignierten SSL-Zertifikaten, z.B.:
|
||||
- ownCloud/Nextcloud mit selbstsignierten Zertifikaten
|
||||
- Synology NAS mit Standard-Zertifikaten
|
||||
- Raspberry Pi oder Home-Server
|
||||
- Interne Firmen-Server mit privaten CAs
|
||||
|
||||
## Anleitung
|
||||
|
||||
### Schritt 1: CA-Zertifikat des Servers exportieren
|
||||
|
||||
**Auf deinem Server:**
|
||||
|
||||
1. Finde deine Zertifikatsdatei (meist `.crt`, `.pem` oder `.der` Format)
|
||||
2. Falls du das Zertifikat selbst erstellt hast, hast du es bereits
|
||||
3. Für Synology NAS: Systemsteuerung → Sicherheit → Zertifikat → Exportieren
|
||||
4. Für ownCloud/Nextcloud: Meist unter `/etc/ssl/certs/` auf dem Server
|
||||
|
||||
### Schritt 2: Zertifikat auf Android installieren
|
||||
|
||||
**Auf deinem Android-Gerät:**
|
||||
|
||||
1. **Übertrage** die `.crt` oder `.pem` Datei auf dein Handy (per E-Mail, USB, etc.)
|
||||
|
||||
2. **Öffne Einstellungen** → Sicherheit → Weitere Sicherheitseinstellungen (oder Verschlüsselung & Anmeldedaten)
|
||||
|
||||
3. **Von Speicher installieren** / "Zertifikat installieren"
|
||||
- Wähle "CA-Zertifikat"
|
||||
- **Warnung:** Android zeigt eine Sicherheitswarnung. Das ist normal.
|
||||
- Tippe auf "Trotzdem installieren"
|
||||
|
||||
4. **Navigiere** zu deiner Zertifikatsdatei und wähle sie aus
|
||||
|
||||
5. **Benenne** es erkennbar (z.B. "Mein ownCloud CA")
|
||||
|
||||
6. ✅ **Fertig!** Das Zertifikat wird nun systemweit vertraut
|
||||
|
||||
### Schritt 3: Simple Notes Sync verbinden
|
||||
|
||||
1. Öffne Simple Notes Sync
|
||||
2. Gehe zu **Einstellungen** → **Server-Einstellungen**
|
||||
3. Gib deine **`https://` Server-URL** wie gewohnt ein
|
||||
4. Die App vertraut nun deinem selbstsignierten Zertifikat ✅
|
||||
|
||||
---
|
||||
|
||||
## Sicherheitshinweise
|
||||
|
||||
### ⚠️ Wichtig
|
||||
|
||||
- Die Installation eines CA-Zertifikats gewährt Vertrauen für **alle** von dieser CA signierten Zertifikate
|
||||
- Installiere nur Zertifikate aus vertrauenswürdigen Quellen
|
||||
- Android warnt dich vor der Installation – lies die Warnung sorgfältig
|
||||
|
||||
### 🔒 Warum das sicher ist
|
||||
|
||||
- Du installierst das Zertifikat **manuell** (bewusste Entscheidung)
|
||||
- Die App nutzt Androids nativen Trust Store (keine eigene Validierung)
|
||||
- Du kannst das Zertifikat jederzeit in den Android-Einstellungen entfernen
|
||||
- F-Droid und Google Play konform (kein "allen vertrauen" Hack)
|
||||
|
||||
---
|
||||
|
||||
## Fehlerbehebung
|
||||
|
||||
### Zertifikat nicht vertraut
|
||||
|
||||
**Problem:** App zeigt weiterhin SSL-Fehler nach Zertifikatsinstallation
|
||||
|
||||
**Lösungen:**
|
||||
1. **Installation prüfen:** Einstellungen → Sicherheit → Vertrauenswürdige Anmeldedaten → Tab "Nutzer"
|
||||
2. **Zertifikatstyp prüfen:** Muss ein CA-Zertifikat sein, kein Server-Zertifikat
|
||||
3. **App neustarten:** Simple Notes Sync schließen und wieder öffnen
|
||||
4. **URL prüfen:** Muss `https://` verwenden (nicht `http://`)
|
||||
|
||||
### Selbstsigniert vs. CA-signiert
|
||||
|
||||
| Typ | Installation nötig | Sicherheit |
|
||||
|-----|-------------------|------------|
|
||||
| **Selbstsigniert** | ✅ Ja | Manuelles Vertrauen |
|
||||
| **Let's Encrypt** | ❌ Nein | Automatisch |
|
||||
| **Private CA** | ✅ Ja (CA-Root) | Automatisch für alle CA-signierten Zertifikate |
|
||||
|
||||
---
|
||||
|
||||
## Alternative: Let's Encrypt (Empfohlen)
|
||||
|
||||
Wenn dein Server öffentlich erreichbar ist, erwäge **Let's Encrypt** für kostenlose, automatisch erneuerte SSL-Zertifikate:
|
||||
|
||||
- Keine manuelle Zertifikatsinstallation nötig
|
||||
- Von allen Geräten automatisch vertraut
|
||||
- Einfacher für Endbenutzer
|
||||
|
||||
---
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Implementierung
|
||||
|
||||
- Nutzt Androids **Network Security Config**
|
||||
- Vertraut sowohl System- als auch Benutzer-CA-Zertifikaten
|
||||
- Kein eigener TrustManager oder HostnameVerifier
|
||||
- F-Droid und Play Store konform
|
||||
|
||||
### Konfiguration
|
||||
|
||||
Datei: `android/app/src/main/res/xml/network_security_config.xml`
|
||||
|
||||
```xml
|
||||
<base-config>
|
||||
<trust-anchors>
|
||||
<certificates src="system" />
|
||||
<certificates src="user" /> <!-- ← Aktiviert Self-Signed Support -->
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## FAQ
|
||||
|
||||
**F: Muss ich das Zertifikat nach App-Updates neu installieren?**
|
||||
A: Nein, Zertifikate werden systemweit gespeichert, nicht pro App.
|
||||
|
||||
**F: Kann ich dasselbe Zertifikat für mehrere Apps verwenden?**
|
||||
A: Ja, einmal installiert funktioniert es für alle Apps die Benutzerzertifikaten vertrauen.
|
||||
|
||||
**F: Wie entferne ich ein Zertifikat?**
|
||||
A: Einstellungen → Sicherheit → Vertrauenswürdige Anmeldedaten → Tab "Nutzer" → Zertifikat antippen → Entfernen
|
||||
|
||||
**F: Funktioniert das auf Android 14+?**
|
||||
A: Ja, getestet auf Android 7 bis 15 (API 24-35).
|
||||
|
||||
---
|
||||
|
||||
**Hilfe nötig?** Erstelle ein Issue auf [GitHub](https://github.com/inventory69/simple-notes-sync/issues)
|
||||
@@ -60,28 +60,91 @@
|
||||
|
||||
---
|
||||
|
||||
## v1.7.0 - Staggered Grid Layout
|
||||
## v1.7.0 - Grid View, WiFi-Only & VPN ✅
|
||||
|
||||
> **Status:** Geplant 📝
|
||||
> **Status:** Released 🎉 (Januar 2026)
|
||||
|
||||
### 🎨 Adaptives Layout
|
||||
### 🎨 Grid Layout
|
||||
|
||||
- **Staggered Grid** - Pinterest-artiges Layout mit `LazyVerticalStaggeredGrid`
|
||||
- **Intelligente Größen** - Kleine Notizen (kurzer Text, wenige Checklist-Items) kompakt dargestellt
|
||||
- **Layout-Umschalter** - Zwischen Listen- und Grid-Ansicht in Einstellungen wechseln
|
||||
- **Adaptive Spalten** - 2-3 Spalten basierend auf Bildschirmgröße
|
||||
- **120 FPS optimiert** - Lazy Loading für flüssiges Scrollen bei vielen Notizen
|
||||
- ✅ **Pinterest-artiges Staggered Grid** - Lückenfreies Layout mit dynamischen Vorschauzeilen
|
||||
- ✅ **Layout-Umschalter** - Zwischen Listen- und Grid-Ansicht wechseln
|
||||
- ✅ **Adaptive Spalten** - 2-3 Spalten basierend auf Bildschirmgröße
|
||||
|
||||
### 🔧 Server-Ordner Prüfung
|
||||
### 📡 Sync-Verbesserungen
|
||||
|
||||
- **WebDAV Folder Check** - Prüft ob der Ordner auf dem Server existiert und beschreibbar ist
|
||||
- **Bessere Fehlermeldungen** - Hilfreiche Hinweise bei Server-Problemen
|
||||
- **Connection-Test Verbesserung** - Prüft Read/Write Permissions
|
||||
- ✅ **WiFi-Only Sync Toggle** - Nur über WiFi synchronisieren
|
||||
- ✅ **VPN-Unterstützung** - Sync funktioniert korrekt über VPN-Tunnels
|
||||
- ✅ **Self-Signed SSL** - Dokumentation und Unterstützung für selbstsignierte Zertifikate
|
||||
- ✅ **Server-Wechsel-Erkennung** - Alle Notizen auf PENDING zurückgesetzt bei URL-Änderung
|
||||
|
||||
### 🔧 Technische Verbesserungen
|
||||
---
|
||||
|
||||
- **Code-Refactoring** - LargeClass Komponenten aufteilen (WebDavSyncService, SettingsActivity)
|
||||
- **Verbesserte Progress-Dialoge** - Material Design 3 konform
|
||||
## v1.7.1 - Android 9 Fix & VPN ✅
|
||||
|
||||
> **Status:** Released 🎉 (Februar 2026)
|
||||
|
||||
- ✅ **Android 9 Crash Fix** - `getForegroundInfo()` für WorkManager auf API 28 implementiert
|
||||
- ✅ **VPN-Kompatibilität** - WiFi Socket-Binding erkennt Wireguard VPN-Interfaces
|
||||
- ✅ **SafeSardineWrapper** - Saubere HTTP-Verbindungs-Bereinigung
|
||||
|
||||
---
|
||||
|
||||
## v1.7.2 - Timestamp & Löschungs-Fixes ✅
|
||||
|
||||
> **Status:** Released 🎉 (Februar 2026)
|
||||
|
||||
- ✅ **Server-mtime als Wahrheitsquelle** - Behebt Timestamp-Probleme mit externen Editoren
|
||||
- ✅ **Deletion Tracker Mutex** - Thread-sichere Batch-Löschungen
|
||||
- ✅ **ISO8601 Timezone-Parsing** - Multi-Format-Unterstützung
|
||||
- ✅ **E-Tag Batch-Caching** - Performance-Verbesserung
|
||||
- ✅ **Memory Leak Prävention** - SafeSardineWrapper mit Closeable
|
||||
|
||||
---
|
||||
|
||||
## v1.8.0 - Widgets, Sortierung & Erweiterter Sync ✅
|
||||
|
||||
> **Status:** Released 🎉 (Februar 2026)
|
||||
|
||||
### 📌 Homescreen-Widgets
|
||||
|
||||
- ✅ **Volles Jetpack Glance Framework** - 5 responsive Größenklassen
|
||||
- ✅ **Interaktive Checklisten** - Checkboxen die zum Server synchronisieren
|
||||
- ✅ **Material You Farben** - Dynamische Farben mit einstellbarer Opazität
|
||||
- ✅ **Sperr-Umschalter** - Versehentliche Bearbeitungen verhindern
|
||||
- ✅ **Konfigurations-Activity** - Notiz-Auswahl und Einstellungen
|
||||
|
||||
### 📊 Sortierung
|
||||
|
||||
- ✅ **Notiz-Sortierung** - Nach Titel, Änderungsdatum, Erstelldatum, Typ
|
||||
- ✅ **Checklisten-Sortierung** - Manuell, alphabetisch, offene zuerst, erledigte zuletzt
|
||||
- ✅ **Visuelle Trenner** - Zwischen offenen/erledigten Gruppen
|
||||
- ✅ **Drag über Grenzen** - Auto-Toggle beim Überqueren des Trenners
|
||||
|
||||
### 🔄 Sync-Verbesserungen
|
||||
|
||||
- ✅ **Parallele Downloads** - Bis zu 5 gleichzeitig (konfigurierbar)
|
||||
- ✅ **Server-Löschungs-Erkennung** - Erkennt auf anderen Clients gelöschte Notizen
|
||||
- ✅ **Live Sync-Fortschritt** - Phasen-Anzeige mit Zählern
|
||||
- ✅ **Sync-Status Legende** - Hilfe-Dialog für alle Sync-Icons
|
||||
|
||||
### ✨ UX
|
||||
|
||||
- ✅ **Post-Update Changelog** - Zeigt lokalisierten Changelog nach Update
|
||||
- ✅ **Grid als Standard** - Neue Installationen starten im Grid-Modus
|
||||
- ✅ **Toast → Banner Migration** - Einheitliches Benachrichtigungssystem
|
||||
|
||||
---
|
||||
|
||||
## v1.8.1 - Bugfix & Polish ✅
|
||||
|
||||
> **Status:** Released 🎉 (Februar 2026)
|
||||
|
||||
- ✅ **Checklisten-Sortierung Persistenz** - Sortier-Option korrekt wiederhergestellt
|
||||
- ✅ **Widget Scroll Fix** - Scroll funktioniert auf Standard 3×2 Widget-Größe
|
||||
- ✅ **Widget Checklisten-Sortierung** - Widgets übernehmen gespeicherte Sortier-Option
|
||||
- ✅ **Drag Cross-Boundary** - Drag & Drop über Checked/Unchecked-Trenner
|
||||
- ✅ **Sync Rate-Limiting** - Globaler 30s Cooldown zwischen Auto-Syncs
|
||||
- ✅ **Detekt: 0 Issues** - Alle 12 Findings behoben
|
||||
|
||||
---
|
||||
|
||||
@@ -110,7 +173,6 @@
|
||||
|
||||
### 🎨 UI Features
|
||||
|
||||
- **Widget** - Schnellzugriff vom Homescreen
|
||||
- **Kategorien/Tags** - Notizen organisieren
|
||||
- **Suche** - Volltextsuche in Notizen
|
||||
|
||||
|
||||
@@ -60,28 +60,91 @@
|
||||
|
||||
---
|
||||
|
||||
## v1.7.0 - Staggered Grid Layout
|
||||
## v1.7.0 - Grid View, WiFi-Only & VPN ✅
|
||||
|
||||
> **Status:** Planned 📝
|
||||
> **Status:** Released 🎉 (January 2026)
|
||||
|
||||
### 🎨 Adaptive Layout
|
||||
### 🎨 Grid Layout
|
||||
|
||||
- **Staggered Grid** - Pinterest-style layout using `LazyVerticalStaggeredGrid`
|
||||
- **Smart sizing** - Small notes (short text, few checklist items) displayed compactly
|
||||
- **Layout toggle** - Switch between List and Grid view in settings
|
||||
- **Adaptive columns** - 2-3 columns based on screen size
|
||||
- **120 FPS optimized** - Lazy loading for smooth scrolling with many notes
|
||||
- ✅ **Pinterest-style staggered grid** - Gapless layout with dynamic preview lines
|
||||
- ✅ **Layout toggle** - Switch between list and grid in settings
|
||||
- ✅ **Adaptive columns** - 2-3 columns based on screen size
|
||||
|
||||
### 🔧 Server Folder Check
|
||||
### 📡 Sync Improvements
|
||||
|
||||
- **WebDAV folder check** - Checks if folder exists and is writable on server
|
||||
- **Better error messages** - Helpful hints for server problems
|
||||
- **Connection test improvement** - Checks read/write permissions
|
||||
- ✅ **WiFi-only sync toggle** - Sync only when connected to WiFi
|
||||
- ✅ **VPN support** - Sync works correctly through VPN tunnels
|
||||
- ✅ **Self-signed SSL** - Documentation and support for self-signed certificates
|
||||
- ✅ **Server change detection** - All notes reset to PENDING when server URL changes
|
||||
|
||||
### 🔧 Technical Improvements
|
||||
---
|
||||
|
||||
- **Code refactoring** - Split LargeClass components (WebDavSyncService, SettingsActivity)
|
||||
- **Improved progress dialogs** - Material Design 3 compliant
|
||||
## v1.7.1 - Android 9 Fix & VPN ✅
|
||||
|
||||
> **Status:** Released 🎉 (February 2026)
|
||||
|
||||
- ✅ **Android 9 crash fix** - Implemented `getForegroundInfo()` for WorkManager on API 28
|
||||
- ✅ **VPN compatibility** - WiFi socket binding detects Wireguard VPN interfaces
|
||||
- ✅ **SafeSardineWrapper** - Proper HTTP connection cleanup
|
||||
|
||||
---
|
||||
|
||||
## v1.7.2 - Timestamp & Deletion Fixes ✅
|
||||
|
||||
> **Status:** Released 🎉 (February 2026)
|
||||
|
||||
- ✅ **Server mtime as source of truth** - Fixes external editor timestamp issues
|
||||
- ✅ **Deletion tracker mutex** - Thread-safe batch deletes
|
||||
- ✅ **ISO8601 timezone parsing** - Multi-format support
|
||||
- ✅ **E-Tag batch caching** - Performance improvement
|
||||
- ✅ **Memory leak prevention** - SafeSardineWrapper with Closeable
|
||||
|
||||
---
|
||||
|
||||
## v1.8.0 - Widgets, Sorting & Advanced Sync ✅
|
||||
|
||||
> **Status:** Released 🎉 (February 2026)
|
||||
|
||||
### 📌 Homescreen Widgets
|
||||
|
||||
- ✅ **Full Jetpack Glance framework** - 5 responsive size classes
|
||||
- ✅ **Interactive checklists** - Checkboxes that sync to server
|
||||
- ✅ **Material You colors** - Dynamic colors with configurable opacity
|
||||
- ✅ **Lock toggle** - Prevent accidental edits
|
||||
- ✅ **Configuration activity** - Note selection and settings
|
||||
|
||||
### 📊 Sorting
|
||||
|
||||
- ✅ **Note sorting** - By title, date modified, date created, type
|
||||
- ✅ **Checklist sorting** - Manual, alphabetical, unchecked first, checked last
|
||||
- ✅ **Visual separators** - Between unchecked/checked groups
|
||||
- ✅ **Drag across boundaries** - Auto-toggle state on cross-boundary drag
|
||||
|
||||
### 🔄 Sync Improvements
|
||||
|
||||
- ✅ **Parallel downloads** - Up to 5 simultaneous (configurable)
|
||||
- ✅ **Server deletion detection** - Detects notes deleted on other clients
|
||||
- ✅ **Live sync progress** - Phase indicators with counters
|
||||
- ✅ **Sync status legend** - Help dialog explaining all sync icons
|
||||
|
||||
### ✨ UX
|
||||
|
||||
- ✅ **Post-update changelog** - Shows localized changelog on first launch after update
|
||||
- ✅ **Grid as default** - New installations default to grid view
|
||||
- ✅ **Toast → Banner migration** - Unified notification system
|
||||
|
||||
---
|
||||
|
||||
## v1.8.1 - Bugfix & Polish ✅
|
||||
|
||||
> **Status:** Released 🎉 (February 2026)
|
||||
|
||||
- ✅ **Checklist sort persistence** - Sort option correctly restored when reopening
|
||||
- ✅ **Widget scroll fix** - Scroll works on standard 3×2 widget size
|
||||
- ✅ **Widget checklist sorting** - Widgets apply saved sort option
|
||||
- ✅ **Drag cross-boundary** - Drag & drop across checked/unchecked separator
|
||||
- ✅ **Sync rate-limiting** - Global 30s cooldown between auto-syncs
|
||||
- ✅ **Detekt: 0 issues** - All 12 findings resolved
|
||||
|
||||
---
|
||||
|
||||
@@ -110,7 +173,6 @@
|
||||
|
||||
### 🎨 UI Features
|
||||
|
||||
- **Widget** - Quick access from homescreen
|
||||
- **Categories/Tags** - Organize notes
|
||||
- **Search** - Full-text search in notes
|
||||
|
||||
|
||||
@@ -5,34 +5,50 @@ Diese Verzeichnisstruktur enthält alle Metadaten für die F-Droid-Veröffentlic
|
||||
## Struktur
|
||||
|
||||
```
|
||||
fastlane/metadata/android/de-DE/
|
||||
├── title.txt # App-Name (max 50 Zeichen)
|
||||
├── short_description.txt # Kurzbeschreibung (max 80 Zeichen)
|
||||
├── full_description.txt # Vollständige Beschreibung (max 4000 Zeichen)
|
||||
fastlane/metadata/android/
|
||||
├── de-DE/ # Deutsche Lokalisierung (primär)
|
||||
│ ├── title.txt # App-Name (max 50 Zeichen)
|
||||
│ ├── short_description.txt # Kurzbeschreibung (max 80 Zeichen)
|
||||
│ ├── full_description.txt # Vollständige Beschreibung (max 4000 Zeichen)
|
||||
│ ├── changelogs/
|
||||
│ │ ├── 1.txt ... 21.txt # Changelogs pro versionCode (max 500 Zeichen!)
|
||||
│ └── images/
|
||||
│ └── phoneScreenshots/ # Screenshots (PNG/JPG, 320-3840px breit)
|
||||
│ ├── 1.png ... 5.png
|
||||
└── en-US/ # Englische Lokalisierung
|
||||
├── title.txt
|
||||
├── short_description.txt
|
||||
├── full_description.txt
|
||||
├── changelogs/
|
||||
│ └── 1.txt # Changelog für Version 1
|
||||
│ ├── 1.txt ... 21.txt
|
||||
└── images/
|
||||
└── phoneScreenshots/ # Screenshots (PNG/JPG, 320-3840px breit)
|
||||
├── 1.png # Hauptansicht (Notizliste)
|
||||
├── 2.png # Notiz-Editor
|
||||
├── 3.png # Settings
|
||||
└── 4.png # Empty State
|
||||
└── phoneScreenshots/
|
||||
```
|
||||
|
||||
## Wichtige Limits
|
||||
|
||||
| Feld | Max. Länge | Hinweis |
|
||||
|------|-----------|---------|
|
||||
| `title.txt` | 50 Zeichen | App-Name |
|
||||
| `short_description.txt` | 80 Zeichen | Kurzbeschreibung |
|
||||
| `full_description.txt` | 4000 Zeichen | Vollständige Beschreibung |
|
||||
| `changelogs/*.txt` | **500 Bytes** | Pro versionCode, **Bytes nicht Zeichen!** |
|
||||
|
||||
> **Achtung:** Changelogs werden in **Bytes** gemessen! UTF-8 Umlaute (ä, ö, ü) zählen als 2 Bytes.
|
||||
|
||||
## Screenshots erstellen
|
||||
|
||||
Verwende einen Android Emulator oder physisches Gerät mit:
|
||||
Verwende ein physisches Gerät oder Emulator mit:
|
||||
- Material You Theme aktiviert
|
||||
- Deutsche Sprache
|
||||
- Deutsche/Englische Sprache je nach Locale
|
||||
- Screenshots in hoher Auflösung (1080x2400 empfohlen)
|
||||
|
||||
### Screenshot-Reihenfolge:
|
||||
1. **Notizliste** - Mit mehreren Beispiel-Notizen, Sync-Status sichtbar
|
||||
2. **Editor** - Zeige eine bearbeitete Notiz mit Titel und Inhalt
|
||||
3. **Settings** - Server-Konfiguration mit erfolgreichem Server-Status
|
||||
4. **Empty State** - Schöne leere Ansicht mit Material 3 Card
|
||||
|
||||
## F-Droid Build-Konfiguration
|
||||
|
||||
Die App verwendet den `fdroid` Build-Flavor ohne proprietäre Dependencies.
|
||||
Siehe `build.gradle.kts` für Details.
|
||||
Siehe `android/app/build.gradle.kts` für Details.
|
||||
|
||||
## Aktuelle Version
|
||||
|
||||
- **versionName:** 1.8.1
|
||||
- **versionCode:** 21
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Unter der Haube haben wir ordentlich aufgeraumt:
|
||||
Unter der Haube haben wir ordentlich aufgeräumt:
|
||||
- Verbesserte Sync-Performance durch optimierten Code
|
||||
- Stabilere Fehlerbehandlung bei Verbindungsproblemen
|
||||
- Speichereffizientere Datenverarbeitung
|
||||
- Datenschutz-Hinweis fur Datei-Logging hinzugefugt
|
||||
- Datenschutz-Hinweis für Datei-Logging hinzugefügt
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
v1.2.2 - Rückwärtskompatibilität für v1.2.0 User
|
||||
|
||||
Kritische Fehlerbehebung
|
||||
• Server-Wiederherstellung findet jetzt ALLE Notizen (Root + /notes/)
|
||||
• User die von v1.2.0 upgraden verlieren keine Daten mehr
|
||||
• Alte Notizen aus Root-Ordner werden beim Restore gefunden
|
||||
• Server-Restore findet jetzt ALLE Notizen (Root + /notes/)
|
||||
• Upgrade von v1.2.0 ohne Datenverlust
|
||||
• Alte Notizen aus Root-Ordner werden gefunden
|
||||
|
||||
Technische Details
|
||||
• Dual-Mode Download nur bei Server-Restore aktiv
|
||||
• Normale Syncs bleiben schnell (scannen nur /notes/)
|
||||
• Normale Syncs bleiben schnell (nur /notes/)
|
||||
• Automatische Deduplication verhindert Duplikate
|
||||
• Sanfte Migration: Neue Uploads gehen in /notes/, alte bleiben lesbar
|
||||
• Sanfte Migration: Uploads → /notes/, alte bleiben lesbar
|
||||
|
||||
@@ -1,29 +1,31 @@
|
||||
Simple Notes Sync ist eine minimalistische Notizen-App mit WebDAV-Synchronisation und modernen Features.
|
||||
|
||||
Hauptfunktionen:
|
||||
• Text-Notizen und Checklisten (Tap-to-Check, Drag & Drop)
|
||||
• NEU: Raster-Ansicht (Grid View) für Notizen
|
||||
• Text-Notizen und Checklisten (Tap-to-Check, Drag & Drop, Sortierung)
|
||||
• Raster- und Listen-Ansicht mit Notizfarben
|
||||
• Homescreen-Widgets (Quick-Note, Checkliste mit interaktiven Checkboxen)
|
||||
• Multi-Device Sync (Handy, Tablet, Desktop)
|
||||
• WebDAV-Synchronisation mit eigenem Server (Nextcloud, ownCloud, etc.)
|
||||
• Markdown-Export und Import für Desktop-Editoren (Obsidian, VS Code)
|
||||
• NEU: WiFi-only Sync, VPN-Unterstützung, Verschlüsselung für lokale Backups
|
||||
• WiFi-only Sync, VPN-Unterstützung, parallele Downloads
|
||||
• Konfigurierbare Sync-Trigger: onSave, onResume, WiFi, periodisch, Boot
|
||||
• Komplett offline nutzbar
|
||||
• Keine Werbung, keine Tracker
|
||||
• Komplett offline nutzbar – keine Werbung, keine Tracker
|
||||
|
||||
Datenschutz & Sicherheit:
|
||||
• Alle Daten bleiben bei dir – keine Cloud, keine Tracking-Bibliotheken
|
||||
• Unterstützung für selbstsignierte SSL-Zertifikate (Self-signed SSL)
|
||||
• SHA-256 Hash des Signaturzertifikats in App und Releases sichtbar
|
||||
• Unterstützung für selbstsignierte SSL-Zertifikate
|
||||
• Verschlüsselte lokale Backups
|
||||
|
||||
Synchronisation:
|
||||
• Automatisch oder manuell, optimierte Performance, periodischer Sync optional
|
||||
• Intelligente Konfliktlösung, Lösch-Tracking, Batch-Aktionen
|
||||
• Parallele Downloads (bis zu 5 gleichzeitig)
|
||||
• Live Sync-Fortschritt mit Phasen-Anzeige
|
||||
• Intelligente Konfliktlösung, Server-Löschungs-Erkennung
|
||||
• Post-Update Changelog-Dialog
|
||||
|
||||
UI & Design:
|
||||
• Moderne Jetpack Compose Oberfläche
|
||||
• Material Design 3, Dynamic Colors, Dark Mode
|
||||
• Animationen und Live Sync-Status
|
||||
• Notiz- und Checklisten-Sortierung (Titel, Datum, Farbe, alphabetisch)
|
||||
|
||||
Mehrsprachig:
|
||||
• Deutsch und Englisch, automatische Erkennung, App-Sprachauswahl
|
||||
|
||||
8
fastlane/metadata/android/en-US/changelogs/1.txt
Normal file
8
fastlane/metadata/android/en-US/changelogs/1.txt
Normal file
@@ -0,0 +1,8 @@
|
||||
• Material Design 3 with Dynamic Colors
|
||||
• Swipe-to-Delete with confirmation dialog
|
||||
• Server Backup & Restore feature
|
||||
• Improved Empty State view
|
||||
• German localization
|
||||
• Splash Screen Support (Android 12+)
|
||||
• Performance improvements
|
||||
• Bug fixes
|
||||
5
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
5
fastlane/metadata/android/en-US/changelogs/2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
• Configurable sync interval (15/30/60 minutes)
|
||||
• Transparent battery usage display (measured: 0.4%/day at 30min)
|
||||
• Doze Mode optimizations for more reliable background syncs
|
||||
• About section with app information and GitHub links
|
||||
• Various bugfixes and performance improvements
|
||||
@@ -1,29 +1,31 @@
|
||||
Simple Notes Sync is a minimalist note-taking app with WebDAV sync and modern features.
|
||||
|
||||
Key Features:
|
||||
• Text notes and checklists (tap-to-check, drag & drop)
|
||||
• NEW: Grid view for notes
|
||||
• Text notes and checklists (tap-to-check, drag & drop, sorting)
|
||||
• Grid and list view with note color support
|
||||
• Homescreen widgets (quick-note, checklist with interactive checkboxes)
|
||||
• Multi-device sync (phone, tablet, desktop)
|
||||
• WebDAV sync with your own server (Nextcloud, ownCloud, etc.)
|
||||
• Markdown export/import for desktop editors (Obsidian, VS Code)
|
||||
• NEW: WiFi-only sync, VPN support, encryption for local backups
|
||||
• WiFi-only sync, VPN support, parallel downloads
|
||||
• Configurable sync triggers: onSave, onResume, WiFi, periodic, boot
|
||||
• Fully usable offline
|
||||
• No ads, no trackers
|
||||
• Fully usable offline – no ads, no trackers
|
||||
|
||||
Privacy & Security:
|
||||
• Your data stays with you – no cloud, no tracking libraries
|
||||
• Support for self-signed SSL certificates
|
||||
• SHA-256 hash of signing certificate shown in app and releases
|
||||
• Encrypted local backups
|
||||
|
||||
Synchronization:
|
||||
• Automatic or manual, optimized performance, optional periodic sync
|
||||
• Smart conflict resolution, deletion tracking, batch actions
|
||||
• Parallel downloads (up to 5 simultaneous)
|
||||
• Live sync progress with phase indicators
|
||||
• Smart conflict resolution, server deletion detection
|
||||
• Post-update changelog dialog
|
||||
|
||||
UI & Design:
|
||||
• Modern Jetpack Compose interface
|
||||
• Material Design 3, dynamic colors, dark mode
|
||||
• Animations and live sync status
|
||||
• Note & checklist sorting (title, date, color, alphabetical)
|
||||
|
||||
Multilingual:
|
||||
• English and German, automatic detection, in-app language selector
|
||||
|
||||
Reference in New Issue
Block a user