feat: add Codex OAuth login and fix channel config display

- Add OpenAI Codex Device Code Flow login (backend polling + frontend modal)
- Codex provider integrated into preset dropdown (hides URL/API key fields)
- Sync provider model catalogs with Hermes system
- Fix channel config not displaying on first visit (wait for data load)
- Fix sidebar model list not refreshing after adding provider
- Add autocomplete="off" to API key input to prevent browser autofill

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-17 23:11:57 +08:00
parent 26bb821e29
commit 9979871550
19 changed files with 722 additions and 6 deletions
@@ -21,7 +21,7 @@ onMounted(() => {
<div class="channels-content">
<NSpin :show="settingsStore.loading || settingsStore.saving" size="large" :description="t('common.loading')">
<PlatformSettings />
<PlatformSettings v-if="!settingsStore.loading" />
</NSpin>
</div>
</div>
@@ -5,9 +5,11 @@ import { useI18n } from 'vue-i18n'
import ProvidersPanel from '@/components/hermes/models/ProvidersPanel.vue'
import ProviderFormModal from '@/components/hermes/models/ProviderFormModal.vue'
import { useModelsStore } from '@/stores/hermes/models'
import { useAppStore } from '@/stores/hermes/app'
const { t } = useI18n()
const modelsStore = useModelsStore()
const appStore = useAppStore()
const showModal = ref(false)
onMounted(() => {
@@ -24,6 +26,7 @@ function handleModalClose() {
async function handleSaved() {
await modelsStore.fetchProviders()
appStore.loadModels()
handleModalClose()
}
</script>