✨ New Features:
- Local backup/restore system with 3 modes (Merge/Replace/Overwrite)
- Markdown export for desktop access via WebDAV mount
- Dual-format architecture (JSON master + Markdown mirror)
- Settings UI extended with backup & desktop integration sections
📝 Changes:
- Server restore now asks for mode selection (user safety)
- WebDAV mount instructions for Windows/Mac/Linux in README
- Complete CHANGELOG.md with all version history
🔧 Technical:
- BackupManager.kt for complete backup/restore logic
- Note.toMarkdown/fromMarkdown with YAML frontmatter
- ISO8601 timestamps for desktop compatibility
- Last-Write-Wins conflict resolution
📚 Documentation:
- CHANGELOG.md (Keep a Changelog format)
- README updates (removed Joplin/Obsidian, added WebDAV-mount)
- F-Droid changelogs (DE+EN, under 500 chars)
- SYNC_ARCHITECTURE.md in project-docs
- MARKDOWN_DESKTOP_REALITY_CHECK.md strategic plan
- WEB_EDITOR_PLAN_v1.3.0.md for future web editor feature
- Replace default Android icon with custom notepad design
- Use PNG-based adaptive icons (mipmap) instead of vector drawables for better launcher compatibility
- Add ic_launcher_background.png (light blue #90CAF9) for all densities
- Add ic_launcher_foreground.png (transparent notepad design) for all densities
- Update legacy WebP icons (mdpi/hdpi/xhdpi/xxhdpi/xxxhdpi) with new design
- Update Fastlane metadata icons (de-DE + en-US) with 512x512 PNG
- Improve F-Droid NonFreeNet AntiFeature documentation:
* Clarify HTTP restricted to local networks only (RFC 1918 private IPs, localhost, .local domains)
* Document upcoming v1.1.2 security restrictions
* Emphasize HTTPS support and recommendation
Icon Design:
- White notepad paper with gray border
- Red header line (like real notepads)
- Three blue text bars (representing notes)
- Orange pencil with white tip in bottom-right corner
- Light blue background for adaptive icon
Technical Changes:
- Delete drawable/ic_launcher_background.xml (vector drawables)
- Delete drawable/ic_launcher_foreground.xml (vector drawables)
- Update mipmap-anydpi-v26/ic_launcher.xml: @drawable -> @mipmap
- Update mipmap-anydpi-v26/ic_launcher_round.xml: @drawable -> @mipmap
- Remove monochrome tag (not needed for this design)
Addresses IzzyOnDroid Issue #2 feedback
1. Add en-US screenshots as fallback for all languages
- Copy phoneScreenshots from de-DE to en-US
- Ensures non-German users see screenshots
2. Disable Google DEPENDENCY_INFO_BLOCK
- Add dependenciesInfo { includeInApk = false }
- Removes encrypted Google blob from APK
- Improves privacy and F-Droid compatibility
Fixes#2
- Move fastlane metadata to repository root (was in android/fastlane)
- Add distributionSha256Sum to gradle-wrapper.properties for security
- Update Gradle Wrapper JAR to match version 8.13
- Document NonFreeNet anti-feature (HTTP support for local WebDAV servers)
Addresses F-Droid RFP issue #3458 bot feedback
- Add 3 app screenshots (phoneScreenshots)
- Update README.md with screenshot gallery
- Update README.en.md with screenshot gallery
- Update version reference to v1.1.1 in both READMEs
- Fixed compileSdk syntax error in build.gradle.kts (was using incorrect 'compileSdk { version = release(36) }' instead of 'compileSdk = 36')
- Moved splits configuration out of defaultConfig to correct location
- Added comprehensive ProGuard rules to handle OkHttp's optional dependencies (BouncyCastle, Conscrypt, OpenJSSE)
- Added ProGuard rules for Sardine WebDAV, Coroutines, and Gson
- Build now completes successfully both locally and in CI/CD
Critical fixes for SSID detection on Android 12+:
- Add CHANGE_WIFI_STATE permission (NetworkCallback registration)
- Add ACCESS_BACKGROUND_LOCATION permission (SSID access)
- Add FOREGROUND_SERVICE_DATA_SYNC permission
SettingsActivity improvements:
- Add checkBackgroundLocationPermission() method
- Show dialog explaining need for 'Always allow' location
- Request permission with proper callbacks
- Better user feedback for permission grants/denials
NetworkMonitor improvements:
- Add initial WiFi check in startMonitoring()
- Add NET_CAPABILITY_INTERNET to NetworkRequest
- Better error handling for '<unknown ssid>' cases
- Log warning about missing BACKGROUND_LOCATION permission
This should fix the root cause: SSID was showing as '<unknown ssid>'
because app lacked background location permission on Android 16.
User must select 'Always allow' when prompted for location permission.
- Create SimpleNotesApplication class for app-level lifecycle
- Move NetworkMonitor from Activity to Application context
- Add comprehensive logging to NetworkMonitor (all callbacks)
- Add logging to SyncWorker for debugging
- Remove NetworkMonitor from MainActivity (now in Application)
- Add Battery Optimization dialog in SettingsActivity
- Improve Notifications (showSyncInProgress, showSyncSuccess, showSyncError)
This should fix background sync issues - NetworkMonitor now runs
with Application context instead of Activity context, which should
survive when app is in background.
Debug with: adb logcat | grep -E 'NetworkMonitor|SyncWorker|SimpleNotesApp'
- Add ACCESS_FINE_LOCATION permission (required for SSID on Android 10+)
- Request permission at runtime when detecting SSID
- Handle permission result and retry detection
- Add testConnection() method that only tests connectivity
- Connection test no longer syncs notes automatically
- Only 'Sync Now' button triggers actual synchronization
- Add toolbar setup in NoteEditorActivity
- Add toolbar setup in SettingsActivity
- Add toolbar to activity_settings.xml layout
- Fix back button and menu display issues
Features:
- Docker WebDAV server with docker-compose
- Server configuration with .env
- Project structure for Android app
- Complete documentation references
- MIT License
Server:
- bytemark/webdav Docker image
- Basic authentication
- Port 8080 exposed
- Volume mounts for data and logs
- Quick start README
Android:
- Project structure defined
- README with setup instructions
- Links to complete implementation guide
Status: Server running and tested ✓
Next: Android app implementation in Android Studio