fix(links): preserve workspace openers after lookup refusals

This commit is contained in:
Devvyn committed 2026-10-28 23:03:45 +08:00
1 parent 97d53f6621
commit fd0e52496d
7 files changed
+80 -29

No files matched your search

+2
View File
@@ -2656,6 +2656,8 @@ function terminalPathLine(buffer, row, cols, maxRows) {
if (!prev || rows + rowsOf(prev) > bound) break;
first = prev;
rows += rowsOf(prev);
const tail = /[^\s"'<>|;&]+$/.exec(first.text.trimEnd())?.[0] || '';
if (!tail.includes('/')) continue;
const candidate = extend(first);
if (candidate.parts[candidate.parts.length - 1].endRow >= base.startRow) extended = candidate;
}
+5 -6
View File
@@ -2342,12 +2342,11 @@ Object.assign(CodemanApp.prototype, {
const alternative = !folder && logical.pathAlternatives?.find((candidate) => candidate.path === text);
if (alternative && !verifiedSessionId) {
return (async () => {
let path = target;
let registered = await self._registerExternalPreview(path, sessionId);
if (registered.status === 404) {
path = self._resolveLinkedFilePath(alternative.spacedPath, sessionId);
registered = await self._registerExternalPreview(path, sessionId);
}
const original = await self._registerExternalPreview(target, sessionId);
// Attachment policy must not gate the workspace's normal opener.
if (original.status !== 404) return activateFilePath(target, false, sessionId);
const path = self._resolveLinkedFilePath(alternative.spacedPath, sessionId);
const registered = await self._registerExternalPreview(path, sessionId);
if (!registered.attachmentId) {
self.showToast(registered.error || 'Cannot open this file', 'error');
return;