github rgon/ncrsDesktop ncrs-v0.1.2
ncrs: v0.1.2

latest releases: ncrs-v0.1.84, ncrs-v0.1.83, ncrs-v0.1.82...
3 months ago

0.1.2 (2026-07-07)

Features

  • --auto-keep-locally-modified-files flag controls post-upload emblem and local copy (ef4fba1)
  • add 'View in Nextcloud Web' right-click menu via WEBURL IPC command (12b64cf)
  • add bearer_token and auth_command to config (9cbbc23)
  • add cache cleanup with configurable max size and auto-purge by age (07b3e8e)
  • add CHANGES invalidation tracing to Nautilus extension (69bfa2f)
  • add CHANGES IPC command for live emblem refresh after Keep Locally (1ea8f11)
  • add CLI argument parsing with --offline, --config, and --mount-point flags (1409a80)
  • add configurable cache cleanup interval (default 1h) (f0dfe4e)
  • add ConflictsView and ErrorsView components (c3d0a36)
  • add Credentials auth abstraction for basic and bearer token support (61d6488)
  • add deb build script (8169ea6)
  • add exclude_folders config to hide folders from FUSE mount (78ae3cc)
  • add filename validation module matching Nextcloud server rules (6bcf3d7)
  • add frontend plugin registry and plugins view (549cefe)
  • add fuse_notify and mutation_journal modules (07adcf2)
  • add GNOME Shell search provider for server-side Nextcloud search (29e4595)
  • add info-level tracing across FUSE, IPC, PROPFIND and Nautilus extension (1d77751)
  • add keep_paths config to auto-keep remote paths on startup (4cdf9a8)
  • add logging (5fe7983)
  • add Nautilus columns for sync, sharing, permissions, owner, and size (357a3fd)
  • add nc_passwords plugin crate with API client (3d061f3)
  • add nc:// URI handler for Nextcloud Edit Locally support (fa604b4)
  • add ncrs_plugin shared crate with plugin trait (8a31352)
  • add Nextcloud Notify Push WebSocket client for real-time cache invalidation (5ca11cf)
  • add Nextcloud OCS notifications API to ncrs_core (e7af4e9)
  • add Nextcloud unified search API to ncrs_core (b538ea5)
  • add oc:permissions and oc:fileid to PROPFIND properties (d0017d2)
  • add offline resilience with connectivity monitor and cache-only fallback (747b9c9)
  • add PasswordsView frontend and register in plugin UI (07e33de)
  • add plugin registry and tray integration (06a5cf9)
  • add provider type filtering to search (d77319f)
  • add resolve_fileids() WebDAV SEARCH by fileid (a13eaa0)
  • add SEARCH IPC command and Nautilus search dialog for Nextcloud (38e6019)
  • add search_nextcloud Tauri command with parallel provider queries (3aee79a)
  • add SearchView component with debounced NC unified search (f41eb99)
  • add systemd user service and deb packaging metadata (7b7333b)
  • add WebDAV write operations with FUSE callbacks and ETag conflict resolution (bdc122a)
  • add window-context detection for auto-suggesting passwords based on active browser tab (ea1c5ec)
  • auth: Nextcloud Login Flow v2 — trigger when password missing (f8293e7)
  • auth: system keyring for app password; warn on insecure config perms (35e074b)
  • auto-create mountpoint if doesn't exist (9de011b)
  • background file caching on open, keep-locally IPC+menu, fix emblems, add debug logging (f792818)
  • background notification polling and dismiss/get Tauri commands (9ad4fb5)
  • cache directory ls and update with notify-push (415a87f)
  • cache downloaded files to disk, invalidate by modified time (ee9b54d)
  • cache streaming reads to disk when full file is covered, with configurable read-ahead (54b441d)
  • ci: build the deb via build-deb.sh and verify it with test-deb.sh (6eadd86)
  • core: add --print-default-config flag and explicit ncrs bin target (4b9dd9d)
  • core: add STATE, PAUSE and RESUME IPC verbs for external clients (3b0bb03)
  • deferred subdirectory readdir, partial-download icons, evict command, cache recovery, and fix web URLs (a4c2a2b)
  • derive FUSE mode bits from Nextcloud oc:permissions flags (32f7be3)
  • derive Serialize/Deserialize for DavEntry for cache persistence (7f8bc65)
  • detect shared files via oc:share-types and show shared emblem in Nautilus (22d65df)
  • dir cache persistence, sync reads, HTTP/3 client, child prefetch batching (1ced20d)
  • expose error_log, transfer_map, and journal through Tauri state and commands (ab5a4e4)
  • extend SyncProgressView with transfers and error indicators (609512d)
  • ghost entries + inotify events for all FUSE ops with Nautilus DBus reload (8003ed4)
  • gui: attach to a running daemon over IPC instead of mounting a second time (0f9c804)
  • gui: mirror journal and conflicts from daemon in attach mode (6e43466)
  • handle FUSE unmount event with shutdown flag, GUI remount (e6238f8)
  • HTTP Range partial reads with 2MB read-ahead buffer for streaming (9a10ebc)
  • implement base features in UI, match most NC Desktop components. Open in top right corner (hack for Wayland) (68c39eb)
  • implement basic configuration parser (dc012ee)
  • implement basic Tauri UI skeleton with tray icon and menu (2abaeea)
  • implement chunked uploads for files larger than 10MB (a215449)
  • implement pause sync via shared paused flag in core and GUI (a8f3134)
  • incremental readdir with channel-based streaming for cold cache (01c3736)
  • load config from ~/.config/ncrs/config.yaml, create skeleton on first run (cb7ca65)
  • login: pre-fill server URL from existing config (bd7d003)
  • nautilus extension for file sync status emblems (b63b021)
  • open file results in file browser with view-online button (d844d80)
  • packaging: ship GUI desktop entry, icons, autostart and example config in the deb (e399413)
  • populate IPC detail for directories themselves via PROPFIND self-entry (b7b0bb8)
  • prefetch NC preview thumbnails into XDG cache on directory listing (16ed616)
  • proactively propfind invalidated etags of /* at boot (18a9e2e)
  • raw PROPFIND with NC properties (has-preview, etag, oc:size), replace remotefs for listings (c78fd46)
  • redesign PasswordsView as quick-access popup with click-to-copy (6a28378)
  • register nc_passwords plugin in tauri backend (853a457)
  • replace dummy notifications with real NC API data, avatar, and dismiss (ebc156b)
  • send OS notifications (6f6467a)
  • separate kept and cached files into distinct directories with per-file status (9157a48)
  • set x-gvfs-notrash mount option to prevent Nautilus trash dirs on Nextcloud (6b10f5c)
  • show correct size and uploading emblem for newly written files (b65f7f0)
  • show storage usage in GUI for kept files, cache, and server quota (8c8b207)
  • stale-while-revalidate for directory cache, serve cached listings immediately (96d6c20)
  • support Nextcloud remote wipe to delete local data on server command (0dd7c38)
  • theme: fetch Nextcloud server accent color from capabilities and apply to UI (0371c1b)
  • thread http3 flag through notification and search clients (f9ad7fe)
  • ui: detect system dark/light mode and add design tokens (0f244f5)
  • unix socket IPC server for file sync status queries (1c2c86f)
  • update nautilus extenision on runui (b752dfa)
  • upgrade reqwest 0.11 to 0.12 with HTTP/3 QUIC support (ec801f1)
  • wire errors, transfers, and conflicts state into main page (6e67051)
  • wire tauri commands to real backend state and config (0ce8b89)

Bug Fixes

  • add done flag to stream buffer so waiters fail fast on short downloads (e5205a0)
  • batch-populate IPC maps before readdir reply for immediate column data (fc322f2)
  • bound IPC connections to 64 with 60s read timeout to prevent thread leaks (5917299)
  • cancel previous download when new range read starts for same fh (7177ee4)
  • check dir cache before PROPFIND in keep-locally to avoid querying file paths as directories (87a4e68)
  • cicd: proper release-please config (9798a78)
  • ci: pass token explicitly to release-please action (3b2ce31)
  • clean up stale zero-byte write_* temp files on daemon startup (cdb1599)
  • core: refuse to mount over a live mount or non-empty dir, remove mount dir on exit (d9a6412)
  • core: validate mount point before touching the IPC socket and shared state (f196be8)
  • correct Nextcloud oc:permissions flag mapping in Nautilus extension (6685d6f)
  • dirty file path after PUT so Nautilus clears uploading emblem automatically (2f39435)
  • don't invalidate directories on boot if etag not changed, better atime notify-push ignore after our own propfind to prevent infinite loops (7e5074a)
  • drop AutoUnmount — fuser 0.17 requires allow_other with auto_unmount (8d2da94)
  • enable rustls-tls for tungstenite and retry notify_push discovery on failure (871f45e)
  • enforce Nextcloud oc:permissions via DefaultPermissions FUSE mount option; add perms_to_mode tests (ced8a5c)
  • fetch parent directory on lookup cache miss after daemon restart (a79b075)
  • gate child-dir PROPFIND prefetch behind aggressive_prefetch and add HTTP request throttle (5ec0d5b)
  • green-checkmark after upload; NC properties appear via forced PROPFIND (f42c403)
  • guard unlink/rmdir/rename with NC D/N/V flags; block delete in create-only shared dirs (476a2bd)
  • gui: embed tray icons at compile time and enforce a single app instance (1afc89d)
  • gui: pin plugin bare imports to local node_modules for production builds (e49e969)
  • gui: regenerate app icons from the ncrs brand mark instead of the tauri template (c87d7ef)
  • gui: use composedPath for click-outside detection of detached nodes (74922f5)
  • harden bearer auth — redact secrets, stream downloads, pre_auth WS, validate creds (eccecbe)
  • harden FUSE, IPC, and Nautilus extension against panics and errors (40aee6e)
  • lazy-unmount stale FUSE mount before remounting on restart (bd4cec5)
  • login: correct init endpoint to /index.php/login/v2 and strip WebDAV paths from user input (4410f91)
  • login: send User-Agent header so Nextcloud shows app name in OAuth grant page (e7e9320)
  • make search async with cancellation and debounce throttling (5ac2743)
  • mount: remove IPC socket on FUSE teardown so remount doesn't enter attach mode (bf5c7d5)
  • mount: surface FUSE errors to UI and allow remount from error state (9aa6217)
  • move DETAIL logic into update_file_info_full which Nautilus 4 actually calls (c61c494)
  • never return empty readdir for deferred dirs, debounce dir cache saves (bc5bc20)
  • only prefetch subdirs/thumbnails on first readdir, deduplicate prefetch PROPFINDs (4f5db18)
  • packaging: build GUI with custom-protocol so the deb embeds the frontend (3f8c706)
  • parse statusCode as string to match Nextcloud Passwords API response (25cc8bc)
  • percent-decode paths from remotefs-webdav list_dir results (84d13c7)
  • percent-decode search result titles and paths (ff294c1)
  • populate IPC maps from getattr/lookup, serve from file_cache in read, move poll off main thread (29ae52c)
  • prevent concurrent PROPFIND race in get_or_list_dir (5d1a506)
  • prevent recursive LOG IPC calls, increase socket timeout and recv buffer (cd57209)
  • reduce Keep Locally concurrency to 2 with yield to avoid Nautilus freeze (708e4f5)
  • reduce thumbnail batch to 4, add 200ms inter-batch and 500ms initial delay (766fa25)
  • reject empty bearer_token, prevent notification poll from killing other pollers (f18f696)
  • release: annotate workspace version for release-please and unify plugin versions (d818b7e)
  • release: use generic extra-file updater for workspace Cargo.toml (6d0ebb2)
  • release: use rust release type so release-please updates workspace Cargo.toml version (9200368)
  • remove dbus reload, let inotify events handle per-file nautilus updates (fde890d)
  • remove update_file_info stub that blocked async update_file_info_full (3d32df1)
  • replace hard cancel with soft self-cancel, limit read throttle to 3 (4ce0496)
  • resolve $plugins alias with absolute path and add plugin loading diagnostics (a660c06)
  • restore update_file_info stub, add DETAIL_ASYNC tracing (ba29455)
  • return COMPLETE synchronously for non-mount files to avoid Nautilus async overhead (0389ab8)
  • rewrite nautilus extension with non-blocking async update and tests (178214c)
  • security: chmod 0600 config file to protect app password (5ca3337)
  • send self-entry immediately via channel, mark paths dirty after IPC population (29c5a98)
  • skip background download for streaming media, show blue emblem during active downloads (94452e5)
  • skip IPC socket queries for files outside ncrs mount point (eefdd6d)
  • skip zero-byte cached files and clean up failed downloads (e1f8c4a)
  • stop eager full-file download on open, use fileId for preview API (6c60c37)
  • suppress notify_push self-notification loop via ETag pre-check (f5350b1)
  • suppress self-notify kernel dentry invalidation for freshly-fetched dirs (e492b37)
  • tray: remove Settings menu item (duplicate of Open ncRS) (f7277d0)
  • typecheck: resolve all svelte-check errors (e80c94c)
  • ui: fix server label clipping and avatar dropdown overflow (43cd4c5)
  • ui: move @const tags to be direct children of {#if} block (4efb8ec)
  • ui: show FUSE error message in sync label instead of invisible alert span (bd973bc)
  • unmount FUSE on quit, handle existing mount point, and sync tray state on all transitions (4a853e3)
  • update mount_ncfs call signature and harden MKCOL/DELETE ops (d745ae9)
  • use download arrow emblem for partial-download folders (b93a90d)
  • use Nautilus.FileInfo.lookup for invalidation instead of storing stale GObject refs (85b4aef)
  • use shared buffer with condvar for incremental read-ahead streaming (1ac65bc)
  • use sync update_file_info with background cache for non-blocking NC columns (d2efdd3)
  • use synchronous DETAIL IPC in update_file_info for immediate NC columns (12860a0)
  • wait for PROPFIND completion instead of 2s timeout, increase IPC socket timeout (96b4fa7)
  • wrap all Nautilus extension callbacks in try/except to prevent crashes (fa678b8)

Performance Improvements

  • add 10s in-memory directory listing cache (c4dd94c)
  • add prefetch_throttle so aggressive_prefetch doesn't compete with READDIR (213a34d)
  • add throughput metrics to range read logging (82bb0dd)
  • cap thumbnail and subdirectory prefetching for directories >200 entries (01f2a33)
  • chain prefetch one level deeper to eliminate pause between traversal waves (85061be)
  • fix condvar wake + suppress proactive_refresh during traversal (b153765)
  • increase read-ahead to 64MB and add background prefetching (7869377)
  • increase thumb prefetch concurrency (batch 32, cap 200) and fix stray lock unwrap (f58528e)
  • make lookup/getattr cache-only, no PROPFIND triggered by Nautilus file scanning (9ac60cf)
  • non-blocking FUSE handlers with per-call WebDAV timeout (4df097d)
  • populate IPC maps only once per directory and cap CHANGES to 500 paths (19147fd)
  • prefetch child dirs concurrently on readdir using pending_dirs (648b591)
  • reduce prefetch contention and thumbnail size for faster directory loads (2034acc)
  • reduce thumbnail batch size and gate on active streams (f8c10e2)
  • separate read throttle, increase read pool to 8, enable tcp_nodelay (d430848)
  • share HTTP client across requests and parallelize thumbnail prefetch (e8d1fb0)
  • short-circuit readdir continuation pages from cache (78395d7)
  • skip read throttle for small reads without read-ahead (b9e2afb)
  • split IPC population into per-map short locks to reduce FUSE contention (62e00b4)
  • stop flooding dirty set on notify_push file change events (5b50437)
  • stream range reads to reply with first bytes immediately (f57c34c)
  • stream XML parsing directly from HTTP response instead of buffering (c79644c)
  • switch back to async update_file_info_full with 32-worker pool for parallel DETAIL queries (b988fec)
  • switch Nautilus DETAIL queries to synchronous IPC, eliminate thread pool bottleneck (f1f8691)
  • use Arc<Vec<DavEntry>> in dir cache to eliminate O(N) clones per FUSE call (9796f99)
  • WebDAV connection pool and speculative subdirectory prefetching (adadcc6)

Don't miss a new ncrsDesktop release

NewReleases is sending notifications on new releases.