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)
})