Files
FabledCurator/frontend/src/stores/import.js
T
bvandeusen 5b34c9221c
CI / frontend-build (push) Successful in 19s
CI / lint (push) Successful in 2s
CI / backend-lint-and-test (push) Successful in 33s
CI / integration (push) Successful in 3m32s
feat(ia): wave 1 — Import tab dissolves, Maintenance regroups by system, one extension home
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
2026-07-02 17:37:21 -04:00

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