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
6.9 KiB
6.9 KiB
Backup & Restore 💾
🌍 Languages: Deutsch · English
Secure your notes locally - independent from the server
📋 Overview
The backup system works completely offline and independent from the WebDAV server. Perfect for:
- 📥 Regular backups
- 📤 Migration to new server
- 🔄 Recovery after data loss
- 💾 Archiving old notes
📥 Create Backup
Step-by-Step
- Open settings (⚙️ icon top right)
- Find "Backup & Restore" section
- Tap "📥 Create backup"
- Choose location:
- 📁 Downloads
- 💳 SD card
- ☁️ Cloud folder (Nextcloud, Google Drive, etc.)
- 📧 Email as attachment
- Done! Backup file is saved
File Format
Filename: simplenotes_backup_YYYY-MM-DD_HHmmss.json
Example: simplenotes_backup_2026-01-05_143022.json
Content:
{
"version": "1.2.1",
"exported_at": "2026-01-05T14:30:22Z",
"notes_count": 42,
"notes": [
{
"id": "abc-123-def",
"title": "Shopping List",
"content": "Milk\nBread\nCheese",
"createdAt": 1704467422000,
"updatedAt": 1704467422000
}
]
}
Format details:
- ✅ Human-readable (formatted JSON)
- ✅ All data included (title, content, IDs, timestamps)
- ✅ Version info for compatibility
- ✅ Note count for validation
📤 Restore Backup
3 Restore Modes
1. Merge ⭐ Recommended
What happens:
- ✅ New notes from backup are added
- ✅ Existing notes remain unchanged
- ✅ No data loss
When to use:
- Import backup from another device
- Recover old notes
- Restore accidentally deleted notes
Example:
App: [Note A, Note B, Note C]
Backup: [Note A, Note D, Note E]
Result: [Note A, Note B, Note C, Note D, Note E]
2. Replace
What happens:
- ❌ ALL existing notes are deleted
- ✅ Backup notes are imported
- ⚠️ Irreversible (except through auto-backup)
When to use:
- Server migration (complete restart)
- Return to old backup state
- App reinstallation
Example:
App: [Note A, Note B, Note C]
Backup: [Note X, Note Y]
Result: [Note X, Note Y]
⚠️ Warning: Automatic safety backup is created!
3. Overwrite Duplicates
What happens:
- ✅ New notes from backup are added
- 🔄 On ID conflicts, backup wins
- ✅ Other notes remain unchanged
When to use:
- Backup is newer than app data
- Import desktop changes
- Conflict resolution
Example:
App: [Note A (v1), Note B, Note C]
Backup: [Note A (v2), Note D]
Result: [Note A (v2), Note B, Note C, Note D]
Restore Process
- Settings → "📤 Restore from file"
- Select backup file (
.json) - Choose mode:
- 🔵 Merge (Default)
- 🟡 Overwrite duplicates
- 🔴 Replace (Caution!)
- Confirm - Automatic safety backup is created
- Wait - Import runs
- Done! - Success message with number of imported notes
🛡️ Automatic Safety Backup
Before every restore:
- ✅ Automatic backup is created
- 📁 Saved in:
Android/data/dev.dettmer.simplenotes/files/ - 🏷️ Filename:
auto_backup_before_restore_YYYY-MM-DD_HHmmss.json - ⏱️ Timestamp: Right before restore
Why?
- Protection against accidental "Replace"
- Ability to undo
- Double security
Access via file manager:
/Android/data/dev.dettmer.simplenotes/files/auto_backup_before_restore_*.json
💡 Best Practices
Backup Strategy
Regular Backups
Daily: ❌ Too often (server sync is enough)
Weekly: ✅ Recommended for important notes
Monthly: ✅ Archiving
Before updates: ✅ Safety
3-2-1 Rule
- 3 copies - Original + 2 backups
- 2 media - e.g., SD card + cloud
- 1 offsite - e.g., cloud storage
Backup Locations
Local (fast):
- 📱 Internal storage / Downloads
- 💳 SD card
- 🖥️ PC (via USB)
Cloud (secure):
- ☁️ Nextcloud (self-hosted)
- 📧 Email to yourself
- 🗄️ Syncthing (sync between devices)
⚠️ Avoid:
- ❌ Google Drive / Dropbox (privacy)
- ❌ Only one copy
- ❌ Only on server (if server fails)
🔧 Advanced Usage
Edit Backup File
The .json file can be edited with any text editor:
- Open with: VS Code, Notepad++, nano
- Add/remove notes
- Change title/content
- Adjust IDs (for migration)
- Save and import to app
⚠️ Important:
- Keep valid JSON format
- IDs must be unique (UUIDs)
- Timestamps in milliseconds (Unix Epoch)
Bulk Import
Merge multiple backups:
- Import backup 1 (Mode: Merge)
- Import backup 2 (Mode: Merge)
- Import backup 3 (Mode: Merge)
- Result: All notes combined
Server Migration
Step-by-step:
- Create backup on old server
- Set up new server (see QUICKSTART.en.md)
- Change server URL in app settings
- Restore backup (Mode: Replace)
- Test sync - All notes on new server
❌ Troubleshooting
"Invalid backup file"
Causes:
- Corrupt JSON file
- Wrong file extension (must be
.json) - Incompatible app version
Solution:
- Check JSON file with validator (e.g., jsonlint.com)
- Verify file extension
- Create backup with current app version
"No permission to save"
Causes:
- Storage permission missing
- Write-protected folder
Solution:
- Android: Settings → Apps → Simple Notes → Permissions
- Activate "Storage"
- Choose different location
"Import failed"
Causes:
- Not enough storage space
- Corrupt backup file
- App crash during import
Solution:
- Free up storage space
- Create new backup file
- Restart app and try again
🔒 Security & Privacy
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)
Recommendations
- 🔐 Store backup files in encrypted container
- 🗑️ Regularly delete old backups
- 📧 Don't send via unencrypted email
- ☁️ Use self-hosted cloud (Nextcloud)
📊 Technical Details
Format Specification
JSON structure:
{
"version": "string", // App version at export
"exported_at": "ISO8601", // Export timestamp
"notes_count": number, // Number of notes
"notes": [
{
"id": "UUID", // Unique ID
"title": "string", // Note title
"content": "string", // Note content
"createdAt": number, // Unix timestamp (ms)
"updatedAt": number // Unix timestamp (ms)
}
]
}
Compatibility
- ✅ v1.2.0+ - Fully compatible
- ⚠️ v1.1.x - Basic functions (without auto-backup)
- ❌ v1.0.x - Not supported
📚 See also:
- QUICKSTART.en.md - App installation and setup
- FEATURES.en.md - Complete feature list
- DESKTOP.en.md - Desktop integration with Markdown
Last update: v1.2.1 (2026-01-05)