Commit graph

35 commits

Author SHA1 Message Date
abraunegg
32928bf3ed
Update --force and --force-sync (#3593)
* --force and --resync cannot be used together as --resync blows away the database, thus there is no way to calculate large local deletes
* Update --force-sync documentation
2026-01-03 17:41:44 +11:00
abraunegg
19b050fa79
Improve --resync warning prompt for clarity and safer operation (#3562)
This update refines the --resync user warning prompt to provide clearer,
more accurate guidance on the behaviour and risks associated with performing a
resynchronisation operation.

Key improvements include:

Explicitly explaining that --resync deletes the client’s local state
database and rebuilds it entirely from the current OneDrive contents.

Accurately describing possible outcomes, including overwrite scenarios,
conflict-driven renames or duplications, increased upload/download activity,
and potential Microsoft Graph API throttling (HTTP 429).

Removing incorrect implications that local-only files may be deleted during
--resync (they will instead be uploaded, unless destructive cleanup modes
are explicitly used).

Strengthening safety guidance by recommending:

Maintaining a current backup of the sync_dir

Running the same command with --dry-run before executing a real --resync

Enabling use_recycle_bin so locally triggered online deletions are preserved

Improved formatting and readability for terminal output.

This change enhances user understanding, reduces the likelihood of accidental
data loss, and aligns runtime messaging with the client’s actual synchronisation
logic and documented behaviour.
2025-12-12 12:47:29 +11:00
abraunegg
cf428828a1
Fix Bug #3536: Fix that large files fail to download due operational timeout being exceeded (#3541)
* Adjust default 'operation_timeout' value to align to CURLOPT_TIMEOUT default
* Update downloadFile() to ensure correct handling when operational timeouts occur to correctly resume download and use correct offset for download
2025-11-20 20:42:05 +11:00
abraunegg
b59c1dbc2d
Fix Bug #3522: OneDrive client create many file versions when file modified time differ (#3526)
* Fix issue where the client will create many file versions when file modified time differ locally to that online, and does not evaluate which timestamp should be corrected - online or local
* Add missing TOC entry in application-config-options.md
2025-11-12 19:40:31 +11:00
abraunegg
78955e0de2
Add configuration option 'disable_version_check' (#3530)
* Add configuration option 'disable_version_check' to allow users to configure whether the application will check the GitHub API for release information to assist in advising users of new application releases.
2025-11-12 07:28:04 +11:00
abraunegg
8cfbffa24a
Fix the fetching of maximum open files to be more POSIX compliant (#3508)
* Fix the fetching of maximum open files to be more POSIX compliant
2025-11-04 10:09:56 +11:00
abraunegg
40e0ca4462
Implement Desktop Manager Integration for GNOME and KDE (#3500)
Implement full “Display Manager Integration” support for both GNOME and KDE desktop environments. This new feature allows the OneDrive Client for Linux to detect the active desktop session and automatically:

* Register the configured sync_dir as a “special place” or sidebar entry within the file manager (Nautilus on GNOME; Dolphin on KDE).
* Apply a custom “onedrive” folder icon to the synchronisation directory when the installed icon theme supports it.
* Cleanly install and uninstall required resources (icons, bookmarks, file manager integration) via the Makefile’s install and uninstall targets, thereby supporting system-wide installations, packaging workflows, and per-user installs.
* Introduce a new configuration option display_manager_integration (boolean) to enable or disable this integration behaviour at runtime.
* Update documentation and usage guidance to clearly explain what “Display Manager Integration” means, what this client implements (sidebar entry + icon) and what features remain out-of-scope (context menus, overlay badges, tray icons).
* Ensure safe, idempotent integration logic for both GNOME and KDE (bookmark manipulation, icon theme detection, cache refresh) with fallbacks and minimal dependencies.

With this merge, users installing via make install or system packages will benefit from enhanced desktop usability: the OneDrive folder appears visibly and intuitively within their standard file manager sidebar, making access and identification simpler. At the same time, the core sync engine remains focused on reliable file synchronisation, with the desktop integration layer remaining optional and disabled by default unless explicitly enabled via configuration.
2025-11-03 14:26:49 +11:00
abraunegg
1e48e42363
Implement FR #3491: Add ONEDRIVE_THREADS Docker option (#3494)
* Add Docker environment variable 'ONEDRIVE_THREADS' to control the value for the number of worker threads used for parallel upload and download operations.
2025-10-28 05:55:08 +11:00
abraunegg
2f339c5663
Implement FR #3435: Add option to remove source folders (#3473)
* Add option to remove source folders when using --upload-only --remove-source-files
* Parental path will only be removed if path is empty - that is, no other folders or files present
2025-10-14 06:47:51 +11:00
Emily Mabrey
f27874a05a
Fix config example for max_curl_idle (#3469)
* Fix incorrect example for max_curl_idle using monitor_fullscan_frequency
2025-10-10 14:16:48 +11:00
abraunegg
18d267912e
Implement FR #3364: Add --download-file feature (#3459)
* Add feature request --download-file to download a single file based on the online path
2025-10-07 18:07:05 +11:00
abraunegg
10048d8bca
Implement FR #2360: Add websocket notification support (#3413)
* Implement FR #2360: Add websocket notification support
2025-10-05 07:09:27 +11:00
Andreas Dieckmann
bd80f62e65
Update documentation regarding own app registrations in Entra ID (#3436)
Added link to instructions for configuring app registration in national-cloud-deployments.md.

Co-authored-by: abraunegg <alex.braunegg@gmail.com>
2025-09-23 07:38:31 +10:00
abraunegg
b36fe0a47d
Update 'threads' usage notes (#3389)
* Update 'threads' usage notes to ensure clarity around this application configuration option
2025-07-21 08:07:09 +10:00
abraunegg
e9e5274253
Remove auto configuration of using a larger fragment size (#3370)
* Remove auto configuration of using a larger fragment size
* Update documentation around safe values to use
2025-07-04 07:20:03 +10:00
abraunegg
ea7c3abd2d
Fix Bug #3355: Fix that long running big upload (250GB+) fails because of an expired access token (#3361)
* Revert back to v2.5.5 performSessionFileUpload() and apply minimal change for upload session offset handling to prevent desynchronisation on large files
* Add specific 403 handler for when the upload session URL itself expires
* Add 'file_fragment_size'
* Clean up debug logging output
* Add 'tempauth' to spelling words
* Update documentation URL's
* Ensure that on each fragment upload, whilst the application is using the 'tempauth' for session upload, the global OAuth2 token needs to be checked for validity and refreshed if required
* Add limit check for 'file_fragment_size' option
* Add to default 'config' file
* Update documentation for 'file_fragment_size'
* Add 'file_fragment_size' to --display-config output
* Add --file-fragment-size option to enable use via Docker option
* Add to manpage
* Update Docker entrypoint
* Update Docker | Podman documentation
* Update logging output to include connection method to URL
* Update Upload Session URL expiry update to include UTC and LocalTime values
* Update comment which was dropped / missed
* Clarify that this is the OAuth2 Access Token
* Clarify that the expiry timestamp is localTime
* Update PR with dynamic use of fragment size if fileSize > 100MiB
* Enforce multiple 320KiB for fragment size to align to Microsoft documentation
* Fix Docker entrypoint and confirm working for ONEDRIVE_FILE_FRAGMENT_SIZE
* Change 'defaultMaxFileFragmentSize' to 60
* Revise fragmentSize calculation to be as close to 60 MiB as possible without breaching Microsoft documented threshold
2025-07-03 17:21:16 +10:00
abraunegg
4c1d242a9e
Update documentation and function for how 'threads' is used (#3352)
* Update documentation for 'threads' to be clearer
* Update setDefaultApplicationThreads()
2025-06-22 10:05:47 +10:00
abraunegg
42f7afaba8
Update application-config-options.md (#3326)
* Update 'threads' documentation details for clarity on the option and warning message generated
2025-06-09 07:43:16 +10:00
abraunegg
810197cc05
Implement FR #2693: Implement OAuth2 Device Authorisation Flow (#3313)
Adds support for Microsoft’s OAuth2 Device Authorisation Flow, enabling the client to authenticate using device and user codes on a second device. This is particularly useful for headless or limited-input environments where interactive browser login is not possible.

Includes:
- Initiating device code requests and displaying user instructions
- Polling token endpoint until user authorises the device or the code expires
- Error handling for pending, declined, and expired authorisation states
- Countdown display showing remaining authorisation window

This feature is enabled via the `use_device_auth` config option
2025-06-03 07:47:56 +10:00
abraunegg
61e5a1edb6
Implement FR #3209: Add native support for authentication via Intune dbus interface (#3274)
* Adds support for calling `acquireTokenInteractively` and `acquireTokenSilently` via D-Bus
* Parses and handles the full `brokerTokenResponse` object returned by the Intune broker
* Stores and reuses `account` data to enable silent token refresh without repeated interactive authentication
* Ensures the access token and its expiry time are properly calculated and stored for consistent token management
* Fallback to interactive authentication is triggered if silent authentication fails
2025-05-26 17:14:50 +10:00
abraunegg
73194b0169
Implement FR #3234: Add configurable upload delay to support Obsidian (#3262)
* As of now, Obsidian on Linux does not provide a built-in way to disable atomic saves or switch to a backup-copy method via configuration. Obsidian uses Electron and relies on the default save behavior of its underlying libraries and editor components (like CodeMirror), which typically perform atomic writes for every keystroke. This FR implements a delay in uploading changes to Microsoft OneDrive that is user configurable to better handle how Obsidian works
* Add specific note regarding compatibility with Obsidian and the options that this PR introduces
* Enforce a minimum | maximum for 'inotify_delay'
* Update documentation for feature
* Update 'config' file with 'delay_inotify_processing' option
* Add Ubuntu 24.10 version of curl (8.9.1) to known bad curl versions
* Add Ubuntu version name for Ubuntu 24.10
2025-05-12 06:29:41 +10:00
abraunegg
bad8e7bb20
Fix Bug #3228: Update how local timestamps are modified (#3256)
* Add a new configuration option 'force_session_upload' so that the local timestamp is uploaded and used by the API directly, rather than the API generating its own timestamp
* Update setLocalPathTimestamp() function to only set the timestamp of the local file if this is determined to be actually required
* Update allow.txt - add fracsec, howto
* Add config option 'force_session_upload' to 'config' file
* Add 'Compatibility with Editors and Applications Using Atomic Save Operations'
* Update application-config-options.md to document 'force_session_upload' option
* Add usage note for 'force_session_upload' option as a recommendation for applications that use atomic saves
* Update usage.md - add link(s) to other docs for easier reference / visibility
2025-05-03 06:16:34 +10:00
abraunegg
c7c07b12a7
Enhancement: Update 'skip_file' documentation and option validation (#3251)
* Update 'skip_file' documentation as to why the existing defaults exist
* Add warning message about 'default' entries for 'skip_file' missing aligning to documentation
2025-04-28 08:58:32 +10:00
abraunegg
898f350336
Implement FR #3142: Add local recycle bin or trash folder option (#3168)
* This commit implements Feature Request #3142 by introducing a configurable local recycle bin or trash folder mechanism within the OneDrive Client for Linux. This enhancement provides users with a safeguard against unintended data loss during synchronisation operations. This capability is designed to be compatible with the FreeDesktop.org Trash Specification.
2025-04-23 04:28:32 +10:00
Paul Fabozzi
65a48b3de1
Enhancement: Add support for --share-password option when --create-share-link is called. (#3119)
* Update config.d to add support for --share-password
* Update sync.d to add support for --share-password when creating links
* Update config.d fixed bug requiring ARG with --share-password option
* Update application-config-options.md
* Update sync.d to evaluate if the file link share password is an empty string

---------

Co-authored-by: abraunegg <alex.braunegg@gmail.com>
2025-03-16 07:47:35 +11:00
abraunegg
f8123a2b0a
Implement FR #2719: Add information about file creator/last editor as extended file attributes (#3113)
* Implement feature request to add information about file creator/last editor as extended file attributes
* On a --resync , if the data exists on disk, and 'write_xattr_data' has been enabled, write the xattr data out
2025-02-20 21:14:04 +11:00
abraunegg
0216b63c61
Implement FR #3107: Add config option to not set file and directory permissions (#3112)
* Implement configuration option to not set directory and file permissions
2025-02-13 19:27:14 +11:00
abraunegg
0e7d3f15f6
Implement FR #2544: Allow synchronizing smallest files first (#3114)
* Implement 'transfer_order' configuration option to allow the user to determine what order files are transferred in
2025-02-13 19:20:42 +11:00
abraunegg
84a141b1d6
Calculate file transfer metrics in a consistent manner (#3091)
* Add back file transfer metrics which was available in v2.4.x (regression) 
* Calculate file transfer metrics in a consistent manner for all uploads and downloads
2025-01-29 06:38:21 +11:00
abraunegg
27a25bef4e
Fix Upload|Download Loop for AIP Protected File in Monitor Mode (#3071)
* Fix Upload|Download Loop for AIP Protected File in Monitor Mode
2025-01-18 07:46:56 +11:00
abraunegg
6634284efa
Fix regression in handling uploading new and modified content to OneDrive Business and SharePoint (#3032)
* Fix regression from v2.4.x in handling uploading new and modified content to OneDrive Business and SharePoint to not create new versions of files post upload which adds to user quota
* Ad configuration option 'create_new_file_version' to create new versions if that is the desire
2024-12-09 14:24:33 +11:00
abraunegg
228e7db188
Implement Feature Request: Support Permanent Delete on OneDrive (#2999)
* Implement Feature Request: Support Permanent Delete on OneDrive (#2803)
2024-11-26 19:30:41 +11:00
abraunegg
ae84b8cfef
Fix spelling problems as identified by GitHub Action check-spelling (#2946)
* Fix spelling problems as identified by GitHub Action check-spelling
2024-11-04 11:32:18 +11:00
abraunegg
2e93c1f4ac
Fix that curl generates a SIGPIPE that causes application to exit due to upstream device killing idle TCP connection (#2906)
* Add releaseTimestamp to track when a curlEngine was last used to determine if this engine should be reused or not
* Add forced HTTP/1.1 downgrade based on bad curl versions usually found in Ubuntu distributions
* Add note regarding 'Could not connect to server on handle'
* Make stale curl idle value a config option and update associated documentation
2024-10-21 10:13:20 +11:00
abraunegg
a3522fda30
OneDrive Client for Linux v2.5.0 (#2805)
OneDrive Client for Linux v2.5.0

---------

Signed-off-by: Thomas Staudinger <Staudi.Kaos@gmail.com>
Co-authored-by: JC-comp <147694781+JC-comp@users.noreply.github.com>
Co-authored-by: Dimitri Papadopoulos Orfanos <3234522+DimitriPapadopoulos@users.noreply.github.com>
Co-authored-by: Pierrick Caillon <megamisan@users.noreply.github.com>
Co-authored-by: Pierrick Caillon <pierrick.caillon@megami.fr>
Co-authored-by: Thomas Staudinger <Staudi.Kaos@gmail.com>
Co-authored-by: Yuan Liu <Lyncredible@users.noreply.github.com>
2024-09-16 11:14:46 +10:00