(iface, isOnline = false)
| 8188 | <td class="px-2 py-1 font-mono ${dm.baseline ? 'text-gray-200' : 'text-red-300'}">${escapeHtml(dm.name)}</td> |
| 8189 | <td class="px-2 py-1 font-mono ${bombed ? 'text-red-300' : 'text-gray-200'}">${dm.revision}</td> |
| 8190 | <td class="px-2 py-1 font-mono text-gray-500">${dm.baseline_revision == null ? '—' : dm.baseline_revision}</td> |
| 8191 | <td class="px-2 py-1 font-mono text-gray-400">${escapeHtml((dm.updaters || []).join(', ') || '—')}</td> |
| 8192 | <td class="px-2 py-1 font-mono text-gray-400">${escapeHtml((dm.srcs || []).join(', '))}</td> |
| 8193 | <td class="px-2 py-1">${badge}</td> |
| 8194 | </tr>`; |
| 8195 | }).join('') + |
| 8196 | '</tbody></table>'; |
| 8197 | } |
| 8198 | if (d.reasons && d.reasons.length) { |
| 8199 | html += '<ul class="text-xs text-gray-400 mt-2 list-disc pl-5">' + |
| 8200 | d.reasons.map(r => '<li>' + escapeHtml(r) + '</li>').join('') + '</ul>'; |
| 8201 | } |
| 8202 | (d.advisories || []).forEach(a => { |
| 8203 | html += `<div class="mt-2 px-3 py-2 rounded border text-xs text-gray-400 border-slate-700 bg-slate-900/40">${escapeHtml(a)}</div>`; |
| 8204 | }); |
| 8205 | out.innerHTML = html; |
| 8206 | } catch (e) { |
| 8207 | out.innerHTML = '<p class="text-sm text-red-400">Failed: ' + escapeHtml(e.message) + '</p>'; |
| 8208 | } finally { |
| 8209 | _ndBusy(btn, false); |
| 8210 | } |
| 8211 | } |
| 8212 | async function vtpTrustBaseline() { |
| 8213 | try { |
no test coverage detected