From f8283729ba23b54a70da1cc61d445077c372f4ec Mon Sep 17 00:00:00 2001 From: ekko <152005280+EKKOLearnAI@users.noreply.github.com> Date: Fri, 24 Apr 2026 09:57:30 +0800 Subject: [PATCH] refactor: replace jobs proxy with local controller and optimize model loading (#174) * refactor: replace jobs proxy with local controller and optimize model loading - Add local jobs controller that directly fetches upstream gateway with profile support and 30s timeout, replacing unreliable proxy catch-all - Upstream errors (non-200) return 502 instead of leaking to frontend - Switch loadModels() from fetchAvailableModels (slow, fetches all provider APIs) to fetchConfigModels (reads config.yaml only) - Hide logo dance video in sidebar Co-Authored-By: Claude Opus 4.6 * fix: resolve TypeScript errors from previous refactor - Remove unused imports (danceVideo, useTheme) in AppSidebar - Map ConfigModelsResponse.groups to AvailableModelGroup[] format Co-Authored-By: Claude Opus 4.6 --------- Co-authored-by: Claude Opus 4.6 --- .../src/components/layout/AppSidebar.vue | 7 +- packages/client/src/stores/hermes/app.ts | 14 ++- .../server/src/controllers/hermes/jobs.ts | 90 +++++++++++++++++++ packages/server/src/routes/hermes/jobs.ts | 13 +++ packages/server/src/routes/index.ts | 2 + 5 files changed, 116 insertions(+), 10 deletions(-) create mode 100644 packages/server/src/controllers/hermes/jobs.ts create mode 100644 packages/server/src/routes/hermes/jobs.ts diff --git a/packages/client/src/components/layout/AppSidebar.vue b/packages/client/src/components/layout/AppSidebar.vue index 2377340..f62627f 100644 --- a/packages/client/src/components/layout/AppSidebar.vue +++ b/packages/client/src/components/layout/AppSidebar.vue @@ -9,14 +9,9 @@ import ProfileSelector from "./ProfileSelector.vue"; import LanguageSwitch from "./LanguageSwitch.vue"; import ThemeSwitch from "./ThemeSwitch.vue"; import { useSessionSearch } from '@/composables/useSessionSearch' -import danceVideoLight from "@/assets/dance-light.mp4"; -import danceVideoDark from "@/assets/dance-dark.mp4"; - -import { useTheme } from "@/composables/useTheme"; import { changelog } from "@/data/changelog"; const { t } = useI18n(); -const { isDark } = useTheme(); const message = useMessage(); const route = useRoute(); const router = useRouter(); @@ -66,7 +61,7 @@ function openChangelog() {