Compare commits
8 commits
master
...
feature/gu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5cbd5515d3 | ||
|
|
7f167b563b | ||
|
|
7dff5024c4 | ||
|
|
eedf4aad90 | ||
|
|
764320786b | ||
|
|
f0a6ade231 | ||
|
|
0e58a699b1 | ||
|
|
9fda4a7a4b |
13 changed files with 85 additions and 111 deletions
8
Cargo.lock
generated
8
Cargo.lock
generated
|
|
@ -3262,7 +3262,7 @@ checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jarvis-app"
|
name = "jarvis-app"
|
||||||
version = "0.1.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"glib 0.21.5",
|
"glib 0.21.5",
|
||||||
"gtk",
|
"gtk",
|
||||||
|
|
@ -3282,7 +3282,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jarvis-cli"
|
name = "jarvis-cli"
|
||||||
version = "0.1.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"jarvis-core",
|
"jarvis-core",
|
||||||
|
|
@ -3293,7 +3293,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jarvis-core"
|
name = "jarvis-core"
|
||||||
version = "0.1.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"fastembed",
|
"fastembed",
|
||||||
|
|
@ -3337,7 +3337,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "jarvis-gui"
|
name = "jarvis-gui"
|
||||||
version = "0.1.0"
|
version = "0.4.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"jarvis-core",
|
"jarvis-core",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,10 @@ members = [
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.1.0"
|
version = "0.4.1"
|
||||||
authors = ["Abraham Tugalov (original)", "Bossiara13 (fork)"]
|
authors = ["Abraham Tugalov (original)", "Bossiara13 (fork)"]
|
||||||
license = "GPL-3.0-only"
|
license = "GPL-3.0-only"
|
||||||
repository = "https://github.com/Priler/jarvis"
|
repository = "https://github.com/DmitryBykov-ISPO/J.A.R.V.I.S-rust"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,7 @@ pub const DEFAULT_INTENT_BACKEND: &str = "intent-classifier";
|
||||||
pub const DEFAULT_SLOTS_BACKEND: &str = "none";
|
pub const DEFAULT_SLOTS_BACKEND: &str = "none";
|
||||||
pub const DEFAULT_VAD_BACKEND: &str = "energy";
|
pub const DEFAULT_VAD_BACKEND: &str = "energy";
|
||||||
|
|
||||||
pub const DEFAULT_VOICE: &str = "jarvis-remaster";
|
pub const DEFAULT_VOICE: &str = "jarvis-og";
|
||||||
pub const SOUND_PATH: &str = "resources/sound"; // extended from SOUND_DIR (resources/sound)
|
pub const SOUND_PATH: &str = "resources/sound"; // extended from SOUND_DIR (resources/sound)
|
||||||
pub const VOICES_PATH: &str = "voices"; // extended from SOUND_PATH (resources/sound)
|
pub const VOICES_PATH: &str = "voices"; // extended from SOUND_PATH (resources/sound)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ impl Default for Settings {
|
||||||
fn default() -> Settings {
|
fn default() -> Settings {
|
||||||
Settings {
|
Settings {
|
||||||
microphone: -1,
|
microphone: -1,
|
||||||
voice: String::from(""),
|
voice: String::from(config::DEFAULT_VOICE),
|
||||||
|
|
||||||
wake_word_engine: config::DEFAULT_WAKE_WORD_ENGINE,
|
wake_word_engine: config::DEFAULT_WAKE_WORD_ENGINE,
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,8 @@ stats-not-selected = Not selected
|
||||||
stats-loading = Loading...
|
stats-loading = Loading...
|
||||||
|
|
||||||
# ### FOOTER
|
# ### FOOTER
|
||||||
footer-author = Project author
|
footer-attribution = Fork by Bossiara13. Original: Priler/jarvis (CC BY-NC-SA 4.0).
|
||||||
footer-telegram = Our Telegram channel
|
footer-github = Fork Github repository
|
||||||
footer-github = Github repository
|
|
||||||
footer-support = Support the project on
|
|
||||||
|
|
||||||
# ### SETTINGS
|
# ### SETTINGS
|
||||||
settings-title = Settings
|
settings-title = Settings
|
||||||
|
|
@ -112,10 +110,9 @@ settings-openai-not-supported = ChatGPT is not currently supported. It will be a
|
||||||
commands-title = Commands
|
commands-title = Commands
|
||||||
commands-search = Search commands...
|
commands-search = Search commands...
|
||||||
commands-count = { $count } commands
|
commands-count = { $count } commands
|
||||||
commands-wip-title = [404] This section is under development!
|
commands-heading = Jarvis commands
|
||||||
commands-wip-desc = Here will be a list of commands + full-featured command editor.
|
commands-desc = Voice commands are configured via commands.yaml (Python fork) or resources/commands/ (Rust). A GUI command builder is available in the Python version of the fork.
|
||||||
commands-wip-follow = Follow updates in
|
commands-builder-link = Open Command Builder (Python fork)
|
||||||
commands-wip-channel = our Telegram channel
|
|
||||||
|
|
||||||
# ### ERRORS
|
# ### ERRORS
|
||||||
error-generic = An error occurred
|
error-generic = An error occurred
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,8 @@ stats-not-selected = Не выбран
|
||||||
stats-loading = Загрузка...
|
stats-loading = Загрузка...
|
||||||
|
|
||||||
# FOOTER
|
# FOOTER
|
||||||
footer-author = Автор проекта
|
footer-attribution = Автор форка: Bossiara13. Оригинал: Priler/jarvis (CC BY-NC-SA 4.0).
|
||||||
footer-telegram = Наш телеграм канал
|
footer-github = Github репозиторий форка
|
||||||
footer-github = Github репозиторий проекта
|
|
||||||
footer-support = Поддержать проект на
|
|
||||||
|
|
||||||
# SETTINGS
|
# SETTINGS
|
||||||
settings-title = Настройки
|
settings-title = Настройки
|
||||||
|
|
@ -112,10 +110,9 @@ settings-openai-not-supported = В данный момент ChatGPT не под
|
||||||
commands-title = Команды
|
commands-title = Команды
|
||||||
commands-search = Поиск команд...
|
commands-search = Поиск команд...
|
||||||
commands-count = { $count } команд
|
commands-count = { $count } команд
|
||||||
commands-wip-title = [404] Этот раздел еще находится в разработке!
|
commands-heading = Команды Jarvis
|
||||||
commands-wip-desc = Тут будет список команд + полноценный редактор команд.
|
commands-desc = Голосовые команды настраиваются через файл commands.yaml (Python-форк) или resources/commands/ (Rust). GUI-конструктор команд доступен в Python-версии форка.
|
||||||
commands-wip-follow = Следите за обновлениями в
|
commands-builder-link = Открыть Command Builder (Python-форк)
|
||||||
commands-wip-channel = нашем телеграм канале
|
|
||||||
|
|
||||||
# ERRORS
|
# ERRORS
|
||||||
error-generic = Произошла ошибка
|
error-generic = Произошла ошибка
|
||||||
|
|
|
||||||
|
|
@ -42,10 +42,8 @@ stats-not-selected = Не вибрано
|
||||||
stats-loading = Завантаження...
|
stats-loading = Завантаження...
|
||||||
|
|
||||||
# ### FOOTER
|
# ### FOOTER
|
||||||
footer-author = Автор проєкту
|
footer-attribution = Автор форка: Bossiara13. Оригінал: Priler/jarvis (CC BY-NC-SA 4.0).
|
||||||
footer-telegram = Наш телеграм канал
|
footer-github = Github репозиторій форка
|
||||||
footer-github = Github репозиторій проєкту
|
|
||||||
footer-support = Підтримати проєкт на
|
|
||||||
|
|
||||||
# ### SETTINGS
|
# ### SETTINGS
|
||||||
settings-title = Налаштування
|
settings-title = Налаштування
|
||||||
|
|
@ -112,10 +110,9 @@ settings-openai-not-supported = Наразі ChatGPT не підтримуєть
|
||||||
commands-title = Команди
|
commands-title = Команди
|
||||||
commands-search = Пошук команд...
|
commands-search = Пошук команд...
|
||||||
commands-count = { $count } команд
|
commands-count = { $count } команд
|
||||||
commands-wip-title = [404] Цей розділ ще в розробці!
|
commands-heading = Команди Jarvis
|
||||||
commands-wip-desc = Тут буде список команд + повноцінний редактор команд.
|
commands-desc = Голосові команди налаштовуються через файл commands.yaml (Python-форк) або resources/commands/ (Rust). GUI-конструктор команд доступний у Python-версії форка.
|
||||||
commands-wip-follow = Слідкуйте за оновленнями в
|
commands-builder-link = Відкрити Command Builder (Python-форк)
|
||||||
commands-wip-channel = нашому телеграм каналі
|
|
||||||
|
|
||||||
# ### ERRORS
|
# ### ERRORS
|
||||||
error-generic = Сталася помилка
|
error-generic = Сталася помилка
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "jarvis-app",
|
"productName": "jarvis-app",
|
||||||
"version": "0.0.3",
|
"version": "0.4.1",
|
||||||
"identifier": "com.priler.jarvis",
|
"identifier": "com.priler.jarvis",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "npm run dev",
|
"beforeDevCommand": "npm run dev",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "jarvis-app",
|
"name": "jarvis-app",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.4.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|
|
||||||
|
|
@ -1,63 +1,25 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount } from "svelte"
|
import { appInfo, translations, translate } from "@/stores"
|
||||||
import { invoke } from "@tauri-apps/api/core"
|
|
||||||
import { appInfo, currentLanguage, translations, translate } from "@/stores"
|
|
||||||
|
|
||||||
$: t = (key: string) => translate($translations, key)
|
$: t = (key: string) => translate($translations, key)
|
||||||
|
|
||||||
let authorName = ""
|
|
||||||
let tgLink = ""
|
|
||||||
let repoLink = ""
|
let repoLink = ""
|
||||||
let boostyLink = ""
|
|
||||||
let patreonLink = ""
|
|
||||||
|
|
||||||
const currentYear = new Date().getFullYear()
|
const currentYear = new Date().getFullYear()
|
||||||
|
|
||||||
appInfo.subscribe(info => {
|
appInfo.subscribe(info => {
|
||||||
tgLink = info.tgOfficialLink
|
|
||||||
repoLink = info.repositoryLink
|
repoLink = info.repositoryLink
|
||||||
boostyLink = info.boostySupportLink
|
|
||||||
patreonLink = info.patreonSupportLink
|
|
||||||
})
|
|
||||||
|
|
||||||
onMount(async () => {
|
|
||||||
try {
|
|
||||||
authorName = await invoke<string>("get_author_name")
|
|
||||||
} catch (err) {
|
|
||||||
console.error("failed to get author name:", err)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<footer id="footer">
|
<footer id="footer">
|
||||||
<p>© {currentYear}. {t('footer-author')}: <b>{authorName}</b></p>
|
<p>© {currentYear}. {t('footer-attribution')}</p>
|
||||||
<p class="links">
|
<p class="links">
|
||||||
{#if $currentLanguage === "ru" || $currentLanguage === "ua"}
|
|
||||||
<a href={tgLink} target="_blank" class="telegram-link">
|
|
||||||
<img src="/media/icons/telegram.webp" alt="Telegram" width="18px" />
|
|
||||||
<span>{t('footer-telegram')}</span>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
{/if}
|
|
||||||
<a href={repoLink} target="_blank">
|
<a href={repoLink} target="_blank">
|
||||||
<img src="/media/icons/github-logo.png" alt="GitHub" width="18px" />
|
<img src="/media/icons/github-logo.png" alt="GitHub" width="18px" />
|
||||||
<span>{t('footer-github')}</span>
|
<span>{t('footer-github')}</span>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
<p class="links last">
|
|
||||||
{#if $currentLanguage === "ru"}
|
|
||||||
{t('footer-support')} <a href={boostyLink} target="_blank" class="telegram-link">
|
|
||||||
<img src="/media/icons/boosty.webp" alt="Boosty" width="18px" />
|
|
||||||
<span>Boosty</span>
|
|
||||||
</a>.
|
|
||||||
{/if}
|
|
||||||
{#if $currentLanguage === "ua" || $currentLanguage === "en"}
|
|
||||||
{t('footer-support')} <a href={patreonLink} target="_blank" class="telegram-link">
|
|
||||||
<img src="/media/icons/patreon.png" alt="Patreon" width="18px" />
|
|
||||||
<span>Patreon</span>
|
|
||||||
</a>.
|
|
||||||
{/if}
|
|
||||||
</p>
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,74 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Notification, Space } from "@svelteuidev/core"
|
import { Space } from "@svelteuidev/core"
|
||||||
import { InfoCircled } from "radix-icons-svelte"
|
|
||||||
|
|
||||||
import HDivider from "@/components/elements/HDivider.svelte"
|
import HDivider from "@/components/elements/HDivider.svelte"
|
||||||
import Footer from "@/components/Footer.svelte"
|
import Footer from "@/components/Footer.svelte"
|
||||||
import { appInfo, translations, translate } from "@/stores"
|
import { translations, translate } from "@/stores"
|
||||||
|
|
||||||
$: t = (key: string) => translate($translations, key)
|
$: t = (key: string) => translate($translations, key)
|
||||||
|
|
||||||
let tgLink = ""
|
const builderUrl = "https://github.com/DmitryBykov-ISPO/J.A.R.V.I.S-py/tree/main/tools/command_builder"
|
||||||
appInfo.subscribe(info => {
|
|
||||||
tgLink = info.tgOfficialLink
|
|
||||||
})
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Space h="xl" />
|
<Space h="xl" />
|
||||||
|
|
||||||
<Notification
|
<div class="commands-info">
|
||||||
title={t('commands-wip-title')}
|
<h2>{t('commands-heading')}</h2>
|
||||||
icon={InfoCircled}
|
<p>{t('commands-desc')}</p>
|
||||||
color="blue"
|
<a class="builder-link" href={builderUrl} target="_blank" rel="noopener noreferrer">
|
||||||
withCloseButton={false}
|
{t('commands-builder-link')}
|
||||||
>
|
</a>
|
||||||
{t('commands-wip-desc')}<br />
|
|
||||||
{t('commands-wip-follow')} <a href={tgLink} target="_blank">{t('commands-wip-channel')}</a>!
|
|
||||||
</Notification>
|
|
||||||
|
|
||||||
<div class="placeholder-image">
|
|
||||||
<img src="/media/images/tenor.gif" alt="bruh" width="320px" />
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<HDivider />
|
<HDivider />
|
||||||
<Footer />
|
<Footer />
|
||||||
|
|
||||||
<style>
|
<style lang="scss">
|
||||||
.placeholder-image {
|
.commands-info {
|
||||||
text-align: center;
|
background: #0a1214;
|
||||||
margin-top: 25px;
|
border: 1px solid rgba(82, 254, 254, 0.2);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 1.25rem 1.5rem;
|
||||||
|
color: #d6e2e6;
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
margin: 0 0 0.75rem;
|
||||||
|
font-size: 1.05rem;
|
||||||
|
color: #52fefe;
|
||||||
|
font-weight: 600;
|
||||||
|
letter-spacing: 0.02em;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0 0 1rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: rgba(255, 255, 255, 0.65);
|
||||||
|
}
|
||||||
|
|
||||||
|
:global(code) {
|
||||||
|
background: rgba(82, 254, 254, 0.08);
|
||||||
|
color: #52fefe;
|
||||||
|
padding: 0.05rem 0.35rem;
|
||||||
|
border-radius: 3px;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
|
||||||
|
.builder-link {
|
||||||
|
display: inline-block;
|
||||||
|
padding: 0.5rem 0.9rem;
|
||||||
|
background: rgba(82, 254, 254, 0.08);
|
||||||
|
border: 1px solid rgba(82, 254, 254, 0.4);
|
||||||
|
border-radius: 6px;
|
||||||
|
color: #52fefe;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: background 0.15s ease, border-color 0.15s ease;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: rgba(82, 254, 254, 0.16);
|
||||||
|
border-color: rgba(82, 254, 254, 0.6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -272,9 +272,6 @@
|
||||||
>
|
>
|
||||||
<div class="voice-info">
|
<div class="voice-info">
|
||||||
<span class="voice-name">{voice.name}</span>
|
<span class="voice-name">{voice.name}</span>
|
||||||
{#if voice.author}
|
|
||||||
<span class="voice-author">by {voice.author}</span>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
<div class="voice-languages">
|
<div class="voice-languages">
|
||||||
{#each voice.languages as lang}
|
{#each voice.languages as lang}
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,8 @@ export const assistantVoice = writable("")
|
||||||
|
|
||||||
// ### APP INFO
|
// ### APP INFO
|
||||||
export const appInfo = writable({
|
export const appInfo = writable({
|
||||||
tgOfficialLink: "",
|
|
||||||
feedbackLink: "",
|
feedbackLink: "",
|
||||||
repositoryLink: "",
|
repositoryLink: "",
|
||||||
boostySupportLink: "",
|
|
||||||
patreonSupportLink: "",
|
|
||||||
logFilePath: ""
|
logFilePath: ""
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -60,21 +57,15 @@ export async function loadVoiceSetting() {
|
||||||
|
|
||||||
export async function loadAppInfo() {
|
export async function loadAppInfo() {
|
||||||
try {
|
try {
|
||||||
const [tg, feedback, repo, boosty, patreon, logPath] = await Promise.all([
|
const [feedback, repo, logPath] = await Promise.all([
|
||||||
invoke<string>("get_tg_official_link"),
|
|
||||||
invoke<string>("get_feedback_link"),
|
invoke<string>("get_feedback_link"),
|
||||||
invoke<string>("get_repository_link"),
|
invoke<string>("get_repository_link"),
|
||||||
invoke<string>("get_boosty_link"),
|
|
||||||
invoke<string>("get_patreon_link"),
|
|
||||||
invoke<string>("get_log_file_path")
|
invoke<string>("get_log_file_path")
|
||||||
])
|
])
|
||||||
|
|
||||||
appInfo.set({
|
appInfo.set({
|
||||||
tgOfficialLink: tg,
|
|
||||||
feedbackLink: feedback,
|
feedbackLink: feedback,
|
||||||
repositoryLink: repo,
|
repositoryLink: repo,
|
||||||
boostySupportLink: boosty,
|
|
||||||
patreonSupportLink: patreon,
|
|
||||||
logFilePath: logPath
|
logFilePath: logPath
|
||||||
})
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue