mirror of
https://github.com/ruvnet/RuView
synced 2026-08-02 19:11:46 +00:00
fix: implement 14 missing API endpoints, fix WebSocket connectivity, and replace 25 placeholder mobile tests
The web UI had persistent 404 errors on model, recording, and training endpoints, and the sensing WebSocket never connected on Dashboard/Live Demo tabs because sensingService.start() was only called lazily on Sensing tab visit. Server (main.rs): - Add 14 fully-functional Axum handlers: model CRUD (7), recording lifecycle (4), training control (3) - Scan data/models/ and data/recordings/ at startup - Recording writes CSI frames to .jsonl via tokio background task - Model load/unload lifecycle with state tracking Web UI (app.js): - Import and start sensingService early in initializeServices() so Dashboard and Live Demo tabs connect to /ws/sensing immediately Mobile (ws.service.ts): - Fix WebSocket URL builder to use same-origin port instead of hardcoded port 3001 Mobile (jest.config.js): - Fix testPathIgnorePatterns that was ignoring the entire test directory Mobile (25 test files): - Replace all it.todo() placeholder tests with real implementations covering components, services, stores, hooks, screens, and utils ADR-043 documents all changes. Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
// Pre-define globals that expo/src/winter/runtime.native.ts would lazily
|
||||
// install via require()-with-ESM-import, which jest 30 rejects.
|
||||
// By defining them upfront as non-configurable, the `install()` function
|
||||
// in installGlobal.ts will skip them with a console.error (which is harmless).
|
||||
const globalsToProtect = [
|
||||
'TextDecoder',
|
||||
'TextDecoderStream',
|
||||
'TextEncoderStream',
|
||||
'URL',
|
||||
'URLSearchParams',
|
||||
'__ExpoImportMetaRegistry',
|
||||
'structuredClone',
|
||||
];
|
||||
|
||||
for (const name of globalsToProtect) {
|
||||
if (globalThis[name] !== undefined) {
|
||||
// Already defined (e.g. Node provides URL, TextDecoder, structuredClone).
|
||||
// Make it non-configurable so expo's install() skips it.
|
||||
try {
|
||||
Object.defineProperty(globalThis, name, {
|
||||
value: globalThis[name],
|
||||
configurable: false,
|
||||
enumerable: true,
|
||||
writable: true,
|
||||
});
|
||||
} catch {
|
||||
// Already non-configurable, fine.
|
||||
}
|
||||
} else {
|
||||
// Not yet defined, set a stub value and make non-configurable.
|
||||
Object.defineProperty(globalThis, name, {
|
||||
value: name === '__ExpoImportMetaRegistry' ? { url: 'http://localhost:8081' } : undefined,
|
||||
configurable: false,
|
||||
enumerable: false,
|
||||
writable: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user