codex-overleaf-link 2.5.1 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +149 -398
- package/README.zh-CN.md +153 -404
- package/extension/bootstrap/manifest.template.json +1 -1
- package/extension/src/background.js +78 -3
- package/extension/src/backgroundSharedSessions.js +55 -2
- package/extension/src/backgroundUpdateCoordinator.js +128 -12
- package/extension/src/content/activeTurnControl.js +164 -7
- package/extension/src/content/composerAttachments.js +11 -2
- package/extension/src/content/composerPanel.js +92 -12
- package/extension/src/content/contentRuntime.js +920 -276
- package/extension/src/content/contextTray.js +8 -2
- package/extension/src/content/contextUsageView.js +267 -0
- package/extension/src/content/diagnosticsPanel.js +18 -0
- package/extension/src/content/generated/content.bundle.js +4496 -924
- package/extension/src/content/generated/content.bundle.meta.json +6 -3
- package/extension/src/content/legacyGlobalRegistry.js +4 -0
- package/extension/src/content/localSkillsPanel.js +2 -2
- package/extension/src/content/markdownDomRenderer.js +5 -3
- package/extension/src/content/markdownText.js +42 -5
- package/extension/src/content/modelPicker.js +1 -0
- package/extension/src/content/nativeCompatibilityController.js +29 -10
- package/extension/src/content/otWarmMirror.js +1 -1
- package/extension/src/content/pageBridgeClient.js +2 -2
- package/extension/src/content/panelMaintenance.js +6 -2
- package/extension/src/content/panelRenderer.js +51 -27
- package/extension/src/content/pendingInputView.js +1 -1
- package/extension/src/content/projectSettingsCoordinator.js +30 -6
- package/extension/src/content/providerSettingsDialog.js +2 -1
- package/extension/src/content/recentProjects.js +4 -3
- package/extension/src/content/runActivitySummary.js +122 -14
- package/extension/src/content/runCompletionMeta.js +194 -6
- package/extension/src/content/runController.js +2 -1
- package/extension/src/content/runFailureNotice.js +8 -1
- package/extension/src/content/runPresence.js +18 -8
- package/extension/src/content/runQueueScheduler.js +9 -5
- package/extension/src/content/runRecoveryActions.js +2 -1
- package/extension/src/content/runResultActions.js +22 -20
- package/extension/src/content/runReviewController.js +94 -35
- package/extension/src/content/runTimelineView.js +224 -25
- package/extension/src/content/scopedPersistencePanelState.js +92 -23
- package/extension/src/content/sensitivePreflight.js +14 -1
- package/extension/src/content/sessionManager.js +49 -3
- package/extension/src/content/sessionMenuView.js +54 -18
- package/extension/src/content/sessionPersistence.js +25 -5
- package/extension/src/content/settingsPanel.js +15 -2
- package/extension/src/content/settingsWorkbench.js +127 -89
- package/extension/src/content/sharedSessionViewSync.js +4 -3
- package/extension/src/content/subagentActivityView.js +23 -7
- package/extension/src/content/updateNotice.js +60 -6
- package/extension/src/content/writebackOrchestrator.js +35 -22
- package/extension/src/page/compileBridge.js +193 -180
- package/extension/src/page/overleafCapabilities.js +4 -1
- package/extension/src/page/textCoordinates.js +17 -1
- package/extension/src/page/textFileCreator.js +9 -1
- package/extension/src/page/writebackRouter.js +24 -77
- package/extension/src/pageBridge.js +107 -66
- package/extension/src/popup.js +1 -1
- package/extension/src/shared/agentTranscript.js +350 -17
- package/extension/src/shared/auditRecords.js +2 -0
- package/extension/src/shared/compatibility.js +1 -1
- package/extension/src/shared/compileAdapter.js +58 -17
- package/extension/src/shared/composerAttachmentDraft.js +6 -1
- package/extension/src/shared/contextUsage.js +125 -0
- package/extension/src/shared/failureReasons.js +42 -3
- package/extension/src/shared/i18n.js +299 -29
- package/extension/src/shared/lineReferences.js +38 -31
- package/extension/src/shared/pageRpcContract.js +1 -1
- package/extension/src/shared/panelIcons.js +39 -0
- package/extension/src/shared/reviewing.js +130 -1
- package/extension/src/shared/runActivityModel.js +70 -4
- package/extension/src/shared/runExecutionSnapshot.js +13 -0
- package/extension/src/shared/sessionState.js +63 -4
- package/extension/src/shared/sessionTitle.js +14 -1
- package/extension/src/shared/sharedSessionBridge.js +81 -13
- package/extension/src/shared/staleGuard.js +72 -63
- package/extension/src/shared/storageDb.js +35 -3
- package/extension/src/shared/storageMigration.js +7 -1
- package/extension/src/shared/storageRunActions.js +62 -8
- package/extension/src/shared/undoOperations.js +126 -28
- package/extension/src/shared/updateRuntimeIdentity.js +16 -2
- package/extension/src/shared/writebackSettlement.js +21 -3
- package/extension/styles/panel.css +1106 -490
- package/native-host/src/bootstrapUpdate.js +52 -16
- package/native-host/src/chatBridgeRequest.js +60 -6
- package/native-host/src/chatBridgeResponse.js +10 -1
- package/native-host/src/chatCompletionsBridge.js +29 -2
- package/native-host/src/codexPromptAssembly.js +86 -118
- package/native-host/src/codexSessionRunner.js +126 -17
- package/native-host/src/providerContextError.js +20 -0
- package/native-host/src/taskRunnerRuntime.js +18 -6
- package/native-host/src/textPatch.js +473 -377
- package/native-host/src/updateManager.js +120 -15
- package/package.json +5 -8
package/README.md
CHANGED
|
@@ -2,515 +2,266 @@
|
|
|
2
2
|
<img src="extension/assets/icons/codex-overleaf-icon.png" width="72" alt="Codex Overleaf Link">
|
|
3
3
|
<h1>Codex Overleaf Link</h1>
|
|
4
4
|
<p><strong>Empower Overleaf with Codex.</strong></p>
|
|
5
|
-
<p><img src="https://img.shields.io/badge/version-2.5.1-blue" alt="version 2.5.1"></p>
|
|
6
|
-
<p>English | <a href="README.zh-CN.md">简体中文</a></p>
|
|
7
|
-
<p>Chrome · macOS / Windows / Linux · Local Codex</p>
|
|
8
5
|
<p>
|
|
9
|
-
<img src="https://img.shields.io/badge/
|
|
6
|
+
<img src="https://img.shields.io/badge/version-2.6.0-blue" alt="version 2.6.0">
|
|
10
7
|
<img src="https://img.shields.io/badge/chrome-MV3-green" alt="chrome manifest v3">
|
|
11
8
|
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
|
|
12
9
|
<a href="https://github.com/Ghqqqq/codex-overleaf-link/actions/workflows/test.yml"><img src="https://github.com/Ghqqqq/codex-overleaf-link/actions/workflows/test.yml/badge.svg" alt="tests"></a>
|
|
13
10
|
<img src="https://img.shields.io/badge/runtime%20dependencies-0-orange" alt="zero npm runtime dependencies">
|
|
14
11
|
<img src="https://img.shields.io/badge/license-MIT-blue" alt="license">
|
|
15
12
|
</p>
|
|
13
|
+
<p>English | <a href="README.zh-CN.md">简体中文</a></p>
|
|
16
14
|
</div>
|
|
17
15
|
|
|
18
|
-
Ask about
|
|
19
|
-
|
|
20
|
-

|
|
21
|
-
|
|
22
|
-
*Interface captured on 2.5.0. A read-only review of the standard Overleaf example project.*
|
|
23
|
-
|
|
24
|
-
<details>
|
|
25
|
-
<summary>Read the conversation detail (native 2x PNG)</summary>
|
|
26
|
-
|
|
27
|
-
<p align="center"><img src="assets/readme/2.5.0/conversation@2x.png" width="393" alt="Native high-resolution capture of the actual Codex conversation"></p>
|
|
16
|
+
Codex Overleaf Link adds a Codex panel next to the Overleaf editor. Ask about your project, or let Codex edit it: changes go back through the editor, as tracked changes if you want, and a run can be undone until you accept its changes. Codex runs on your machine through the Codex CLI.
|
|
28
17
|
|
|
29
|
-
|
|
18
|
+

|
|
30
19
|
|
|
20
|
+
[Features](#features) · [Install](#install) · [How it works](#how-it-works) · [Configuration](#configuration) · [Troubleshooting](#troubleshooting)
|
|
31
21
|
|
|
32
|
-
|
|
22
|
+
## Features
|
|
33
23
|
|
|
34
|
-
|
|
24
|
+
### Ask, Auto and Track
|
|
35
25
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
| Intent | Control | Result |
|
|
26
|
+
| Mode | Codex can | Changes go to |
|
|
39
27
|
|---|---|---|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
| Reverse a run | **Undo changes** | Eligible edits are restored and eligible newly created files are removed. |
|
|
44
|
-
|
|
45
|
-
Undo also works after refresh. If a file was edited again afterwards, that file stays available for review; completed Undo steps are retained so a retry can focus on the remaining work.
|
|
46
|
-
|
|
47
|
-
### Give the conversation the right context
|
|
48
|
-
|
|
49
|
-
Use `@` or **+** to attach project files, add `@compile-log` for a compile issue, or select text in the editor. **Add to Chat** provides context; **Edit Selection** sets the requested edit range. PDFs and images can be attached to the composer as references.
|
|
50
|
-
|
|
51
|
-
<p align="center"><img src="assets/readme/2.5.0/context@2x.png" width="510" alt="A real composer draft with main.tex and sample.bib attached as context"></p>
|
|
52
|
-
|
|
53
|
-
*An unsent draft with two project files attached. File context remains visible in the composer.*
|
|
54
|
-
|
|
55
|
-
### Follow the work and open a subagent's conversation
|
|
56
|
-
|
|
57
|
-
A run keeps its activity and result together. Expand its timeline to inspect reads, commands, and edits. With **Parallel Subagents** enabled, the main agent can continue working while delegated readers or workers run alongside it. Open a worker card to read that conversation, then return to the main task.
|
|
58
|
-
|
|
59
|
-
<table>
|
|
60
|
-
<tr>
|
|
61
|
-
<td width="50%" align="center"><img src="assets/readme/2.5.0/activity@2x.png" width="393" alt="The actual run timeline and two completed subagent cards"></td>
|
|
62
|
-
<td width="50%" align="center"><img src="assets/readme/2.5.0/subagent@2x.png" width="393" alt="The actual read-only Structure subagent conversation"></td>
|
|
63
|
-
</tr>
|
|
64
|
-
</table>
|
|
65
|
-
|
|
66
|
-
*The same real task, shown as an activity view and as a child conversation. These captures show completed workers. Parallel Subagents is experimental.*
|
|
67
|
-
|
|
68
|
-
<a id="writing-style"></a>
|
|
28
|
+
| **Ask** | read the project | nowhere; Overleaf is not touched |
|
|
29
|
+
| **Auto** | read and edit | Overleaf, in Editing mode |
|
|
30
|
+
| **Auto + Track** | read and edit | Overleaf, as tracked changes |
|
|
69
31
|
|
|
70
|
-
|
|
32
|
+
With Track on, each rewritten sentence becomes one tracked change and small fixes stay word-level, so the Review panel reads like edits made by hand. **Accept changes** accepts the run's own tracked changes. **Undo changes** restores the files the run wrote and removes the files it created, also after a page reload.
|
|
71
33
|
|
|
72
|
-
|
|
34
|
+

|
|
73
35
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
36
|
+
- Auto doesn't ask before each edit, but deleting files and adding or replacing images and PDFs always ask first.
|
|
37
|
+
- If a file is edited again after the run, Undo stops at that file instead of overwriting it.
|
|
38
|
+
- **Cancel** stops a run. Files already written stay and can still be undone.
|
|
39
|
+
- Track Changes depends on the project owner's Overleaf plan. When it isn't available, the panel asks before the run whether to write without tracking.
|
|
77
40
|
|
|
78
|
-
|
|
41
|
+
### Context
|
|
79
42
|
|
|
80
|
-
|
|
43
|
+
Attach project files with `@` or **+**, add `@compile-log` for a compile problem, or select lines in the editor and choose **Add to Chat** to reference them as a range such as `main.tex:22-24`. **Edit Selection** limits the edit to the selected text. PDFs and images can be attached for Codex to read; they are never added to the project. The line above the composer shows what Codex will read next: the current file, the selected files, or the whole project.
|
|
81
44
|
|
|
82
|
-
|
|
45
|
+
Up to five project files stay attached across turns. Attachments are limited to 8 per turn, 12 MiB each and 32 MiB in total.
|
|
83
46
|
|
|
84
|
-
<
|
|
47
|
+
<p align="center">
|
|
48
|
+
<img src="assets/readme/2.6.0/selection@2x.png" width="340" align="top" alt="Lines selected in the editor, with the Add to Chat and Edit Selection toolbar">
|
|
49
|
+
<img src="assets/readme/2.6.0/context@2x.png" width="340" align="top" alt="Two files and a line range attached to the composer">
|
|
50
|
+
</p>
|
|
85
51
|
|
|
86
|
-
|
|
52
|
+
### Run timeline and subagents
|
|
87
53
|
|
|
88
|
-
|
|
54
|
+
Each run keeps its steps and its answer together. Expand the timeline to see what Codex read, ran and changed. With **Parallel Subagents** on *(experimental)*, the main agent can hand work to readers and workers that run alongside it. Open one to read its conversation, then go back to the main task.
|
|
89
55
|
|
|
90
|
-
|
|
56
|
+
<p align="center">
|
|
57
|
+
<img src="assets/readme/2.6.0/activity@2x.png" width="340" align="top" alt="A run timeline with two subagents">
|
|
58
|
+
<img src="assets/readme/2.6.0/subagent@2x.png" width="340" align="top" alt="A subagent's read-only conversation">
|
|
59
|
+
</p>
|
|
91
60
|
|
|
92
|
-
|
|
61
|
+
### Context window
|
|
93
62
|
|
|
94
|
-
|
|
63
|
+
The ring beside the model shows how full the conversation's context window is. Open it to see the latest input, cached input and output, or to compact the conversation; `/compact` does the same.
|
|
95
64
|
|
|
96
|
-
<
|
|
65
|
+
<p align="center">
|
|
66
|
+
<img src="assets/readme/2.6.0/context-window@2x.png" width="340" align="top" alt="Context window usage beside the model">
|
|
67
|
+
<img src="assets/readme/2.6.0/slash-menu@2x.png" width="340" align="top" alt="Typing / opens the command and skill menu, with /compact first">
|
|
68
|
+
</p>
|
|
97
69
|
|
|
98
|
-
|
|
70
|
+
### Results and compile check
|
|
99
71
|
|
|
100
|
-
|
|
101
|
-
>
|
|
102
|
-
> **Local candidate:** 2.5.1 is being tested and has not been published. For this checkout, use `npm run build:content` followed by `npm run install:managed`. The version-pinned npm and download commands below apply after publication. The compatible 2.5.0 → 2.5.1 update migration is implemented and awaiting complete acceptance; it is not yet available through the public update feed.
|
|
72
|
+
Every run ends with a short result. If a run doesn't go as planned, its card names the cause, what it means for the document, and a next step: **Didn't finish**, **Partly written**, **Not written**, or **Check Overleaf** when a write couldn't be confirmed.
|
|
103
73
|
|
|
104
|
-
|
|
74
|
+
- If you or a collaborator edit a file while Codex works, Codex's patch is moved around your edit, and Undo keeps it. If both change the same text, the file is left as it is and reported as **Not written**. **Retry sync** writes only the files that are still pending.
|
|
75
|
+
- With **Auto compile** on, Overleaf recompiles after the write. Errors are read from that compile's log and listed on the card. The fix button drafts a request with `@compile-log` in the composer, for you to send.
|
|
105
76
|
|
|
106
|
-
|
|
77
|
+
<p align="center">
|
|
78
|
+
<img src="assets/readme/2.6.0/compile-card@2x.png" width="340" align="top" alt="A compile error on the run card, with a Fix 1 compile error button">
|
|
79
|
+
<img src="assets/readme/2.6.0/compile-draft@2x.png" width="340" align="top" alt="A fix request with @compile-log drafted in the composer">
|
|
80
|
+
</p>
|
|
107
81
|
|
|
108
|
-
|
|
109
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- install-managed
|
|
110
|
-
```
|
|
82
|
+
### Write in My Style *(experimental)*
|
|
111
83
|
|
|
112
|
-
|
|
113
|
-
2. In `chrome://extensions`, enable **Developer mode**, choose **Load unpacked**, and select that directory.
|
|
114
|
-
3. Open an Overleaf project and start with **Ask**. Switch to **Auto** when a file change is intended.
|
|
84
|
+
Builds a writing-style skill from Overleaf projects and PDFs you choose.
|
|
115
85
|
|
|
116
|
-
|
|
86
|
+
1. Open **Settings → This project → Writing**.
|
|
87
|
+
2. Under **Write in My Style**, pick reference projects or add text-based PDFs.
|
|
88
|
+
3. Generate the style and turn it on for the project. After you change the references, **Update style** refreshes it.
|
|
117
89
|
|
|
118
|
-
|
|
90
|
+
The style guides phrasing, rhythm, structure and tone; facts, results and citations still come from your project. The same page holds the project's **Personalization** notes for terminology and LaTeX conventions.
|
|
119
91
|
|
|
120
|
-
|
|
92
|
+
<p align="center"><img src="assets/readme/2.6.0/writing-style@2x.png" width="700" alt="The Writing page in Settings"></p>
|
|
121
93
|
|
|
122
|
-
|
|
94
|
+
### Models and providers
|
|
123
95
|
|
|
124
|
-
|
|
125
|
-
<summary><strong>Open the detailed reference</strong></summary>
|
|
96
|
+
The panel uses the local Codex CLI's models by default; choose the model and reasoning level in the composer. To use another endpoint *(experimental)*, add a provider under **Settings → All projects → Models & connections**. Shortcuts fill in the defaults for OpenAI-compatible and Anthropic-compatible APIs, Kimi, GLM and DeepSeek; you add the API key and model IDs.
|
|
126
97
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
| | |
|
|
130
|
-
|---|---|
|
|
131
|
-
| Computer | macOS, Windows, or Linux |
|
|
132
|
-
| Browser | Google Chrome. Linux Chromium also works; see [Browser support](#browser-support). |
|
|
133
|
-
| Node.js 20+ and Git | Used by the installers and the local bridge |
|
|
134
|
-
| [Codex CLI](https://github.com/openai/codex) | Installed and signed in. Check with `codex --version`. |
|
|
135
|
-
| Overleaf | An account on `overleaf.com` or `cn.overleaf.com` |
|
|
136
|
-
| TeX *(optional)* | Only for local `latexmk` checks |
|
|
98
|
+
<p align="center"><img src="assets/readme/2.6.0/providers@2x.png" width="700" alt="Provider shortcuts in Models & connections"></p>
|
|
137
99
|
|
|
138
100
|
## Install
|
|
139
101
|
|
|
140
|
-
|
|
102
|
+
You need Google Chrome on macOS, Windows or Linux (or Chromium on Linux), Node.js 20+, and the [Codex CLI](https://github.com/openai/codex), installed and signed in. The extension works on `overleaf.com`, `www.overleaf.com` and `cn.overleaf.com`; self-hosted Overleaf is not supported.
|
|
141
103
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
### Option A: Let Codex install it (recommended)
|
|
104
|
+
### Let Codex install it (recommended)
|
|
145
105
|
|
|
146
106
|
If you already use Codex in a terminal on the computer where Chrome runs, give it this prompt:
|
|
147
107
|
|
|
148
108
|
```text
|
|
149
|
-
Install Codex Overleaf Link
|
|
150
|
-
|
|
151
|
-
Read the official README and installation scripts first. Detect the operating system and check Node.js >= 20, Codex CLI, and any other prerequisites required by the selected installation method.
|
|
152
|
-
Use the latest published stable GitHub release, excluding drafts and prereleases, unless a specific version was requested. Use the documented managed installation method and install matching Extension and Native Host versions; do not substitute an unreleased main checkout.
|
|
153
|
-
Reuse the existing Chrome profile and managed installation when available. Preserve project files, session history, settings, and provider credentials. Do not print secrets or remove an existing installation without approval.
|
|
154
|
-
Complete the terminal-side setup and checks. If Chrome requires a manual Load unpacked or Reload action, provide the exact managed extension folder and the remaining steps; do not bypass browser restrictions.
|
|
155
|
-
Report the chosen release, installed Extension and Native Host versions, the browser-loaded version when observable, and the native connection check. Matching on-disk versions alone do not prove Chrome has loaded the update. Clearly identify anything still requiring manual action.
|
|
109
|
+
Install Codex Overleaf Link on this computer. Follow the install steps in https://github.com/Ghqqqq/codex-overleaf-link, then tell me what I still need to do in Chrome.
|
|
156
110
|
```
|
|
157
111
|
|
|
158
|
-
###
|
|
159
|
-
|
|
160
|
-
macOS / Linux:
|
|
112
|
+
### Install with npm
|
|
161
113
|
|
|
162
114
|
```bash
|
|
163
|
-
|
|
115
|
+
npm exec --yes codex-overleaf-link@2.6.0 -- install-managed
|
|
164
116
|
```
|
|
165
117
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
```powershell
|
|
169
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.5.1/install.ps1 -OutFile install.ps1
|
|
170
|
-
$env:CODEX_OVERLEAF_REF='v2.5.1'
|
|
171
|
-
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
The script checks the prerequisites, builds the extension, installs the native host, and prints the folder Chrome should load. On macOS it also copies that path and opens Chrome's extensions page. On macOS and Linux it leaves a `~/Codex Overleaf Link Extension` shortcut in your home folder.
|
|
175
|
-
|
|
176
|
-
### Option C: npm
|
|
177
|
-
|
|
178
|
-
```bash
|
|
179
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- install-managed
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
Same result as Option B, without keeping a source checkout around.
|
|
118
|
+
The installer sets up the native host and a managed copy of the extension, then prints the extension's folder.
|
|
183
119
|
|
|
184
120
|
### Finish in Chrome
|
|
185
121
|
|
|
186
|
-
|
|
187
|
-
2. Click **Load unpacked** and choose the folder the installer printed.
|
|
188
|
-
3. Open or refresh an Overleaf project. The panel appears on the right.
|
|
189
|
-
|
|
190
|
-
If an older copy is still loaded from a different folder, remove it so Chrome doesn't show two.
|
|
191
|
-
|
|
192
|
-
The official build carries a bundled extension key, so it always gets the same stable id and you never need `--extension-id`. Custom builds are covered under [Extension ID](#extension-id).
|
|
193
|
-
|
|
194
|
-
<details>
|
|
195
|
-
<summary><strong>Manual checkout install</strong> (custom location)</summary>
|
|
196
|
-
|
|
197
|
-
```bash
|
|
198
|
-
git clone https://github.com/Ghqqqq/codex-overleaf-link.git
|
|
199
|
-
cd codex-overleaf-link
|
|
200
|
-
npm ci
|
|
201
|
-
npm run build:content
|
|
202
|
-
npm run install:native
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Then load `extension/` as an unpacked extension in Chrome. This install is unmanaged: rebuild and reload the extension after changes, and rerun `npm run install:native` after changing the native runtime. If Chrome assigns a different extension id, rerun `npm run install:native -- --extension-id <chrome-extension-id>`.
|
|
206
|
-
|
|
207
|
-
</details>
|
|
208
|
-
|
|
209
|
-
## Your first run
|
|
210
|
-
|
|
211
|
-
1. Open a project and click the Codex edge tab if the panel is hidden. The header turns green once the native host is connected.
|
|
212
|
-
2. Leave the mode on **Ask** and try something that reads the project: *"Summarise what each chapter argues, in one sentence each."*
|
|
213
|
-
3. When you want edits, switch to **Auto**, describe the change, and send. Codex edits its local copy, then the extension writes the changes into Overleaf and recompiles if **Compile** is on.
|
|
214
|
-
4. Check the result under the answer. The summary line says what was written and whether it can be undone; the file rows show the actual changes.
|
|
215
|
-
|
|
216
|
-
The run header tells you what is happening at each moment: reading the project, starting Codex, waiting for the model's first reply, then thinking and editing. If something needs your attention, such as a skipped file or a save Overleaf hasn't confirmed yet, the details open by themselves.
|
|
217
|
-
|
|
218
|
-
## Ask, Auto and Track
|
|
219
|
-
|
|
220
|
-
| | What Codex may do | Where the changes go |
|
|
221
|
-
|---|---|---|
|
|
222
|
-
| **Ask** | Read and analyse | Nowhere. Overleaf is not touched. |
|
|
223
|
-
| **Auto** | Read and edit | Written straight into Overleaf in Editing mode. |
|
|
224
|
-
| **Auto + Track** | Read and edit | Written as tracked changes you can review in Overleaf's Review panel. |
|
|
225
|
-
|
|
226
|
-
Auto does not stop for per-hunk approval, but deleting files and creating or replacing images and PDFs always ask first. Before each write the extension checks that the text it is about to change still matches what Codex saw. If a collaborator edited the same lines in the meantime, that file is skipped and reported, never overwritten.
|
|
227
|
-
|
|
228
|
-
**Undo changes** puts the run's files back the way they were, created files included, and works after a page reload. If someone edited the same text afterwards, Undo stops for that file instead of guessing.
|
|
229
|
-
|
|
230
|
-
**Accept changes** finalises a Track run's changes in one step and leaves Overleaf in Editing mode.
|
|
231
|
-
|
|
232
|
-
> [!WARNING]
|
|
233
|
-
> Don't use the run card's **Accept changes** when the same files contain unrelated tracked changes from collaborators or other runs. Accept those individually in Overleaf's Review panel instead.
|
|
234
|
-
|
|
235
|
-
**Cancel** stops the run. Anything already written stays, and the card shows which parts landed so you can undo them.
|
|
236
|
-
|
|
237
|
-
## Models and API providers
|
|
238
|
-
|
|
239
|
-
By default the panel uses your local Codex CLI: its login, models and settings. Pick a model and reasoning level from the control in the composer.
|
|
240
|
-
|
|
241
|
-
To use another endpoint, open **Project Settings → Model providers → Configure → Add provider**:
|
|
242
|
-
|
|
243
|
-
1. Enter a **Provider name**, the **Base URL** and your **API key**. HTTPS is required except for localhost.
|
|
244
|
-
2. Under **Models**, add each model with the exact ID your endpoint accepts, and mark one as the default.
|
|
245
|
-
3. Leave **API protocol** on Auto, or pick Responses API, Chat Completions or Anthropic Messages. If the URL already ends with the full endpoint path, tick **Base URL is the full protocol endpoint**.
|
|
246
|
-
4. **Test connection** sends one real request to a model you pick. Then choose **Save and use for this project**.
|
|
247
|
-
|
|
248
|
-
The choice applies to every session in the current project; other projects keep their own. Switching keeps your history and starts fresh threads for new turns. Gateways differ in how they handle tools and reasoning, so a passing test doesn't guarantee every model behaves the same in long tasks. API keys stay with the native host on your machine; task context is sent to the endpoint you chose.
|
|
249
|
-
|
|
250
|
-
## Context and attachments
|
|
251
|
-
|
|
252
|
-
- **Files**: type `@` or use the **+** tray to add up to five files. They stay selected across turns until you clear them. Codex can still read the rest of the project.
|
|
253
|
-
- **Selections**: select text in the editor and attach it as context, or as **Selection only** to restrict the edit to that range. The chip stays visible on the message you sent.
|
|
254
|
-
- **Compile log**: `@compile-log` attaches the current errors and warnings.
|
|
255
|
-
- **Attachments**: paste or drop PDFs and images into the composer. Up to 8 per turn, 12 MiB each and 32 MiB in total. They are only for Codex to read and are never written to Overleaf.
|
|
256
|
-
- **Generated files**: images, PDFs and other assets Codex creates (up to 10 MiB each) ask for confirmation before they're added to the project. LaTeX build output is filtered out.
|
|
257
|
-
|
|
258
|
-
## Updating
|
|
259
|
-
|
|
260
|
-
Managed installs check GitHub for new signed stable releases on their own. When one is available, choose **Update now** in the notice or under **Settings → Software updates**. The update waits until every Overleaf tab is saved and no task is running, replaces the extension and native host together, and restores the previous version if the new one fails its health check. Drafts and prereleases are never picked up, and an update never adds Chrome permissions silently.
|
|
261
|
-
|
|
262
|
-
The 2.5.1 candidate adds a compatible update from the published 2.5.0 installation through the same **Update now** action. Its signed package carries the startup-file fixes, retains recovery copies and progress, and reloads the extension before confirming the updated startup code. Bootstrap protocol 3 and existing Chrome permissions remain unchanged. This migration is still undergoing local acceptance; the candidate is unpublished.
|
|
263
|
-
|
|
264
|
-
The updater respects HTTP(S) proxy environment variables and the macOS/Windows system proxy. SOCKS-only or PAC-only setups need an HTTP proxy endpoint.
|
|
265
|
-
|
|
266
|
-
### Coming from v2.4.x or earlier
|
|
267
|
-
|
|
268
|
-
v2.5.0 adds `cn.overleaf.com` support, which needs a new Chrome permission, so it moves the install to Bootstrap protocol 3. Older updaters refuse that step by design rather than granting permissions themselves. **Installations older than 2.5.0 need the full installer for this migration.** Run the installer once:
|
|
269
|
-
|
|
270
|
-
```bash
|
|
271
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- install-managed
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
Then click **Reload** on the extension in `chrome://extensions` and refresh Overleaf. Your sessions, settings, provider keys and project mirrors are kept. In-place updates require the target release to pass the Bootstrap compatibility checks.
|
|
275
|
-
|
|
276
|
-
From v2.5.0 on, a release that ever needs another reinstall is announced in the panel as **Reinstall needed for this update**, with the reason, the exact command for that version, and a copy button, instead of a failed update. New Overleaf sites no longer need a reinstall at all: the extension popup asks you to allow the site, and Chrome confirms it.
|
|
277
|
-
|
|
278
|
-
Checkout and Release-zip installs are unmanaged and always update by hand.
|
|
279
|
-
|
|
280
|
-
## Commands
|
|
281
|
-
|
|
282
|
-
| Action | Command |
|
|
283
|
-
|---|---|
|
|
284
|
-
| Install, repair or migrate | `npm exec --yes codex-overleaf-link@2.5.1 -- install-managed` |
|
|
285
|
-
| Diagnose | `npm exec --yes codex-overleaf-link@2.5.1 -- doctor` |
|
|
286
|
-
| Uninstall | `npm exec --yes codex-overleaf-link@2.5.1 -- uninstall-managed` |
|
|
122
|
+
In `chrome://extensions`, turn on **Developer mode**, click **Load unpacked** and pick the extension folder. Open an Overleaf project and the panel appears on the right.
|
|
287
123
|
|
|
288
|
-
npm installs, updates, and uninstalls the coordinated managed extension/native pair. The legacy `install-native` command remains available only for explicitly unmanaged extension directories:
|
|
289
|
-
|
|
290
|
-
```bash
|
|
291
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- install-native
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extension id that differs from the official bundled id. On Linux Chromium, add `--browser chromium` to any of these.
|
|
295
|
-
|
|
296
|
-
<a id="uninstall"></a>
|
|
297
124
|
<details>
|
|
298
|
-
<summary
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- uninstall-managed
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
This works in PowerShell too, and also removes installs made by `install.sh` / `install.ps1`. For an unmanaged checkout or native-only install, run `npm run uninstall:native` from the checkout, or:
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- uninstall-native
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
An older native-only source install can also be removed with its bundled uninstaller:
|
|
125
|
+
<summary>Other ways to install</summary>
|
|
311
126
|
|
|
312
127
|
```bash
|
|
313
|
-
|
|
128
|
+
# macOS / Linux
|
|
129
|
+
CODEX_OVERLEAF_REF=v2.6.0 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.6.0/install.sh)"
|
|
314
130
|
```
|
|
315
131
|
|
|
316
132
|
```powershell
|
|
317
|
-
|
|
133
|
+
# Windows
|
|
134
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.6.0/install.ps1 -OutFile install.ps1
|
|
135
|
+
$env:CODEX_OVERLEAF_REF='v2.6.0'
|
|
136
|
+
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
318
137
|
```
|
|
319
138
|
|
|
320
|
-
Uninstalling removes the native host registration, bridge, managed extension and runtimes. It leaves your history, settings, project mirrors, provider keys and skills alone. Remove the extension from `chrome://extensions` as well. On Windows the install lives under `%LOCALAPPDATA%\CodexOverleaf` and your data under `%USERPROFILE%\.codex-overleaf`, so a full cleanup covers both. See [Local data and cleanup](#local-data-and-cleanup).
|
|
321
|
-
|
|
322
|
-
</details>
|
|
323
|
-
|
|
324
|
-
## FAQ and troubleshooting
|
|
325
|
-
|
|
326
|
-
**The panel says "Native host update required", or can't find the native host.**
|
|
327
|
-
Rerun the installer, reload the extension in `chrome://extensions`, then refresh Overleaf:
|
|
328
|
-
|
|
329
139
|
```bash
|
|
330
|
-
|
|
140
|
+
# From source. Unmanaged: rebuild and reload the extension yourself after changes.
|
|
141
|
+
git clone https://github.com/Ghqqqq/codex-overleaf-link.git && cd codex-overleaf-link
|
|
142
|
+
npm ci && npm run build:content && npm run install:native
|
|
143
|
+
# then load extension/ as an unpacked extension
|
|
331
144
|
```
|
|
332
145
|
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
**Codex CLI not found.**
|
|
336
|
-
Make sure `codex --version` works in a new terminal (on Windows, `Get-Command codex`), and that you're signed in for the built-in provider. Then rerun the installer so the launcher picks up your PATH.
|
|
337
|
-
|
|
338
|
-
**Extension id mismatch.**
|
|
339
|
-
Copy the id from `chrome://extensions` and reinstall with it. See [Extension ID](#extension-id).
|
|
146
|
+
The official build always has the extension ID `illdpneeeopfffmiepaejglgmhpmdhdc`. If a custom build gets a different ID, pass `--extension-id <id>` to the installer. For Chromium on Linux, add `--browser chromium`.
|
|
340
147
|
|
|
341
|
-
|
|
342
|
-
Usually a collaborator changed those lines, the file couldn't be opened in the editor in time, or a project rule marks it read-only. The details under the answer say which, and **Retry sync** writes only the files that are still pending. Don't rerun the whole task just to retry. That can apply the same edit twice.
|
|
343
|
-
|
|
344
|
-
**Undo changes or Accept changes is missing.**
|
|
345
|
-
Both depend on what the run actually wrote. If files were written but the button is gone, check the changes in Overleaf before doing anything else, and attach exported diagnostics to an issue.
|
|
346
|
-
|
|
347
|
-
**A write was blocked by a project rule, or the sensitive-content check fired.**
|
|
348
|
-
Rules can make paths read-only or restrict where Codex may write. Adjust them in Project Settings or narrow the request. The sensitive-content check looks for things like tokens and keys before context leaves your machine; remove or redact what it found.
|
|
349
|
-
|
|
350
|
-
**A queued message or a fork won't run.**
|
|
351
|
-
Queued messages keep the settings they were sent with. If that provider profile was changed or deleted, send the message again. A fork needs a recorded Codex turn and is disabled when there isn't one.
|
|
352
|
-
|
|
353
|
-
**Reporting a bug.**
|
|
354
|
-
Use **Export Diagnostics** in the panel. The bundle leaves out project text, prompts, compile logs, diffs and secrets by default. If you attach other logs, check them for file names, tokens and document text first.
|
|
148
|
+
</details>
|
|
355
149
|
|
|
356
150
|
## How it works
|
|
357
151
|
|
|
358
152
|
```mermaid
|
|
359
153
|
flowchart TD
|
|
360
154
|
O[Overleaf project and editor] <--> P[Page bridge]
|
|
361
|
-
P <--> C[
|
|
155
|
+
P <--> C[Panel and content runtime]
|
|
362
156
|
C <--> B[Extension service worker]
|
|
363
|
-
B <-->|Native Messaging over stdio| N[
|
|
157
|
+
B <-->|Native Messaging over stdio| N[Native host, Node]
|
|
364
158
|
N <--> M[Project mirror and baseline]
|
|
365
|
-
N <-->|JSON
|
|
366
|
-
A -->|
|
|
159
|
+
N <-->|JSON-RPC over stdio| A[codex app-server]
|
|
160
|
+
A -->|reads and edits| M
|
|
367
161
|
```
|
|
368
162
|
|
|
369
|
-
1. When you send a task, the extension
|
|
370
|
-
2. The native host starts `codex app-server`
|
|
371
|
-
3. When Codex
|
|
372
|
-
4. In Auto, the extension writes each patch through the Overleaf editor
|
|
373
|
-
5.
|
|
163
|
+
1. When you send a task, the extension saves the run's settings and syncs the project into a local mirror, or reuses the mirror if it is still current.
|
|
164
|
+
2. The native host starts `codex app-server` on the mirror, with a Codex home of its own.
|
|
165
|
+
3. When Codex is done, the host compares the mirror with its baseline and turns the differences into text patches and file transfers. An Ask run ends here.
|
|
166
|
+
4. In Auto, the extension writes each patch through the Overleaf editor. Before writing it checks the project, path rules, edit mode and expected text, and shifts the patch past edits made elsewhere in the file since the run started.
|
|
167
|
+
5. It then records the undo point, confirms the save, refreshes the mirror and, if Auto compile is on, recompiles.
|
|
374
168
|
|
|
375
|
-
|
|
169
|
+
Contributor notes on the architecture are in [docs/architecture](docs/architecture/README.md).
|
|
376
170
|
|
|
377
|
-
|
|
378
|
-
npm ci
|
|
379
|
-
npm run build:content
|
|
380
|
-
npm test
|
|
381
|
-
npm run verify:source
|
|
382
|
-
npm run verify:npm-package
|
|
383
|
-
npm run verify:update-boundary
|
|
384
|
-
npm run check:architecture
|
|
385
|
-
npm run benchmark:large
|
|
386
|
-
```
|
|
171
|
+
## Configuration
|
|
387
172
|
|
|
388
|
-
|
|
173
|
+
**Providers.** In **Settings → All projects → Models & connections → Add provider**, enter the base URL (HTTPS, except for localhost), the API key and the model IDs your endpoint accepts, and pick the protocol: Auto, Responses, Chat Completions or Anthropic Messages. **Test connection** sends one real request. The choice applies to the current project; other projects keep theirs. Keys are stored by the native host, and task context goes to the endpoint you chose.
|
|
389
174
|
|
|
390
|
-
The
|
|
175
|
+
**Skills.** The plugin's Codex home copies your Codex login and config, but not `~/.codex/AGENTS.md`, `personality`, `rules` or `memories`. **Load local Codex skills** adds `~/.codex/skills` and your local plugins; **Load Codex Overleaf skills** adds `~/.codex-overleaf/skills`. Both are on by default.
|
|
391
176
|
|
|
392
|
-
|
|
393
|
-
|---|---|
|
|
394
|
-
| Panel and task orchestration | `extension/src/content/contentRuntime.js`, `extension/src/content/runController.js` |
|
|
395
|
-
| Page snapshot and writeback | `extension/src/pageBridge.js`, `extension/src/page/snapshotRouter.js`, `extension/src/page/writebackRouter.js` |
|
|
396
|
-
| Browser/native transport | `extension/src/background.js`, `native-host/src/index.js` |
|
|
397
|
-
| Codex and local mirror | `native-host/src/taskRunnerRuntime.js`, `native-host/src/codexSessionRunner.js`, `native-host/src/mirrorWorkspace.js` |
|
|
398
|
-
| Shared contracts and persistence | `extension/src/shared/`, `extension/src/content/scopedPersistenceCoordinator.js` |
|
|
399
|
-
| Managed updates and packaging | `extension/bootstrap/`, `extension/src/backgroundUpdateCoordinator.js`, `native-host/src/updateManager.js`, `scripts/` |
|
|
400
|
-
|
|
401
|
-
Browser smoke test against a real project:
|
|
402
|
-
|
|
403
|
-
```bash
|
|
404
|
-
npm run smoke:extension -- --url 'https://www.overleaf.com/project/<project-id>' --probe panel,native,project,diagnostics --json .local/smoke.json
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
It launches Chrome with a temporary profile by default. Use `--profile-dir <test-profile-dir> --keep-profile` for a profile that's already signed in to Overleaf. For releases, see `npm run build:release`, `npm run verify:release-artifacts` and `npm run rehearse:update-hop`.
|
|
177
|
+
**Data.** There is no hosted backend and no telemetry. Task context goes to Codex or to the provider you configured, after a check for tokens and keys. Path rules decide what Codex may write; they don't hide files from it.
|
|
408
178
|
|
|
409
|
-
|
|
179
|
+
<details>
|
|
180
|
+
<summary>Where things are stored</summary>
|
|
410
181
|
|
|
411
|
-
|
|
|
182
|
+
| What | macOS / Linux | Windows |
|
|
412
183
|
|---|---|---|
|
|
413
|
-
|
|
|
414
|
-
|
|
|
415
|
-
|
|
|
416
|
-
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
184
|
+
| Sessions and history | IndexedDB `codex-overleaf` on the Overleaf site | same |
|
|
185
|
+
| Preferences | the extension's `chrome.storage.local` | same |
|
|
186
|
+
| Managed extension and native host | `~/.codex-overleaf/managed/` | `%LOCALAPPDATA%\CodexOverleaf\managed\` |
|
|
187
|
+
| Installer checkout | `~/.codex-overleaf/source` | `%LOCALAPPDATA%\CodexOverleaf\source` |
|
|
188
|
+
| Project mirrors | `~/.codex-overleaf/projects` | `%USERPROFILE%\.codex-overleaf\projects` |
|
|
189
|
+
| Plugin Codex home | `~/.codex-overleaf/codex-home` | `%USERPROFILE%\.codex-overleaf\codex-home` |
|
|
190
|
+
| Skills | `~/.codex-overleaf/skills` | `%USERPROFILE%\.codex-overleaf\skills` |
|
|
191
|
+
| Providers and keys | `~/.codex-overleaf/providers.json`, `provider-secrets.json` | `%USERPROFILE%\.codex-overleaf\` |
|
|
192
|
+
| Logs | `~/.codex-overleaf/native-host.log` | `%LOCALAPPDATA%\CodexOverleaf\native-host.log` |
|
|
193
|
+
| Native Messaging manifest | Chrome: `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.codex.overleaf.json` (macOS), `~/.config/google-chrome/NativeMessagingHosts/` (Linux); Chromium: `~/.config/chromium/NativeMessagingHosts/` | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf` |
|
|
194
|
+
|
|
195
|
+
The history database belongs to the Overleaf site, so removing the extension doesn't delete it.
|
|
421
196
|
|
|
422
|
-
|
|
423
|
-
CODEX_OVERLEAF_REF=v2.5.1 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.5.1/install.sh)" -- --browser chromium
|
|
424
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- uninstall-managed --browser chromium
|
|
425
|
-
```
|
|
197
|
+
</details>
|
|
426
198
|
|
|
427
|
-
##
|
|
199
|
+
## Updating
|
|
428
200
|
|
|
429
|
-
|
|
201
|
+
Managed installs check GitHub Releases for signed stable versions. **Update now**, in the update notice or under **Settings → All projects → Software updates**, waits until Overleaf is saved and idle, replaces the extension and native host together, and rolls back if the new version fails its health check. **Restore previous version** takes you back. The updater follows HTTP(S) proxy variables and the macOS/Windows system proxy.
|
|
430
202
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
If you load a custom build and Chrome gives it a different id, reinstall with that id so the native host's `allowed_origins` matches:
|
|
203
|
+
- From 2.5.1 or later, updates happen in place.
|
|
204
|
+
- From 2.5.0, update to 2.5.1 first.
|
|
205
|
+
- From anything older, rerun the installer. It moves the install to Bootstrap protocol 3, which the `cn.overleaf.com` permission needs. Then reload the extension. Sessions, settings and keys are kept.
|
|
436
206
|
|
|
437
|
-
|
|
438
|
-
npm exec --yes codex-overleaf-link@2.5.1 -- install-managed --extension-id "<your-chrome-extension-id>"
|
|
439
|
-
```
|
|
207
|
+
Source checkouts and release-zip installs are unmanaged; update them by hand. Each GitHub release carries the extension zip, the native host runtime, the update bundle, the npm package, installers pinned to that release, and signed checksums.
|
|
440
208
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
## Release artifacts
|
|
444
|
-
|
|
445
|
-
Each GitHub Release includes:
|
|
209
|
+
## Commands
|
|
446
210
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
- `SHA256SUMS`, `release-manifest.json` and `release-manifest.sig`: checksums and the Ed25519-signed release metadata the updater verifies.
|
|
454
|
-
- `release-notes.md`.
|
|
211
|
+
| Task | Command |
|
|
212
|
+
|---|---|
|
|
213
|
+
| Install, repair or migrate | `npm exec --yes codex-overleaf-link@2.6.0 -- install-managed` |
|
|
214
|
+
| Diagnose | `npm exec --yes codex-overleaf-link@2.6.0 -- doctor` |
|
|
215
|
+
| Uninstall | `npm exec --yes codex-overleaf-link@2.6.0 -- uninstall-managed` |
|
|
216
|
+
| Native host only, for an unmanaged extension | `npm exec --yes codex-overleaf-link@2.6.0 -- install-native` / `uninstall-native` |
|
|
455
217
|
|
|
456
|
-
|
|
218
|
+
`uninstall-managed` removes the native host registration, the bridge, the managed extension and its runtimes. Your history, settings, mirrors, keys and skills stay. To remove everything, clear the history under **Settings → All projects → Local data → Clear local history…**, uninstall, remove the extension in `chrome://extensions`, and delete `~/.codex-overleaf` and the `~/Codex Overleaf Link Extension` shortcut (on Windows, `%USERPROFILE%\.codex-overleaf` and `%LOCALAPPDATA%\CodexOverleaf`).
|
|
457
219
|
|
|
458
|
-
|
|
220
|
+
<a name="faq-and-troubleshooting"></a>
|
|
459
221
|
|
|
460
|
-
|
|
461
|
-
|---|---|
|
|
462
|
-
| Sessions, runs, history | IndexedDB database `codex-overleaf` under the Overleaf site in Chrome |
|
|
463
|
-
| Preferences and project settings | `chrome.storage.local` of the extension |
|
|
464
|
-
| Managed extension | `~/.codex-overleaf/managed/extension` (`%LOCALAPPDATA%\CodexOverleaf\managed\extension`) |
|
|
465
|
-
| Managed native host | `~/.codex-overleaf/managed/native` (`%LOCALAPPDATA%\CodexOverleaf\managed\native`) |
|
|
466
|
-
| Installer checkout | `~/.codex-overleaf/source` (`%LOCALAPPDATA%\CodexOverleaf\source`) |
|
|
467
|
-
| Native bridge | `~/.codex-overleaf/codex-overleaf-bridge` (`%LOCALAPPDATA%\CodexOverleaf\codex-overleaf-bridge.cmd`) |
|
|
468
|
-
| Project mirrors | `~/.codex-overleaf/projects` (`%USERPROFILE%\.codex-overleaf\projects`) |
|
|
469
|
-
| Plugin Codex home | `~/.codex-overleaf/codex-home` (`%USERPROFILE%\.codex-overleaf\codex-home`) |
|
|
470
|
-
| Codex Overleaf skills | `~/.codex-overleaf/skills` (`%USERPROFILE%\.codex-overleaf\skills`) |
|
|
471
|
-
| Provider profiles and keys | `~/.codex-overleaf/providers.json`, `provider-secrets.json` (`%USERPROFILE%\.codex-overleaf`) |
|
|
472
|
-
| Logs | `~/.codex-overleaf/native-host.log`, `native-host-launcher.log` (`%LOCALAPPDATA%\CodexOverleaf\native-host.log`) |
|
|
222
|
+
## Troubleshooting
|
|
473
223
|
|
|
474
|
-
The
|
|
224
|
+
- **The native host is missing or needs an update.** Rerun `install-managed`, reload the extension and refresh Overleaf.
|
|
225
|
+
- **Codex CLI not found.** Make sure `codex --version` works in a new terminal, then rerun the installer so it picks up your `PATH`.
|
|
226
|
+
- **Extension ID mismatch.** Copy the ID from `chrome://extensions` and reinstall with `--extension-id <id>`.
|
|
227
|
+
- **A file was skipped.** Its target text changed during the run, the editor couldn't open it, or a path rule makes it read-only. The details under the answer say which.
|
|
228
|
+
- **A write was blocked by a path rule or the sensitive-content check.** Path rules can make files read-only; the check looks for tokens and keys before context leaves your machine. Change the rule in the project settings, or remove what the check found.
|
|
229
|
+
- **The compile result is unconfirmed.** The panel only reports a compile whose log it could read. Check the log in Overleaf.
|
|
230
|
+
- **Undo changes or Accept changes is missing.** Both depend on what the run wrote. If files were written but the button is gone, check the changes in Overleaf and attach **Export Diagnostics** to an issue.
|
|
231
|
+
- **A queued message or a fork won't run.** Queued messages keep the settings they were sent with; if that provider was changed or deleted, send the message again. Forking needs a recorded Codex turn.
|
|
232
|
+
- **Reporting a bug.** Attach **Export Diagnostics** from the panel. By default it leaves out project text, prompts, compile logs, diffs and secrets.
|
|
475
233
|
|
|
476
|
-
|
|
234
|
+
## Development
|
|
477
235
|
|
|
478
|
-
|
|
479
|
-
|
|
236
|
+
```bash
|
|
237
|
+
npm ci
|
|
238
|
+
npm test # core suite
|
|
239
|
+
npm run test:platform # installation and process contracts
|
|
240
|
+
npm run build:content # bundle the content script
|
|
241
|
+
npm run install:managed # put a local build into the managed install
|
|
242
|
+
```
|
|
480
243
|
|
|
481
|
-
|
|
244
|
+
The content script is bundled from [content-entry.mjs](extension/entries/content-entry.mjs). There are no npm runtime dependencies: development uses a pinned esbuild, and the Markdown and math libraries are vendored. `npm run bridge` runs the native host on stdio.
|
|
482
245
|
|
|
483
|
-
|
|
|
246
|
+
| Area | Entry points |
|
|
484
247
|
|---|---|
|
|
485
|
-
|
|
|
486
|
-
|
|
|
487
|
-
|
|
|
488
|
-
|
|
|
489
|
-
|
|
490
|
-
|
|
248
|
+
| Panel and runs | `extension/src/content/contentRuntime.js`, `runController.js` |
|
|
249
|
+
| Snapshots and writeback | `extension/src/pageBridge.js`, `extension/src/page/snapshotRouter.js`, `writebackRouter.js` |
|
|
250
|
+
| Transport | `extension/src/background.js`, `native-host/src/index.js` |
|
|
251
|
+
| Codex and the mirror | `native-host/src/taskRunnerRuntime.js`, `codexSessionRunner.js`, `mirrorWorkspace.js` |
|
|
252
|
+
| Patches | `native-host/src/textPatch.js` |
|
|
253
|
+
| Updates and packaging | `extension/bootstrap/`, `native-host/src/updateManager.js`, `scripts/` |
|
|
491
254
|
|
|
492
|
-
|
|
493
|
-
2. Run `uninstall-managed` (or `uninstall-native` for an unmanaged install). See [Uninstall](#uninstall).
|
|
494
|
-
3. Remove the extension in `chrome://extensions`. Chrome clears its `chrome.storage.local` with it.
|
|
495
|
-
4. Delete the local folders. **This permanently removes mirrors, plugin history, provider keys and skills.**
|
|
255
|
+
To run standalone panel, Native, project-read and diagnostics probes against a real project:
|
|
496
256
|
|
|
497
257
|
```bash
|
|
498
|
-
|
|
499
|
-
```
|
|
500
|
-
|
|
501
|
-
```powershell
|
|
502
|
-
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\CodexOverleaf", "$env:USERPROFILE\.codex-overleaf" -ErrorAction SilentlyContinue
|
|
258
|
+
npm run smoke:extension -- --url 'https://www.overleaf.com/project/<id>' --probe panel,native,project,diagnostics --json .local/smoke.json
|
|
503
259
|
```
|
|
504
260
|
|
|
505
|
-
|
|
261
|
+
For local Managed installation acceptance, follow the [development SOP](docs/architecture/change-workflow.md#4-implement-and-validate-obtain-evidence-proportional-to-risk), including extension Reload, loaded build identity, Ask with zero writes, reversible two-file write/Undo, editor cleanup and refreshed history. Apply the SOP's Luna selection, model/run-ID recording, and unavailable-model blocker rules to real-model runs.
|
|
506
262
|
|
|
507
|
-
|
|
263
|
+
Pull requests are welcome. For larger changes, please open an issue first, and keep both READMEs in step.
|
|
508
264
|
|
|
509
265
|
## License
|
|
510
266
|
|
|
511
267
|
[MIT](LICENSE)
|
|
512
|
-
|
|
513
|
-
<p align="center"><strong>English</strong> | <a href="README.zh-CN.md" lang="zh-CN">简体中文</a></p>
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
</details>
|