codex-overleaf-link 2.3.5 → 2.4.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.
Files changed (57) hide show
  1. package/README.md +63 -31
  2. package/README.zh-CN.md +543 -0
  3. package/extension/bootstrap/manifest.template.json +1 -1
  4. package/extension/src/background.js +7 -0
  5. package/extension/src/backgroundUpdateCoordinator.js +88 -4
  6. package/extension/src/content/activeTurnControl.js +1 -0
  7. package/extension/src/content/assetTransferBroker.js +2 -0
  8. package/extension/src/content/contentRuntime.js +77 -57
  9. package/extension/src/content/contextTray.js +4 -0
  10. package/extension/src/content/diagnosticsController.js +17 -3
  11. package/extension/src/content/diagnosticsPanel.js +129 -5
  12. package/extension/src/content/generated/content.bundle.js +1422 -348
  13. package/extension/src/content/generated/content.bundle.meta.json +7 -3
  14. package/extension/src/content/legacyGlobalRegistry.js +3 -0
  15. package/extension/src/content/modelPicker.js +21 -9
  16. package/extension/src/content/modelPickerSupport.js +38 -1
  17. package/extension/src/content/nativeCompatibilityController.js +4 -1
  18. package/extension/src/content/otWarmMirror.js +126 -92
  19. package/extension/src/content/otWarmMirrorController.js +122 -1
  20. package/extension/src/content/pageBridgeClient.js +2 -0
  21. package/extension/src/content/panelMaintenance.js +26 -15
  22. package/extension/src/content/providerSettingsCoordinator.js +1 -0
  23. package/extension/src/content/runFailureNotice.js +104 -0
  24. package/extension/src/content/runResultActions.js +16 -1
  25. package/extension/src/content/runScrollLayout.js +124 -0
  26. package/extension/src/content/runTimelineView.js +37 -11
  27. package/extension/src/content/sessionForkController.js +20 -11
  28. package/extension/src/content/settingsPanel.js +28 -11
  29. package/extension/src/content/trackedChangeCaptureController.js +153 -0
  30. package/extension/src/content/updateNotice.js +24 -4
  31. package/extension/src/content/writebackOrchestrator.js +31 -0
  32. package/extension/src/page/binaryAssetUploader.js +101 -29
  33. package/extension/src/page/overleafRealtimeObserver.js +120 -25
  34. package/extension/src/page/textFileCreator.js +493 -0
  35. package/extension/src/page/trackedChangeCapture.js +342 -0
  36. package/extension/src/page/trackedChangesLifecycle.js +145 -149
  37. package/extension/src/page/treeOperations.js +30 -2
  38. package/extension/src/page/writebackRouter.js +94 -48
  39. package/extension/src/pageBridge.js +62 -25
  40. package/extension/src/shared/compatibility.js +1 -1
  41. package/extension/src/shared/i18n.js +77 -37
  42. package/extension/src/shared/managedUpdateProjection.js +1 -1
  43. package/extension/src/shared/otText.js +0 -1
  44. package/extension/src/shared/pageRpcContract.js +2 -1
  45. package/extension/src/shared/sessionState.js +23 -23
  46. package/extension/src/shared/sessionTitle.js +120 -0
  47. package/extension/src/shared/storageDb.js +10 -12
  48. package/extension/src/shared/storageRunActions.js +29 -1
  49. package/extension/src/shared/updateRuntimeIdentity.js +32 -0
  50. package/extension/src/shared/writebackSettlement.js +19 -5
  51. package/extension/styles/panel.css +128 -24
  52. package/native-host/src/mirrorWorkspace.js +20 -1
  53. package/native-host/src/releaseProxy.js +177 -0
  54. package/native-host/src/releaseTransport.js +154 -0
  55. package/native-host/src/taskRunnerRuntime.js +25 -0
  56. package/native-host/src/updateManager.js +40 -39
  57. package/package.json +5 -1
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  <div align="center">
2
2
  <img src="extension/assets/icons/codex-overleaf-icon.png" width="96" alt="Codex Overleaf Link">
3
3
  <h1>Codex Overleaf Link</h1>
4
+ <p><strong>English</strong> | <a href="README.zh-CN.md" lang="zh-CN">简体中文</a></p>
4
5
  <p><strong>Empower Overleaf with Codex.</strong></p>
5
6
  <p>
6
- <img src="https://img.shields.io/badge/version-2.3.5-blue" alt="version">
7
+ <img src="https://img.shields.io/badge/version-2.4.0-blue" alt="version">
7
8
  <img src="https://img.shields.io/badge/platform-macOS%20%2F%20Windows%20%2F%20Linux-lightgrey" alt="platform">
8
9
  <img src="https://img.shields.io/badge/chrome-MV3-green" alt="chrome manifest v3">
9
10
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
@@ -38,12 +39,14 @@ Codex Overleaf Link adds a Codex panel directly inside Overleaf and mirrors the
38
39
  - **Project rules and preflight** — read-only / writable path rules gate browser writes; sensitive-content detection checks task context before sending it to Codex. File focus prioritizes context; use project rules to enforce writable paths.
39
40
  - **Models and skills** — discover local Codex models, choose supported reasoning and speed settings, and install or select Codex Overleaf skills from the slash menu. Skill loading and individual skill enablement are configurable.
40
41
  - **Local records and diagnostics** — preserve run outcomes and recovery evidence, inspect diagnostics, and export redacted issue-report bundles. Plugin Codex sessions use an isolated home.
42
+ - **OT warm mirror** (Operational Transformation) keeps focused mirror files warm through optional, read-only observation of active Overleaf text edits. It is off by default and falls back to the normal snapshot path when unavailable, stale, or inconsistent. Overleaf writeback still uses the page bridge.
43
+
44
+ OT freshness expires after 30 seconds, and focused warm starts still verify current file content through the page bridge. OT observation never establishes whole-project freshness or replaces the Overleaf writeback path.
41
45
 
42
46
  ### Experimental features
43
47
 
44
48
  - **Third-party model providers** — configure Responses API, OpenAI-compatible Chat Completions, or Anthropic Messages endpoints in Settings. The local Codex CLI remains the agent runtime, with local protocol bridges adapting the selected endpoint. Compatibility varies by model and gateway; the built-in Codex provider remains the default.
45
49
  - **Parallel subagents** — enable the `parallel-subagents` skill for decomposable tasks. The native host runs workers with assigned files; the skill can split a single file into section jobs. Worker progress appears in the timeline, and detected ownership violations are withheld from Overleaf writeback.
46
- - **OT warm mirror** — optional, read-only observation of active Overleaf text edits keeps focused mirror files warm. It is off by default and falls back to the normal snapshot path when unavailable, stale, or inconsistent. Overleaf writeback still uses the page bridge.
47
50
 
48
51
  ## Requirements
49
52
 
@@ -59,36 +62,50 @@ Codex Overleaf Link adds a Codex panel directly inside Overleaf and mirrors the
59
62
 
60
63
  ## Install
61
64
 
62
- Codex Overleaf Link has two parts: a **native host** (a local Node bridge) and the **Chrome extension**. Pick one of the two install paths below, then open Overleaf.
65
+ Codex Overleaf Link has two parts: a **native host** (a local Node bridge) and the **Chrome extension**. Installation with Codex is recommended; the installer script and npm commands remain available below.
66
+
67
+ Chrome may require a manual **Load unpacked** or **Reload** action. Codex should explain any remaining browser step and respect browser and operating-system permission boundaries.
63
68
 
64
- Either way, the final **Load unpacked** click is manual — Chrome does not let any installer or script load an unpacked extension for you.
69
+ ### Option A: Let Codex install it (recommended)
65
70
 
66
- ### Option A — installer script (recommended)
71
+ Give the following prompt to Codex with terminal access on the computer where Chrome runs:
72
+
73
+ ```text
74
+ Install Codex Overleaf Link from https://github.com/Ghqqqq/codex-overleaf-link on this computer.
75
+
76
+ 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.
77
+ 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.
78
+ 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.
79
+ 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.
80
+ 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.
81
+ ```
82
+
83
+ ### Option B: installer script
67
84
 
68
85
  One command installs the managed native host **and** managed extension runtime. On macOS/Linux it also creates the visible `~/Codex Overleaf Link Extension` shortcut when that path is available. The script attempts to copy the extension path on macOS and Windows; on macOS it also attempts to open Chrome's extensions page. Every platform prints the folder to load. Future signed stable updates target this same managed directory.
69
86
 
70
87
  macOS / Linux:
71
88
 
72
89
  ```bash
73
- CODEX_OVERLEAF_REF=v2.3.5 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.3.5/install.sh)"
90
+ CODEX_OVERLEAF_REF=v2.4.0 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.4.0/install.sh)"
74
91
  ```
75
92
 
76
93
  Windows PowerShell:
77
94
 
78
95
  ```powershell
79
- iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.3.5/install.ps1 -OutFile install.ps1
80
- $env:CODEX_OVERLEAF_REF='v2.3.5'
96
+ iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.4.0/install.ps1 -OutFile install.ps1
97
+ $env:CODEX_OVERLEAF_REF='v2.4.0'
81
98
  powershell -ExecutionPolicy Bypass -File install.ps1
82
99
  ```
83
100
 
84
101
  Then open `chrome://extensions`, enable **Developer mode**, click **Load unpacked**, and choose the extension folder printed by the installer. If the installer reports that it copied the path, you can paste it into the folder picker.
85
102
 
86
- ### Option B — npm managed install
103
+ ### Option C: npm managed install
87
104
 
88
105
  `npm exec` installs the same managed native host and extension runtime without keeping a source checkout. Use it if you prefer a pinned npm package.
89
106
 
90
107
  ```bash
91
- npm exec --yes codex-overleaf-link@2.3.5 -- install-managed
108
+ npm exec --yes codex-overleaf-link@2.4.0 -- install-managed
92
109
  ```
93
110
 
94
111
  Then, in `chrome://extensions`, enable **Developer mode**, click **Load unpacked**, and select the managed extension path printed by the command. The Release extension zip remains available for explicitly unmanaged/manual installations.
@@ -130,7 +147,10 @@ There are two task modes, Ask and Auto. Track is a separate setting for Auto wri
130
147
 
131
148
  Auto text writes do not wait for a per-hunk approval step. Deletes and binary create/overwrite operations require separate confirmation. Track applies to supported text edits; it does not make every file-tree or binary operation reversible.
132
149
 
133
- **Accept** finalizes this run's tracked text edits and leaves Overleaf in Editing mode. If the operation unexpectedly creates new tracked changes, the extension attempts to roll it back and reports what could be verified.
150
+ **Accept** is intended to finalize a run's tracked text edits and leaves Overleaf in Editing mode. If the operation unexpectedly creates new tracked changes, the extension attempts to roll it back and reports what could be verified.
151
+
152
+ > [!WARNING]
153
+ > Do not use the run card's **Accept** action when the affected files contain unrelated pending tracked changes from other runs or collaborators. Review and accept those changes individually in Overleaf's native Review panel. An Accepted badge or successful compilation alone does not prove that unrelated pending changes were preserved.
134
154
 
135
155
  **Undo** uses the run's saved recovery information. Concurrent changes or incomplete verification can prevent a full restoration. Cancel stops further work but does not automatically undo writes that already reached Overleaf; inspect the run card for the written parts and available recovery actions.
136
156
 
@@ -185,6 +205,10 @@ Generated binary writeback is a separate operation: supported assets up to **10
185
205
 
186
206
  ## Update
187
207
 
208
+ Update downloads retry transient network failures within a bounded time budget, including stalled response bodies. The updater respects HTTP/HTTPS environment proxies and supported macOS/Windows system proxy settings. TLS certificate and release-signature failures remain blocking errors. SOCKS/PAC-only configurations require an HTTP proxy endpoint.
209
+
210
+ After a manual reinstall, installed files and running components are shown separately. Use the reload action once Overleaf is saved and idle; pending Overleaf tabs can then refresh. A disk replacement alone is not reported as a successfully health-confirmed update.
211
+
188
212
  Managed installations **check** for signed stable updates automatically. When an update is available, choose **Update now** in the update notice or **Settings → Software updates** to authorize that version. The updater then downloads and verifies the coordinated extension/native bundle, waits until connected Overleaf tabs are saved and idle and the native host has no active work, and applies both components together. A failed health check restores the previous version. The update notice also offers postponement and progress details.
189
213
 
190
214
  Stable updates use signed release metadata and artifact hashes; draft and prerelease versions are not selected. Releases that require a different Bootstrap protocol need a managed reinstall. The updater does not silently add Chrome permissions.
@@ -201,9 +225,9 @@ npm installs, updates, and uninstalls the coordinated managed extension/native p
201
225
 
202
226
  | Action | Command |
203
227
  |--------|---------|
204
- | Install / recover / migrate | `npm exec --yes codex-overleaf-link@2.3.5 -- install-managed` |
205
- | Diagnose | `npm exec --yes codex-overleaf-link@2.3.5 -- doctor` |
206
- | Uninstall | `npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed` |
228
+ | Install / recover / migrate | `npm exec --yes codex-overleaf-link@2.4.0 -- install-managed` |
229
+ | Diagnose | `npm exec --yes codex-overleaf-link@2.4.0 -- doctor` |
230
+ | Uninstall | `npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed` |
207
231
 
208
232
  Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extension id that differs from the official bundled id.
209
233
 
@@ -214,7 +238,7 @@ Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extens
214
238
  Remove the managed extension/native installation (append `--browser chromium` on Linux Chromium):
215
239
 
216
240
  ```bash
217
- npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed
241
+ npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed
218
242
  ```
219
243
 
220
244
  The same command works in Windows PowerShell. It also applies to current `install.sh` / `install.ps1` installations, which install the managed pair.
@@ -222,7 +246,7 @@ The same command works in Windows PowerShell. It also applies to current `instal
222
246
  For an unmanaged checkout or native-only installation, use `npm run uninstall:native` from the checkout, or:
223
247
 
224
248
  ```bash
225
- npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-native
249
+ npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-native
226
250
  ```
227
251
 
228
252
  If you are removing an older native-only source installation and still have its source checkout, its bundled uninstaller can also be invoked directly:
@@ -232,7 +256,7 @@ node ~/.codex-overleaf/source/scripts/uninstall-native-host.mjs
232
256
  ```
233
257
 
234
258
  ```powershell
235
- node $env:LOCALAPPDATA\CodexOverleaf\source\scripts\uninstall-native-host.mjs
259
+ node "$env:LOCALAPPDATA\CodexOverleaf\source\scripts\uninstall-native-host.mjs"
236
260
  ```
237
261
 
238
262
  `uninstall-managed` removes the registered Native Messaging host, bridge executable, managed extension, and versioned native runtime. `uninstall-native` removes the native-only registration and runtime copy. Neither command clears browser session history/settings, project mirrors, plugin Codex history, provider credentials, or stored skills.
@@ -248,7 +272,7 @@ Remove the extension entry from `chrome://extensions` as well. To erase saved Co
248
272
  For a managed installation, rerun the [managed installer](#install), reload the extension in `chrome://extensions`, then refresh the Overleaf tab. This recovers the coordinated extension/native pair after an incomplete installation or incompatible runtime update.
249
273
 
250
274
  ```bash
251
- npm exec --yes codex-overleaf-link@2.3.5 -- install-managed
275
+ npm exec --yes codex-overleaf-link@2.4.0 -- install-managed
252
276
  ```
253
277
 
254
278
  For an unmanaged checkout, rebuild the extension and reinstall its native host from the same checkout. Use PowerShell installation commands on Windows.
@@ -277,6 +301,8 @@ The stale-write guard checks the original content and expected patch ranges. It
277
301
 
278
302
  Track requires an Overleaf Reviewing state that the extension can verify. Accept and Undo depend on the run's actual writes and saved recovery evidence; some operations or later collaborator edits prevent full recovery. Follow the run card's specific next action. Turning Track off selects ordinary Editing for future Auto runs.
279
303
 
304
+ If files were written but Accept is missing, inspect the actual changes in Overleaf before retrying. Repeating a task solely to recover the button can duplicate edits. Export redacted diagnostics with the run result when reporting the issue.
305
+
280
306
  **Governance blocked write**
281
307
 
282
308
  Project governance rules can mark paths read-only or restrict writable paths. Switch to ask-only mode, adjust the project governance settings, or narrow the requested edit to an allowed path.
@@ -369,13 +395,13 @@ The shipped extension targets `https://overleaf.com/project` and `https://www.ov
369
395
  Linux Chromium install or update:
370
396
 
371
397
  ```bash
372
- CODEX_OVERLEAF_REF=v2.3.5 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.3.5/install.sh)" -- --browser chromium
398
+ CODEX_OVERLEAF_REF=v2.4.0 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.4.0/install.sh)" -- --browser chromium
373
399
  ```
374
400
 
375
401
  Linux Chromium uninstall:
376
402
 
377
403
  ```bash
378
- npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed --browser chromium
404
+ npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed --browser chromium
379
405
  ```
380
406
 
381
407
  ## Extension ID
@@ -389,27 +415,27 @@ illdpneeeopfffmiepaejglgmhpmdhdc
389
415
  The installer uses this id by default. For a managed installation with a custom id, rerun the managed installer with the id shown in `chrome://extensions`:
390
416
 
391
417
  ```bash
392
- npm exec --yes codex-overleaf-link@2.3.5 -- install-managed --extension-id <your-chrome-extension-id>
418
+ npm exec --yes codex-overleaf-link@2.4.0 -- install-managed --extension-id "<your-chrome-extension-id>"
393
419
  ```
394
420
 
395
421
  For an unmanaged extension, use the native-only installer:
396
422
 
397
423
  ```bash
398
- npm exec --yes codex-overleaf-link@2.3.5 -- install-native --extension-id <your-chrome-extension-id>
424
+ npm exec --yes codex-overleaf-link@2.4.0 -- install-native --extension-id "<your-chrome-extension-id>"
399
425
  ```
400
426
 
401
427
  Both npm commands work in PowerShell. Source installers also accept the `CODEX_OVERLEAF_EXTENSION_ID` environment variable. The Native Messaging manifest's `allowed_origins` must match the loaded extension id.
402
428
 
403
429
  ## GitHub Release Artifacts
404
430
 
405
- The v2.3.5 GitHub Release contains:
431
+ The v2.4.0 GitHub Release contains:
406
432
 
407
- - `codex-overleaf-link-extension-v2.3.5.zip`: loadable Chrome extension package for manual unpacked installation.
408
- - `codex-overleaf-native-host-v2.3.5.tar.gz`: native host runtime files used by the installer and release verification.
409
- - `codex-overleaf-update-v2.3.5.tar.gz`: coordinated extension/native bundle used by the managed updater.
410
- - `codex-overleaf-link-2.3.5.tgz`: npm native host CLI package for pinned install, doctor, and uninstall flows.
411
- - `install.sh`: release-pinned macOS / Linux installer that defaults to `v2.3.5` when run directly from the release artifact.
412
- - `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v2.3.5` when run directly from the release artifact.
433
+ - `codex-overleaf-link-extension-v2.4.0.zip`: loadable Chrome extension package for manual unpacked installation.
434
+ - `codex-overleaf-native-host-v2.4.0.tar.gz`: native host runtime files used by the installer and release verification.
435
+ - `codex-overleaf-update-v2.4.0.tar.gz`: coordinated extension/native bundle used by the managed updater.
436
+ - `codex-overleaf-link-2.4.0.tgz`: npm native host CLI package for pinned install, doctor, and uninstall flows.
437
+ - `install.sh`: release-pinned macOS / Linux installer that defaults to `v2.4.0` when run directly from the release artifact.
438
+ - `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v2.4.0` when run directly from the release artifact.
413
439
  - `uninstall-native-host.mjs`: native host uninstaller that removes the Chrome Native Messaging manifest, bridge executable, and runtime copy.
414
440
  - `nativeHostPlatform.js`, `manifest.js`, `runtimeInstaller.js`: helper files required by the loose uninstaller asset.
415
441
  - `SHA256SUMS`, `release-manifest.json`, and `release-manifest.sig`: checksums, release metadata, and its Ed25519 signature.
@@ -460,6 +486,8 @@ Full uninstall and data deletion:
460
486
  3. Remove the extension entry from `chrome://extensions` in each browser profile. Chrome removes that extension's `chrome.storage.local` settings when it is uninstalled. See the [Chrome storage API documentation](https://developer.chrome.com/docs/extensions/reference/api/storage#storage_areas).
461
487
  4. To erase all remaining default filesystem data, including project mirrors, plugin Codex history, provider credentials, skills, and source checkouts, use the appropriate command below. Also remove any custom installation roots you configured.
462
488
 
489
+ **The following commands permanently delete data in the listed directories. Back up any project mirrors, history, or configuration that must be kept before running them.**
490
+
463
491
  macOS/Linux:
464
492
 
465
493
  ```bash
@@ -484,8 +512,8 @@ Use this matrix for release-candidate signoff and compatibility reports. Record
484
512
  | Browser/channel/version | Google Chrome channel and version. | Google Chrome channel and version. | Google Chrome channel and version. | Chromium channel/package and version. |
485
513
  | Install mode | Managed pair recommended; unmanaged Release zip or checkout also available. | Same as macOS Chrome. | Same as macOS Chrome. | Managed or unmanaged; register with `--browser chromium`. |
486
514
  | Extension id | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. | Bundled id `illdpneeeopfffmiepaejglgmhpmdhdc`, or actual custom id passed with `--extension-id`. |
487
- | Installer/update command | `npm exec --yes codex-overleaf-link@2.3.5 -- install-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- install-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- install-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- install-managed --browser chromium` |
488
- | Uninstall command | `npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.3.5 -- uninstall-managed --browser chromium` |
515
+ | Installer/update command | `npm exec --yes codex-overleaf-link@2.4.0 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- install-managed --browser chromium` |
516
+ | Uninstall command | `npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.0 -- uninstall-managed --browser chromium` |
489
517
  | Manifest/registry path | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.codex.overleaf.json` | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf` -> `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime\com.codex.overleaf.json` | `~/.config/google-chrome/NativeMessagingHosts/com.codex.overleaf.json` | `~/.config/chromium/NativeMessagingHosts/com.codex.overleaf.json` |
490
518
  | Managed runtime paths | `~/.codex-overleaf/managed/extension` and `~/.codex-overleaf/managed/native`. | `%LOCALAPPDATA%\CodexOverleaf\managed\extension` and `%LOCALAPPDATA%\CodexOverleaf\managed\native`. | Same as macOS Chrome. | Same as macOS Chrome. |
491
519
  | Node/Git/Codex/TeX | Record exact versions; see [Requirements](#requirements) for installation and provider prerequisites. | Same as macOS Chrome. | Same as macOS Chrome. | Same as macOS Chrome. |
@@ -506,6 +534,10 @@ Contributions are welcome. Please open an issue before submitting large changes
506
534
  3. Run `npm test` and ensure all tests pass.
507
535
  4. Submit a pull request with a clear description.
508
536
 
537
+ Keep [README.md](README.md) and [README.zh-CN.md](README.zh-CN.md) aligned when changing behavior, version pins, installation commands, or troubleshooting. Translate prose while preserving commands, file paths, and API identifiers.
538
+
509
539
  ## License
510
540
 
511
541
  [MIT](LICENSE)
542
+
543
+ <p align="center"><strong>English</strong> | <a href="README.zh-CN.md" lang="zh-CN">简体中文</a></p>