3e237e177a
* feat: add code-walkthrough backend (MCP tool, service, persistence, WS events) * feat: render agent code walkthroughs as line-anchored cards + editor window * test: add code-walkthrough re-emit mock-agent scenario * fix: rework code-walkthrough UX (floating card, line reveal, minimize, clickable file) * fix: improve code walkthrough editor UX * fix: backfill walkthrough launcher after websocket connect * fix: improve walkthrough requests and editor anchors * fix: clear walkthrough highlights on close * feat: add walkthrough discard and prompt customization * fix: send walkthrough requests through saved prompt * fix: support postgres built-in prompt seeding * fix: address walkthrough review feedback * fix: address walkthrough review follow-ups * fix: harden walkthrough lifecycle races * fix: reuse walkthrough notification cleanup * fix: guard stale walkthrough file opens * fix: abort stale file opens before paint * fix: stabilize github settings e2e readiness * fix: use stable github settings e2e selector
21 lines
761 B
TypeScript
21 lines
761 B
TypeScript
import { setPendingCursorPosition, scrollEditorIfMounted } from "@/hooks/use-file-editors";
|
|
|
|
export type OpenFileFn = (path: string, repo?: string) => void | Promise<void>;
|
|
|
|
/**
|
|
* Open a file in an editor tab and reveal/center the given line — the walkthrough
|
|
* "pointer" to the line being explained. Uses the same pending-cursor mechanism
|
|
* as LSP go-to-definition: the position is consumed when the editor mounts (new
|
|
* tab), and scrolled live if the tab is already open.
|
|
*/
|
|
export function revealFileAtLine(
|
|
openFile: OpenFileFn,
|
|
file: string,
|
|
line: number,
|
|
repo?: string,
|
|
): void {
|
|
if (line > 0) setPendingCursorPosition(file, line, 1, repo);
|
|
void openFile(file, repo);
|
|
if (line > 0) scrollEditorIfMounted(file, null, line, 1, repo);
|
|
}
|