fix(blocklist): render llm_score, fix load() error handling, fix severity override mutations
- BlocklistView: display llm_score/llm_reason when non-null (spec gap) - BlocklistView: set scanError on non-ok load() response (was silent) - SettingsView: replace in-place splice/property mutation with immutable spread pattern in toggleOverride/deleteOverride
This commit is contained in:
parent
8933f1886b
commit
b5c7fe67bf
2 changed files with 21 additions and 4 deletions
|
|
@ -130,6 +130,12 @@
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- LLM score (Premium tier stub) -->
|
||||||
|
<div v-if="c.llm_score !== null" class="mt-1 text-xs text-text-dim">
|
||||||
|
<span class="font-medium">LLM score:</span> {{ c.llm_score?.toFixed(2) }}
|
||||||
|
<span v-if="c.llm_reason" class="ml-2 text-text-dim/70">— {{ c.llm_reason }}</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Log evidence -->
|
<!-- Log evidence -->
|
||||||
<div v-if="c.log_evidence.length" class="mt-1">
|
<div v-if="c.log_evidence.length" class="mt-1">
|
||||||
<button
|
<button
|
||||||
|
|
@ -226,7 +232,11 @@ async function load() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const res = await fetch(`${BASE}/api/blocklist/candidates`)
|
const res = await fetch(`${BASE}/api/blocklist/candidates`)
|
||||||
if (res.ok) candidates.value = (await res.json()).candidates
|
if (res.ok) {
|
||||||
|
candidates.value = (await res.json()).candidates
|
||||||
|
} else {
|
||||||
|
scanError.value = `Failed to load candidates: ${res.statusText}`
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -372,13 +372,20 @@ async function saveOverrides() {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function toggleOverride(i: number) {
|
async function toggleOverride(i: number) {
|
||||||
const rule = prefs.value.severity_overrides[i]
|
prefs.value = {
|
||||||
if (rule) rule.enabled = !rule.enabled
|
...prefs.value,
|
||||||
|
severity_overrides: prefs.value.severity_overrides.map((r, idx) =>
|
||||||
|
idx === i ? { ...r, enabled: !r.enabled } : r
|
||||||
|
),
|
||||||
|
}
|
||||||
await saveOverrides()
|
await saveOverrides()
|
||||||
}
|
}
|
||||||
|
|
||||||
async function deleteOverride(i: number) {
|
async function deleteOverride(i: number) {
|
||||||
prefs.value.severity_overrides.splice(i, 1)
|
prefs.value = {
|
||||||
|
...prefs.value,
|
||||||
|
severity_overrides: prefs.value.severity_overrides.filter((_, idx) => idx !== i),
|
||||||
|
}
|
||||||
await saveOverrides()
|
await saveOverrides()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue