export function splitPathKeepFilename(full: string) { if (!full) return { prefix: '', filename: '' }; const norm = full.replaceAll('\\', '/'); const idx = norm.lastIndexOf('/'); if (idx < 0) return { prefix: '', filename: norm }; return { prefix: norm.slice(0, idx), filename: norm.slice(idx + 1), }; } export function elideStart(input: string, keepTail = 16): string { if (!input) return ''; if (input.length <= keepTail) return input; return '…' + input.slice(input.length - keepTail); } export function elideFilenameSmart(name: string, minHead = 6): string { if (!name) return ''; const dot = name.lastIndexOf('.'); if (dot <= 0) return elideStart(name, Math.max(minHead, 8)); const head = name.slice(0, dot); const ext = name.slice(dot); if (head.length <= minHead) return name; return head.slice(0, minHead) + '…' + ext; }