Release 0.0.11

This commit is contained in:
2026-04-20 21:42:43 +00:00
parent 9d94e75a93
commit 5472f72ba0
3 changed files with 21 additions and 4 deletions

View File

@@ -2,7 +2,7 @@
"id": "kosmos-storage-audit", "id": "kosmos-storage-audit",
"title": "Kosmos Storage Audit", "title": "Kosmos Storage Audit",
"description": "Analyzes media references and risky storage locations across Foundry data and public roots.", "description": "Analyzes media references and risky storage locations across Foundry data and public roots.",
"version": "0.0.10", "version": "0.0.11",
"compatibility": { "compatibility": {
"minimum": "13", "minimum": "13",
"verified": "13" "verified": "13"

View File

@@ -442,7 +442,7 @@ function groupByTarget(findings) {
current.count += 1; current.count += 1;
if (finding.severity === "high") current.severity = "high"; if (finding.severity === "high") current.severity = "high";
if (finding.source?.sourceLabel) { if (finding.source?.sourceLabel) {
const key = finding.source.sourceUuid ?? finding.source.sourceLabel; const key = buildSourceKey(finding.source);
current.sources.set(key, { current.sources.set(key, {
sourceLabel: finding.source.sourceLabel, sourceLabel: finding.source.sourceLabel,
sourceName: finding.source.sourceName ?? null, sourceName: finding.source.sourceName ?? null,
@@ -553,7 +553,7 @@ function renderLocalizedCodeText(key, data, codeValues) {
function renderSourceLink(source) { function renderSourceLink(source) {
const trail = Array.isArray(source.sourceTrail) && source.sourceTrail.length ? source.sourceTrail : null; const trail = Array.isArray(source.sourceTrail) && source.sourceTrail.length ? source.sourceTrail : null;
if (trail) { if (trail) {
return trail.map(renderTrailNode).join(' <span class="storage-audit__trail-separator">-&gt;</span> '); return `<span class="storage-audit__trail">${trail.map(renderTrailNode).join('<span class="storage-audit__trail-separator">-&gt;</span>')}</span>`;
} }
const label = source.sourceName ? `${source.sourceLabel} (${source.sourceName})` : source.sourceLabel; const label = source.sourceName ? `${source.sourceLabel} (${source.sourceName})` : source.sourceLabel;
@@ -583,3 +583,10 @@ function renderTrailNode(node) {
function renderUuidLink(uuid, label) { function renderUuidLink(uuid, label) {
return `<a class="content-link" draggable="true" data-link data-uuid="${escapeHtml(uuid)}" data-tooltip="${escapeHtml(label)}"><i class="fa-solid fa-file-lines"></i><span>${escapeHtml(label)}</span></a>`; return `<a class="content-link" draggable="true" data-link data-uuid="${escapeHtml(uuid)}" data-tooltip="${escapeHtml(label)}"><i class="fa-solid fa-file-lines"></i><span>${escapeHtml(label)}</span></a>`;
} }
function buildSourceKey(source) {
const trailKey = Array.isArray(source.sourceTrail) && source.sourceTrail.length
? source.sourceTrail.map(node => node.uuid ?? node.label ?? "").join(">")
: "";
return `${source.sourceUuid ?? ""}|${trailKey}|${source.sourceLabel ?? ""}`;
}

View File

@@ -277,9 +277,19 @@
overflow-wrap: anywhere; overflow-wrap: anywhere;
} }
.storage-audit__trail {
display: inline-flex;
align-items: center;
flex-wrap: wrap;
gap: 0.2rem;
}
.storage-audit__trail .content-link {
white-space: nowrap;
}
.storage-audit__trail-separator { .storage-audit__trail-separator {
opacity: 0.65; opacity: 0.65;
margin: 0 0.25rem;
} }
@media (max-width: 1100px) { @media (max-width: 1100px) {