feat(v1.5.0): icons, batch delete toast, cursor fix, docs refactor

FEATURES
========

Batch Delete Toast Aggregation:
- New deleteMultipleNotesFromServer() method
- Shows single aggregated toast instead of multiple ("3 notes deleted from server")
- Partial success handling ("3 of 5 notes deleted from server")
- Added string resources: snackbar_notes_deleted_from_server, snackbar_notes_deleted_from_server_partial

Text Editor Cursor Fix:
- Fixed cursor jumping to end after every keystroke when editing notes
- Added initialCursorSet flag to only set cursor position on first load
- Cursor now stays at user's position while editing
- Changed LaunchedEffect(content) to LaunchedEffect(Unit) to prevent repeated resets

DOCUMENTATION REFACTOR
======================

Breaking Change: English is now the default language
- README.md: Now English (was German)
- QUICKSTART.md: Now English (was German)
- CHANGELOG.md: Now English (was mixed EN/DE)
- docs/*.md: All English (was German)
- German versions: Use .de.md suffix (README.de.md, QUICKSTART.de.md, etc.)

Updated for v1.5.0:
- CHANGELOG.md: Fully translated to English with v1.5.0 release notes
- CHANGELOG.de.md: Created German version
- FEATURES.md: Added i18n section, Selection Mode, Jetpack Compose updates
- FEATURES.de.md: Updated with v1.5.0 features
- UPCOMING.md: v1.5.0 marked as released, v1.6.0/v1.7.0 roadmap
- UPCOMING.de.md: Updated German version

All language headers updated:
- English: [Deutsch](*.de.md) · **English**
- German: **Deutsch** · [English](*.md)

F-DROID METADATA
================

Changelogs (F-Droid):
- fastlane/metadata/android/en-US/changelogs/13.txt: Created
- fastlane/metadata/android/de-DE/changelogs/13.txt: Created

Descriptions:
- full_description.txt (EN/DE): Updated with v1.5.0 changes
  - Selection Mode instead of Swipe-to-Delete
  - i18n support highlighted
  - Jetpack Compose UI mentioned
  - Silent-Sync Mode added

OTHER FIXES
===========

Code Quality:
- Unused imports removed from multiple files
- maxLineLength fixes
- Detekt config optimized (increased thresholds for v1.5.0)
- AboutScreen: Uses app foreground icon directly
- EmptyState: Shows app icon instead of emoji
- themes.xml: Splash screen uses app foreground icon
This commit is contained in:
inventory69
2026-01-16 16:31:30 +01:00
parent 3af99f31b8
commit 67b226a5c3
43 changed files with 3813 additions and 2740 deletions

View File

@@ -1,269 +1,269 @@
# Quick Start Guide - Simple Notes Sync 📝
> Schritt-für-Schritt Anleitung zur Installation und Einrichtung
> Step-by-step installation and setup guide
**🌍 Sprachen:** **Deutsch** · [English](QUICKSTART.en.md)
**🌍 Languages:** [Deutsch](QUICKSTART.de.md) · **English**
---
## Voraussetzungen
## Prerequisites
- ✅ Android 8.0+ Smartphone/Tablet
- ✅ WLAN-Verbindung
-Eigener Server mit Docker (optional - für Self-Hosting)
- ✅ Android 8.0+ smartphone/tablet
- ✅ WiFi connection
-Own server with Docker (optional - for self-hosting)
---
## Option 1: Mit eigenem Server (Self-Hosted) 🏠
## Option 1: With own server (Self-Hosted) 🏠
### Schritt 1: WebDAV Server einrichten
### Step 1: Setup WebDAV Server
Auf deinem Server (z.B. Raspberry Pi, NAS, VPS):
On your server (e.g. Raspberry Pi, NAS, VPS):
```bash
# Repository klonen
# Clone repository
git clone https://github.com/inventory69/simple-notes-sync.git
cd simple-notes-sync/server
# Umgebungsvariablen konfigurieren
# Configure environment variables
cp .env.example .env
nano .env
```
**In `.env` anpassen:**
**Adjust in `.env`:**
```env
WEBDAV_PASSWORD=dein-sicheres-passwort-hier
WEBDAV_PASSWORD=your-secure-password-here
```
**Server starten:**
**Start server:**
```bash
docker compose up -d
```
**IP-Adresse finden:**
**Find IP address:**
```bash
ip addr show | grep "inet " | grep -v 127.0.0.1
```
➡️ **Notiere dir:** `http://DEINE-SERVER-IP:8080/`
➡️ **Note down:** `http://YOUR-SERVER-IP:8080/`
---
### Schritt 2: App installieren
### Step 2: Install App
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`
1. **Download APK:** [Latest version](https://github.com/inventory69/simple-notes-sync/releases/latest)
- Choose: `simple-notes-sync-vX.X.X-standard-universal.apk`
2. **Installation erlauben:**
- Android: Einstellungen → Sicherheit → "Unbekannte Quellen" für deinen Browser aktivieren
2. **Allow installation:**
- Android: Settings → SecurityEnable "Unknown sources" for your browser
3. **APK öffnen und installieren**
3. **Open and install APK**
---
### Schritt 3: App konfigurieren
### Step 3: Configure App
1. **App öffnen**
1. **Open app**
2. **Einstellungen öffnen** (⚙️ Icon oben rechts)
2. **Open settings** (⚙️ icon top right)
3. **Server-Einstellungen konfigurieren:**
3. **Configure server settings:**
| Feld | Wert |
| Field | Value |
|------|------|
| **WebDAV Server URL** | `http://DEINE-SERVER-IP:8080/` |
| **Benutzername** | `noteuser` |
| **Passwort** | (dein Passwort aus `.env`) |
| **WebDAV Server URL** | `http://YOUR-SERVER-IP:8080/` |
| **Username** | `noteuser` |
| **Password** | (your password from `.env`) |
> **💡 Hinweis:** Gib nur die Base-URL ein (ohne `/notes`). Die App erstellt automatisch `/notes/` für JSON-Dateien und `/notes-md/` für Markdown-Export.
> **💡 Note:** Enter only the base URL (without `/notes`). The app automatically creates `/notes/` for JSON files and `/notes-md/` for Markdown export.
4. **"Verbindung testen"** drücken
-Erfolg? → Weiter zu Schritt 4
-Fehler? → Siehe [Troubleshooting](#troubleshooting)
4. **Press "Test connection"****
-Success? → Continue to step 4
-Error? → See [Troubleshooting](#troubleshooting)
5. **Auto-Sync aktivieren** (Toggle Switch)
5. **Enable auto-sync** (toggle switch)
6. **Sync-Intervall wählen:**
- **15 Min** - Maximale Aktualität (~0.8% Akku/Tag)
- **30 Min** - Empfohlen (~0.4% Akku/Tag) ⭐
- **60 Min** - Maximale Akkulaufzeit (~0.2% Akku/Tag)
6. **Choose sync interval:**
- **15 min** - Maximum currency (~0.8% battery/day)
- **30 min** - Recommended (~0.4% battery/day) ⭐
- **60 min** - Maximum battery life (~0.2% battery/day)
---
### Schritt 4: Erste Notiz erstellen
### Step 4: Create First Note
1. Zurück zur Hauptansicht (← Pfeil)
1. Back to main view (← arrow)
2. **"Notiz hinzufügen"** (+ Icon)
2. **"Add note"** (+ icon)
3. Titel und Text eingeben
3. Enter title and text
4. **Speichern** (💾 Icon)
4. **Save** (💾 icon)
5. **Warten auf Auto-Sync** (oder manuell: ⚙️ → "Jetzt synchronisieren")
5. **Wait for auto-sync** (or manually: ⚙️ → "Sync now")
🎉 **Fertig!** Deine Notizen werden automatisch synchronisiert!
🎉 **Done!** Your notes will be automatically synchronized!
---
## Option 2: Nur lokale Notizen (kein Server) 📱
## Option 2: Local notes only (no server) 📱
Du kannst Simple Notes auch **ohne Server** nutzen:
You can also use Simple Notes **without a server**:
1. **App installieren** (siehe Schritt 2 oben)
1. **Install app** (see step 2 above)
2. **Ohne Server-Konfiguration verwenden:**
- Notizen werden nur lokal gespeichert
- Kein Auto-Sync
- Perfekt für reine Offline-Nutzung
2. **Use without server configuration:**
- Notes are only stored locally
- No auto-sync
- Perfect for offline-only use
---
## 🔋 Akku-Optimierung deaktivieren
## 🔋 Disable Battery Optimization
Für zuverlässigen Auto-Sync:
For reliable auto-sync:
1. **Einstellungen****Apps****Simple Notes Sync**
1. **Settings****Apps****Simple Notes Sync**
2. **Akku****Akkuverbrauch**
2. **Battery****Battery usage**
3. Wähle: **"Nicht optimieren"** oder **"Unbeschränkt"**
3. Select: **"Don't optimize"** or **"Unrestricted"**
💡 **Hinweis:** Android Doze Mode kann trotzdem Sync im Standby verzögern (~60 Min). Das ist normal und betrifft alle Apps.
💡 **Note:** Android Doze Mode may still delay sync in standby (~60 min). This is normal and affects all apps.
---
## 📊 Sync-Intervalle im Detail
## 📊 Sync Intervals in Detail
| Intervall | Syncs/Tag | Akku/Tag | Akku/Sync | Anwendungsfall |
| Interval | Syncs/day | Battery/day | Battery/sync | Use case |
|-----------|-----------|----------|-----------|----------------|
| **15 Min** | ~96 | ~0.8% (~23 mAh) | ~0.008% | ⚡ Maximal aktuell (mehrere Geräte) |
| **30 Min** | ~48 | ~0.4% (~12 mAh) | ~0.008% | ✓ **Empfohlen** - ausgewogen |
| **60 Min** | ~24 | ~0.2% (~6 mAh) | ~0.008% | 🔋 Maximale Akkulaufzeit |
| **15 min** | ~96 | ~0.8% (~23 mAh) | ~0.008% | ⚡ Maximum currency (multiple devices) |
| **30 min** | ~48 | ~0.4% (~12 mAh) | ~0.008% | ✓ **Recommended** - balanced |
| **60 min** | ~24 | ~0.2% (~6 mAh) | ~0.008% | 🔋 Maximum battery life |
---
## 🐛 Troubleshooting
### Verbindungstest schlägt fehl
### Connection test fails
**Problem:** "Verbindung fehlgeschlagen" beim Test
**Problem:** "Connection failed" during test
**Lösungen:**
**Solutions:**
1. **Server läuft?**
1. **Server running?**
```bash
docker compose ps
# Sollte "Up" zeigen
# Should show "Up"
```
2. **Gleiches Netzwerk?**
- Smartphone und Server müssen im selben Netzwerk sein
2. **Same network?**
- Smartphone and server must be on same network
3. **IP-Adresse korrekt?**
3. **IP address correct?**
```bash
ip addr show | grep "inet "
# Prüfe ob IP in URL stimmt
# Check if IP in URL matches
```
4. **Firewall?**
```bash
# Port 8080 öffnen (falls Firewall aktiv)
# Open port 8080 (if firewall active)
sudo ufw allow 8080/tcp
```
5. **Server-Logs prüfen:**
5. **Check server logs:**
```bash
docker compose logs -f
```
---
### Auto-Sync funktioniert nicht
### Auto-sync not working
**Problem:** Notizen werden nicht automatisch synchronisiert
**Problem:** Notes are not automatically synchronized
**Lösungen:**
**Solutions:**
1. **Auto-Sync aktiviert?**
- ⚙️ Einstellungen → Toggle "Auto-Sync" muss **AN** sein
1. **Auto-sync enabled?**
- ⚙️ Settings → Toggle "Auto-sync" must be **ON**
2. **Akku-Optimierung deaktiviert?**
- Siehe [Akku-Optimierung](#-akku-optimierung-deaktivieren)
2. **Battery optimization disabled?**
- See [Disable Battery Optimization](#-disable-battery-optimization)
3. **Mit WiFi verbunden?**
- Auto-Sync triggert bei jeder WiFi-Verbindung
- Prüfe, ob du mit einem WLAN verbunden bist
3. **Connected to WiFi?**
- Auto-sync triggers on any WiFi connection
- Check if you're connected to a WiFi network
4. **Manuell testen:**
- ⚙️ Einstellungen → "Jetzt synchronisieren"
- Funktioniert das? → Auto-Sync sollte auch funktionieren
4. **Test manually:**
- ⚙️ Settings → "Sync now"
- Works? → Auto-sync should work too
---
### Notizen werden nicht angezeigt
### Notes not showing up
**Problem:** Nach Installation sind keine Notizen da, obwohl welche auf dem Server liegen
**Problem:** After installation, no notes visible even though they exist on server
**Lösung:**
**Solution:**
1. **Einmalig manuell synchronisieren:**
- ⚙️ Einstellungen → "Jetzt synchronisieren"
1. **Manually sync once:**
- ⚙️ Settings → "Sync now"
2. **Server-Daten prüfen:**
2. **Check server data:**
```bash
docker compose exec webdav ls -la /data/
# Sollte .json Dateien zeigen
# Should show .json files
```
---
### Fehler beim Sync
### Sync errors
**Problem:** Fehlermeldung beim Synchronisieren
**Problem:** Error message during sync
**Lösungen:**
**Solutions:**
1. **"401 Unauthorized"** → Passwort falsch
- Prüfe Passwort in App-Einstellungen
- Vergleiche mit `.env` auf Server
1. **"401 Unauthorized"** → Wrong password
- Check password in app settings
- Compare with `.env` on server
2. **"404 Not Found"** → URL falsch
- Sollte enden mit `/` (z.B. `http://192.168.1.100:8080/`)
2. **"404 Not Found"** → Wrong URL
- Should end with `/` (e.g. `http://192.168.1.100:8080/`)
3. **"Network error"** → Keine Verbindung
- Siehe [Verbindungstest schlägt fehl](#verbindungstest-schlägt-fehl)
3. **"Network error"** → No connection
- See [Connection test fails](#connection-test-fails)
---
## 📱 Updates
### Automatisch mit Obtainium (empfohlen)
### Automatic with Obtainium (recommended)
1. **[Obtainium installieren](https://github.com/ImranR98/Obtanium/releases/latest)**
1. **[Install Obtainium](https://github.com/ImranR98/Obtanium/releases/latest)**
2. **App hinzufügen:**
2. **Add app:**
- URL: `https://github.com/inventory69/simple-notes-sync`
- Auto-Update aktivieren
- Enable auto-update
3. **Fertig!** Obtainium benachrichtigt dich bei neuen Versionen
3. **Done!** Obtainium notifies you of new versions
### Manuell
### Manual
1. Neue APK von [Releases](https://github.com/inventory69/simple-notes-sync/releases/latest) herunterladen
1. Download new APK from [Releases](https://github.com/inventory69/simple-notes-sync/releases/latest)
2. Installieren (überschreibt alte Version)
2. Install (overwrites old version)
3. Alle Daten bleiben erhalten!
3. All data remains intact!
---
## 🆘 Weitere Hilfe
## 🆘 Further Help
- **GitHub Issues:** [Problem melden](https://github.com/inventory69/simple-notes-sync/issues)
- **Vollständige Docs:** [DOCS.md](DOCS.md)
- **Server Setup Details:** [server/README.md](server/README.md)
- **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)
---
**Version:** 1.1.0 · **Erstellt:** Dezember 2025
**Version:** 1.1.0 · **Created:** December 2025