diff --git a/README.md b/README.md index 93d08d8..830c658 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,11 @@ that checkout's `.state/` directory. If `plugin-helper.windows.toml` has only one `[[profiles]]` entry, that profile is selected automatically when `--profile` is omitted: +From the repo root, double-click or run `menu.bat` to create `.venv` on first +use, install the package, and open the Textual menu. + +Or set up manually: + ```powershell py -m venv .venv .\.venv\Scripts\Activate.ps1 diff --git a/docs/notes/install-and-verify-plugins-1.44.1.md b/docs/notes/install-and-verify-plugins-1.44.1.md index bdc84af..34ca977 100644 --- a/docs/notes/install-and-verify-plugins-1.44.1.md +++ b/docs/notes/install-and-verify-plugins-1.44.1.md @@ -111,16 +111,6 @@ stack loaded successfully. | SquatToBegin lifecycle notice | `[IPA/Loader] Plugin SquatToBegin has no methods marked [OnStart] or [OnEnable]` | Upstream plugin shape; gate still arms from gameplay scene setup. | | IPA feature deprecation | `[IPA/Loader/Features] Encountered old features used` / `No such feature SiraLocalizer.LocalizedPlugin` | Loader metadata drift; not a load failure. | -Still treat these as real problems when investigating a failed smoketest: - -- `Mono.Cecil.AssemblyResolutionException`, `TypeLoadException`, or missing - assembly errors for an installed plugin -- Harmony `Patching exception` or repeated `NullReferenceException` stacks from - a newly installed plugin (LeaderboardCore `PanelView_SetIsLoaded` is a known - pre-existing warning on this stack; revisit only if in-game leaderboards break) -- Plugin absent from the IPA load list after install -- Startup never reaches `[MainSystemInit] Initialization was completed` - ## Status Legend - todo: not attempted @@ -236,7 +226,7 @@ Purpose: restore song-list, menu, and visualization conveniences. | Plugin | Upstream | Status | Source/version | Verification notes | | --- | --- | --- | --- | --- | -| BetterSongList | [github](https://github.com/kinsi55/BeatSaber_BetterSongList) | verified with warning | GitHub `kinsi55/BeatSaber_BetterSongList` tag `v0.4.3`, asset `BetterSongList.dll`; GitHub release digest matched downloaded asset | IPA loaded BetterSongList 0.4.3 and the game reached `MainSystemInit`. Warning: manifest targets Beat Saber 1.42.0. | +| BetterSongList | [github](https://github.com/kinsi55/BeatSaber_BetterSongList) | verified with warning | GitHub `kinsi55/BeatSaber_BetterSongList` tag `v0.4.3`, asset `BetterSongList.dll`; GitHub release digest matched downloaded asset | IPA loaded BetterSongList 0.4.3 and the game reached `MainSystemInit`. Warning: manifest targets Beat Saber 1.42.0. SongDetailsCache is optional but recommended for cached song-detail lookups; the registry lists it as a non-required dependency. | | HitScoreVisualizer | [github](https://github.com/ErisApps/HitScoreVisualizer) | verified with warning | GitHub `ErisApps/HitScoreVisualizer` tag `3.7.3`, asset `HitScoreVisualizer-3.7.3-bs1.42.0-a565cbb.zip`; GitHub release digest matched downloaded asset | IPA loaded HitScoreVisualizer 3.7.3, installed app/menu installers, and the game reached `MainSystemInit`. Warning: manifest targets Beat Saber 1.42.0. | | DiTails | [github](https://github.com/Auros/DiTails) | installed; smoke blocked | Local build from `/home/pleb/src/Auros/DiTails` commit `601e3c4` on branch `fix-1.44-artwork-initialization`, asset `DiTails-1.1.3-bs1.44.1-601e3c4.zip`, SHA-256 `b8735f24545f1a50392865bf3013b930bee8e4ba7feac824a2482e2f1deeba1e`; replaces failed GitHub `Auros/DiTails` tag `1.1.3`, asset `DiTails-v1.1.3-g1.42.0-271d394.zip` and BeatMods 1.1.3 trial | Helper installed `Plugins/DiTails.dll` SHA-256 `5c856ffdfeab54982b84cb2e3033c970622668c553396460499d2343363d1d9d` in the mounted Windows instance. IPA loaded DiTails 1.1.3 and the previous `DetailContextManager.Initialize()` `NullReferenceException` did not recur before startup was blocked by `SteamAPI Init failed` because Steam was not running. | | HideTheLogo | [github](https://github.com/TheBlackParrot/HideTheLogo) | verified with warning | GitHub `TheBlackParrot/HideTheLogo` tag `1.0.3`, asset `HideTheLogo-1.0.3-bs1.40.3-c968d91.zip` | IPA loaded HideTheLogo 1.0.3, logged `yeet`, and the game reached `MainSystemInit`. Warning: manifest targets Beat Saber 1.40.3. | diff --git a/locks/1.44.1.lock.toml b/locks/1.44.1.lock.toml index 17b11d5..90cfa31 100644 --- a/locks/1.44.1.lock.toml +++ b/locks/1.44.1.lock.toml @@ -44,12 +44,12 @@ reason = "BeatMods verified SongCore 3.16.0 for Beat Saber 1.44.1 as version id [[plugins]] id = "customjsondata" repo = "Aeroluna/CustomJSONData" -tag = "v2.6.8" -asset = "CustomJSONData-2.6.8+1.40.0-bs1.40.0-7c2c32c.zip" -download_url = "https://github.com/Aeroluna/CustomJSONData/releases/download/v2.6.8/CustomJSONData-2.6.8%2B1.40.0-bs1.40.0-7c2c32c.zip" +tag = "beatmods-2.6.8+1.40.0" +asset = "CustomJSONData-2.6.8+1.40.0.zip" +download_url = "https://beatmods.com/cdn/mod/fed31638bbb678580ef760ec83cfd486.zip" sha256 = "30555c77485d2837bd294608fe4e23c34415b89413997be67a6150318090b216" install_strategy = "bsipa-zip" -reason = "BeatMods verified CustomJSONData 2.6.8+1.40.0 for Beat Saber 1.44.1 as version id 2327, zipHash fed31638bbb678580ef760ec83cfd486. GitHub asset is byte-identical to the BeatMods CDN zip." +reason = "BeatMods verified CustomJSONData 2.6.8+1.40.0 for Beat Saber 1.44.1 as version id 2327, zipHash fed31638bbb678580ef760ec83cfd486. Downloaded from BeatMods CDN and verified SHA-256 30555c77485d2837bd294608fe4e23c34415b89413997be67a6150318090b216." [[plugins]] id = "heck" @@ -201,12 +201,12 @@ reason = "BeatMods verified ScoreSaberSharp 0.1.0 for Beat Saber 1.44.1 as versi [[plugins]] id = "scoresaber" repo = "ScoreSaber/pc-mod" -tag = "v3.3.27" -asset = "ScoreSaber-v3.3.27-bs1.42.0-to-1.44.0-9b4cfcf.zip" -download_url = "https://github.com/ScoreSaber/pc-mod/releases/download/v3.3.27/ScoreSaber-v3.3.27-bs1.42.0-to-1.44.0-9b4cfcf.zip" -sha256 = "8ad509ab38353dfb4d92d127ba4e40917552f700580a7384509cafa70e62c096" +tag = "v3.4.1" +asset = "ScoreSaber-v3.4.1-bs1.42.0-to-1.44.1-4a3f9ff.zip" +download_url = "https://github.com/ScoreSaber/pc-mod/releases/download/v3.4.1/ScoreSaber-v3.4.1-bs1.42.0-to-1.44.1-4a3f9ff.zip" +sha256 = "6a74de62103b9b6afb1e02a3740d800cf696a88beee68e55d56de24751d5f8de" install_strategy = "bsipa-zip" -reason = "User-provided GitHub releases URL https://github.com/ScoreSaber/pc-mod/releases. Latest non-draft, non-prerelease release v3.3.27 includes this highest compatible asset, labeled for Beat Saber 1.42.0 through 1.44.0; GitHub release digest matched the downloaded asset." +reason = "Updated from GitHub ScoreSaber/pc-mod tag v3.4.1 release https://github.com/ScoreSaber/pc-mod/releases/tag/v3.4.1, asset ScoreSaber-v3.4.1-bs1.42.0-to-1.44.1-4a3f9ff.zip. GitHub release digest matched 6a74de62103b9b6afb1e02a3740d800cf696a88beee68e55d56de24751d5f8de." [[plugins]] id = "protobuf-net" @@ -268,6 +268,15 @@ sha256 = "6237da05cbc044e99211cb0e569c917fe61bb0da25e42c61a6d438371548ebba" install_strategy = "bsipa-zip" reason = "BeatMods verified BeatSaverUpdater 1.2.11 for Beat Saber 1.44.1 as version id 2352, zipHash d9ea8dd0cbaac66cbb02fa59a548e42b. GitHub asset is byte-identical to the BeatMods CDN zip." +[[plugins]] +id = "playlistmanager" +repo = "rithik-b/PlaylistManager" +tag = "localbuild-pr82-da1ad17-1.44" +asset = "PlaylistManager-1.7.4-bs1.44.0-da1ad17.zip" +sha256 = "cb86029a2defca846e2e1ebdf75bbe1368797fbf1b8ce509615155080b9ffbf9" +install_strategy = "bsipa-zip" +reason = "Local build from GitHub PR https://github.com/rithik-b/PlaylistManager/pull/82 at commit da1ad17. Use this PR build instead of upstream releases, which still target older Beat Saber versions and fail on 1.44.x with IPlatformUserModel / PlatformUserModel resolution errors." + [[plugins]] id = "failbutton" repo = "qe201020335/FailButton" diff --git a/menu.bat b/menu.bat new file mode 100644 index 0000000..44e1f5a --- /dev/null +++ b/menu.bat @@ -0,0 +1,25 @@ +@echo off +setlocal + +cd /d "%~dp0" + +if not exist ".venv\Scripts\python.exe" ( + echo Creating virtual environment... + py -m venv .venv + if errorlevel 1 ( + echo Failed to create virtual environment. + exit /b 1 + ) +) + +echo Installing plugin-helper... +".venv\Scripts\python.exe" -m pip install -e . +if errorlevel 1 ( + echo Failed to install plugin-helper. + exit /b 1 +) + +".venv\Scripts\python.exe" -m plugin_helper +set EXIT_CODE=%ERRORLEVEL% + +endlocal & exit /b %EXIT_CODE% diff --git a/registry/plugins/bettersonglist.toml b/registry/plugins/bettersonglist.toml index 61557eb..7127fc3 100644 --- a/registry/plugins/bettersonglist.toml +++ b/registry/plugins/bettersonglist.toml @@ -4,3 +4,6 @@ repo = "kinsi55/BeatSaber_BetterSongList" asset_patterns = ["BetterSongList.dll"] install_strategy = "dll-to-plugins" category = "ui" +dependencies = [ + { id = "songdetailscache", constraint = ">=1.4.0", required = false }, +]