inventory69 539987f2ed feat(v1.8.0): IMPL_019 Homescreen Widgets Implementation
Complete Jetpack Glance Widget Framework
- Implement NoteWidget with 5 responsive size classes
- Support TEXT and CHECKLIST note types
- Material You dynamic colors integration
- Interactive checklist checkboxes in large layouts
- Read-only mode for locked widgets

Widget Configuration System
- NoteWidgetConfigActivity for placement and reconfiguration (Android 12+)
- NoteWidgetConfigScreen with note selection and settings
- Lock widget toggle to prevent accidental edits
- Background opacity slider with 0-100% range
- Auto-save on back navigation plus Save FAB

Widget State Management
- NoteWidgetState keys for per-instance persistence via DataStore
- NoteWidgetActionKeys for type-safe parameter passing
- Five top-level ActionCallback classes
  * ToggleChecklistItemAction (updates checklist and marks for sync)
  * ToggleLockAction (toggle read-only mode)
  * ShowOptionsAction (show permanent options bar)
  * RefreshAction (reload from storage)
  * OpenConfigAction (launch widget config activity)

Responsive Layout System
- SMALL (110x80dp): Title only
- NARROW_MEDIUM (110x110dp): Preview or compact checklist
- NARROW_TALL (110x250dp): Full content display
- WIDE_MEDIUM (250x110dp): Preview layout
- WIDE_TALL (250x250dp): Interactive checklist

Interactive Widget Features
- Tap content to open editor (unlock) or show options (lock)
- Checklist checkboxes with immediate state sync
- Options bar with Lock/Unlock, Refresh, Settings, Open in App buttons
- Per-widget background transparency control

Connection Leak Fixes (Part of IMPL_019)
- Override put/delete/createDirectory in SafeSardineWrapper with response.use{}
- Proper resource cleanup in exportAllNotesToMarkdown and syncMarkdownFiles
- Use modern OkHttp APIs (toMediaTypeOrNull, toRequestBody)

UI Improvements (Part of IMPL_019)
- Checkbox toggle includes KEY_LAST_UPDATED to force Glance recomposition
- Note selection in config is visual-only (separate from save)
- Config uses moveTaskToBack() plus FLAG_ACTIVITY_CLEAR_TASK
- Proper options bar with standard Material icons

Resources and Configuration
- 8 drawable icons for widget controls
- Widget metadata file (note_widget_info.xml)
- Widget preview layout for Android 12+ widget picker
- Multi-language strings (English and German)
- Glance Jetpack dependencies version 1.1.1

System Integration
- SyncWorker updates all widgets after sync completion
- NoteEditorViewModel reloads checklist state on resume
- ComposeNoteEditorActivity reflects widget edits
- WebDavSyncService maintains clean connections
- AndroidManifest declares widget receiver and config activity

Complete v1.8.0 Widget Feature Set
- Fully responsive design for phones, tablets and foldables
- Seamless Material Design 3 integration
- Production-ready error handling
- Zero connection leaks
- Immediate UI feedback for all interactions
2026-02-10 10:42:40 +01:00

Logo

Simple Notes Sync

Clean, offline-first notes with intelligent sync - simplicity meets smart synchronization.

Android Kotlin Jetpack Compose Material 3 License

SHA-256 hash of the signing certificate:
42:A1:C6:13:BB:C6:73:04:5A:F3:DC:81:91:BF:9C:B6:45:6E:E4:4C:7D:CE:40:C7:CF:B5:66:FA:CB:69:F1:6A

📱 Screenshots

Sync status Edit note Edit checklist Settings Server settings Sync settings

📝 Offline-first  •  🔄 Smart Sync  •  🔒 Self-hosted  •  🔋 Battery-friendly

Highlights

  • 📝 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
  • 🔒 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

🚀 Quick Start

1. Server Setup (5 minutes)

git clone https://github.com/inventory69/simple-notes-sync.git
cd simple-notes-sync/server
cp .env.example .env
# Set password in .env
docker compose up -d

➡️ Details: Server Setup Guide

2. App Installation (2 minutes)

  1. Download APK
  2. Install & open
  3. ⚙️ Settings → Configure server:
    • URL: http://YOUR-SERVER-IP:8080/ (base URL only!)
    • User: noteuser
    • Password: (from .env)
    • WiFi: (your network name)
  4. Test connection → Enable auto-sync
  5. Done! 🎉

➡️ Detailed guide: QUICKSTART.md

📚 Documentation

Document Content
QUICKSTART.md Step-by-step installation
FEATURES.md Complete feature list
BACKUP.md Backup & restore guide
DESKTOP.md Desktop integration (Markdown)
SELF_SIGNED_SSL.md Self-signed SSL certificate setup
DOCS.md Technical details & troubleshooting
CHANGELOG.md Version history
UPCOMING.md Upcoming features 🚀
TRANSLATING.md Translation guide 🌍
cd android
./gradlew assembleStandardRelease

➡️ Build guide: DOCS.md

💡 Feature Requests & Ideas

Have an idea for a new feature or improvement? We'd love to hear it!

➡️ How to suggest features:

  1. Check existing discussions to see if someone already suggested it
  2. If not, start a new discussion in the "Feature Requests / Ideas" category
  3. Upvote (👍) features you'd like to see

Features with enough community support will be considered for implementation. Please keep in mind that this app is designed to stay simple and user-friendly.

🤝 Contributing

Contributions welcome! See CONTRIBUTING.md

📄 License

MIT License - see LICENSE



v1.7.0 · Built with ❤️ using Kotlin + Jetpack Compose + Material Design 3

Description
📝 Minimalist offline note-taking app with automatic Wi-Fi synchronisation via WebDAV without many permissions 🛡️
Readme MIT 5.7 MiB
Languages
Kotlin 98.1%
Shell 1.9%