• v1.0.24 — Harmonious Icon, Recursive Watching, Download-then-Open, Security Fixes

    Ghost released this 2026-05-25 00:37:16 +00:00 | 55 commits to main since this release

    Changes\n\n### Icon redesign\nThree identical parallel arcing arrows — same curve shape, same blue-to-teal gradient (#64C8FF → #32EDBB), same arrowhead geometry. Evenly spaced, same direction. Harmonious and clearly visible against the near-black background.\n\n### Recursive folder watching (file detection fix)\nFileWatchService now creates a FileObserver for every subdirectory, not just the top-level folder. New subdirectories created at runtime also get watchers immediately. Files added anywhere in the folder tree are now detected automatically.\n\n### Download-then-open\nOpening or sharing a file that is not available locally (cloud-only) now downloads it to a local cache first, then opens it. A progress bar shows while downloading. No more "File not found on device" errors for cloud-synced files.\n\n### Security fixes\n- Path traversal guard: server-returned filenames containing .., /, or \\ are discarded during WebDAV PROPFIND parsing — prevents a malicious server from writing files outside the sync directory\n- Path traversal guard in FilesViewModel: relativePath values containing .. are rejected before any filesystem access\n- Debug logs stripped: WebDavProvider now uses Timber instead of android.util.Log — no debug info in release builds\n- file_paths.xml: added cache-path entry for the download-preview cache directory

    Downloads