Compare commits

...

15 Commits

Author SHA1 Message Date
Zagrios 38282dd1e7 todo 2025-06-13 19:27:09 +02:00
Zagrios 9d945cdcfb update deps 2025-06-11 14:58:36 +02:00
Zagrios 5ea12c2c3a Merge branch 'master' of https://github.com/Zagrios/bs-manager 2025-06-10 14:49:01 +02:00
Zagrios 0a30867a12 add patreon 2025-06-10 14:48:59 +02:00
silentrald f46fee7ee7 [fix] handle downloadMap error within downloadPlaylistSongs (#873) 2025-06-10 14:47:23 +02:00
silentrald ed5f8fb073 [fix/634] fixed issue on hovering on last song element (#876)
* [fix/634] fixed issue on hovering on last song element

* restore itemHeight and add a bottom padding

---------

Co-authored-by: Zagrios <40181755+Zagrios@users.noreply.github.com>
2025-06-10 14:32:09 +02:00
Sapphire dfe63e525e [bugfix] Fix mod installation on NixOS (#870)
* fix(services/bs-mods-manager): inherit env on linux when starting bsipa

* fix(services/linux,bs-mods-manager): use proton wine on nixos
2025-06-08 15:43:06 +02:00
Vojtak42 207d3c782e Press CTRL+R after opening developer tools (#867) 2025-06-08 15:40:52 +02:00
Iluhadesu 56b462ad8a Set recommended version to 1.40.6 2025-06-05 17:24:06 +00:00
Iluhadesu 2e85c62c02 Add v1.40.6 to bs-versions.json 2025-06-05 15:49:22 +00:00
Zagrios 7fcef774a8 Merge branch 'master' of https://github.com/Zagrios/bs-manager 2025-05-27 12:06:24 +02:00
Zagrios 5337c4a61f update patreon 2025-05-27 12:06:22 +02:00
Iluhadesu ed158f55c5 Change recommanded version to 1.40.5 2025-05-18 18:48:58 +00:00
Iluhadesu 568ad7d051 Fix bs-versions.json 2025-05-15 15:20:22 +00:00
Iluhadesu e1ca8dbf99 Add versary to bs-versions.json 2025-05-15 15:12:53 +00:00
10 changed files with 85 additions and 47 deletions
+19 -1
View File
@@ -847,7 +847,25 @@
"ReleaseURL": "https://steamcommunity.com/games/620980/announcements/detail/510702041542166484",
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/c27dac7f96e53672d020d97838cec1d5d28e3180.png",
"ReleaseDate": "1743515622",
"year": "2025"
},
{
"BSVersion": "1.40.5",
"BSManifest": "2447038720841508806",
"OculusBinaryId": "9120095564756808",
"ReleaseURL": "https://steamcommunity.com/games/620980/announcements/detail/502825275922317447",
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/2b5845893d915902106aaf30b6d1a95f68a4b226.png",
"ReleaseDate": "1747321305",
"year": "2025"
},
{
"BSVersion": "1.40.6",
"BSManifest": "3050696685250334115",
"OculusBinaryId": "9315734585192904",
"ReleaseURL": "https://steamcommunity.com/games/620980/announcements/detail/510708375093248769",
"ReleaseImg": "https://clan.fastly.steamstatic.com/images/32055887/0f658ed39f480446e0dc5807b1591e8a18aef2f5.png",
"ReleaseDate": "1749135144",
"year": "2025",
"recommended": true
}
]
]
+8
View File
@@ -161,6 +161,14 @@
},
{
"username": "KingCrocman",
"type": "diamond",
"link": "https://www.youtube.com/KingCrocman"
},
{
"username": "bosspie",
"type": "diamond"
},
{
"username": "Camryn Jackson"
}
]
@@ -30,11 +30,12 @@
In the developer tools:
1. Open the __`Network`__ tab.
2. Filter for __`graph`__.
3. Click on the first request that appears.
4. Open the __`Payload`__ tab.
5. Scroll to the bottom to locate your token. It should start with __`FRL`__.
6. Select the token using your mouse and press `Ctrl` + `C` to copy it.
2. Press CTRL+R.
3. Filter for __`graph`__.
4. Click on the first request that appears.
5. Open the __`Payload`__ tab.
6. Scroll to the bottom to locate your token. It should start with __`FRL`__.
7. Select the token using your mouse and press `Ctrl` + `C` to copy it.
<div align="center">
<img src="../wiki/Guides/Login/How-to-obtain-your-Oculus-Token/GetYourOculusToken.png" alt="GetYourOculusToken.png" />
+27 -27
View File
@@ -1,12 +1,12 @@
{
"name": "bs-manager",
"version": "1.5.2",
"version": "1.5.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "bs-manager",
"version": "1.5.2",
"version": "1.5.3",
"hasInstallScript": true,
"license": "GPL-3.0-only",
"dependencies": {
@@ -27,7 +27,7 @@
"electron-updater": "^6.3.9",
"fast-deep-equal": "^3.1.3",
"format-duration": "^3.0.2",
"framer-motion": "^12.6.3",
"framer-motion": "^12.17.0",
"fs-extra": "^11.3.0",
"global-agent": "^3.0.0",
"got": "^14.4.7",
@@ -37,7 +37,7 @@
"node-abi": "^4.2.0",
"node-fetch": "^3.3.2",
"pako": "^2.1.0",
"protobufjs": "^7.4.0",
"protobufjs": "^7.5.3",
"qrcode.react": "^4.2.0",
"query-process": "^0.0.3",
"react": "^18.2.0",
@@ -52,7 +52,7 @@
"rfdc": "^1.4.1",
"rxjs": "^7.8.2",
"sanitize-filename": "^1.6.3",
"semver": "^7.7.1",
"semver": "^7.7.2",
"serialize-error": "^12.0.0",
"striptags": "^4.0.0-alpha.4",
"tailwind-merge": "^3.0.2",
@@ -105,7 +105,7 @@
"css-loader": "^6.10.0",
"css-minimizer-webpack-plugin": "^6.0.0",
"detect-port": "^1.5.1",
"electron": "^35.1.4",
"electron": "^36.4.0",
"electron-builder": "^25.1.8",
"electron-devtools-installer": "^4.0.0",
"electronmon": "^2.0.3",
@@ -11870,9 +11870,9 @@
}
},
"node_modules/electron": {
"version": "35.1.4",
"resolved": "https://registry.npmjs.org/electron/-/electron-35.1.4.tgz",
"integrity": "sha512-8HjE2wqxY//T09Of8k1eTpK/NeTG2FkTyRD+fyKXmec4wZVscGgZcmWFC0HYN4ktyHAjtplpxdFXjtqRnvzBMg==",
"version": "36.4.0",
"resolved": "https://registry.npmjs.org/electron/-/electron-36.4.0.tgz",
"integrity": "sha512-LLOOZEuW5oqvnjC7HBQhIqjIIJAZCIFjQxltQGLfEC7XFsBoZgQ3u3iFj+Kzw68Xj97u1n57Jdt7P98qLvUibQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -14433,13 +14433,13 @@
}
},
"node_modules/framer-motion": {
"version": "12.6.3",
"resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.6.3.tgz",
"integrity": "sha512-2hsqknz23aloK85bzMc9nSR2/JP+fValQ459ZTVElFQ0xgwR2YqNjYSuDZdFBPOwVCt4Q9jgyTt6hg6sVOALzw==",
"version": "12.17.0",
"resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.17.0.tgz",
"integrity": "sha512-2hISKgDk49yCLStwG1wf4Kdy/D6eBw9/eRNaWFIYoI9vMQ/Mqd1Fz+gzVlEtxJmtQ9y4IWnXm19/+UXD3dAYAA==",
"license": "MIT",
"dependencies": {
"motion-dom": "^12.6.3",
"motion-utils": "^12.6.3",
"motion-dom": "^12.17.0",
"motion-utils": "^12.12.1",
"tslib": "^2.4.0"
},
"peerDependencies": {
@@ -19233,18 +19233,18 @@
}
},
"node_modules/motion-dom": {
"version": "12.6.3",
"resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.6.3.tgz",
"integrity": "sha512-gRY08RjcnzgFYLemUZ1lo/e9RkBxR+6d4BRvoeZDSeArG4XQXERSPapKl3LNQRu22Sndjf1h+iavgY0O4NrYqA==",
"version": "12.17.0",
"resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.17.0.tgz",
"integrity": "sha512-FA6/c70R9NKs3g41XDVONzmUUrEmyaifLVGCWtAmHP0usDnX9W+RN/tmbC4EUl0w6yLGvMTOwnWCFVgA5luhRg==",
"license": "MIT",
"dependencies": {
"motion-utils": "^12.6.3"
"motion-utils": "^12.12.1"
}
},
"node_modules/motion-utils": {
"version": "12.6.3",
"resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.6.3.tgz",
"integrity": "sha512-R/b3Ia2VxtTNZ4LTEO5pKYau1OUNHOuUfxuP0WFCTDYdHkeTBR9UtxR1cc8mDmKr8PEhmmfnTKGz3rSMjNRoRg==",
"version": "12.12.1",
"resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.12.1.tgz",
"integrity": "sha512-f9qiqUHm7hWSLlNW8gS9pisnsN7CRFRD58vNjptKdsqFLpkVnX00TNeD6Q0d27V9KzT7ySFyK1TZ/DShfVOv6w==",
"license": "MIT"
},
"node_modules/mrmime": {
@@ -21153,9 +21153,9 @@
}
},
"node_modules/protobufjs": {
"version": "7.4.0",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz",
"integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
"version": "7.5.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz",
"integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==",
"hasInstallScript": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -22470,9 +22470,9 @@
}
},
"node_modules/semver": {
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
+4 -4
View File
@@ -108,7 +108,7 @@
"css-loader": "^6.10.0",
"css-minimizer-webpack-plugin": "^6.0.0",
"detect-port": "^1.5.1",
"electron": "^35.1.4",
"electron": "^36.4.0",
"electron-builder": "^25.1.8",
"electron-devtools-installer": "^4.0.0",
"electronmon": "^2.0.3",
@@ -170,7 +170,7 @@
"electron-updater": "^6.3.9",
"fast-deep-equal": "^3.1.3",
"format-duration": "^3.0.2",
"framer-motion": "^12.6.3",
"framer-motion": "^12.17.0",
"fs-extra": "^11.3.0",
"global-agent": "^3.0.0",
"got": "^14.4.7",
@@ -180,7 +180,7 @@
"node-abi": "^4.2.0",
"node-fetch": "^3.3.2",
"pako": "^2.1.0",
"protobufjs": "^7.4.0",
"protobufjs": "^7.5.3",
"qrcode.react": "^4.2.0",
"query-process": "^0.0.3",
"react": "^18.2.0",
@@ -195,7 +195,7 @@
"rfdc": "^1.4.1",
"rxjs": "^7.8.2",
"sanitize-filename": "^1.6.3",
"semver": "^7.7.1",
"semver": "^7.7.2",
"serialize-error": "^12.0.0",
"striptags": "^4.0.0-alpha.4",
"tailwind-merge": "^3.0.2",
@@ -359,7 +359,18 @@ export class LocalPlaylistsManagerService {
continue;
}
const downloadedMap = await this.maps.downloadMap(mapDetail, version);
const downloadedMap = await this.maps.downloadMap(mapDetail, version)
.catch(error => {
log.error(
"Could not download map for playlist",
`[${mapDetail.id}] "${mapDetail.name}"`,
error
);
return null;
});
if (!downloadedMap) {
continue;
}
progress.data.downloadedMaps.push(downloadedMap);
progress.data.currentDownload = mapDetail;
+1 -6
View File
@@ -129,12 +129,7 @@ export class LinuxService {
return fs.pathExistsSync(protonPath) && fs.pathExistsSync(winePath);
}
public async getWinePath(): Promise<string> {
if (await this.isNixOS()) {
// Use system wine for nixos
return "wine";
}
public getWinePath(): string {
if (!this.staticConfig.has("proton-folder")) {
throw new Error("proton-folder variable not set");
}
@@ -38,6 +38,7 @@ export class BeatModsApiService {
}
private getVersionModsUrl(version: BSVersion): string {
// TODO: This endpoint is now deprecated
const platform: BbmPlatform = version.oculus || version.metadata?.store === BsStore.OCULUS ? BbmPlatform.OculusPC : BbmPlatform.SteamPC;
return `${this.MODS_REPO_API_URL}/mods?status=verified&gameVersion=${version.BSVersion}&gameName=BeatSaber&platform=${platform}`;
}
@@ -162,18 +162,22 @@ export class BsModsManagerService {
let winePath: string = "";
if (process.platform === "linux") {
const { error: winePathError, result: winePathResult } =
await tryit(async () => this.linuxService.getWinePath());
tryit(() => this.linuxService.getWinePath());
if (winePathError) {
log.error(winePathError);
return false;
}
winePath = `"${winePathResult}"`;
winePath = await this.linuxService.isNixOS()
? `steam-run "${winePathResult}"`
: `"${winePathResult}"`;
const winePrefix = this.linuxService.getWinePrefixPath();
if (!winePrefix) {
throw new CustomError("Could not find BSManager WINEPREFIX path", "no-wineprefix");
}
env.WINEPREFIX = winePrefix;
Object.assign(env, process.env);
}
return new Promise<boolean>(resolve => {
@@ -249,7 +249,7 @@ export const LocalMapsListPanel = forwardRef<unknown, Props>(({
return (
<VirtualScroll
classNames={{ mainDiv: className, rows: "gap-x-2 px-2 py-2" }}
classNames={{ mainDiv: className, rows: "gap-x-2 px-2 pt-2 pb-[108px]" }}
itemHeight={108}
maxColumns={3}
minItemWidth={400}