- Monitor directories via Linux
inotify(notifycrate). - File write-completion detection (size stabilisation over 3 consecutive polls).
- SHA-1 checksumming per file for Immich deduplication (64KB chunked, low RAM).
- One-way sync — never delete local files or download from server.
- File type whitelist (JPG, PNG, HEIC, MP4, MOV, GIF, WEBP, TIFF, RAW, ARW, DNG). Sidecars ignored.
- Configurable streaming upload workers (1-10, default 3) with constant RAM use regardless of file size.
- Persistent retry queue (
~/.cache/mimick/retries.json) — failed uploads survive reboots. - Offline Sync Stability — Prevented already-synced files from being re-queued for reassociation when the application is offline or unable to reach the server.
- Accurate Progress Tracking — Fixed the processed file counter to only increment on successful uploads, preventing "ghost" progress during network outages.
- Smart URL routing — LAN first, WAN fallback.
- Pre-upload deduplication via SHA-1 + 409 Conflict detection.
- Multipart streaming upload (disk → network, no full RAM load).
- ISO 8601 UTC timestamps (no chrono dependency, pure arithmetic).
- Album auto-creation from local folder name.
- Custom album selection per watch folder (existing or new).
- HTTP error handling (413, 502, 504).
- Config file at
~/.config/mimick/config.json(serde_json). - API key stored via
oo7keyring crate (encrypted portal file in Flatpak, D-Bus Secret Service native) -- never written to disk in plain text. - Multiple watch directories with per-folder album config.
-
WatchPathEntrysupports both plain path strings and per-folder album configs.
- GTK4 + Libadwaita native UI with
adw::PreferencesWindowfor native dark mode and adaptive layouts. - Adaptive Settings Window — Refactored from
adw::ApplicationWindowto target 350-360px minimum width, ensuring full support for mobile displays like Phosh. - Internal/External URL fields with toggles (at least one must stay enabled — validated).
- Test Connection button (async ping, no UI freeze).
- Watch folders list with per-row album picker button (searchable modal dialog, create-new inline).
- Live sync status row and progress bar (polling
status.json). - Save and Restart flow.
- Split Setup / Controls Window — Separated configuration from live actions and kept footer-style actions visible while scrolling.
- Adaptive Action Buttons — Layout uses
gtk::FlowBoxto auto-stack action buttons (Sync, Pause, Inspector, etc.) vertically on narrow screens. - Expander-based Folder Rows — Folder rows use
adw::ExpanderRowto collapse advanced settings and maximize mobile real estate.
- StatusNotifierItem tray via
ksnicrate. - Graceful fallback when
org.kde.StatusNotifierWatcheris unavailable (GNOME without extension).
-
.desktopfile with Settings and Quit actions (setup/io.github.nicx17.mimick.desktop). - Native desktop notifications (
gio::Notificationvia XDG notification portal).
- Full rewrite from Python to Rust (Tokio + GTK4-rs + Libadwaita-rs).
- No Python runtime dependency — single statically-linked binary.
- 47 unit tests across 13 modules (
api_client,autostart,config,diagnostics,main,monitor,queue_manager,runtime_env,settings_window,startup_scan,state_manager,sync_index,watch_path_display). - All GTK4 widgets updated to 4.10+ standards (no deprecated
ComboBoxText,MessageDialog).
- Queue Inspector — Failed items and recent queue activity are visible from the Controls page, with retry tools for recovery.
- Retry Controls —
Retry all, single-itemRetry, andClear failed queueare available from the queue inspector. - Pause / Resume Sync — Global pause works from the tray and settings window, with visible paused status and reason.
- Sync Now — Manual rescan is available from the Controls page and tray menu.
- Per-Folder Rules — Hidden-path filtering, extension allowlists, temp-file ignores, and optional max file size limits are supported.
- Diagnostics Bundle — Logs, config/state snapshots, and recent queue details can be exported into one support-friendly bundle.
- Network / Power Awareness — Uploads can defer on metered connections or while running on battery power.
- sync delete sync deleted files from local to remote.... implement this as a rule in the per folder rules toggle
- fix album lable type currently the ablum even if selected from the available album menu is marked as custom album on restart .. revise this
- Notifications That Matter — Summaries for sync success/failure and connectivity loss replaces per-file spam.
- Upload Limits — User-configurable concurrency limit and quiet hours are now supported in the settings window.
- Health Dashboard — Show last successful sync, current server route, watched folder count, pending queue size, retry count, and latest error.
- Permission Health Checks — Detect broken Flatpak portal access or lost folder permissions and guide the user to reauthorize them.
- Safer Startup Catch-Up Controls — Let users choose full catch-up, recent-only catch-up, or new-files-only behavior.
- Per-Folder Status — Track last sync time, pending count, target album, and last error per watch path.
- First-Run Wizard — Opens settings automatically when no API key is configured, shows a welcome banner, and disables "Save & Restart" until valid credentials are entered.
- Better Album Picker — Searchable modal dialog with inline create-new and a clear "use folder name" default option replaces the old dropdown.
- Split Setup / Controls Window — Separate configuration from live actions and keep footer actions visible while scrolling.
- Status in Tray — Surface idle / syncing / paused / offline / error state directly in the tray menu and tooltip.
- Actionable Errors — Translate generic failures into concrete guidance like invalid API key, missing album, network timeout, or folder access loss.
- Dry Run / Preview Mode — Show what would be uploaded before enabling a new folder or changing rules.
- Verify Existing Remote State — Audit a folder against the local sync index and highlight drift or mismatches.
- Flatpak manifest hardening — Keep improving portal-first packaging and release reliability for the hosted Flatpak repo.
- Arch AUR submission — Publish PKGBUILD to AUR as
mimick. - ARM64 AppImage — Cross-compile and package for Raspberry Pi / ARM desktops.
- Complete folder sync — Optional two-way sync mode that can reflect remote additions or deletions locally.
- Exponential backoff — Smarter retry scheduling instead of immediate replay on restart.
- Progress notifications — Desktop notifications with counts and outcomes, not just logs.
- Tray icon dynamic states — Distinct icons for idle, syncing, paused, and error conditions.
- Background Sync Toggle — Make background sync optional via a toggle in Settings > Behavior; enabled by default.
- Library view feature - library view of photos for app ... remote and local... toggle between remote and local photos view video thumbnail only...(playback not supported yet).