Files
craft-libs/crates
TomcattandClaude Opus 5.5 04950b5a63 fix(update): a standalone self-update replaces the whole tarball install
A standalone copy installed from the release tarball (`bin/` and `share/` unpacked into a prefix
such as ~/.local) only had `bin/<app>` swapped, so after an update the CLI beside it and the app's
data, desktop entry and icons stayed on the old release.

The tarball is now unpacked with `install::tree::unpack` (bounded, contained), and besides the
executable the update replaces:
- the release's other programs that are already in the executable's folder;
- everything under the tarball's `share`, when the executable sits in a prefix's `bin` that has the
  app's `share/<id>` folder.

A copy on its own in some folder still gets only its executable. Each file is staged next to its
destination and renamed over it, without following links, with group/world write and set-id bits
dropped; the executable goes last.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019oRr8pRoNvNUzhf8qyiEdm
2026-10-27 20:20:23 +09:00
..