Repository navigation
Releases
residue-ui v0.0.12
It bundles residue 0.0.12, which keeps more worktrees that are in use or hold what it cannot rebuild, and a save replaces only the service its dialog showed.
- A save replaces only the service its dialog showed, also when a terminal or
brew upgradechanges the service while the save runs. Before,installcompared the service with the dialog's read and then ranresidue service install, and a change in between went unseen: the save replaced a service the dialog never showed, and could drop an option a terminal had just added. The save now passes the fingerprintresidue service statusprinted for the dialog's read asresidue service install --expect, and residue writes the service only while it still has that fingerprint, comparing under a lock right before it writes. Otherwise nothing is saved, and the dialog shows the service as it is now, to check and save again (#11). It needs residue 0.0.12, which adds--expect. - The app bundles residue 0.0.12. It keeps more worktrees that are in use or hold what residue cannot rebuild: a process in a worktree whatever characters its path has, a worktree that holds a very long path, an environment file inside a build folder such as
build/.env, and the worktree on a bare repository's HEAD branch. Its activity reasons gainunmatchable_path,unnamed_fileandlong_path, which the app shows in residue's words. TheDEFAULT_*constants andFETCH_SINCEstill match residue 0.0.12. residue-cli's CHANGELOG has the rest.
Inside: residue-cli 0.0.12, the release sidecar.lock pins, checked by its sha256 and its build-provenance attestation.
Install: residue-macos.dmg is the app for macOS 13 or later, on Apple silicon and Intel. It is not notarized yet, so macOS blocks it the first time: the README has the steps to open it.
Verify: gh attestation verify residue-macos.dmg --repo whiteheap/residue-ui, or shasum -a 256 -c SHA256SUMS.
residue-ui v0.0.11
The app's first release from this repository. It bundles residue 0.0.11.
- A removal deletes from the trash and forgets only what its dialog listed. The dialog lists the old trash entries a removal deletes and the removal records it forgets, but the confirmed run read the clock again, so an entry or record that came of age while the dialog was open went too, unshown. The run now passes the shown plan's
generated_attoresidue remove --yes --as-of, which residue 0.0.11 adds, and residue judges every age at that time. A confirm whose plan has no such time moves nothing (#13). - After a restore fails, the Restore screen and the worktree list read again, since a failed restore can still have moved files. When what residue printed names
--to, as inresidue restore RECORD --to NEWPATH, which residue 0.0.11 prints for a trash restore whose worktree Git can no longer use after the move, the error shows it open and says to run that command in a terminal: the app restores only to the original path. - A restore that brings a worktree back on a new branch now names that branch and says why: the recorded branch no longer contains the recorded HEAD or is checked out in another worktree, and stays unchanged. Before, the line named the new branch where it meant the recorded one. residue 0.0.11 restores a worktree whose branch another worktree has checked out this way, where 0.0.10 refused.
- One removal moves worktrees to the trash at a time, also when you quit the app and open it again while one runs. Until it ends, Move to the trash stays off, with "A removal is still running." beside it, and then the list scans again. The app refuses a second removal meanwhile, with "another removal is still running; try again when it ends", and moves nothing. While residue runs,
removal-running.jsonin the app's data folder names its process, so an app that opens again finds the removal still running (#12). - The automatic cleanup dialog saves only what it shows. While Preview or Save runs, its folders and its mode cannot change, so a preview always ran on the folders ticked beside it (#9). While a save or turn-off runs, Command-1 to 5 and the sidebar keep the screen, and the app refuses a second save or turn-off until the first ends, with "another save or turn-off is still running; try again when it ends" (#10).
- The app has a home and a version of its own: it is built and released from this repository, and it bundles one residue-cli release, pinned in
sidecar.lock, now 0.0.11. Every build downloads that release's two macOS archives, checks each one's sha256 and build-provenance attestation, and checks that the app'sresidue-cliis that release by its version and each architecture's UUID. The sidebar shows both versions. When the bundled residue is missing, the app says to download it again from this repository's releases. - Each release publishes
residue-macos.dmgwithSHA256SUMSand a build-provenance attestation. To check a download:gh attestation verify residue-macos.dmg --repo whiteheap/residue-ui. - The app ships 25,440 B less JavaScript, 4.3 % (590,216 B to 564,776 B; 182,822 B to 177,899 B gzip). Each Phosphor icon carried its drawing in all six weights; the build now keeps the three the app draws, regular, bold and fill, and fails when the app's source or the Kumo code it bundles uses another, or one it cannot read, since that icon would render blank. Every icon and weight the app draws renders the same SVG as before. The build also fails when the bundle holds a Kumo component that
src/styles.cssdoes not scan, which would render unstyled, or when that list names one the bundle no longer holds (residue-cli#123, residue-cli#124). - The app's loading state turns on every Mac, and where macOS auto-plays animated images it holds about 250 MB less while it shows. It drew Kumo's
Loader, which animates with SVG SMIL, and WebKit repaints that on every frame: where macOS auto-plays animated images, WebKit's GPU and WebContent processes held 232 MB and 75 MB for as long as it showed, against 14.5 MB and 42 MB with the arc, and where it does not, the Loader stood still on its first frame, a dot on a faint ring. NowLoadingdraws a fixed arc that a CSStransformturns, which WebKit hands to Core Animation, so nothing repaints; with Reduce Motion on, the arc stands still. Its CPU moves to WindowServer: over 30 s the app's three processes used 0.14 to 0.20 s, down from 3.5 to 5.2 s with the Loader running, and WindowServer, which draws every app on screen, 10.8 to 11.8 s, against 5.1 to 9.2 s. Buttons in their loading state still draw Kumo'sLoader(residue-cli#122).
Inside: residue-cli 0.0.11, the release sidecar.lock pins, checked by its sha256 and its build-provenance attestation.
Install: residue-macos.dmg is the app for macOS 13 or later, on Apple silicon and Intel. It is not notarized yet, so macOS blocks it the first time: the README has the steps to open it.
Verify: gh attestation verify residue-macos.dmg --repo whiteheap/residue-ui, or shasum -a 256 -c SHA256SUMS.