Repository navigation
fix(deep-link): preserve XDG registration ownership and report failures - #3585
Merged
lucasfernog merged 16 commits intoOct 11, 2026
Merged
Conversation
…nd-errors # Conflicts: # plugins/deep-link/src/lib.rs
The plugin only supports Linux, so FreeBSD builds warned about dead code.
Share the spawn, status check and logging for XDG commands.
register and unregister now edit MimeType lists the same way.
Parse raw values so a quoted Exec matches and isn't rewritten each time.
A failing update-desktop-database no longer leaves the app as the default.
Edit it line by line instead of re-serializing it through rust-ini.
Only run update-desktop-database if the desktop file changed or the cache still lists the app.
xdg-mime exits with 4 on KDE and LXQt when no handler is set.
Compare the trimmed first line instead of the raw output.
Drop #[ignore], skip when the tools are missing, and install them on Linux CI.
Contributor
Package Changes Through 9461d1cThere are 5 changes which include deep-link with patch, deep-link-js with patch, single-instance with patch, updater with minor, updater-js with minor Planned Package VersionsThe following package releases are the planned based on the context of changes in this pull request.
Add another change file through the GitHub UI by following this link. Read about change files or the docs at github.com/jbolda/covector |
lucasfernog
previously approved these changes
Oct 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linux XDG registration can report success after a command fails,
is_registeredcan mistake a substring for the app's desktop ID, and unregistering only the explicit default leaves fallback MIME associations behind.Check command statuses through the existing I/O error variant and compare the full desktop ID. Unregister updates the owned desktop entry/cache and removes only this app's user-default and added-association entries. Preserve other schemes, handlers, ordering, and executable quoting. Explicit calls still refresh stale caches after a visible failure or missing owned file. A failed operation may leave partial state; no transactional rollback is promised.
Validation on exact signed refreshed head
89545c825d433739ac905463cb4514cee0644626, which merges frozen upstream8882934230c903e03d56021669bc146be7a117b7:--ignored --exactcases (xdg_command_results,xdg_unregister) passed.ba965506d5695149737a086596d40ab6a1a04250combines this head with FreeBSD XDG head4244c2e34da55dc56fb155b52bcea48ef514168f: Linux and FreeBSD each passed the three explicitly selected XDG cases. Those FreeBSD results qualify the composition, not this standalone head.Rust and Cargo 1.98.1; Linux x86_64 and native FreeBSD 15.1 amd64. Locked resolution is unchanged before/after each job (
Cargo.lockSHA-256c72f7a8948c4a9d65d3bb0c527391587b05f93cca3f285a9aa078b975f0d326d). Original report manifests, command results, and source inventories were independently verified. These are component tests, not a GUI/session or release qualification.FreeBSD gates remain in #3583. This does not test GUI launch or fix the generic xdg-utils quoted-Exec issue. Related proposals #3475 and #3383 change missing-tool policy; this patch retains the documented requirement and reports failures to the caller. Related: openclaw/openclaw#45233.