diff --git a/docs/DESIGN.md b/docs/DESIGN.md index 0928ec9..12f2dd0 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -76,6 +76,7 @@ Runtime state should not need to live inside the repository. By default, keep mu installed.json plans/ downloads/ + / backups/ ``` diff --git a/docs/notes/mods-used-in-1.40.8.md b/docs/notes/mods-used-in-1.40.8.md new file mode 100755 index 0000000..9146898 --- /dev/null +++ b/docs/notes/mods-used-in-1.40.8.md @@ -0,0 +1,184 @@ +# 1.40.8 Mods in Use + +Mods installed by bs-manager and not. + +## bs-manager source of truth + +bs-manager gets verified mods from BeatMods: + +```text +https://beatmods.com/api/mods?status=verified&gameVersion=1.40.8&gameName=BeatSaber&platform=steampc +``` + +It downloads mod zips from `/cdn/mod/.zip`, resolves dependencies by BeatMods mod-version ids, and recognizes installed mods by MD5 hash lookup through `/api/hashlookup?hash=`. + +For the mounted Windows install, `UserData/Disabled Mods.json` has an empty `DisabledModIds` array, so the files currently present in `Plugins/` and `Libs/` are enabled. + +## Core +- BSIPA https://github.com/nike4613/BeatSaber-IPA-Reloaded +- SongCore https://github.com/Kylemc1413/SongCore + +## Essential +- BeatSaverDownloader https://github.com/Top-Cat/BeatSaverDownloader +- BeatSaverVoting https://github.com/Top-Cat/BeatSaverVoting +- PlaylistManager https://github.com/rithik-b/PlaylistManager +- BeatSaverUpdater https://github.com/ibillingsley/BeatSaverUpdater +- SiraLocalizer https://github.com/Auros/SiraLocalizer + +## Cosmetic +- AdBlocker https://github.com/JonnyVR1/AdBlocker +- HighlightBombs https://github.com/Meivyn/HighlightBombs + +## Library + +bs-manager installs these mostly as dependency closure. BeatMods records dependencies by mod-version id, so install planning needs to resolve the selected mod, then recursively add each dependency version before downloading zips from `zipHash`. + +- AssetBundleLoadingTools https://github.com/nicoco007/AssetBundleLoadingTools + - Required by: Vivify. +- BeatSaberMarkupLanguage https://github.com/monkeymanboy/BeatSaberMarkupLanguage + - Required by: most UI/config mods here, including SongCore, SiraUtil, PlaylistManager, BeatSaverDownloader, Chroma, Vivify, ScoreSaber, and BeatLeader. +- BeatSaberPlaylistsLib https://github.com/Meivyn/BeatSaberPlaylistsLib + - Required by: PlaylistManager. +- BeatSaverSharp https://github.com/lolPants/BeatSaverSharp + - Required by: BeatSaverDownloader, BeatSaverUpdater, DiTails, PlaylistManager. +- BS Utils https://github.com/Kylemc1413/Beat-Saber-Utils + - Required by: BeatSaverDownloader, BeatSaverVoting, BeatLeader. +- CameraUtils https://github.com/Reezonate/CameraUtils + - Required by: Vivify. +- CustomJSONData https://github.com/Aeroluna/CustomJSONData + - Required by: Chroma, Heck, NoodleExtensions, Vivify. +- Dynamic Bone https://assetstore.unity.com/packages/tools/animation/dynamic-bone-16743 + - BeatMods-managed library in this install, but no depender was found among the currently listed BeatMods-recognized mods. +- Final IK https://assetstore.unity.com/packages/tools/animation/final-ik-14290 + - BeatMods-managed library in this install, but no depender was found among the currently listed BeatMods-recognized mods. +- Heck https://github.com/Aeroluna/Heck + - Required by: Chroma, NoodleExtensions, Vivify. +- ImageSharp https://github.com/SixLabors/ImageSharp/ + - Required by: BeatSaberPlaylistsLib. +- Ini Parser https://github.com/rickyah/ini-parser + - Required by: BS Utils. +- LeaderboardCore https://github.com/NSGolova/LeaderboardCore + - Required by: BeatLeader. +- LookupID https://github.com/Aeroluna/Heck + - Required by: Chroma. +- OpenVR API https://github.com/nicoco007/BeatSaber-OpenVR-API + - Present in `Plugins/` as `OpenVRHelper.manifest`; no depender was found among the currently listed BeatMods-recognized mods. +- protobuf-net https://github.com/protobuf-net/protobuf-net + - Required by: SongDetailsCache. +- ScoreSaberSharp + - Required by: BeatSaverDownloader. +- SiraUtil https://github.com/Auros/SiraUtil + - Required by: most Sira/Auros-style mods here, including SongCore, PlaylistManager, SiraLocalizer, Chroma, NoodleExtensions, BeatLeader, ScoreSaber, and many UI/tweak mods. +- SongDetailsCache https://github.com/kinsi55/BeatSaber_SongDetails + - Required by: BetterSongList, SongRankedBadge. + +When a library package is installed by bs-manager, the payload usually lands in `Libs/`; several packages also leave a `.manifest` marker in `Plugins/`. `plugin-helper` should treat both files as part of the dependency package's install state, not as separate user-selected plugins. + +### .NET framework library assemblies + +These are BeatMods `library` records that bs-manager installs into `Libs/`, not normal Beat Saber plugin repos with GitHub releases. + +- System.IO.Compression https://github.com/mono/mono + - BeatMods library id 304. + - Provides stream compression/decompression classes. + - Installed file: `Libs/System.IO.Compression.dll`. +- System.IO.Compression.FileSystem https://github.com/microsoft/referencesource + - BeatMods library id 303. + - Provides the .NET Framework `ZipFile`/filesystem path helpers layered over `System.IO.Compression`. + - Installed file: `Libs/System.IO.Compression.FileSystem.dll`. + +For `plugin-helper` to reproduce bs-manager behavior, these should be modeled as special framework-library dependencies instead of GitHub-release plugins: + +- The dependency solver should be able to select BeatMods library ids 303 and 304 when another mod requires them, even though the BeatMods records do not expose normal version/download metadata in the 1.40.8 query. +- The installer should place the resolved DLLs in `Libs/`, never `Plugins/`. +- The install state should record them like any other installed file, including source, target path, size, and hash, so uninstall/rollback stays deterministic. +- The helper should not overwrite `Beat Saber_Data/Managed/System.IO.Compression*.dll`; those assemblies already exist in the game runtime and are a different size than the copies bs-manager put in `Libs/`. +- If a reusable source cannot be derived from BeatMods metadata, the registry needs an explicit rule or vendored/cache source for these two DLLs rather than a vague `dot.net` URL. + +## Practice +- IntroSkip https://github.com/Loloppe/Intro-Skip +- FailButton https://github.com/qe201020335/FailButton +- NoodleExtensions https://github.com/Aeroluna/NoodleExtensions +- Vivify https://github.com/Aeroluna/Vivify + +## UI +- HitScoreVisualizer https://github.com/ErisApps/HitScoreVisualizer +- WhyIsThereNoLeaderboard +- BetterSongList https://github.com/kinsi55/BeatSaber_BetterSongList +- DiTails https://github.com/Auros/DiTails/ +- HideTheLogo https://github.com/TheBlackParrot/HideTheLogo +- SongChartVisualizer https://github.com/NuggoDEV/SongChartVisualizer +- SongRankedBadge https://github.com/qe201020335/SongRankedBadge + +## Other +- BeatLeader https://github.com/BeatLeader/beatleader-mod +- ScoreSaber https://github.com/ScoreSaber/pc-mod + +## Tweaks +- EasyOffset https://github.com/Reezonate/EasyOffset +- GottaGoFast https://github.com/kinsi55/CS_BeatSaber_GottaGoFast +- HitsoundTweaks https://github.com/GalaxyMaster2/HitsoundTweaks +- KeepMyOverridesPls https://github.com/qqrz997/KeepMyOverridesPls +- SoundReplacer https://github.com/Meivyn/SoundReplacer + +## Lighting +- Chroma https://github.com/Aeroluna/Chroma +- PitchBlack https://github.com/Loloppe/BeatSaber_PitchBlack/ + +## Paid closed source + +### BeatSaberPlus +- BeatSaberPlus_Chat (`BeatSaberPlus_Chat.dll`) +- BeatSaberPlus_ChatEmoteRain (`BeatSaberPlus_ChatEmoteRain.dll`) +- BeatSaberPlus_ChatIntegrations (`BeatSaberPlus_ChatIntegrations.dll`) +- BeatSaberPlus_ChatRequest (`BeatSaberPlus_ChatRequest.dll`) +- BeatSaberPlus_GameTweaker (`BeatSaberPlus_GameTweaker.dll`) +- BeatSaberPlus_MenuMusic (`BeatSaberPlus_MenuMusic.dll`) +- BeatSaberPlus_Multiplayer (`BeatSaberPlus_Multiplayer.dll`) +- BeatSaberPlus_NoteTweaker (`BeatSaberPlus_NoteTweaker.dll`) +- BeatSaberPlus_SongChartVisualizer (`BeatSaberPlus_SongChartVisualizer.dll`) +- BeatSaberPlus_SongOverlay (`BeatSaberPlus_SongOverlay.dll`) + +### Naluluna +- NalulunaMenu (`NalulunaMenu.dll`) +- NalulunaCounters (`NalulunaCounters.dll`) +- NalulunaLevelDetail (`NalulunaLevelDetail.dll`) +- NalulunaSliceVisualizer (`NalulunaSliceVisualizer.dll`) +- NalulunaSongPreview (`NalulunaSongPreview.dll`) +- NalulunaMissIndicator (`NalulunaMissIndicator.dll`) +- NalulunaEnergy (`NalulunaEnergy.dll`) +- NalulunaFps (`NalulunaFps.dll`) +- NalulunaPPCoin (`NalulunaPPCoin.dll`) +- NalulunaRewinder (`NalulunaRewinder.dll`) +- NalulunaAvatars (`NalulunaAvatars.dll`) +- NalulunaShaders (`NalulunaShaders.dll`) +- NalulunaSkybox (`NalulunaSkybox.dll`, `NalulunaSkyboxSamples.manifest`) +- NalulunaUtils (`NalulunaUtils.dll`) + +These mods were installed manually, not from bs-manager. + +- ScoreSaber +- BeatLeader +- AccSaber +- ChatPlexSDK_BS +- Dimmer +- DiTails +- HideTheLogo +- HitsoundTweaks +- PitchBlack +- ReeCamera +- ReeSabers +- SoundReplacer +- BetterSongList +- Setlist +- SongChartVisualizer +- SongRankedBadge +- Chroma +- EasyOffset +- Custom Campaigns +- JDFixer +- KeepMyOverridesPls +- GottaGoFast +- KeyRemapper +- SquatToBegin +- wipbot