frontend fixes & db rewrite with serde
This commit is contained in:
parent
61b7a79455
commit
091a41ac33
37 changed files with 910 additions and 663 deletions
1077
frontend/package-lock.json
generated
1077
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,15 +1,13 @@
|
|||
{
|
||||
"name": "jarvis-app",
|
||||
"private": true,
|
||||
"version": "0.0.3",
|
||||
"version": "0.1.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "routify -c dev:vite",
|
||||
"dev:routify": "routify",
|
||||
"dev:vite": "vite",
|
||||
"build": "svelte-check && routify -b && vite build",
|
||||
"dev": "vite",
|
||||
"build": "svelte-check --ignore '.routify' --no-tsconfig && vite build",
|
||||
"preview": "vite preview",
|
||||
"check": "svelte-check --tsconfig ./tsconfig.json",
|
||||
"check": "svelte-check --ignore '.routify' --tsconfig ./tsconfig.json",
|
||||
"tauri": "tauri"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
@ -17,26 +15,27 @@
|
|||
"@svelteuidev/core": "^0.15.7",
|
||||
"@svelteuidev/motion": "^0.15.7",
|
||||
"@tauri-apps/api": "^2",
|
||||
"@tauri-apps/plugin-shell": "^2",
|
||||
"@tauri-apps/plugin-dialog": "^2",
|
||||
"@tauri-apps/plugin-fs": "^2",
|
||||
"@tauri-apps/plugin-shell": "^2",
|
||||
"howler": "^2.2.4",
|
||||
"radix-icons-svelte": "^1.2.1",
|
||||
"worker-timers": "^8.0.27"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@roxi/routify": "^3.6.4",
|
||||
"@sveltejs/vite-plugin-svelte": "^6.2.1",
|
||||
"@sveltejs/vite-plugin-svelte": "^3.1.0",
|
||||
"@tauri-apps/cli": "^2",
|
||||
"@tsconfig/svelte": "^5.0.6",
|
||||
"@types/howler": "^2.2.12",
|
||||
"@types/node": "^25.0.3",
|
||||
"sass": "^1.97.1",
|
||||
"svelte": "^5.46.1",
|
||||
"svelte-check": "^4.3.5",
|
||||
"svelte-preprocess": "^6.0.3",
|
||||
"svelte": "^4.2.18",
|
||||
"svelte-check": "^3.8.0",
|
||||
"svelte-preprocess": "^5.1.4",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^5.9.3",
|
||||
"vite": "^7.3.0",
|
||||
"vite-tsconfig-paths": "^6.0.3"
|
||||
"vite": "^5.4.0",
|
||||
"vite-tsconfig-paths": "^4.3.2"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<!-- src/App.svelte -->
|
||||
<script>
|
||||
import { Router } from "@roxi/routify";
|
||||
import { routes } from "../.routify/routes";
|
||||
import routes from "../.routify/routes.default.js";
|
||||
|
||||
import { SvelteUIProvider } from '@svelteuidev/core';
|
||||
|
||||
import Events from "./Events.svelte";
|
||||
|
||||
/** START LISTENING **/
|
||||
import { startListening } from "./functions";
|
||||
startListening();
|
||||
// import { startListening } from "./functions";
|
||||
// startListening();
|
||||
</script>
|
||||
|
||||
<SvelteUIProvider themeObserver='dark' withNormalizeCSS withGlobalStyles>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
let assistant_voice_val = "jarvis-og";
|
||||
import { assistant_voice } from "@/stores"
|
||||
import { invoke } from '@tauri-apps/api/tauri';
|
||||
import { invoke } from "@tauri-apps/api/core";
|
||||
assistant_voice.subscribe(value => {
|
||||
assistant_voice_val = value;
|
||||
});
|
||||
|
|
@ -34,11 +34,11 @@
|
|||
});
|
||||
|
||||
await listen('assistant-greet', (event) => {
|
||||
document.getElementById("arc-reactor").classList.add("active");
|
||||
document.getElementById("arc-reactor")?.classList.add("active");
|
||||
});
|
||||
|
||||
await listen('assistant-waiting', (event) => {
|
||||
document.getElementById("arc-reactor").classList.remove("active");
|
||||
document.getElementById("arc-reactor")?.classList.remove("active");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { invoke } from "@tauri-apps/api/tauri"
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
|
||||
import { tg_official_link, github_repository_link } from "@/stores";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script lang="ts">
|
||||
import { invoke } from "@tauri-apps/api/tauri"
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
import { Dashboard, Gear } from 'radix-icons-svelte'
|
||||
import {isActive} from '@roxi/routify'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script>
|
||||
// IMPORTS
|
||||
import { invoke } from "@tauri-apps/api/tauri"
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
import { onMount } from 'svelte'
|
||||
import { capitalizeFirstLetter } from "@/functions";
|
||||
|
||||
|
|
|
|||
|
|
@ -2,13 +2,13 @@ import { invoke } from "@tauri-apps/api/core"
|
|||
import { is_listening, isListening } from "@/stores"
|
||||
import { clearInterval, clearTimeout, setInterval, setTimeout } from 'worker-timers';
|
||||
|
||||
setInterval(() => {
|
||||
(async () => {
|
||||
is_listening.set(await invoke("is_listening"));
|
||||
})().catch(err => {
|
||||
console.error(err);
|
||||
});
|
||||
}, 1000);
|
||||
// setInterval(() => {
|
||||
// (async () => {
|
||||
// is_listening.set(await invoke("is_listening"));
|
||||
// })().catch(err => {
|
||||
// console.error(err);
|
||||
// });
|
||||
// }, 1000);
|
||||
|
||||
export function startListening() {
|
||||
(async () => {
|
||||
|
|
@ -26,7 +26,7 @@ export function startListening() {
|
|||
});
|
||||
}
|
||||
|
||||
export function stopListening(callback) {
|
||||
export function stopListening(callback: () => void) {
|
||||
(async () => {
|
||||
invoke('stop_listening')
|
||||
.then((message) => {
|
||||
|
|
@ -43,11 +43,11 @@ export function stopListening(callback) {
|
|||
});
|
||||
}
|
||||
|
||||
export function capitalizeFirstLetter(string) {
|
||||
export function capitalizeFirstLetter(string: string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
}
|
||||
|
||||
export function showInExplorer(path) {
|
||||
export function showInExplorer(path: any) {
|
||||
(async () => {
|
||||
invoke('show_in_folder', {path: path})
|
||||
.then((message) => {})
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import "./css/styles.scss";
|
|||
// deploy app
|
||||
import App from "./App.svelte";
|
||||
const app = new App({
|
||||
target: document.getElementById("app"),
|
||||
target: document.getElementById("app")!,
|
||||
});
|
||||
|
||||
export default app;
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<script lang="ts">
|
||||
// IMPORTS
|
||||
import { invoke } from "@tauri-apps/api/tauri"
|
||||
import { invoke } from "@tauri-apps/api/core"
|
||||
import { goto } from '@roxi/routify'
|
||||
import { onMount } from 'svelte'
|
||||
import { startListening, stopListening, showInExplorer } from "@/functions";
|
||||
import { setTimeout } from 'worker-timers';
|
||||
// import { setTimeout } from 'worker-timers';
|
||||
|
||||
import { feedback_link, log_file_path } from "@/stores";
|
||||
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
// VARIABLES
|
||||
|
||||
let available_microphones = [];
|
||||
let available_microphones: { label: string; value: number }[] = [];
|
||||
let settings_saved = false;
|
||||
let save_button_disabled = false;
|
||||
|
||||
|
|
@ -70,10 +70,10 @@
|
|||
let _available_microphones: Array<Number> = await invoke("pv_get_audio_devices");
|
||||
Object.entries(_available_microphones).forEach(entry => {
|
||||
const [k, v] = entry;
|
||||
|
||||
|
||||
available_microphones.push({
|
||||
label: v,
|
||||
value: k
|
||||
label: String(v),
|
||||
value: Number(k)
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -134,9 +134,9 @@
|
|||
<Space h="sm" />
|
||||
|
||||
<NativeSelect data={[
|
||||
{ label: 'Rustpotter', value: 'rustpotter' },
|
||||
{ label: 'Vosk (медленный)', value: 'vosk' },
|
||||
{ label: 'Picovoice Porcupine (требует API ключ)', value: 'picovoice' }
|
||||
{ label: 'Rustpotter', value: 'Rustpotter' },
|
||||
{ label: 'Vosk (медленный)', value: 'Vosk' },
|
||||
{ label: 'Picovoice Porcupine (требует API ключ)', value: 'Picovoice' }
|
||||
]}
|
||||
label="Распознавание активационной фразы (Wake Word)"
|
||||
description="Выберите, какая нейросеть будет отвечать за распознавание активационной фразы."
|
||||
|
|
@ -20,5 +20,9 @@
|
|||
},
|
||||
},
|
||||
"include": ["src/**/*.d.ts", "src/**/*.ts", "src/**/*.js", "src/**/*.svelte"],
|
||||
"references": [{ "path": "./tsconfig.node.json" }]
|
||||
"references": [{ "path": "./tsconfig.node.json" }],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
".routify"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,5 +4,6 @@
|
|||
"module": "ESNext",
|
||||
"moduleResolution": "Node"
|
||||
},
|
||||
"include": ["vite.config.ts"]
|
||||
"include": ["vite.config.ts"],
|
||||
"exclude": [".routify"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ import { defineConfig } from "vite";
|
|||
import { svelte } from "@sveltejs/vite-plugin-svelte";
|
||||
import sveltePreprocess from "svelte-preprocess";
|
||||
import tsconfigPaths from 'vite-tsconfig-paths'
|
||||
import routify from '@roxi/routify/vite-plugin'
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(async () => ({
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
svelte({
|
||||
preprocess: [
|
||||
|
|
@ -20,26 +20,19 @@ export default defineConfig(async () => ({
|
|||
handler(warning);
|
||||
},
|
||||
}),
|
||||
routify(),
|
||||
tsconfigPaths()
|
||||
],
|
||||
|
||||
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
|
||||
// prevent vite from obscuring rust errors
|
||||
clearScreen: false,
|
||||
// tauri expects a fixed port, fail if that port is not available
|
||||
server: {
|
||||
port: 1420,
|
||||
strictPort: true,
|
||||
},
|
||||
// to make use of `TAURI_DEBUG` and other env variables
|
||||
// https://tauri.studio/v1/api/config#buildconfig.beforedevcommand
|
||||
envPrefix: ["VITE_", "TAURI_"],
|
||||
build: {
|
||||
// Tauri supports es2021
|
||||
target: process.env.TAURI_PLATFORM == "windows" ? "chrome105" : "safari13",
|
||||
// don't minify for debug builds
|
||||
minify: !process.env.TAURI_DEBUG ? "esbuild" : false,
|
||||
// produce sourcemaps for debug builds
|
||||
sourcemap: !!process.env.TAURI_DEBUG,
|
||||
},
|
||||
}));
|
||||
});
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
// vite.config.ts
|
||||
import { defineConfig } from "file:///D:/Rust/jarvis-app/gui/node_modules/vite/dist/node/index.js";
|
||||
import { svelte } from "file:///D:/Rust/jarvis-app/gui/node_modules/@sveltejs/vite-plugin-svelte/src/index.js";
|
||||
import sveltePreprocess from "file:///D:/Rust/jarvis-app/gui/node_modules/svelte-preprocess/dist/index.js";
|
||||
import tsconfigPaths from "file:///D:/Rust/jarvis-app/gui/node_modules/vite-tsconfig-paths/dist/index.mjs";
|
||||
var vite_config_default = defineConfig(async () => ({
|
||||
plugins: [
|
||||
svelte({
|
||||
preprocess: [
|
||||
sveltePreprocess({
|
||||
typescript: true
|
||||
})
|
||||
],
|
||||
onwarn: (warning, handler) => {
|
||||
const { code, frame } = warning;
|
||||
if (code === "css-unused-selector")
|
||||
return;
|
||||
handler(warning);
|
||||
}
|
||||
}),
|
||||
tsconfigPaths()
|
||||
],
|
||||
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
|
||||
// prevent vite from obscuring rust errors
|
||||
clearScreen: false,
|
||||
// tauri expects a fixed port, fail if that port is not available
|
||||
server: {
|
||||
port: 1420,
|
||||
strictPort: true
|
||||
},
|
||||
// to make use of `TAURI_DEBUG` and other env variables
|
||||
// https://tauri.studio/v1/api/config#buildconfig.beforedevcommand
|
||||
envPrefix: ["VITE_", "TAURI_"],
|
||||
build: {
|
||||
// Tauri supports es2021
|
||||
target: process.env.TAURI_PLATFORM == "windows" ? "chrome105" : "safari13",
|
||||
// don't minify for debug builds
|
||||
minify: !process.env.TAURI_DEBUG ? "esbuild" : false,
|
||||
// produce sourcemaps for debug builds
|
||||
sourcemap: !!process.env.TAURI_DEBUG
|
||||
}
|
||||
}));
|
||||
export {
|
||||
vite_config_default as default
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxSdXN0XFxcXGphcnZpcy1hcHBcXFxcZ3VpXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxSdXN0XFxcXGphcnZpcy1hcHBcXFxcZ3VpXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9SdXN0L2phcnZpcy1hcHAvZ3VpL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB7IHN2ZWx0ZSB9IGZyb20gXCJAc3ZlbHRlanMvdml0ZS1wbHVnaW4tc3ZlbHRlXCI7XG5pbXBvcnQgc3ZlbHRlUHJlcHJvY2VzcyBmcm9tIFwic3ZlbHRlLXByZXByb2Nlc3NcIjtcbmltcG9ydCB0c2NvbmZpZ1BhdGhzIGZyb20gJ3ZpdGUtdHNjb25maWctcGF0aHMnXG5cbi8vIGh0dHBzOi8vdml0ZWpzLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoYXN5bmMgKCkgPT4gKHtcbiAgcGx1Z2luczogW1xuICAgIHN2ZWx0ZSh7XG4gICAgICBwcmVwcm9jZXNzOiBbXG4gICAgICAgIHN2ZWx0ZVByZXByb2Nlc3Moe1xuICAgICAgICAgIHR5cGVzY3JpcHQ6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIG9ud2FybjogKHdhcm5pbmcsIGhhbmRsZXIpID0+IHtcbiAgICAgICAgY29uc3QgeyBjb2RlLCBmcmFtZSB9ID0gd2FybmluZztcbiAgICAgICAgaWYgKGNvZGUgPT09IFwiY3NzLXVudXNlZC1zZWxlY3RvclwiKVxuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIGhhbmRsZXIod2FybmluZyk7XG4gICAgICB9LFxuICAgIH0pLFxuICAgIHRzY29uZmlnUGF0aHMoKVxuICBdLFxuXG4gIC8vIFZpdGUgb3B0aW9ucyB0YWlsb3JlZCBmb3IgVGF1cmkgZGV2ZWxvcG1lbnQgYW5kIG9ubHkgYXBwbGllZCBpbiBgdGF1cmkgZGV2YCBvciBgdGF1cmkgYnVpbGRgXG4gIC8vIHByZXZlbnQgdml0ZSBmcm9tIG9ic2N1cmluZyBydXN0IGVycm9yc1xuICBjbGVhclNjcmVlbjogZmFsc2UsXG4gIC8vIHRhdXJpIGV4cGVjdHMgYSBmaXhlZCBwb3J0LCBmYWlsIGlmIHRoYXQgcG9ydCBpcyBub3QgYXZhaWxhYmxlXG4gIHNlcnZlcjoge1xuICAgIHBvcnQ6IDE0MjAsXG4gICAgc3RyaWN0UG9ydDogdHJ1ZSxcbiAgfSxcbiAgLy8gdG8gbWFrZSB1c2Ugb2YgYFRBVVJJX0RFQlVHYCBhbmQgb3RoZXIgZW52IHZhcmlhYmxlc1xuICAvLyBodHRwczovL3RhdXJpLnN0dWRpby92MS9hcGkvY29uZmlnI2J1aWxkY29uZmlnLmJlZm9yZWRldmNvbW1hbmRcbiAgZW52UHJlZml4OiBbXCJWSVRFX1wiLCBcIlRBVVJJX1wiXSxcbiAgYnVpbGQ6IHtcbiAgICAvLyBUYXVyaSBzdXBwb3J0cyBlczIwMjFcbiAgICB0YXJnZXQ6IHByb2Nlc3MuZW52LlRBVVJJX1BMQVRGT1JNID09IFwid2luZG93c1wiID8gXCJjaHJvbWUxMDVcIiA6IFwic2FmYXJpMTNcIixcbiAgICAvLyBkb24ndCBtaW5pZnkgZm9yIGRlYnVnIGJ1aWxkc1xuICAgIG1pbmlmeTogIXByb2Nlc3MuZW52LlRBVVJJX0RFQlVHID8gXCJlc2J1aWxkXCIgOiBmYWxzZSxcbiAgICAvLyBwcm9kdWNlIHNvdXJjZW1hcHMgZm9yIGRlYnVnIGJ1aWxkc1xuICAgIHNvdXJjZW1hcDogISFwcm9jZXNzLmVudi5UQVVSSV9ERUJVRyxcbiAgfSxcbn0pKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7QUFBNFAsU0FBUyxvQkFBb0I7QUFDelIsU0FBUyxjQUFjO0FBQ3ZCLE9BQU8sc0JBQXNCO0FBQzdCLE9BQU8sbUJBQW1CO0FBRzFCLElBQU8sc0JBQVEsYUFBYSxhQUFhO0FBQUEsRUFDdkMsU0FBUztBQUFBLElBQ1AsT0FBTztBQUFBLE1BQ0wsWUFBWTtBQUFBLFFBQ1YsaUJBQWlCO0FBQUEsVUFDZixZQUFZO0FBQUEsUUFDZCxDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsUUFBUSxDQUFDLFNBQVMsWUFBWTtBQUM1QixjQUFNLEVBQUUsTUFBTSxNQUFNLElBQUk7QUFDeEIsWUFBSSxTQUFTO0FBQ1Q7QUFFSixnQkFBUSxPQUFPO0FBQUEsTUFDakI7QUFBQSxJQUNGLENBQUM7QUFBQSxJQUNELGNBQWM7QUFBQSxFQUNoQjtBQUFBO0FBQUE7QUFBQSxFQUlBLGFBQWE7QUFBQTtBQUFBLEVBRWIsUUFBUTtBQUFBLElBQ04sTUFBTTtBQUFBLElBQ04sWUFBWTtBQUFBLEVBQ2Q7QUFBQTtBQUFBO0FBQUEsRUFHQSxXQUFXLENBQUMsU0FBUyxRQUFRO0FBQUEsRUFDN0IsT0FBTztBQUFBO0FBQUEsSUFFTCxRQUFRLFFBQVEsSUFBSSxrQkFBa0IsWUFBWSxjQUFjO0FBQUE7QUFBQSxJQUVoRSxRQUFRLENBQUMsUUFBUSxJQUFJLGNBQWMsWUFBWTtBQUFBO0FBQUEsSUFFL0MsV0FBVyxDQUFDLENBQUMsUUFBUSxJQUFJO0FBQUEsRUFDM0I7QUFDRixFQUFFOyIsCiAgIm5hbWVzIjogW10KfQo=
|
||||
Loading…
Add table
Add a link
Reference in a new issue