summaryrefslogtreecommitdiff
path: root/src/main/fileSyncBridge.ts
diff options
context:
space:
mode:
authorhaoyuren <13851610112@163.com>2026-09-04 22:26:49 -0500
committerhaoyuren <13851610112@163.com>2026-09-04 22:26:49 -0500
commit34f22876ab9e15e9f14300a8c21cd7109800d1ab (patch)
treef9599f631c38773666c747f41e97752cfafc8e19 /src/main/fileSyncBridge.ts
parent1251d9208caadce626fd0706dfd34ba3e022fb2a (diff)
Fix main-document switching end to end; stable project-independent MCP pathHEADmain
Main document: the app never called Overleaf's official settings endpoint, so "Set as main document" only changed renderer state and agents had no way to switch at all — compiles kept using the old root. Now: - Right-click Set as main and the new set_main_file MCP tool both POST /project/:id/settings {rootDocId} (web parity, persists project-wide) - Handle the rootDocUpdated broadcast: update the project snapshot, the renderer state, and rewrite CLAUDE.md/AGENTS.md — the guide's stale "Main file" line was teaching agents to compile the old root via main_file overrides - Compile root resolution uses the sync bridge's live maps, so docs created mid-session resolve correctly (agent guide too) MCP server location: Codex stores its MCP registration globally, and the per-project path went stale when the project temp dir was cleaned up ("connection closed" on handshake). The bundled server now installs to ~/.lattex/lattex-mcp.mjs (project-independent, refreshed on connect; the esbuild bundle since the raw source can't resolve node_modules from there) and resolves the project at runtime: $LATTEX_PROJECT_DIR, cwd + ancestors, legacy script location, then single live project in tmpdir. Register once, works for every project. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Diffstat (limited to 'src/main/fileSyncBridge.ts')
-rw-r--r--src/main/fileSyncBridge.ts11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/main/fileSyncBridge.ts b/src/main/fileSyncBridge.ts
index 08bf69e..7de04d7 100644
--- a/src/main/fileSyncBridge.ts
+++ b/src/main/fileSyncBridge.ts
@@ -1785,6 +1785,17 @@ export class FileSyncBridge {
return Object.entries(this.fileRefPathMap).map(([id, path]) => ({ id, path }))
}
+ /** Live docId → relPath lookup — unlike the connect-time project snapshot,
+ * this includes docs created mid-session */
+ getDocPath(docId: string): string | undefined {
+ return this.docPathMap[docId]
+ }
+
+ /** Live relPath → docId lookup (see getDocPath) */
+ getDocIdForPath(relPath: string): string | undefined {
+ return this.pathDocMap[relPath]
+ }
+
/** Check if a doc's content is known */
hasDoc(relPath: string): boolean {
return this.lastKnownContent.has(relPath)