From 2144463c50ff3dbaad4edb7f658dded00412ec0c Mon Sep 17 00:00:00 2001 From: smartfrigde <37928912+smartfrigde@users.noreply.github.com> Date: Fri, 2 Jan 2026 14:40:24 +0100 Subject: [PATCH] chore: update arRPC --- assets/lang/en-US.json | 6 +++ package.json | 2 +- pnpm-lock.yaml | 18 ++++----- src/@types/settings.d.ts | 3 ++ src/common/config.ts | 3 ++ src/discord/rpcProcess.ts | 11 +++++- src/rpc.ts | 7 +++- src/shelter/settings/pages/SettingsPage.tsx | 43 ++++++++++++++++----- 8 files changed, 71 insertions(+), 22 deletions(-) diff --git a/assets/lang/en-US.json b/assets/lang/en-US.json index 7180b58c..86b6b388 100644 --- a/assets/lang/en-US.json +++ b/assets/lang/en-US.json @@ -62,6 +62,12 @@ "settings-noBundleUpdates-desc": "Disables automatic updates for client mods.", "settings-hardwareAcceleration": "Hardware acceleration", "settings-hardwareAcceleration-desc": "Hardware acceleration uses your GPU to make Legcord run faster. If you're experiencing visual glitches, try disabling this.", + "settings-processScanning": "Process scanning", + "settings-processScanning-desc": "Enables scanning for running games to improve Rich Presence detection.", + "settings-windowsLegacyScanning": "Windows legacy scanning", + "settings-windowsLegacyScanning-desc": "Uses legacy method for scanning processes on Windows (pre v1.1.6). May improve compatibility on some systems but is less efficient.", + "settings-scanInterval": "Scan interval (ms)", + "settings-scanInterval-desc": "Sets how often (in milliseconds) the process scanning occurs. Lower values may improve detection speed but can increase CPU usage.", "settings-blockPowerSavingInVoiceChat": "Block power saving in voice chat", "settings-blockPowerSavingInVoiceChat-desc": "Prevent Legcord from being suspended. Keeps system active but allows screen to be turned off.", "settings-mobileMode": "Mobile mode", diff --git a/package.json b/package.json index f8ad0f5d..330d99ff 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "xml-formatter": "^3.6.6" }, "dependencies": { - "arrpc": "https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007", + "arrpc": "https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1", "electron-context-menu": "^4.0.4", "electron-is-dev": "^3.0.1", "electron-updater": "^6.6.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 53dac3a9..20c95190 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: arrpc: - specifier: https://github.com/Legcord/arrpc.git#015c803a80288e3345ec55f8963015a626509007 - version: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007 + specifier: https://github.com/Legcord/arrpc.git#f7ab641ad3386d44364e227d97ba0dc847de08d1 + version: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1 electron-context-menu: specifier: ^4.0.4 version: 4.0.4 @@ -1369,8 +1369,8 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: - resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007} + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: + resolution: {tarball: https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1} version: 3.5.0 hasBin: true @@ -2229,8 +2229,8 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - koffi@2.12.0: - resolution: {integrity: sha512-J886y/bvoGG4ZhMVstB2Nh6/q9tzAYn0kaH7Ss8DWavGIxP5jOLzUY9IZzw9pMuXArj0SLSpl0MYsKRURPAv7g==} + koffi@2.15.0: + resolution: {integrity: sha512-174BTuWK7L42Om7nDWy9YOTXj6Dkm14veuFf5yhVS5VU6GjtOI1Wjf+K16Z0JvSuZ3/NpkVzFBjE1oKbthTIEA==} lazy-val@1.0.5: resolution: {integrity: sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q==} @@ -4495,9 +4495,9 @@ snapshots: array-union@2.1.0: {} - arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/015c803a80288e3345ec55f8963015a626509007: + arrpc@https://codeload.github.com/Legcord/arrpc/tar.gz/f7ab641ad3386d44364e227d97ba0dc847de08d1: dependencies: - koffi: 2.12.0 + koffi: 2.15.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -5553,7 +5553,7 @@ snapshots: dependencies: json-buffer: 3.0.1 - koffi@2.12.0: {} + koffi@2.15.0: {} lazy-val@1.0.5: {} diff --git a/src/@types/settings.d.ts b/src/@types/settings.d.ts index a585f811..b5a05be6 100644 --- a/src/@types/settings.d.ts +++ b/src/@types/settings.d.ts @@ -66,5 +66,8 @@ export interface Settings { additionalArguments: string; noBundleUpdates: boolean; overlayButtonColor: string; + processScanning: boolean; + windowsLegacyScanning: boolean; + scanInterval: number; modCache?: Record; } diff --git a/src/common/config.ts b/src/common/config.ts index a2ea050e..21735678 100644 --- a/src/common/config.ts +++ b/src/common/config.ts @@ -10,6 +10,9 @@ const defaults: Settings = { bounceOnPing: false, legcordCSP: true, minimizeToTray: true, + processScanning: true, + windowsLegacyScanning: false, + scanInterval: 5000, overlayButtonColor: "#121214", keybinds: [], audio: { diff --git a/src/discord/rpcProcess.ts b/src/discord/rpcProcess.ts index 575a5096..23286f95 100644 --- a/src/discord/rpcProcess.ts +++ b/src/discord/rpcProcess.ts @@ -1,5 +1,6 @@ import path from "node:path"; import { type BrowserWindow, utilityProcess } from "electron"; +import { getConfig } from "../common/config.js"; import { getDetectables } from "../common/detectables.js"; import { createInviteWindow } from "./window.js"; @@ -8,7 +9,15 @@ export let processList = []; export function startRPC(window: BrowserWindow) { child = utilityProcess.fork(path.join(import.meta.dirname, "rpc.js"), undefined, { - env: { detectables: JSON.stringify(getDetectables()) }, + env: { + detectables: JSON.stringify(getDetectables()), + settings: JSON.stringify({ + processScanning: getConfig("processScanning"), + windowsLegacyScanning: getConfig("windowsLegacyScanning"), + scanInterval: getConfig("scanInterval"), + }), + }, + serviceName: "legcord-rpc", }); child.on("spawn", () => { diff --git a/src/rpc.ts b/src/rpc.ts index 3ed3d607..4b593ac6 100644 --- a/src/rpc.ts +++ b/src/rpc.ts @@ -1,10 +1,13 @@ // this file is executed in the utility process // check window.ts for more details // see more here https://www.electronjs.org/docs/latest/api/utility-process -import RPCServer, { type GameList } from "arrpc"; +import RPCServer, { type ServerSettings, type GameList } from "arrpc"; const detectables: GameList = process.env.detectables ? JSON.parse(process.env.detectables) : []; -const RPC = new RPCServer(detectables); +const settings: ServerSettings = process.env.settings + ? JSON.parse(process.env.settings) + : { processScanning: true, windowsLegacyScanning: false, scanInterval: 5000 }; +const RPC = new RPCServer(detectables, settings); RPC.on("activity", (data: string) => { console.log(data); diff --git a/src/shelter/settings/pages/SettingsPage.tsx b/src/shelter/settings/pages/SettingsPage.tsx index 670660cb..10751ac5 100644 --- a/src/shelter/settings/pages/SettingsPage.tsx +++ b/src/shelter/settings/pages/SettingsPage.tsx @@ -1,7 +1,6 @@ import { Show } from "solid-js"; import type { Settings } from "../../../@types/settings.js"; import { DropdownItem } from "../components/DropdownItem.jsx"; -import { HeroUpdater } from "../components/HeroUpdater.jsx"; import { TextBoxItem } from "../components/TextBoxItem.jsx"; import { setConfig, toggleMod } from "../settings.js"; import classes from "./SettingsPage.module.css"; @@ -16,7 +15,6 @@ const settings = store.settings as Settings; export function SettingsPage() { return ( <> -
{store.i18n["settings-category-mods"]}
@@ -41,13 +39,6 @@ export function SettingsPage() { > Equicord - setConfig("inviteWebsocket", e, true)} - > - {store.i18n["settings-invitewebsocket"]} - setConfig("windowStyle", v as Settings["windowStyle"], true)} @@ -262,6 +253,40 @@ export function SettingsPage() { > {store.i18n["settings-sleepInBackground"]} +
+ arRPC +
+ setConfig("inviteWebsocket", e, true)} + > + {store.i18n["settings-invitewebsocket"]} + + + setConfig("processScanning", e, true)} + > + {store.i18n["settings-processScanning"]} + + + setConfig("windowsLegacyScanning", e, true)} + > + {store.i18n["settings-windowsLegacyScanning"]} + + + setConfig("scanInterval", Number(v))} + /> +
{store.i18n["settings-category-debug"]}