<feed xmlns='http://www.w3.org/2005/Atom'>
<title>lattex.git/src/mcp, branch v0.3.8</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/'/>
<entry>
<title>Add API key management UI and wire S2 key to MCP</title>
<updated>2026-03-16T01:52:13+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-16T01:52:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=66a403488f3a7bc32a02bc9933c396dc4c4e031d'/>
<id>66a403488f3a7bc32a02bc9933c396dc4c4e031d</id>
<content type='text'>
- Settings modal on project list page for OpenAI, Anthropic, OpenRouter, Gemini, Semantic Scholar keys
- Keys stored in userData/api-keys.json, masked by default with show/hide toggle
- S2 API key passed to MCP server via .lattex-mcp.json to avoid rate limits

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Settings modal on project list page for OpenAI, Anthropic, OpenRouter, Gemini, Semantic Scholar keys
- Keys stored in userData/api-keys.json, masked by default with show/hide toggle
- S2 API key passed to MCP server via .lattex-mcp.json to avoid rate limits

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add read_compiled_pdf and search_citation MCP tools</title>
<updated>2026-03-16T00:43:02+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-16T00:43:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=6d4ee5ccd5529d6d2764da73e73fac57d7bfb216'/>
<id>6d4ee5ccd5529d6d2764da73e73fac57d7bfb216</id>
<content type='text'>
- read_compiled_pdf: returns PDF path for Claude Code to visually inspect compiled output
- search_citation: search Semantic Scholar for papers, returns ready-to-use BibTeX entries
- Updated CLAUDE.md template with new tool docs, workflows, and permissions

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- read_compiled_pdf: returns PDF path for Claude Code to visually inspect compiled output
- search_citation: search Semantic Scholar for papers, returns ready-to-use BibTeX entries
- Updated CLAUDE.md template with new tool docs, workflows, and permissions

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add online users popover, MCP get_online_users, claude-workspace, stronger CLAUDE.md</title>
<updated>2026-03-15T23:47:29+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-15T23:47:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=a36b73505754acab6872d23c9add58dfca3cecdd'/>
<id>a36b73505754acab6872d23c9add58dfca3cecdd</id>
<content type='text'>
- Online users: click "N online" badge to see user names with cursor colors
- MCP get_online_users tool: main process tracks users in .lattex-online-users.json
- CLAUDE.md: show current user's Overleaf name (fetched from /user/settings)
- CLAUDE.md: mandatory first steps with MUST/NEVER language at top of file
- claude-workspace/ directory: untracked scratch space for Claude Code experiments
- chokidar + bridge skip claude-workspace/ to prevent syncing to Overleaf

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Online users: click "N online" badge to see user names with cursor colors
- MCP get_online_users tool: main process tracks users in .lattex-online-users.json
- CLAUDE.md: show current user's Overleaf name (fetched from /user/settings)
- CLAUDE.md: mandatory first steps with MUST/NEVER language at top of file
- claude-workspace/ directory: untracked scratch space for Claude Code experiments
- chokidar + bridge skip claude-workspace/ to prevent syncing to Overleaf

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix file sync for non-active tabs, MCP compile integration, OT resilience</title>
<updated>2026-03-15T23:21:06+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-15T23:21:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=c9d673d83037167553dcef3947065266743b2d5f'/>
<id>c9d673d83037167553dcef3947065266743b2d5f</id>
<content type='text'>
- Fix .bib (and other non-active tab) edits disappearing: call otLeaveDoc
  on tab switch so bridge takes back OT ownership; release .bib pre-loads
  immediately after reading content for citation autocomplete
- Always update lastKnownContent in processDocChange for editor docs to
  prevent stale state accumulation
- Flush pending OT ops in OverleafDocSync.destroy() before tab switch
- Add three-way merge in replaceContent to preserve concurrent remote edits
- Wire MCP compile to UI: file-based signal between MCP server and Electron
  main process, with compile animation and PDF refresh in renderer
- Add CLSI flush before compile to prevent stale cached results
- Add OT error recovery: re-join doc and re-apply disk changes on otUpdateError
- Add bridge reconnect handling: reset OtClient on docRejoined for non-editor docs
- Add compile concurrency lock to prevent duplicate compiles
- removeEditorDoc compares disk vs server content to catch in-flight ops

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Fix .bib (and other non-active tab) edits disappearing: call otLeaveDoc
  on tab switch so bridge takes back OT ownership; release .bib pre-loads
  immediately after reading content for citation autocomplete
- Always update lastKnownContent in processDocChange for editor docs to
  prevent stale state accumulation
- Flush pending OT ops in OverleafDocSync.destroy() before tab switch
- Add three-way merge in replaceContent to preserve concurrent remote edits
- Wire MCP compile to UI: file-based signal between MCP server and Electron
  main process, with compile animation and PDF refresh in renderer
- Add CLSI flush before compile to prevent stale cached results
- Add OT error recovery: re-join doc and re-apply disk changes on otUpdateError
- Add bridge reconnect handling: reset OtClient on docRejoined for non-editor docs
- Add compile concurrency lock to prevent duplicate compiles
- removeEditorDoc compares disk vs server content to catch in-flight ops

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add MCP compile debugging tools: get_compile_errors, get_compile_warnings, get_compile_log</title>
<updated>2026-03-15T09:02:40+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-15T09:02:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=6aea514b38a8b36882d39aec30fd12e997f82611'/>
<id>6aea514b38a8b36882d39aec30fd12e997f82611</id>
<content type='text'>
New MCP tools for agents to debug LaTeX compilation:
- get_compile_errors: parsed errors with file paths and line numbers
- get_compile_warnings: parsed warnings with locations
- get_compile_log: full raw log with optional tail parameter
- compile_latex: improved to fetch log via CDN URL, return error summary

Log parsing uses the same Overleaf-style parser as the PdfViewer component.
Updated CLAUDE.md template with compile-debug workflow documentation.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
New MCP tools for agents to debug LaTeX compilation:
- get_compile_errors: parsed errors with file paths and line numbers
- get_compile_warnings: parsed warnings with locations
- get_compile_log: full raw log with optional tail parameter
- compile_latex: improved to fetch log via CDN URL, return error summary

Log parsing uses the same Overleaf-style parser as the PdfViewer component.
Updated CLAUDE.md template with compile-debug workflow documentation.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Real-time comment sync, MCP server expansion, multi-tab terminal, UI fixes</title>
<updated>2026-03-15T06:57:17+00:00</updated>
<author>
<name>haoyuren</name>
<email>13851610112@163.com</email>
</author>
<published>2026-03-15T06:57:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/lattex.git/commit/?id=7748999a8b0c3ab5e7b107bf7c42f24580cb23aa'/>
<id>7748999a8b0c3ab5e7b107bf7c42f24580cb23aa</id>
<content type='text'>
- Fix Socket.IO v0.9 ack parser to handle acks without data (6:::N format),
  fixing comment creation stuck at "sending"
- Rewrite comment sync to use local state updates from socket events
  (new-comment, resolve-thread, reopen-thread, delete-thread, edit-message,
  delete-message) instead of REST re-fetches — instant UI updates
- Optimistic updates for all comment actions (resolve, reopen, delete, reply, edit)
- Fetch threads + contexts on project connect so editor highlights are correct
  from startup, not only when review panel is opened
- Add comment context to store immediately after creation for instant highlight
- Rename MCP server from overleaf-comments to lattex, add 6 new tools:
  reopen_comment, delete_comment, get_chat_messages, send_chat_message,
  list_project_files, compile_latex — all auto-granted permissions
- Refactor terminal from fixed Terminal/Claude tabs to dynamic multi-tab with
  bottom tab bar and unlimited new terminal creation
- Fix chat panel layout overflow pushing other components

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Fix Socket.IO v0.9 ack parser to handle acks without data (6:::N format),
  fixing comment creation stuck at "sending"
- Rewrite comment sync to use local state updates from socket events
  (new-comment, resolve-thread, reopen-thread, delete-thread, edit-message,
  delete-message) instead of REST re-fetches — instant UI updates
- Optimistic updates for all comment actions (resolve, reopen, delete, reply, edit)
- Fetch threads + contexts on project connect so editor highlights are correct
  from startup, not only when review panel is opened
- Add comment context to store immediately after creation for instant highlight
- Rename MCP server from overleaf-comments to lattex, add 6 new tools:
  reopen_comment, delete_comment, get_chat_messages, send_chat_message,
  list_project_files, compile_latex — all auto-granted permissions
- Refactor terminal from fixed Terminal/Claude tabs to dynamic multi-tab with
  bottom tab bar and unlimited new terminal creation
- Fix chat panel layout overflow pushing other components

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
