Repository navigation
Fix P0 issues: vanishing bottles, runtime install, log growth, CPU spin - #3
Merged
Merged
Conversation
Process output (Whisky-App#1010, Whisky-App#1031) - Clear each pipe's readability handler at end of file. Foundation keeps calling it on a closed pipe, so every finished process left a reader spinning a full core for the life of the app. - Finish the stream once the process exited and both pipes closed instead of blocking the termination handler in readToEnd() while children such as a game started by `wine start` still hold the pipes. Logs (Whisky-App#1005, Whisky-App#1115, Whisky-App#1261) - Cap each process log at 100 MB with a single truncation notice. - Prune logs older than 7 days, then the oldest until the folder fits in 1 GB. Log names are unique so runs in the same second no longer share and truncate one file. WhiskyWine download and install (Whisky-App#801, Whisky-App#995, Whisky-App#1020, Whisky-App#1271, Whisky-App#1275) - Reject non-200 responses and move the download out of URLSession's temporary location before the completion handler returns. - Extract into a staging folder and replace Libraries only once the new runtime has a version file; tar failures are no longer ignored. - Show download and install failures with Retry instead of stalling or reporting success. - Updating no longer uninstalls the runtime before the new one downloads. Bottle creation (Whisky-App#359, Whisky-App#760, Whisky-App#798, Whisky-App#819, Whisky-App#1029, Whisky-App#1079, Whisky-App#1110, Whisky-App#1191, Whisky-App#1232, Whisky-App#1237, Whisky-App#1278, Whisky-App#1306, Whisky-App#1311, Whisky-App#1364) - Report why a bottle could not be created instead of silently removing it: WhiskyWine missing, a folder name ending in a period, or Wine not creating the prefix (with Wine's output). - Remove the half-created bottle folder on failure. - Keep bottles that are still being created across list reloads. - Run creation on the main actor rather than mutating published state from a detached task. - Set aside an unreadable bottle list instead of overwriting it with an empty one. Tests - Add a WhiskyKit test target covering log capping and pruning, download validation, staged installs, and process stream completion and idling. Run it in CI.
data.getwhisky.app no longer serves the runtime (both the archive and the version file return 404), so setup could never install WhiskyWine. - Download Libraries.tar.gz and WhiskyWineVersion.plist from the assets of the whiskywine release. - Add scripts/publish-whiskywine.sh, which packages a built Libraries folder and uploads both assets, replacing the previous runtime. - Skip the Discord and Homebrew release job for the whiskywine release, which is not an app release.
This checkout also has the upstream remote and no gh default repository, so release commands without --repo could target the wrong repository.
It announced releases on upstream's Discord and bumped the Whisky-App Homebrew cask. Neither applies to this fork while it is being built, and it ran on every published release, including the whiskywine runtime.
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.
Fixes the P0 groups from
docs/upstream-issue-triage.mdthat are in Whisky's own code, and moves the WhiskyWine runtime to this repository because upstream's host is gone.Why
data.getwhisky.app/Wine/Libraries.tar.gzand its version file now return 404. Setup saved the 404 page as the download, extracting it failed silently, setup still reported success, and with no Wine installed every new bottle removed itself without a message. Most of the "bottles disappear" reports trace back to that chain of silent failures.What changed
100% CPU (Whisky-App#1010, Whisky-App#1031)
readToEnd()while child processes still hold the pipes.Logs filling the disk (Whisky-App#1005, Whisky-App#1115, Whisky-App#1261)
WhiskyWine download and install (Whisky-App#801, Whisky-App#995, Whisky-App#1020, Whisky-App#1271, Whisky-App#1275)
Librariesis replaced only once the new runtime has a version file.tarfailures are no longer ignored.Bottle creation (Whisky-App#359, Whisky-App#760, Whisky-App#819, Whisky-App#1237, Whisky-App#1364 and duplicates)
Runtime hosting
Libraries.tar.gzandWhiskyWineVersion.plistfrom thewhiskywinerelease of this repository. WhiskyWine 2.5.0 is already published there.scripts/publish-whiskywine.shpackages a builtLibrariesfolder and replaces both assets.Workflows
Release.yml. It posted to upstream's Discord and bumped theWhisky-AppHomebrew cask, and it ran on every published release, including the runtime release.swift testfor WhiskyKit.Testing
--strictis clean, and the Whisky and WhiskyCmd schemes build with no warnings.Not fixed here
For reviewers
Info.pliststill points Sparkle at upstream's appcast (data.getwhisky.app/appcast.xml), so this build would be offered upstream's app updates.