Repository navigation
v1.0.66
Added
- Discord Activity (live VRChat status panel) + an official shared Discord bot mode,
backed by a new standalone backend service that lives on its own branch in this repo
(feature/discord-backend-server,
its ownpackage.json/Docker deployment) rather than as a subfolder of the Electron app —
it's never bundled into an installer. This exists because a bot token — and the OAuth client
secret needed to identify users — can never be safely shipped inside a distributed Electron
app (the asar is trivially unpackable), so both now live only on this backend, which the
desktop app talks to over an authenticated HTTP API instead.- The backend runs a persistent
discord.jsgateway connection for the shared bot
(discordBotGateway.js), a Discord OAuth2 "identify" code exchange that never leaves the
server (auth.js,routes/oauth.js), a live VRChat status feed pushed by each desktop
client and re-filtered server-side through the same join/active/ask/busy privacy gate
already used for Rich Presence (statusStore.js,routes/status.js), and a static
Discord Activity iframe frontend (public/activity/) using@discord/embedded-app-sdk. - Electron gained a "Log in with Discord" flow (
modules/oauth/providers/discordIdentity.js,
modeled on the existing Twitch loopback OAuth pattern), a periodic status pusher
(modules/integrations/discord/statusPush.js, fed by a newgetVrcContextSnapshot()getter
ondiscord.jsso it reuses rather than re-derives the existing Rich Presence data), and an
"official bot" mode on the Voice Bot card (discordBot.js's newstartOfficialBot/
stopOfficialBot/setMuteOfficial/setDeafOfficial) that polls the backend instead of
running a local token-based gateway client, producing the identical state shape so the
existing OSC/chatbox pipeline needed no changes. - Defaults to the official
https://nekosuneappsvrc.nekosunevr.co.ukdeployment
(DEFAULT_NEKOSUNE_BACKEND_URLinmain.js), but — unlike the locked RPC app ID — this is
intentionally user-overridable: a new "Backend URL" field on the Voice Bot card
(nekosuneBackendUrlsetting) lets self-hosters point the app at their own deployment
instead, since a self-hoster runs their own bot/OAuth app entirely and needs nothing from
the official one. - Not deployed by this session — implemented and locally verified in isolation (backend
routes exercised directly over HTTP; every changed/new file passednode --checkand a
plain-Node require-resolution check), but end-to-end use requires actually deploying the
official host, filling in that branch's.envsecrets, and one-time Discord Developer
Portal setup (OAuth redirect + Activities URL Mapping) documented in that branch's
README.md.
- The backend runs a persistent
Changed
- Discord Rich Presence Application ID is now fixed and no longer user-editable. Previously
the "Discord Application (Client) ID" field defaulted to a shipped ID but users could freely
edit or clear it. It's now pinned to1534208250046578790at every layer — the input in the
Discord tab (index.html) is disabled/readonly,renderer.jsforces the saved config and every
outgoingdiscord:startpayload to this ID regardless of what's stored, andmain.js's
discord:startIPC handler overwritesclientIdon the way intostartDiscord()as a final
backstop. The Discord Voice Bot's separate "Application ID (for invite)" field is unaffected —
that's an optional user-supplied bot app ID, unrelated to Rich Presence.
Fixed
- "Invite link" on the Voice Bot card always showed "Connect first, or enter the Application
ID..." when the official NekoSuneAPPS bot mode was selected, even though that message only
makes sense for the bring-your-own-bot mode. Root cause: the button's click handler always
called the own-botapi.botInvite()path regardless of which mode was active, and the
official bot mode never setsdiscordBot.js's internalappId(that only gets set by a real
gateway login, which official mode doesn't do). Fixed by branching on the selected mode: in
official mode, the button now opens the backend's web dashboard
(<backend URL>/dashboard, newnekosune:getBackendUrlIPC handler +api.openExternal) in
the system browser instead, since that's the actual way to add the official bot to a server.
📦 Downloads
- Windows:
NekoSuneAPPS-Setup-1.0.66.exe(installer) or.msi - Linux (x64):
.AppImage/.deb - Linux (arm64):
.AppImage/.deb
Installers are unsigned, so Windows SmartScreen may warn on first run — click More info → Run anyway.
🛡️ VirusTotal
- NekoSuneAPPS-Setup-1.0.66.exe: 0/47 engines flagged something — full report
- NekoSuneAPPS-Setup-1.0.66.msi: 0/51 engines flagged something — full report
What's Changed
- Lock Discord RPC app ID; add official bot/Activity client support by @NekoSuneVR in https://github.com/NekoSuneProjects/NekoSuneAPPS/pull/11
Full Changelog: NekoSuneProjects/NekoSuneAPPS@v1.0.65...v1.0.66