mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-15 17:12:59 -04:00
water my otter
This commit is contained in:
@@ -17,3 +17,4 @@ server/data/discord-guilds.json
|
||||
server/data/global-objective.json
|
||||
server/data/admin-reason.json
|
||||
server/data
|
||||
webui/package-lock.json
|
||||
|
||||
+8
-5
@@ -1,11 +1,14 @@
|
||||
1. FIX NO AUDIO DURING NOT YOUR TURN!!!
|
||||
2. make sure audio forwarding doesnt stop when you switch tabs
|
||||
3. add "reboot your own rover" feature
|
||||
1.
|
||||
4. add faster way for admins to login, like an invisible button in top left or something
|
||||
5. add discord bot typing thing for when someone requests a replay
|
||||
6. change replay title for ones requested from discord, something other than "requester driving rover"
|
||||
7. fix rover request spam queue cheat
|
||||
1. time delay and you can only do it if youre the only one on. server locks the rover then tells it to reboot
|
||||
4. add a clear socket disconnection indicator in the web UI
|
||||
5. add votekicking
|
||||
1. simply just disconnect the users socket.
|
||||
6. add faster way for admins to login, like an invisible button in top left or something
|
||||
7. add discord bot typing thing for when someone requests a replay
|
||||
8. change replay title for ones requested from discord, something other than "requester driving rover"
|
||||
9. fix rover request spam queue cheat
|
||||
|
||||
|
||||
# relative pipe dreams:
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -11,7 +11,7 @@
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||
<meta name="apple-mobile-web-app-title" content="Roomba Rover" />
|
||||
<title>Roomba Rover</title>
|
||||
<script type="module" crossorigin src="/assets/index-CboMb02p.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-BEU30yxg.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-BGy4iG0w.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Generated
+93
@@ -25,6 +25,7 @@
|
||||
"eslint-plugin-react-refresh": "^0.4.24",
|
||||
"globals": "^16.5.0",
|
||||
"postcss": "^8.5.6",
|
||||
"socket.io-client": "4.8.3",
|
||||
"tailwindcss": "^3.4.14",
|
||||
"vite": "^7.2.2"
|
||||
}
|
||||
@@ -1407,6 +1408,13 @@
|
||||
"win32"
|
||||
]
|
||||
},
|
||||
"node_modules/@socket.io/component-emitter": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz",
|
||||
"integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/babel__core": {
|
||||
"version": "7.20.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
|
||||
@@ -1994,6 +2002,30 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/engine.io-client": {
|
||||
"version": "6.6.5",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.5.tgz",
|
||||
"integrity": "sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.4.1",
|
||||
"engine.io-parser": "~5.2.1",
|
||||
"ws": "~8.20.1",
|
||||
"xmlhttprequest-ssl": "~2.1.1"
|
||||
}
|
||||
},
|
||||
"node_modules/engine.io-parser": {
|
||||
"version": "5.2.3",
|
||||
"resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz",
|
||||
"integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.25.12",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz",
|
||||
@@ -3661,6 +3693,36 @@
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-client": {
|
||||
"version": "4.8.3",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.3.tgz",
|
||||
"integrity": "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.4.1",
|
||||
"engine.io-client": "~6.6.1",
|
||||
"socket.io-parser": "~4.2.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/socket.io-parser": {
|
||||
"version": "4.2.6",
|
||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz",
|
||||
"integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@socket.io/component-emitter": "~3.1.0",
|
||||
"debug": "~4.4.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
|
||||
@@ -4192,6 +4254,37 @@
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/ws": {
|
||||
"version": "8.20.1",
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz",
|
||||
"integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"bufferutil": "^4.0.1",
|
||||
"utf-8-validate": ">=5.0.2"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"bufferutil": {
|
||||
"optional": true
|
||||
},
|
||||
"utf-8-validate": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/xmlhttprequest-ssl": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz",
|
||||
"integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
|
||||
@@ -34,17 +34,18 @@ export default function RoverMediaPlayer({
|
||||
);
|
||||
const hasAudio = Boolean(rosterEntry?.media?.audioPublishUrl);
|
||||
const autoVideoEnabled = videoMode ? videoMode === 'whep' : true;
|
||||
const autoAudioEnabled = hasAudio;
|
||||
const autoEntries = useMemo(() => {
|
||||
if (!effectiveRoverId || !autoVideoEnabled) return [];
|
||||
if (!effectiveRoverId) return [];
|
||||
return [
|
||||
{ type: 'rover', id: effectiveRoverId, key: effectiveRoverId },
|
||||
...(hasAudio
|
||||
...(autoVideoEnabled ? [{ type: 'rover', id: effectiveRoverId, key: effectiveRoverId }] : []),
|
||||
...(autoAudioEnabled
|
||||
? [{ type: 'rover', id: `${effectiveRoverId}-audio`, key: `${effectiveRoverId}-audio` }]
|
||||
: []),
|
||||
];
|
||||
}, [effectiveRoverId, autoVideoEnabled, hasAudio]);
|
||||
}, [effectiveRoverId, autoVideoEnabled, autoAudioEnabled]);
|
||||
const autoSources = useVideoRequests(autoEntries, {
|
||||
enabled: Boolean(effectiveRoverId && autoVideoEnabled),
|
||||
enabled: Boolean(effectiveRoverId && (autoVideoEnabled || autoAudioEnabled)),
|
||||
version: mode,
|
||||
});
|
||||
const resolvedSessionInfo =
|
||||
@@ -435,8 +436,10 @@ export default function RoverMediaPlayer({
|
||||
.play()
|
||||
.then(() => {
|
||||
logAudio('retry/play-ok');
|
||||
setAudioStatus((prev) => (prev === 'connected' ? 'playing' : prev));
|
||||
setAudioDetail((prev) => (prev === 'paused' ? null : prev));
|
||||
setAudioStatus((prev) =>
|
||||
['error', 'failed', 'disconnected', 'closed'].includes(prev) ? prev : 'playing',
|
||||
);
|
||||
setAudioDetail(null);
|
||||
})
|
||||
.catch((err) => {
|
||||
logAudio('retry/play-fail', { error: err?.message });
|
||||
@@ -519,7 +522,7 @@ export default function RoverMediaPlayer({
|
||||
const renderedAudioStatus = resolvedAudioSessionInfo?.error
|
||||
? `Error: ${resolvedAudioSessionInfo.error}`
|
||||
: !resolvedAudioSessionInfo?.url
|
||||
? null
|
||||
? 'waiting'
|
||||
: audioStatus === 'error'
|
||||
? `Error: ${audioDetail || 'unknown'}`
|
||||
: audioDetail
|
||||
@@ -528,7 +531,7 @@ export default function RoverMediaPlayer({
|
||||
const showConnectingOverlay =
|
||||
!usingSnapshot &&
|
||||
!resolvedSessionInfo?.error &&
|
||||
['idle', 'new', 'connecting'].includes(status);
|
||||
status !== 'playing';
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user