diff --git a/packages/client/src/views/hermes/ChannelsView.vue b/packages/client/src/views/hermes/ChannelsView.vue index 0784ab2..a688146 100644 --- a/packages/client/src/views/hermes/ChannelsView.vue +++ b/packages/client/src/views/hermes/ChannelsView.vue @@ -3,13 +3,22 @@ import { onMounted } from 'vue' import { NSpin } from 'naive-ui' import { useI18n } from 'vue-i18n' import { useSettingsStore } from '@/stores/hermes/settings' +import { useProfilesStore } from '@/stores/hermes/profiles' import PlatformSettings from '@/components/hermes/settings/PlatformSettings.vue' const settingsStore = useSettingsStore() +const profilesStore = useProfilesStore() const { t } = useI18n() +async function loadSettingsForProfile() { + if (!profilesStore.activeProfileName || profilesStore.profiles.length === 0) { + await profilesStore.fetchProfiles() + } + await settingsStore.fetchSettings() +} + onMounted(() => { - settingsStore.fetchSettings() + void loadSettingsForProfile() }) diff --git a/packages/client/src/views/hermes/FilesView.vue b/packages/client/src/views/hermes/FilesView.vue index 801e4ee..053deb3 100644 --- a/packages/client/src/views/hermes/FilesView.vue +++ b/packages/client/src/views/hermes/FilesView.vue @@ -1,6 +1,7 @@ diff --git a/packages/client/src/views/hermes/JobsView.vue b/packages/client/src/views/hermes/JobsView.vue index f20d0d0..aaf436f 100644 --- a/packages/client/src/views/hermes/JobsView.vue +++ b/packages/client/src/views/hermes/JobsView.vue @@ -1,5 +1,5 @@ diff --git a/packages/client/src/views/hermes/SkillsUsageView.vue b/packages/client/src/views/hermes/SkillsUsageView.vue index e74a943..59c909e 100644 --- a/packages/client/src/views/hermes/SkillsUsageView.vue +++ b/packages/client/src/views/hermes/SkillsUsageView.vue @@ -2,6 +2,7 @@ import { computed, onMounted, ref } from 'vue' import { useI18n } from 'vue-i18n' import { NButton } from 'naive-ui' +import { useProfilesStore } from '@/stores/hermes/profiles' import { fetchSkillUsageStats, type SkillUsageDailyRow, @@ -10,6 +11,7 @@ import { } from '@/api/hermes/skills' const { t } = useI18n() +const profilesStore = useProfilesStore() const periodOptions = [7, 30, 90, 365] const maxVisibleChartSkills = 6 const skillPalette = [ @@ -125,6 +127,9 @@ function hideTooltip(day: SkillUsageDailyRow) { async function loadStats(days = selectedDays.value, force = false) { selectedDays.value = days + if (!profilesStore.activeProfileName || profilesStore.profiles.length === 0) { + await profilesStore.fetchProfiles() + } const seq = ++requestSeq latestRequestByPeriod[days] = seq loading.value = true diff --git a/packages/client/src/views/hermes/SkillsView.vue b/packages/client/src/views/hermes/SkillsView.vue index 9b3d2a8..5240681 100644 --- a/packages/client/src/views/hermes/SkillsView.vue +++ b/packages/client/src/views/hermes/SkillsView.vue @@ -6,10 +6,12 @@ import SkillList from '@/components/hermes/skills/SkillList.vue' import SkillDetail from '@/components/hermes/skills/SkillDetail.vue' import MarkdownRenderer from '@/components/hermes/chat/MarkdownRenderer.vue' import { fetchSkills, type SkillCategory, type SkillSource, type SkillInfo } from '@/api/hermes/skills' +import { useProfilesStore } from '@/stores/hermes/profiles' type SourceFilter = SkillSource | 'modified' const { t, locale } = useI18n() +const profilesStore = useProfilesStore() const categories = ref([]) const archived = ref([]) const loading = ref(false) @@ -56,6 +58,9 @@ onUnmounted(() => { async function loadSkills() { loading.value = true try { + if (!profilesStore.activeProfileName || profilesStore.profiles.length === 0) { + await profilesStore.fetchProfiles() + } const data = await fetchSkills() categories.value = data.categories archived.value = data.archived diff --git a/packages/client/src/views/hermes/UsageView.vue b/packages/client/src/views/hermes/UsageView.vue index 005bfd6..4128e8d 100644 --- a/packages/client/src/views/hermes/UsageView.vue +++ b/packages/client/src/views/hermes/UsageView.vue @@ -3,12 +3,14 @@ import { NButton } from 'naive-ui' import { onMounted, ref } from 'vue' import { useI18n } from 'vue-i18n' import { useUsageStore } from '@/stores/hermes/usage' +import { useProfilesStore } from '@/stores/hermes/profiles' import StatCards from '@/components/hermes/usage/StatCards.vue' import ModelBreakdown from '@/components/hermes/usage/ModelBreakdown.vue' import DailyTrend from '@/components/hermes/usage/DailyTrend.vue' const { t } = useI18n() const usageStore = useUsageStore() +const profilesStore = useProfilesStore() const periodOptions = [ { label: '7d', days: 7 }, @@ -19,13 +21,20 @@ const periodOptions = [ const selectedPeriod = ref(30) -function loadUsage(days = selectedPeriod.value) { +async function ensureProfileSelection() { + if (!profilesStore.activeProfileName || profilesStore.profiles.length === 0) { + await profilesStore.fetchProfiles() + } +} + +async function loadUsage(days = selectedPeriod.value) { selectedPeriod.value = days - usageStore.loadSessions(days) + await ensureProfileSelection() + await usageStore.loadSessions(days) } onMounted(() => { - loadUsage(30) + void loadUsage(30) })