This commit is contained in:
seb
2026-10-06 12:53:32 +02:00
parent b99b39f640
commit 1b5d8efbc3
2 changed files with 119 additions and 160 deletions

View File

@@ -9,7 +9,7 @@ import {
TABLE_HEADER_PAIR,
byMode,
} from '../../colors';
import { VfsAttachmentLink, parseAttachmentTag, classifyLinkTarget } from './ChatAttachmentItems';
import { VfsAttachmentLink, parseAttachmentTag, classifyLinkTarget, resolveVfsUrl } from './ChatAttachmentItems';
/**
* Healing markdown renderer.
@@ -43,16 +43,14 @@ function resolveImageUrl(rawUrl) {
const url = String(rawUrl ?? '').trim();
if (!url) return null;
if (/^data:image\//i.test(url)) return url;
if (/^https?:\/\//i.test(url) || url.startsWith('/')) return url;
// Everything else is a VFS name: strip a leading `./`, encode each segment, keep subdirs.
const segments = url
.replace(/^\.\//, '')
.split('/')
.filter((s) => s && s !== '.')
.map((s) => encodeURIComponent(s));
if (segments.length === 0 || segments.includes('..')) return null;
return `/api/vfs/${segments.join('/')}`;
const classified = classifyLinkTarget(url);
if (classified.kind === 'web') return classified.url;
if (classified.kind === 'vfs') {
if (classified.path.includes('..')) return null;
return resolveVfsUrl(classified.path);
}
if (classified.kind === 'nav') return classified.url;
return null;
}
/**