diff --git a/ui/src/views/Forecast.jsx b/ui/src/views/Forecast.jsx index 6b726e1..d8f3745 100644 --- a/ui/src/views/Forecast.jsx +++ b/ui/src/views/Forecast.jsx @@ -1098,12 +1098,18 @@ export default function Forecast({ sources = [], sourceId, versions = [], versio if (!res.ok) return derived = await res.json() } - if (!derived) return + if (!derived) { + flash(`No attributes found for ${col} "${value.trim()}" — the other fields are unchanged`, 'warn') + return + } + + // Overwrite rather than only filling blanks. These columns describe the key + // that was just entered, so whatever a previous key left behind is wrong, not + // worth preserving -- and leaving it made a second lookup look like it had + // done nothing at all, since every box was already full. setter(prev => { const next = { ...prev } - for (const [k, v] of Object.entries(derived)) { - if (!prev[k] || prev[k] === '') next[k] = String(v ?? '') - } + for (const [k, v] of Object.entries(derived)) next[k] = String(v ?? '') return next }) }