5b34c9221c
Settings IA per the approved A3 design (the old layout was the two-app merge fossilized): - Import tab retired: ImportTriggerPanel + ImportTaskList deleted (manual /import scans stay API-level; imports arrive via downloads/extension, heal via the Layer-2 auto-refetch sweep, and show in Activity). ImportFiltersForm moves to Maintenance → 'Ingestion & filters' and loads its own settings; the import store shrinks to settings-only (no remaining consumers of the scan/task-list machinery). Overview's pending banner now points at Activity. - Maintenance regrouped: Ingestion & filters / GPU agent & embeddings (GpuAgent, Failed processing, CPU embedding backfill) / Tagging (sliders, Heads, Aliases) / Library health (MissingFiles, Thumbnails, DB, Archive re-extract demoted last) / Storage. - One extension home: BrowserExtensionCard moves from Settings → Overview to Subscriptions → Settings, above the API key bar it authenticates. - Single-color import filter WIRED: skip_single_color/threshold existed since FC-2 but nothing read them (the audit module's docstring said as much) — now enforced on both import paths via the audit's canonical predicate (tolerance 30, matching the Cleanup card default; animated images exempt like the transparency check). Default stays off; test added. - Dead weight: PlaceholderView (zero refs) and the permanently-disabled 'Export failed logs (CSV — v2)' menu stub deleted; stale docs fixed (celery queue docstring, threshold comment citing retired tasks, ml package docstring, HeadsCard 'replaces Camie' blurb). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CDgx8bQS5YrGRK76v8HUnM
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
import { defineStore } from 'pinia'
|
|
import { toast } from '../utils/toast.js'
|
|
import { ref } from 'vue'
|
|
import { useApi } from '../composables/useApi.js'
|
|
|
|
// Import SETTINGS only. The manual-scan trigger + task-list surfaces retired
|
|
// with the Import tab (2026-07-02): imports arrive via downloads/extension and
|
|
// heal themselves (Layer-2 auto-refetch sweep); their runs show in Activity.
|
|
// The /api/import/trigger + /tasks endpoints remain for direct/API use.
|
|
// Consumers: ImportFiltersForm (Maintenance → Ingestion & filters) and the
|
|
// Subscriptions Settings tab (downloader/extdl/schedule fields on the same
|
|
// ImportSettings row).
|
|
export const useImportStore = defineStore('import', () => {
|
|
const api = useApi()
|
|
|
|
const settings = ref(null)
|
|
const settingsLoading = ref(false)
|
|
const settingsError = ref(null)
|
|
|
|
async function loadSettings() {
|
|
settingsLoading.value = true
|
|
settingsError.value = null
|
|
try {
|
|
settings.value = await api.get('/api/settings/import')
|
|
} catch (e) {
|
|
settingsError.value = e.message
|
|
} finally {
|
|
settingsLoading.value = false
|
|
}
|
|
}
|
|
|
|
async function patchSettings(patch) {
|
|
settingsError.value = null
|
|
try {
|
|
settings.value = await api.patch('/api/settings/import', { body: patch })
|
|
} catch (e) {
|
|
settingsError.value = e.message
|
|
toast({ text: `Settings save failed: ${e.message}`, type: 'error' })
|
|
throw e
|
|
}
|
|
}
|
|
|
|
return {
|
|
settings, settingsLoading, settingsError,
|
|
loadSettings, patchSettings,
|
|
}
|
|
})
|