diff --git a/app/package.json b/app/package.json
index d0d3f9d..b53ed0e 100644
--- a/app/package.json
+++ b/app/package.json
@@ -5,7 +5,9 @@
"type": "module",
"scripts": {
"dev": "vite",
- "build": "vite build",
+ "dev:mock": "vite --mode MOCK",
+ "build": "cross-env FOR_EMBEDDED=true vite build",
+ "build:web": "cross-env FOR_EMBEDDED=false vite build --mode WEB",
"preview": "vite preview",
"check": "svelte-check --tsconfig ./tsconfig.json",
"format": "prettier --plugin-search-dir . --write ."
@@ -17,6 +19,7 @@
"@typescript-eslint/eslint-plugin": "^6.20.0",
"@typescript-eslint/parser": "^6.20.0",
"autoprefixer": "^10.4.17",
+ "cross-env": "^7.0.3",
"husky": "^9.0.7",
"lint-staged": "^15.2.0",
"postcss": "^8.4.33",
diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml
index 133aa9d..9211806 100644
--- a/app/pnpm-lock.yaml
+++ b/app/pnpm-lock.yaml
@@ -43,6 +43,9 @@ devDependencies:
autoprefixer:
specifier: ^10.4.17
version: 10.4.17(postcss@8.4.33)
+ cross-env:
+ specifier: ^7.0.3
+ version: 7.0.3
husky:
specifier: ^9.0.7
version: 9.0.7
@@ -989,6 +992,14 @@ packages:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
+ /cross-env@7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+ dependencies:
+ cross-spawn: 7.0.3
+ dev: true
+
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
diff --git a/app/src/App.svelte b/app/src/App.svelte
index 0de1362..448f0fe 100644
--- a/app/src/App.svelte
+++ b/app/src/App.svelte
@@ -4,16 +4,19 @@
import TopBar from './components/TopBar.svelte';
import { connect } from './lib/socket';
import Controller from './routes/Controller.svelte';
- import Config from './routes/Config.svelte';
- import Health from './routes/SystemHealth.svelte';
- import location from './lib/location';
- import Sidebar from './components/Sidebar.svelte';
import FileCache from './lib/cache';
+ import { socketLocation } from './lib/location';
+ import Settings from './routes/Settings.svelte';
+ import { jointNames, model } from './lib/store';
+ import { loadModelAsync } from './lib/modelLoader';
- export let url = window.location.pathname;
- onMount(() => {
- connect(`ws://${location}`);
+ export let url = window.location.pathname
+ onMount(async () => {
+ connect(socketLocation);
registerFetchIntercept()
+ const [urdf, JOINT_NAME] = await loadModelAsync('/spot_micro.urdf.xacro')
+ jointNames.set(JOINT_NAME)
+ model.set(urdf)
});
const registerFetchIntercept = () => {
@@ -21,9 +24,9 @@
window.fetch = async (...args) => {
const [resource, config] = args;
await FileCache.openDatabase();
- let file;
+ let file: BodyInit | Uint8Array | undefined | null;
try {
- file = await FileCache.getFile(resource.url);
+ file = await FileCache.getFile(resource.toString());
} catch (error) {
console.log(error);
}
@@ -37,10 +40,8 @@