codex-overleaf-link 2.4.1 → 2.5.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 +272 -314
- package/README.zh-CN.md +287 -329
- package/extension/bootstrap/background.js +47 -10
- package/extension/bootstrap/manifest.template.json +9 -4
- package/extension/bootstrap/popup.html +10 -16
- package/extension/bootstrap/update.js +25 -2
- package/extension/runtime-manifest.json +3 -1
- package/extension/src/background.js +28 -3
- package/extension/src/backgroundSharedSessions.js +380 -0
- package/extension/src/backgroundUpdateCoordinator.js +442 -379
- package/extension/src/content/activeTurnControl.js +8 -0
- package/extension/src/content/assetTransferBroker.js +186 -12
- package/extension/src/content/changeHistoryView.js +175 -0
- package/extension/src/content/composerAttachments.js +24 -22
- package/extension/src/content/composerPanel.js +23 -8
- package/extension/src/content/contentRuntime.js +507 -507
- package/extension/src/content/diagnosticsController.js +1 -2
- package/extension/src/content/diagnosticsExport.js +222 -0
- package/extension/src/content/diagnosticsPanel.js +48 -19
- package/extension/src/content/diffReviewPanel.js +8 -5
- package/extension/src/content/generated/content.bundle.js +8330 -1349
- package/extension/src/content/generated/content.bundle.meta.json +22 -3
- package/extension/src/content/legacyGlobalRegistry.js +19 -1
- package/extension/src/content/localSkillsPanel.js +42 -7
- package/extension/src/content/markdownDomRenderer.js +9 -4
- package/extension/src/content/modelPicker.js +1 -1
- package/extension/src/content/pageBridgeClient.js +18 -3
- package/extension/src/content/panelMaintenance.js +48 -121
- package/extension/src/content/panelRenderer.js +4 -0
- package/extension/src/content/pendingInputView.js +109 -76
- package/extension/src/content/providerSettingsCoordinator.js +17 -6
- package/extension/src/content/providerSettingsDialog.js +661 -108
- package/extension/src/content/recentProjects.js +10 -1
- package/extension/src/content/runActivitySummary.js +631 -0
- package/extension/src/content/runController.js +3 -1
- package/extension/src/content/runFailureNotice.js +14 -1
- package/extension/src/content/runGuidanceController.js +4 -3
- package/extension/src/content/runPresence.js +306 -0
- package/extension/src/content/runQueueScheduler.js +2 -1
- package/extension/src/content/runResultActions.js +123 -3
- package/extension/src/content/runTimelineView.js +186 -154
- package/extension/src/content/selectionContextView.js +300 -0
- package/extension/src/content/sessionPersistence.js +6 -1
- package/extension/src/content/settingsPanel.js +77 -52
- package/extension/src/content/settingsWorkbench.js +374 -0
- package/extension/src/content/sharedSessionViewSync.js +72 -0
- package/extension/src/content/subagentActivityView.js +195 -0
- package/extension/src/content/trackedChangeCaptureController.js +7 -3
- package/extension/src/content/updateNotice.js +121 -50
- package/extension/src/content/writebackController.js +257 -0
- package/extension/src/content/writebackOrchestrator.js +146 -141
- package/extension/src/content/writebackPlan.js +231 -0
- package/extension/src/content/writebackRecovery.js +122 -0
- package/extension/src/content/writingStyleSettings.js +576 -0
- package/extension/src/content/writtenChangesView.js +152 -0
- package/extension/src/page/binaryAssetUploader.js +97 -19
- package/extension/src/page/overleafProjectSnapshot.js +1 -0
- package/extension/src/page/referenceProjects.js +148 -0
- package/extension/src/page/saveState.js +14 -2
- package/extension/src/page/snapshotRouter.js +44 -13
- package/extension/src/page/textCoordinates.js +102 -0
- package/extension/src/page/textFileCreator.js +350 -59
- package/extension/src/page/trackedChangeCapture.js +42 -56
- package/extension/src/page/trackedChangeOwnership.js +198 -0
- package/extension/src/page/trackedChangeReplay.js +164 -0
- package/extension/src/page/trackedChangesLifecycle.js +135 -149
- package/extension/src/page/treeOperations.js +26 -2
- package/extension/src/page/writebackReceiptJournal.js +112 -0
- package/extension/src/page/writebackRouter.js +175 -135
- package/extension/src/pageBridge.js +56 -101
- package/extension/src/popup.js +203 -59
- package/extension/src/shared/agentTranscript.js +18 -4
- package/extension/src/shared/auditRecords.js +71 -0
- package/extension/src/shared/changeHistoryModel.js +94 -0
- package/extension/src/shared/compatibility.js +1 -1
- package/extension/src/shared/compileAdapter.js +42 -0
- package/extension/src/shared/failureReasons.js +20 -0
- package/extension/src/shared/globalPreferences.js +1 -1
- package/extension/src/shared/i18n.js +93 -25
- package/extension/src/shared/managedUpdateProjection.js +6 -3
- package/extension/src/shared/pageRpcContract.js +7 -1
- package/extension/src/shared/providerProfiles.js +109 -0
- package/extension/src/shared/runActivityModel.js +361 -0
- package/extension/src/shared/runExecutionSnapshot.js +8 -2
- package/extension/src/shared/runExecutionSnapshotCodec.js +16 -4
- package/extension/src/shared/scopedPersistenceBrowserAdapter.js +6 -3
- package/extension/src/shared/selectionContext.js +28 -0
- package/extension/src/shared/sessionState.js +97 -6
- package/extension/src/shared/sharedSessionBridge.js +288 -0
- package/extension/src/shared/storageDb.js +22 -55
- package/extension/src/shared/storageMigration.js +3 -0
- package/extension/src/shared/storageRunActions.js +10 -4
- package/extension/src/shared/storageValuePruning.js +40 -0
- package/extension/src/shared/subagentActivityModel.js +174 -0
- package/extension/src/shared/undoOperations.js +87 -0
- package/extension/src/shared/updateConsent.js +37 -8
- package/extension/src/shared/writebackIntent.js +62 -0
- package/extension/src/shared/writebackSettlement.js +29 -10
- package/extension/src/shared/writingStyle.js +33 -0
- package/extension/styles/panel.css +1972 -384
- package/extension/styles/popup.css +110 -0
- package/native-host/src/anthropicBridgeRequest.js +2 -1
- package/native-host/src/codexModelRecovery.js +107 -0
- package/native-host/src/codexPromptAssembly.js +2 -0
- package/native-host/src/codexProviderLaunch.js +3 -3
- package/native-host/src/codexRuntimeIdentity.js +1 -0
- package/native-host/src/codexSessionRunner.js +106 -140
- package/native-host/src/codexSessionTiming.js +3 -0
- package/native-host/src/managedInstall.js +5 -4
- package/native-host/src/nativeEnvironment.js +70 -0
- package/native-host/src/nativeQuotas.js +15 -8
- package/native-host/src/overleafWorkspaceRules.js +16 -0
- package/native-host/src/processStopBarrier.js +80 -0
- package/native-host/src/providerModelCatalog.js +4 -3
- package/native-host/src/providerProfile.js +13 -1
- package/native-host/src/providerReasoning.js +9 -5
- package/native-host/src/providerStore.js +4 -0
- package/native-host/src/releaseTransport.js +14 -5
- package/native-host/src/selectionScope.js +58 -0
- package/native-host/src/skills/parallel-subagents/SKILL.md +31 -3
- package/native-host/src/skills/writing-style-builder/SKILL.md +146 -0
- package/native-host/src/subagentBroker.js +102 -98
- package/native-host/src/subagentTelemetry.js +316 -0
- package/native-host/src/subagentWorkspace.js +103 -0
- package/native-host/src/subagentWorkspacePath.js +31 -0
- package/native-host/src/taskRunnerRuntime.js +55 -5
- package/native-host/src/turnAttachments.js +113 -0
- package/native-host/src/updateManager.js +122 -12
- package/native-host/src/updateNetworkControl.js +75 -0
- package/native-host/src/updateTrust.js +21 -2
- package/native-host/src/vendor/pdfjs/LICENSE +177 -0
- package/native-host/src/vendor/pdfjs/SOURCE.txt +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/78ms-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/83pv-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90ms-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90msp-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/90pv-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Add-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-6.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-3.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-4.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-5.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-6.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-0.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-1.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5pc-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/B5pc-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS1-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS1-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/CNS2-V.bcmap +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETHK-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETen-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-H.bcmap +3 -0
- package/native-host/src/vendor/pdfjs/cmaps/ETenms-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Ext-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-H.bcmap +4 -0
- package/native-host/src/vendor/pdfjs/cmaps/GB-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK2K-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBK2K-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBKp-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBT-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBTpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/GBpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdla-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKdlb-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKgccs-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm314-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKm471-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/HKscs-B5-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Hankaku.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Hiragana.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-Johab-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCms-UHC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/KSCpc-EUC-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Katakana.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/LICENSE +36 -0
- package/native-host/src/vendor/pdfjs/cmaps/NWP-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/NWP-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/RKSJ-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/RKSJ-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/Roman.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniCNS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniGB-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UCS2-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF16-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF32-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-H.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/UniKS-UTF8-V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/V.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/cmaps/WP-Symbol.bcmap +0 -0
- package/native-host/src/vendor/pdfjs/pdf.mjs +26740 -0
- package/native-host/src/vendor/pdfjs/pdf.worker.mjs +62201 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitDingbats.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixed.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBold.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitFixedItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerif.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBold.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSerifItalic.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/FoxitSymbol.pfb +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_FOXIT +27 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LICENSE_LIBERATION +102 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Bold.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Italic.ttf +0 -0
- package/native-host/src/vendor/pdfjs/standard_fonts/LiberationSans-Regular.ttf +0 -0
- package/native-host/src/writingStyleEvidence.js +102 -0
- package/native-host/src/writingStylePdfWorker.js +35 -0
- package/native-host/src/writingStyleProfile.js +165 -0
- package/native-host/src/writingStyleRuntime.js +447 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,77 +1,139 @@
|
|
|
1
|
-
> [!NOTE]
|
|
2
|
-
> This development branch can contain unreleased changes. Version-pinned commands below apply after the corresponding release is published. Published installers are available from the [latest stable release](https://github.com/Ghqqqq/codex-overleaf-link/releases/latest).
|
|
3
|
-
|
|
4
1
|
<div align="center">
|
|
5
|
-
<img src="extension/assets/icons/codex-overleaf-icon.png" width="
|
|
2
|
+
<img src="extension/assets/icons/codex-overleaf-icon.png" width="72" alt="Codex Overleaf Link">
|
|
6
3
|
<h1>Codex Overleaf Link</h1>
|
|
7
|
-
<p><strong>English</strong> | <a href="README.zh-CN.md" lang="zh-CN">简体中文</a></p>
|
|
8
4
|
<p><strong>Empower Overleaf with Codex.</strong></p>
|
|
9
|
-
<p>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
<img src="https://img.shields.io/badge/chrome-MV3-green" alt="chrome manifest v3">
|
|
13
|
-
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version">
|
|
14
|
-
<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>
|
|
15
|
-
<img src="https://img.shields.io/badge/runtime%20dependencies-0-orange" alt="zero npm runtime dependencies">
|
|
16
|
-
<img src="https://img.shields.io/badge/license-MIT-blue" alt="license">
|
|
17
|
-
</p>
|
|
5
|
+
<p><img src="https://img.shields.io/badge/version-2.5.0-blue" alt="version 2.5.0"></p>
|
|
6
|
+
<p>English | <a href="README.zh-CN.md">简体中文</a></p>
|
|
7
|
+
<p>Chrome · macOS / Windows / Linux · Local Codex</p>
|
|
18
8
|
</div>
|
|
19
9
|
|
|
20
|
-
|
|
10
|
+
Ask about the project, revise a passage, and review the result beside the PDF. Codex Overleaf Link brings a local Codex workflow into the Overleaf editor, with project context, model selection, and conversations in one place.
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
*Actual 2.5.0 interface. A read-only review of the standard Overleaf example project.*
|
|
15
|
+
|
|
16
|
+
<details>
|
|
17
|
+
<summary>Read the conversation detail (native 2x PNG)</summary>
|
|
18
|
+
|
|
19
|
+
<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>
|
|
20
|
+
|
|
21
|
+
</details>
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
[Quick start](#quick-start) · [Writing workflow](#workflow) · [Writing style](#writing-style) · [Models](#connections) · [Detailed reference](#reference)
|
|
25
|
+
|
|
26
|
+
<a id="workflow"></a>
|
|
27
|
+
|
|
28
|
+
## Read, revise, and review in one workspace
|
|
29
|
+
|
|
30
|
+
| Intent | Control | Result |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| Understand a section or investigate a problem | **Ask** | An answer grounded in the available project context, without writing to Overleaf. |
|
|
33
|
+
| Make a change to the paper | **Auto** | Changes are written back to the project and shown in the run record. |
|
|
34
|
+
| Review edits in Overleaf | **Auto + Track** | Text edits appear as Overleaf tracked changes. |
|
|
35
|
+
| Reverse a run | **Undo changes** | Eligible edits are restored and eligible newly created files are removed. |
|
|
36
|
+
|
|
37
|
+
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.
|
|
38
|
+
|
|
39
|
+
### Give the conversation the right context
|
|
40
|
+
|
|
41
|
+
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.
|
|
42
|
+
|
|
43
|
+
<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>
|
|
44
|
+
|
|
45
|
+
*An unsent draft with two project files attached. File context remains visible in the composer.*
|
|
46
|
+
|
|
47
|
+
### Follow the work and open a subagent's conversation
|
|
48
|
+
|
|
49
|
+
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.
|
|
50
|
+
|
|
51
|
+
<table>
|
|
52
|
+
<tr>
|
|
53
|
+
<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>
|
|
54
|
+
<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>
|
|
55
|
+
</tr>
|
|
56
|
+
</table>
|
|
57
|
+
|
|
58
|
+
*The same real task, shown as an activity view and as a child conversation. These captures show completed workers. Parallel Subagents is experimental.*
|
|
59
|
+
|
|
60
|
+
<a id="writing-style"></a>
|
|
61
|
+
|
|
62
|
+
## Write in My Style <sub>Experimental</sub>
|
|
63
|
+
|
|
64
|
+
Build a reusable writing-style skill from selected Overleaf projects and PDFs.
|
|
65
|
+
|
|
66
|
+
1. Open **Settings → General & appearance → Writing style**.
|
|
67
|
+
2. Choose references from projects or add text-based PDFs.
|
|
68
|
+
3. Generate the style, then enable it for the project. Add or change references and use **Update style** to refresh the skill.
|
|
21
69
|
|
|
22
|
-
|
|
70
|
+
The skill is intended to guide phrasing, rhythm, organization, and tone. Reference material supports the writing style; the current task supplies the paper's facts, results, and citations.
|
|
23
71
|
|
|
24
|
-
|
|
72
|
+

|
|
25
73
|
|
|
26
|
-
|
|
74
|
+
*Reference selection and generation controls. No private writing samples are shown.*
|
|
27
75
|
|
|
28
|
-
|
|
76
|
+
<a id="connections"></a>
|
|
29
77
|
|
|
30
|
-
|
|
78
|
+
## Bring the model that fits
|
|
31
79
|
|
|
32
|
-
|
|
80
|
+
Use the local Codex CLI's model catalog, choose a reasoning level in the composer, or configure a compatible provider in **Settings → Models & connections**.
|
|
33
81
|
|
|
34
|
-
|
|
82
|
+
Connection shortcuts cover OpenAI-compatible and Anthropic-compatible APIs, Kimi, GLM, and DeepSeek. A shortcut fills connection defaults; the API key and accepted model IDs are still supplied separately. Third-party providers are experimental.
|
|
35
83
|
|
|
36
|
-
|
|
37
|
-
- **Live progress and follow-ups** — watch Codex events, cancel a task, queue the next input, or use **Guide** to send a queued message into the active turn when it is ready. A paused queue can be resumed from the panel.
|
|
38
|
-
- **Session history** — create, rename, resume, and delete sessions; copy a result or fork a conversation from an eligible turn. Recent-project history helps you return to earlier work.
|
|
39
|
-
- **Project context** — select files through `@` autocomplete or the **+** tray, include `@compile-log`, and paste/drop files as attachments for the next turn.
|
|
40
|
-
- **Binary assets** — confirm Codex-created images, PDFs, and other supported assets before creating or replacing them in Overleaf; transfer is chunked to support files larger than a single Native Messaging response.
|
|
41
|
-
- **Compile feedback** — the **Compile** toggle requests Overleaf recompilation after eligible files are written and records the result. Ask mode does not trigger post-write compilation.
|
|
42
|
-
- **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.
|
|
43
|
-
- **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.
|
|
44
|
-
- **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.
|
|
45
|
-
- **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.
|
|
84
|
+

|
|
46
85
|
|
|
47
|
-
|
|
86
|
+
*Actual connection setup. No API keys are visible.*
|
|
48
87
|
|
|
49
|
-
|
|
88
|
+
<a id="quick-start"></a>
|
|
50
89
|
|
|
51
|
-
|
|
52
|
-
- **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.
|
|
90
|
+
## Quick start
|
|
53
91
|
|
|
54
|
-
|
|
92
|
+
> **Upgrading from an older version**
|
|
93
|
+
>
|
|
94
|
+
> **Versions earlier than 2.5.0 require a manual update to 2.5.0.** The in-extension **Update now** action cannot perform this upgrade. Run the installation command below, reload the extension in `chrome://extensions`, then refresh the Overleaf page.
|
|
55
95
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
96
|
+
**Prerequisites:** Chrome, Node.js 20+, and an installed, signed-in Codex CLI. Source installation also uses Git.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-managed
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
1. Run the managed installer. It prints the extension directory.
|
|
103
|
+
2. In `chrome://extensions`, enable **Developer mode**, choose **Load unpacked**, and select that directory.
|
|
104
|
+
3. Open an Overleaf project and start with **Ask**. Switch to **Auto** when a file change is intended.
|
|
105
|
+
|
|
106
|
+
The extension supports project pages on `overleaf.com`, `www.overleaf.com`, and `cn.overleaf.com`.
|
|
107
|
+
|
|
108
|
+
<a id="reference"></a>
|
|
109
|
+
|
|
110
|
+
## Setup and reference
|
|
111
|
+
|
|
112
|
+
Detailed installation, upgrade, privacy, troubleshooting, and development instructions are available below.
|
|
113
|
+
|
|
114
|
+
<details>
|
|
115
|
+
<summary><strong>Open the detailed reference</strong></summary>
|
|
116
|
+
|
|
117
|
+
## What you need
|
|
118
|
+
|
|
119
|
+
| | |
|
|
120
|
+
|---|---|
|
|
121
|
+
| Computer | macOS, Windows, or Linux |
|
|
122
|
+
| Browser | Google Chrome. Linux Chromium also works; see [Browser support](#browser-support). |
|
|
123
|
+
| Node.js 20+ and Git | Used by the installers and the local bridge |
|
|
124
|
+
| [Codex CLI](https://github.com/openai/codex) | Installed and signed in. Check with `codex --version`. |
|
|
125
|
+
| Overleaf | An account on `overleaf.com` or `cn.overleaf.com` |
|
|
126
|
+
| TeX *(optional)* | Only for local `latexmk` checks |
|
|
65
127
|
|
|
66
128
|
## Install
|
|
67
129
|
|
|
68
|
-
|
|
130
|
+
There are two pieces: a small local program, the **native host**, that runs Codex on your machine, and the **Chrome extension** that draws the panel. The installers set up both as a matched pair that can update itself later.
|
|
69
131
|
|
|
70
|
-
Chrome
|
|
132
|
+
Chrome does not let scripts load an extension for you, so every route ends with one short manual step in `chrome://extensions`.
|
|
71
133
|
|
|
72
134
|
### Option A: Let Codex install it (recommended)
|
|
73
135
|
|
|
74
|
-
|
|
136
|
+
If you already use Codex in a terminal on the computer where Chrome runs, give it this prompt:
|
|
75
137
|
|
|
76
138
|
```text
|
|
77
139
|
Install Codex Overleaf Link from https://github.com/Ghqqqq/codex-overleaf-link on this computer.
|
|
@@ -83,45 +145,41 @@ Complete the terminal-side setup and checks. If Chrome requires a manual Load un
|
|
|
83
145
|
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.
|
|
84
146
|
```
|
|
85
147
|
|
|
86
|
-
### Option B: installer
|
|
87
|
-
|
|
88
|
-
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.
|
|
148
|
+
### Option B: One-line installer
|
|
89
149
|
|
|
90
150
|
macOS / Linux:
|
|
91
151
|
|
|
92
152
|
```bash
|
|
93
|
-
CODEX_OVERLEAF_REF=v2.
|
|
153
|
+
CODEX_OVERLEAF_REF=v2.5.0 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.5.0/install.sh)"
|
|
94
154
|
```
|
|
95
155
|
|
|
96
156
|
Windows PowerShell:
|
|
97
157
|
|
|
98
158
|
```powershell
|
|
99
|
-
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.
|
|
100
|
-
$env:CODEX_OVERLEAF_REF='v2.
|
|
159
|
+
iwr https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.5.0/install.ps1 -OutFile install.ps1
|
|
160
|
+
$env:CODEX_OVERLEAF_REF='v2.5.0'
|
|
101
161
|
powershell -ExecutionPolicy Bypass -File install.ps1
|
|
102
162
|
```
|
|
103
163
|
|
|
104
|
-
|
|
164
|
+
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.
|
|
105
165
|
|
|
106
|
-
### Option C: npm
|
|
107
|
-
|
|
108
|
-
`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.
|
|
166
|
+
### Option C: npm
|
|
109
167
|
|
|
110
168
|
```bash
|
|
111
|
-
npm exec --yes codex-overleaf-link@2.
|
|
169
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-managed
|
|
112
170
|
```
|
|
113
171
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
### Open Overleaf
|
|
172
|
+
Same result as Option B, without keeping a source checkout around.
|
|
117
173
|
|
|
118
|
-
|
|
174
|
+
### Finish in Chrome
|
|
119
175
|
|
|
120
|
-
|
|
176
|
+
1. Open `chrome://extensions` and turn on **Developer mode**.
|
|
177
|
+
2. Click **Load unpacked** and choose the folder the installer printed.
|
|
178
|
+
3. Open or refresh an Overleaf project. The panel appears on the right.
|
|
121
179
|
|
|
122
|
-
|
|
180
|
+
If an older copy is still loaded from a different folder, remove it so Chrome doesn't show two.
|
|
123
181
|
|
|
124
|
-
The
|
|
182
|
+
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).
|
|
125
183
|
|
|
126
184
|
<details>
|
|
127
185
|
<summary><strong>Manual checkout install</strong> (custom location)</summary>
|
|
@@ -134,125 +192,110 @@ npm run build:content
|
|
|
134
192
|
npm run install:native
|
|
135
193
|
```
|
|
136
194
|
|
|
137
|
-
Then load `extension/` as an unpacked extension in Chrome. This
|
|
195
|
+
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>`.
|
|
138
196
|
|
|
139
197
|
</details>
|
|
140
198
|
|
|
141
|
-
##
|
|
142
|
-
|
|
143
|
-
There are two task modes, Ask and Auto. Track is a separate setting for Auto writes.
|
|
144
|
-
|
|
145
|
-
| Mode / Track setting | What happens | How to inspect the result |
|
|
146
|
-
|------|--------------|--------------------------|
|
|
147
|
-
| **Ask** | Codex reads and analyzes the project. Local changes, if any, are not sent back to Overleaf. | Read the answer; switch to Auto when you want edits. |
|
|
148
|
-
| **Auto + Track on** | Eligible changes are written immediately; supported text edits are recorded in Overleaf Reviewing / Track Changes. The run is blocked if the required mode cannot be confirmed. | Inspect the written diff and Overleaf tracked edits, then use the run's available **Accept** or **Undo** action. |
|
|
149
|
-
| **Auto + Track off** | Eligible changes are written after confirming Overleaf Editing mode. | Inspect the written diff and use **Undo** where recovery evidence is available. |
|
|
150
|
-
|
|
151
|
-
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.
|
|
152
|
-
|
|
153
|
-
**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.
|
|
199
|
+
## Your first run
|
|
154
200
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
Suggest mode was removed in v2.3.1. For a reviewable editing workflow, use **Auto + Track** and inspect the changes after they are written.
|
|
201
|
+
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.
|
|
202
|
+
2. Leave the mode on **Ask** and try something that reads the project: *"Summarise what each chapter argues, in one sentence each."*
|
|
203
|
+
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.
|
|
204
|
+
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.
|
|
161
205
|
|
|
162
|
-
|
|
206
|
+
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.
|
|
163
207
|
|
|
164
|
-
|
|
208
|
+
## Ask, Auto and Track
|
|
165
209
|
|
|
166
|
-
|
|
210
|
+
| | What Codex may do | Where the changes go |
|
|
211
|
+
|---|---|---|
|
|
212
|
+
| **Ask** | Read and analyse | Nowhere. Overleaf is not touched. |
|
|
213
|
+
| **Auto** | Read and edit | Written straight into Overleaf in Editing mode. |
|
|
214
|
+
| **Auto + Track** | Read and edit | Written as tracked changes you can review in Overleaf's Review panel. |
|
|
167
215
|
|
|
168
|
-
|
|
169
|
-
2. Enter a **Provider name**, **Base URL**, **API key**, and **Default model** ID. Add other model IDs one per line in **Additional models**. Use the exact IDs accepted by your endpoint; custom providers use this configured list. HTTPS is required except for localhost.
|
|
170
|
-
3. Under **Advanced compatibility**, leave **API protocol** on Auto or select the protocol your endpoint supports. If the URL already ends with the complete protocol endpoint, enable **Base URL is the full protocol endpoint**.
|
|
171
|
-
4. Review the endpoint disclosure. **Test connection** is optional and sends a live probe to the selected test model. Choose **Save** to keep the profile, or **Save and use for this project** to select it for future runs in this project.
|
|
216
|
+
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.
|
|
172
217
|
|
|
173
|
-
|
|
218
|
+
**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.
|
|
174
219
|
|
|
175
|
-
|
|
220
|
+
**Accept changes** finalises a Track run's changes in one step and leaves Overleaf in Editing mode.
|
|
176
221
|
|
|
177
|
-
|
|
222
|
+
> [!WARNING]
|
|
223
|
+
> 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.
|
|
178
224
|
|
|
179
|
-
|
|
225
|
+
**Cancel** stops the run. Anything already written stays, and the card shows which parts landed so you can undo them.
|
|
180
226
|
|
|
181
|
-
|
|
182
|
-
|----------|------------|
|
|
183
|
-
| **Auto (detect during test)** | Negotiate a compatible route during a connection test or first use. |
|
|
184
|
-
| **Responses API** | Endpoints that accept the Responses API format. |
|
|
185
|
-
| **Chat Completions** | OpenAI-compatible chat completion endpoints. |
|
|
186
|
-
| **Anthropic Messages** | Endpoints that accept the Anthropic Messages format. |
|
|
227
|
+
## Models and API providers
|
|
187
228
|
|
|
188
|
-
|
|
229
|
+
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.
|
|
189
230
|
|
|
190
|
-
|
|
231
|
+
To use another endpoint, open **Project Settings → Model providers → Configure → Add provider**:
|
|
191
232
|
|
|
192
|
-
|
|
233
|
+
1. Enter a **Provider name**, the **Base URL** and your **API key**. HTTPS is required except for localhost.
|
|
234
|
+
2. Under **Models**, add each model with the exact ID your endpoint accepts, and mark one as the default.
|
|
235
|
+
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**.
|
|
236
|
+
4. **Test connection** sends one real request to a model you pick. Then choose **Save and use for this project**.
|
|
193
237
|
|
|
194
|
-
|
|
238
|
+
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.
|
|
195
239
|
|
|
196
|
-
|
|
240
|
+
## Context and attachments
|
|
197
241
|
|
|
198
|
-
|
|
242
|
+
- **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.
|
|
243
|
+
- **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.
|
|
244
|
+
- **Compile log**: `@compile-log` attaches the current errors and warnings.
|
|
245
|
+
- **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.
|
|
246
|
+
- **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.
|
|
199
247
|
|
|
200
|
-
##
|
|
248
|
+
## Updating
|
|
201
249
|
|
|
202
|
-
|
|
203
|
-
- **Fix a compile error** — include `@compile-log` in Ask for diagnosis. To apply a fix, switch to Auto, choose Track as needed, leave Compile enabled, and inspect the written changes and compile result.
|
|
204
|
-
- **Rewrite or translate a section** — choose its file from `@` autocomplete, name the section and desired changes, and use Auto + Track. Inspect the edits in Overleaf, then Accept or Undo the run as appropriate.
|
|
205
|
-
- **Create a figure** — provide references as composer attachments, ask Codex to create a supported asset and update the LaTeX in Auto, and review the separate asset confirmation. Check the run report for any skipped files.
|
|
206
|
-
- **Continue or try an alternative** — queue a follow-up while Codex is running, use Guide for an immediate correction, or fork an eligible completed turn to explore another approach. A conversation fork shares the same Overleaf project; it does not create a project copy.
|
|
207
|
-
- **Polish several sections in parallel** — enable the experimental `parallel-subagents` skill, specify the sections or files, and use Auto + Track to inspect the combined changes after writeback.
|
|
250
|
+
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.
|
|
208
251
|
|
|
209
|
-
|
|
252
|
+
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.
|
|
210
253
|
|
|
211
|
-
|
|
254
|
+
### Coming from v2.4.x or earlier
|
|
212
255
|
|
|
213
|
-
|
|
256
|
+
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. **Update now will not work for this one release.** Run the installer once:
|
|
214
257
|
|
|
215
|
-
|
|
258
|
+
```bash
|
|
259
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-managed
|
|
260
|
+
```
|
|
216
261
|
|
|
217
|
-
|
|
262
|
+
Then click **Reload** on the extension in `chrome://extensions` and refresh Overleaf. Your sessions, settings, provider keys and project mirrors are kept. Later releases update in place again.
|
|
218
263
|
|
|
219
|
-
|
|
264
|
+
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.
|
|
220
265
|
|
|
221
|
-
|
|
266
|
+
Checkout and Release-zip installs are unmanaged and always update by hand.
|
|
222
267
|
|
|
223
|
-
|
|
268
|
+
## Commands
|
|
224
269
|
|
|
225
|
-
|
|
270
|
+
| Action | Command |
|
|
271
|
+
|---|---|
|
|
272
|
+
| Install, repair or migrate | `npm exec --yes codex-overleaf-link@2.5.0 -- install-managed` |
|
|
273
|
+
| Diagnose | `npm exec --yes codex-overleaf-link@2.5.0 -- doctor` |
|
|
274
|
+
| Uninstall | `npm exec --yes codex-overleaf-link@2.5.0 -- uninstall-managed` |
|
|
226
275
|
|
|
227
|
-
npm installs, updates, and uninstalls the coordinated managed extension/native pair.
|
|
276
|
+
npm installs, updates, and uninstalls the coordinated managed extension/native pair. The legacy `install-native` command remains available only for explicitly unmanaged extension directories:
|
|
228
277
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
| Diagnose | `npm exec --yes codex-overleaf-link@2.4.1 -- doctor` |
|
|
233
|
-
| Uninstall | `npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed` |
|
|
278
|
+
```bash
|
|
279
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-native
|
|
280
|
+
```
|
|
234
281
|
|
|
235
|
-
Use `--extension-id <chrome-extension-id>` only for a custom/dev unpacked extension id that differs from the official bundled id.
|
|
282
|
+
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.
|
|
236
283
|
|
|
237
284
|
<a id="uninstall"></a>
|
|
238
285
|
<details>
|
|
239
286
|
<summary><strong>Uninstall</strong></summary>
|
|
240
287
|
|
|
241
|
-
Remove the managed extension/native installation (append `--browser chromium` on Linux Chromium):
|
|
242
|
-
|
|
243
288
|
```bash
|
|
244
|
-
npm exec --yes codex-overleaf-link@2.
|
|
289
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- uninstall-managed
|
|
245
290
|
```
|
|
246
291
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
For an unmanaged checkout or native-only installation, use `npm run uninstall:native` from the checkout, or:
|
|
292
|
+
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:
|
|
250
293
|
|
|
251
294
|
```bash
|
|
252
|
-
npm exec --yes codex-overleaf-link@2.
|
|
295
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- uninstall-native
|
|
253
296
|
```
|
|
254
297
|
|
|
255
|
-
|
|
298
|
+
An older native-only source install can also be removed with its bundled uninstaller:
|
|
256
299
|
|
|
257
300
|
```bash
|
|
258
301
|
node ~/.codex-overleaf/source/scripts/uninstall-native-host.mjs
|
|
@@ -262,67 +305,43 @@ node ~/.codex-overleaf/source/scripts/uninstall-native-host.mjs
|
|
|
262
305
|
node "$env:LOCALAPPDATA\CodexOverleaf\source\scripts\uninstall-native-host.mjs"
|
|
263
306
|
```
|
|
264
307
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
Remove the extension entry from `chrome://extensions` as well. To erase saved Codex Overleaf history, use the panel's history controls before removing the extension. Windows keeps the native installation under `%LOCALAPPDATA%\CodexOverleaf` and mirrors, plugin Codex history, providers, and skills under `%USERPROFILE%\.codex-overleaf`; full filesystem cleanup requires both roots. See [Local Data And Cleanup](#local-data-and-cleanup) for the separate browser and filesystem cleanup steps.
|
|
308
|
+
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).
|
|
268
309
|
|
|
269
310
|
</details>
|
|
270
311
|
|
|
271
|
-
## FAQ
|
|
312
|
+
## FAQ and troubleshooting
|
|
272
313
|
|
|
273
|
-
**Native host
|
|
274
|
-
|
|
275
|
-
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.
|
|
314
|
+
**The panel says "Native host update required", or can't find the native host.**
|
|
315
|
+
Rerun the installer, reload the extension in `chrome://extensions`, then refresh Overleaf:
|
|
276
316
|
|
|
277
317
|
```bash
|
|
278
|
-
npm exec --yes codex-overleaf-link@2.
|
|
318
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-managed
|
|
279
319
|
```
|
|
280
320
|
|
|
281
|
-
For
|
|
282
|
-
|
|
283
|
-
**Codex CLI not found**
|
|
284
|
-
|
|
285
|
-
Confirm `codex --version` works in a new terminal and, for the built-in provider, that you are logged in. On macOS/Linux, reinstalling the native host regenerates the launcher after PATH changes. On Windows, confirm `Get-Command codex` succeeds in PowerShell before reinstalling.
|
|
286
|
-
|
|
287
|
-
**Extension id mismatch**
|
|
288
|
-
|
|
289
|
-
Copy the id shown in `chrome://extensions` and reinstall the native host with that id (see [Extension ID](#extension-id)).
|
|
290
|
-
|
|
291
|
-
**Linux Chromium does not connect**
|
|
321
|
+
For a checkout install, rebuild and rerun `npm run install:native` from the same checkout.
|
|
292
322
|
|
|
293
|
-
|
|
323
|
+
**Codex CLI not found.**
|
|
324
|
+
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.
|
|
294
325
|
|
|
295
|
-
**
|
|
326
|
+
**Extension id mismatch.**
|
|
327
|
+
Copy the id from `chrome://extensions` and reinstall with it. See [Extension ID](#extension-id).
|
|
296
328
|
|
|
297
|
-
|
|
329
|
+
**A file was skipped.**
|
|
330
|
+
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.
|
|
298
331
|
|
|
299
|
-
**
|
|
332
|
+
**Undo changes or Accept changes is missing.**
|
|
333
|
+
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.
|
|
300
334
|
|
|
301
|
-
|
|
335
|
+
**A write was blocked by a project rule, or the sensitive-content check fired.**
|
|
336
|
+
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.
|
|
302
337
|
|
|
303
|
-
**
|
|
338
|
+
**A queued message or a fork won't run.**
|
|
339
|
+
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.
|
|
304
340
|
|
|
305
|
-
|
|
341
|
+
**Reporting a bug.**
|
|
342
|
+
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.
|
|
306
343
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
**Governance blocked write**
|
|
310
|
-
|
|
311
|
-
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.
|
|
312
|
-
|
|
313
|
-
**Sensitive preflight warning**
|
|
314
|
-
|
|
315
|
-
Sensitive preflight checks task context for likely tokens or secrets before a Codex run. Review the reported files and redact or remove sensitive content. A selected focus file does not exclude the rest of a complete project snapshot. Explicit confirmation is available only when allowed by the project's sensitive-content settings.
|
|
316
|
-
|
|
317
|
-
**Attachments and binary limits**
|
|
318
|
-
|
|
319
|
-
Composer attachments are context, while generated binary create/overwrite operations have a separate confirmation. Writeback uses chunked transfer up to the 10 MiB per-file limit. Unsupported types, oversized files, and filtered build artifacts are reported as skipped local changes. See [Context And Attachments](#context-and-attachments).
|
|
320
|
-
|
|
321
|
-
**A queued follow-up or fork cannot run**
|
|
322
|
-
|
|
323
|
-
A queued turn retains the settings captured when it was submitted. Changed or deleted provider configuration can require a new submission. Guide becomes available when the active Codex turn can receive it; otherwise the message stays queued. Fork requires a recorded Codex turn position and is disabled when that position is unavailable.
|
|
324
|
-
|
|
325
|
-
## How It Works
|
|
344
|
+
## How it works
|
|
326
345
|
|
|
327
346
|
```mermaid
|
|
328
347
|
flowchart TD
|
|
@@ -335,21 +354,14 @@ flowchart TD
|
|
|
335
354
|
A -->|Reads and edits| M
|
|
336
355
|
```
|
|
337
356
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
4. The native host collects actual file changes, computes text diffs/patches, and prepares supported binary transfers. Ask returns its answer without writeback.
|
|
344
|
-
5. Auto applies eligible operations through the browser after checking project identity, path rules, edit mode, and the expected text at each patch. Conflicting operations are skipped and reported.
|
|
345
|
-
6. The extension records recovery evidence immediately after writes, then verifies save state, updates the mirror baseline, and optionally recompiles. The report distinguishes writes from save and compile verification.
|
|
346
|
-
|
|
347
|
-
Tracked-text acceptance uses Overleaf's native undo path to restore the pre-run text, then replays the run's edits with tracking off. The page bridge checks that Editing mode remains stable and attempts rollback if replay unexpectedly creates new tracked changes.
|
|
357
|
+
1. When you send a task, the extension captures your settings and syncs the Overleaf project into a local mirror, or reuses the mirror if it's still current.
|
|
358
|
+
2. The native host starts `codex app-server` against that mirror with an isolated Codex home, so plugin runs don't mix with your own Codex sessions.
|
|
359
|
+
3. When Codex finishes, the host compares the mirror with its baseline and turns the differences into text patches and asset transfers. Ask stops here.
|
|
360
|
+
4. In Auto, the extension writes each patch through the Overleaf editor after checking the project, path rules, edit mode and the expected text. Anything that doesn't line up is skipped and reported.
|
|
361
|
+
5. The undo point is recorded before any further step, then the save state is verified, the mirror refreshed and, if enabled, the project recompiled.
|
|
348
362
|
|
|
349
363
|
## Development
|
|
350
364
|
|
|
351
|
-
Install locked development dependencies and build the content script before loading the checkout extension:
|
|
352
|
-
|
|
353
365
|
```bash
|
|
354
366
|
npm ci
|
|
355
367
|
npm run build:content
|
|
@@ -361,14 +373,12 @@ npm run check:architecture
|
|
|
361
373
|
npm run benchmark:large
|
|
362
374
|
```
|
|
363
375
|
|
|
364
|
-
|
|
376
|
+
There are no npm runtime dependencies. Development uses a pinned **esbuild**; the Markdown and math libraries are vendored into the extension. Tests use Node's built-in runner, including VM-based browser integration tests. [CI](.github/workflows/test.yml) runs on macOS, Ubuntu and Windows with Node 24.18.0 and rehearses the managed-update hop on Ubuntu.
|
|
365
377
|
|
|
366
|
-
The
|
|
367
|
-
|
|
368
|
-
To update an existing managed installation from a prepared checkout, run `npm run install:managed` after building, then reload the extension and Overleaf.
|
|
378
|
+
The content script is bundled from [content-entry.mjs](extension/entries/content-entry.mjs). Edit the modules, run `npm run build:content`, and reload the extension. To push a local build into an existing managed install, run `npm run install:managed`, then reload the extension and Overleaf. `npm run bridge` starts the native host on stdio for protocol work.
|
|
369
379
|
|
|
370
380
|
| Area | Entry points |
|
|
371
|
-
|
|
381
|
+
|---|---|
|
|
372
382
|
| Panel and task orchestration | `extension/src/content/contentRuntime.js`, `extension/src/content/runController.js` |
|
|
373
383
|
| Page snapshot and writeback | `extension/src/pageBridge.js`, `extension/src/page/snapshotRouter.js`, `extension/src/page/writebackRouter.js` |
|
|
374
384
|
| Browser/native transport | `extension/src/background.js`, `native-host/src/index.js` |
|
|
@@ -376,171 +386,119 @@ To update an existing managed installation from a prepared checkout, run `npm ru
|
|
|
376
386
|
| Shared contracts and persistence | `extension/src/shared/`, `extension/src/content/scopedPersistenceCoordinator.js` |
|
|
377
387
|
| Managed updates and packaging | `extension/bootstrap/`, `extension/src/backgroundUpdateCoordinator.js`, `native-host/src/updateManager.js`, `scripts/` |
|
|
378
388
|
|
|
379
|
-
|
|
389
|
+
Browser smoke test against a real project:
|
|
380
390
|
|
|
381
391
|
```bash
|
|
382
392
|
npm run smoke:extension -- --url 'https://www.overleaf.com/project/<project-id>' --probe panel,native,project,diagnostics --json .local/smoke.json
|
|
383
393
|
```
|
|
384
394
|
|
|
385
|
-
|
|
395
|
+
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`.
|
|
386
396
|
|
|
387
|
-
## Browser
|
|
397
|
+
## Browser support
|
|
388
398
|
|
|
389
|
-
| Platform |
|
|
390
|
-
|
|
391
|
-
| macOS | Google Chrome |
|
|
392
|
-
| Windows | Google Chrome |
|
|
393
|
-
| Linux | Google Chrome |
|
|
394
|
-
| Linux | Chromium |
|
|
399
|
+
| Platform | Browser | Notes |
|
|
400
|
+
|---|---|---|
|
|
401
|
+
| macOS | Google Chrome | Default installer |
|
|
402
|
+
| Windows | Google Chrome | PowerShell installer |
|
|
403
|
+
| Linux | Google Chrome | Default installer |
|
|
404
|
+
| Linux | Chromium | Add `--browser chromium` when installing or uninstalling |
|
|
395
405
|
|
|
396
|
-
The
|
|
406
|
+
Chromium on macOS and Windows isn't supported yet. The extension runs on project pages of `overleaf.com`, `www.overleaf.com` and `cn.overleaf.com`; self-hosted Overleaf isn't covered.
|
|
397
407
|
|
|
398
|
-
Linux Chromium
|
|
408
|
+
Linux Chromium:
|
|
399
409
|
|
|
400
410
|
```bash
|
|
401
|
-
CODEX_OVERLEAF_REF=v2.
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
Linux Chromium uninstall:
|
|
405
|
-
|
|
406
|
-
```bash
|
|
407
|
-
npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed --browser chromium
|
|
411
|
+
CODEX_OVERLEAF_REF=v2.5.0 bash -c "$(curl -fsSL https://raw.githubusercontent.com/Ghqqqq/codex-overleaf-link/v2.5.0/install.sh)" -- --browser chromium
|
|
412
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- uninstall-managed --browser chromium
|
|
408
413
|
```
|
|
409
414
|
|
|
410
415
|
## Extension ID
|
|
411
416
|
|
|
412
|
-
|
|
417
|
+
The repo ships a fixed extension key, so the official build always gets this id:
|
|
413
418
|
|
|
414
419
|
```
|
|
415
420
|
illdpneeeopfffmiepaejglgmhpmdhdc
|
|
416
421
|
```
|
|
417
422
|
|
|
418
|
-
|
|
423
|
+
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:
|
|
419
424
|
|
|
420
425
|
```bash
|
|
421
|
-
npm exec --yes codex-overleaf-link@2.
|
|
426
|
+
npm exec --yes codex-overleaf-link@2.5.0 -- install-managed --extension-id "<your-chrome-extension-id>"
|
|
422
427
|
```
|
|
423
428
|
|
|
424
|
-
For an unmanaged extension, use
|
|
429
|
+
For an unmanaged extension, use `install-native --extension-id "<your-chrome-extension-id>"` instead. The source installers also read `CODEX_OVERLEAF_EXTENSION_ID`.
|
|
425
430
|
|
|
426
|
-
|
|
427
|
-
npm exec --yes codex-overleaf-link@2.4.1 -- install-native --extension-id "<your-chrome-extension-id>"
|
|
428
|
-
```
|
|
431
|
+
## Release artifacts
|
|
429
432
|
|
|
430
|
-
|
|
433
|
+
Each GitHub Release includes:
|
|
431
434
|
|
|
432
|
-
|
|
435
|
+
- `codex-overleaf-link-extension-v2.5.0.zip`: the extension, for manual unpacked installation.
|
|
436
|
+
- `codex-overleaf-native-host-v2.5.0.tar.gz`: the native host runtime used by the installers.
|
|
437
|
+
- `codex-overleaf-update-v2.5.0.tar.gz`: the combined bundle the in-product updater downloads.
|
|
438
|
+
- `codex-overleaf-link-2.5.0.tgz`: the npm package behind the `npm exec` commands.
|
|
439
|
+
- `install.sh` and `install.ps1`: installers pinned to this release.
|
|
440
|
+
- `uninstall-native-host.mjs` plus its helpers `nativeHostPlatform.js`, `manifest.js` and `runtimeInstaller.js`.
|
|
441
|
+
- `SHA256SUMS`, `release-manifest.json` and `release-manifest.sig`: checksums and the Ed25519-signed release metadata the updater verifies.
|
|
442
|
+
- `release-notes.md`.
|
|
433
443
|
|
|
434
|
-
|
|
444
|
+
## Local data and cleanup
|
|
435
445
|
|
|
436
|
-
|
|
437
|
-
- `codex-overleaf-native-host-v2.4.1.tar.gz`: native host runtime files used by the installer and release verification.
|
|
438
|
-
- `codex-overleaf-update-v2.4.1.tar.gz`: coordinated extension/native bundle used by the managed updater.
|
|
439
|
-
- `codex-overleaf-link-2.4.1.tgz`: npm native host CLI package for pinned install, doctor, and uninstall flows.
|
|
440
|
-
- `install.sh`: release-pinned macOS / Linux installer that defaults to `v2.4.1` when run directly from the release artifact.
|
|
441
|
-
- `install.ps1`: release-pinned Windows PowerShell installer that defaults to `v2.4.1` when run directly from the release artifact.
|
|
442
|
-
- `uninstall-native-host.mjs`: native host uninstaller that removes the Chrome Native Messaging manifest, bridge executable, and runtime copy.
|
|
443
|
-
- `nativeHostPlatform.js`, `manifest.js`, `runtimeInstaller.js`: helper files required by the loose uninstaller asset.
|
|
444
|
-
- `SHA256SUMS`, `release-manifest.json`, and `release-manifest.sig`: checksums, release metadata, and its Ed25519 signature.
|
|
445
|
-
- `release-notes.md`: release notes shipped with the artifacts.
|
|
446
|
+
There is no hosted backend and no telemetry. Everything below lives on your machine. During a run, task context is sent to Codex or to the provider you configured. Project rules control what may be written; they don't hide files from the model.
|
|
446
447
|
|
|
447
|
-
|
|
448
|
+
| What | Where (macOS/Linux; Windows in brackets) |
|
|
449
|
+
|---|---|
|
|
450
|
+
| Sessions, runs, history | IndexedDB database `codex-overleaf` under the Overleaf site in Chrome |
|
|
451
|
+
| Preferences and project settings | `chrome.storage.local` of the extension |
|
|
452
|
+
| Managed extension | `~/.codex-overleaf/managed/extension` (`%LOCALAPPDATA%\CodexOverleaf\managed\extension`) |
|
|
453
|
+
| Managed native host | `~/.codex-overleaf/managed/native` (`%LOCALAPPDATA%\CodexOverleaf\managed\native`) |
|
|
454
|
+
| Installer checkout | `~/.codex-overleaf/source` (`%LOCALAPPDATA%\CodexOverleaf\source`) |
|
|
455
|
+
| Native bridge | `~/.codex-overleaf/codex-overleaf-bridge` (`%LOCALAPPDATA%\CodexOverleaf\codex-overleaf-bridge.cmd`) |
|
|
456
|
+
| Project mirrors | `~/.codex-overleaf/projects` (`%USERPROFILE%\.codex-overleaf\projects`) |
|
|
457
|
+
| Plugin Codex home | `~/.codex-overleaf/codex-home` (`%USERPROFILE%\.codex-overleaf\codex-home`) |
|
|
458
|
+
| Codex Overleaf skills | `~/.codex-overleaf/skills` (`%USERPROFILE%\.codex-overleaf\skills`) |
|
|
459
|
+
| Provider profiles and keys | `~/.codex-overleaf/providers.json`, `provider-secrets.json` (`%USERPROFILE%\.codex-overleaf`) |
|
|
460
|
+
| Logs | `~/.codex-overleaf/native-host.log`, `native-host-launcher.log` (`%LOCALAPPDATA%\CodexOverleaf\native-host.log`) |
|
|
448
461
|
|
|
449
|
-
|
|
462
|
+
The history database belongs to the Overleaf page, not to the extension, so removing the extension does not erase it. See Chrome's notes on [content-script storage](https://developer.chrome.com/docs/extensions/develop/concepts/storage-and-cookies#storage).
|
|
450
463
|
|
|
451
|
-
Codex
|
|
464
|
+
The plugin's Codex home copies your login and config but not your personalisation: no `~/.codex/AGENTS.md`, no top-level `personality` key, no global `rules` or `memories`. Skill loading toggles default to enabled, and both live in Settings:
|
|
452
465
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
| Browser IndexedDB | Database `codex-overleaf` under the Overleaf page origin | Sessions, turns, events, artifacts, and audit logs. |
|
|
456
|
-
| Browser extension storage | `chrome.storage.local` | Global UI preferences in `codexOverleafGlobalPrefsV1`, plus project settings, governance rules, selected skill ids, and panel state. |
|
|
457
|
-
| Managed extension | `~/.codex-overleaf/managed/extension` on macOS/Linux; `%LOCALAPPDATA%\CodexOverleaf\managed\extension` on Windows | Stable directory loaded into Chrome, including bootstrap and replaceable runtime files. |
|
|
458
|
-
| Managed native host | `~/.codex-overleaf/managed/native` on macOS/Linux; `%LOCALAPPDATA%\CodexOverleaf\managed\native` on Windows | Versioned runtimes, active/previous version pointers, bootstrap launcher, and update staging. |
|
|
459
|
-
| Source installer checkout | `~/.codex-overleaf/source` on macOS/Linux; `%LOCALAPPDATA%\CodexOverleaf\source` on Windows | Source retained by `install.sh` / `install.ps1`; npm managed installs do not require this checkout. |
|
|
460
|
-
| Native-only runtime | `~/.codex-overleaf/native-host-runtime` on macOS/Linux; `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime` on Windows | Runtime copy for unmanaged/native-only installations. The Windows Native Messaging manifest also lives in this directory for managed installs. |
|
|
461
|
-
| Native bridge | `~/.codex-overleaf/codex-overleaf-bridge` on macOS/Linux; `%LOCALAPPDATA%\CodexOverleaf\codex-overleaf-bridge.cmd` on Windows | Native Messaging launcher executable. |
|
|
462
|
-
| Project mirrors | `~/.codex-overleaf/projects` on macOS/Linux, `%USERPROFILE%\.codex-overleaf\projects` on Windows | Local mirror workspaces and mirror metadata for each Overleaf project. |
|
|
463
|
-
| Plugin Codex home | `~/.codex-overleaf/codex-home` on macOS/Linux, `%USERPROFILE%\.codex-overleaf\codex-home` on Windows | Isolated Codex home for plugin runs. It copies auth/config metadata but does not reuse global Codex sessions or inherit global Codex personalization. |
|
|
464
|
-
| Codex Overleaf skills | `~/.codex-overleaf/skills` on macOS/Linux, `%USERPROFILE%\.codex-overleaf\skills` on Windows | Project/plugin skills managed by the extension. |
|
|
465
|
-
| Provider configuration | `~/.codex-overleaf/providers.json` and `provider-secrets.json`; under `%USERPROFILE%\.codex-overleaf` on Windows | Model provider profiles and separately stored API keys. |
|
|
466
|
-
| Native logs | `~/.codex-overleaf/native-host.log` on macOS/Linux, `%LOCALAPPDATA%\CodexOverleaf\native-host.log` on Windows | Native debug events with content length summaries where possible. |
|
|
467
|
-
| Launcher logs | `~/.codex-overleaf/native-host-launcher.log` on macOS/Linux | POSIX launcher startup path and Node diagnostics. The Windows `.cmd` launcher does not currently emit a separate launcher log. |
|
|
466
|
+
- `Load local Codex skills` brings your own skills and plugins (`~/.codex/skills`, local Codex `plugins`, `superpowers` and related configuration) into the isolated `~/.codex-overleaf/codex-home`. It only affects that plugin home and does not write to or reuse global `~/.codex/sessions`.
|
|
467
|
+
- `Load Codex Overleaf skills` loads the skills this extension manages from `~/.codex-overleaf/skills` (`%USERPROFILE%\.codex-overleaf\skills` on Windows). Turning it off hides them without deleting the files.
|
|
468
468
|
|
|
469
|
-
|
|
469
|
+
Native Messaging registration:
|
|
470
470
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
The isolated plugin Codex home copies auth and config metadata but excludes global Codex personalization: it does not copy `~/.codex/AGENTS.md`, strips the top-level `personality` key from the copied `config.toml`, and does not link the global `rules` or `memories` directories.
|
|
475
|
-
|
|
476
|
-
Native registration paths:
|
|
477
|
-
|
|
478
|
-
| Platform/browser | Registration path |
|
|
479
|
-
|------------------|-------------------|
|
|
471
|
+
| Platform | Path |
|
|
472
|
+
|---|---|
|
|
480
473
|
| macOS Chrome | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/com.codex.overleaf.json` |
|
|
481
474
|
| Linux Chrome | `~/.config/google-chrome/NativeMessagingHosts/com.codex.overleaf.json` |
|
|
482
475
|
| Linux Chromium | `~/.config/chromium/NativeMessagingHosts/com.codex.overleaf.json` |
|
|
483
|
-
| Windows Chrome | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf
|
|
476
|
+
| Windows Chrome | `HKCU\Software\Google\Chrome\NativeMessagingHosts\com.codex.overleaf` → `%LOCALAPPDATA%\CodexOverleaf\native-host-runtime\com.codex.overleaf.json` |
|
|
484
477
|
|
|
485
|
-
|
|
478
|
+
To remove everything:
|
|
486
479
|
|
|
487
|
-
1.
|
|
488
|
-
2. Run `uninstall-managed`
|
|
489
|
-
3. Remove the extension
|
|
490
|
-
4.
|
|
491
|
-
|
|
492
|
-
**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.**
|
|
493
|
-
|
|
494
|
-
macOS/Linux:
|
|
480
|
+
1. While the extension is still installed, use **Settings → History & storage → Clear local history…** in each Chrome profile you used. If it's already gone, delete the `codex-overleaf` database from the Overleaf page's **DevTools → Application → IndexedDB**.
|
|
481
|
+
2. Run `uninstall-managed` (or `uninstall-native` for an unmanaged install). See [Uninstall](#uninstall).
|
|
482
|
+
3. Remove the extension in `chrome://extensions`. Chrome clears its `chrome.storage.local` with it.
|
|
483
|
+
4. Delete the local folders. **This permanently removes mirrors, plugin history, provider keys and skills.**
|
|
495
484
|
|
|
496
485
|
```bash
|
|
497
486
|
rm -rf ~/.codex-overleaf ~/Codex\ Overleaf\ Link\ Extension
|
|
498
487
|
```
|
|
499
488
|
|
|
500
|
-
Windows PowerShell:
|
|
501
|
-
|
|
502
489
|
```powershell
|
|
503
490
|
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\CodexOverleaf", "$env:USERPROFILE\.codex-overleaf" -ErrorAction SilentlyContinue
|
|
504
491
|
```
|
|
505
492
|
|
|
506
|
-
Composer attachments are staged under `.codex-overleaf-attachments` inside the mirror workspace and are ignored during writeback. Submission clears the composer strip; it is not a promise of immediate deletion from local mirrors or Codex history.
|
|
507
|
-
|
|
508
|
-
## Compatibility Matrix
|
|
509
|
-
|
|
510
|
-
Use this matrix for release-candidate signoff and compatibility reports. Record exact versions from the machine under test before publishing release guidance.
|
|
511
|
-
|
|
512
|
-
| Field | macOS Chrome | Windows Chrome | Linux Chrome | Linux Chromium |
|
|
513
|
-
|-------|--------------|----------------|--------------|----------------|
|
|
514
|
-
| OS/version/arch | Record exact macOS version and `arm64`/`x64`. | Record exact Windows version and `arm64`/`x64`. | Record distro, version, and `arm64`/`x64`. | Record distro, version, and `arm64`/`x64`. |
|
|
515
|
-
| Browser/channel/version | Google Chrome channel and version. | Google Chrome channel and version. | Google Chrome channel and version. | Chromium channel/package and version. |
|
|
516
|
-
| 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`. |
|
|
517
|
-
| 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`. |
|
|
518
|
-
| Installer/update command | `npm exec --yes codex-overleaf-link@2.4.1 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- install-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- install-managed --browser chromium` |
|
|
519
|
-
| Uninstall command | `npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed` | `npm exec --yes codex-overleaf-link@2.4.1 -- uninstall-managed --browser chromium` |
|
|
520
|
-
| 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` |
|
|
521
|
-
| 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. |
|
|
522
|
-
| 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. |
|
|
523
|
-
| Native compatibility | Current protocol 2; extension supports native protocol range 1–2. Required capabilities and runtime versions are checked separately; see below. | Same as macOS Chrome. | Same as macOS Chrome. | Same as macOS Chrome. |
|
|
524
|
-
| Overleaf behavior checks | Current file detection, full snapshot source, file tree write operations, undo checkpoint, Reviewing control, compile capture, save-state verification, OT warm mirror fallback. | Same checks. | Same checks. | Same checks. |
|
|
525
|
-
| Last smoke date/result | Record date, tester, and pass/fail. | Record date, tester, and pass/fail. | Record date, tester, and pass/fail. | Record date, tester, and pass/fail. |
|
|
526
|
-
|
|
527
|
-
The current handshake requires `bridgePing`, `mirrorSync`, `mirrorPatchFiles`, `mirrorStatus`, `codexRun`, `codexCancel`, `codexSteer`, `codexModels`, `historyClearPlugin`, `localSkills`, `mirrorSensitiveScan`, `providerProfiles`, `assetTransfer`, and `threadFork`. [compatibility.js](extension/src/shared/compatibility.js) owns this list and the protocol/version rules. An overlapping protocol range alone does not establish full compatibility.
|
|
528
|
-
|
|
529
|
-
The table is a reporting template, not evidence that every listed browser/version has been exercised. CI covers local tests on macOS, Ubuntu, and Windows; real Overleaf compatibility requires a browser smoke run.
|
|
530
|
-
|
|
531
493
|
## Contributing
|
|
532
494
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
1. Fork the repository.
|
|
536
|
-
2. Create a feature branch.
|
|
537
|
-
3. Run `npm test` and ensure all tests pass.
|
|
538
|
-
4. Submit a pull request with a clear description.
|
|
539
|
-
|
|
540
|
-
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.
|
|
495
|
+
Issues and pull requests are welcome. For larger changes, open an issue first so we can talk through the approach. Run `npm test` before submitting, and keep [README.md](README.md) and [README.zh-CN.md](README.zh-CN.md) in step when behaviour, versions or commands change.
|
|
541
496
|
|
|
542
497
|
## License
|
|
543
498
|
|
|
544
499
|
[MIT](LICENSE)
|
|
545
500
|
|
|
546
501
|
<p align="center"><strong>English</strong> | <a href="README.zh-CN.md" lang="zh-CN">简体中文</a></p>
|
|
502
|
+
|
|
503
|
+
|
|
504
|
+
</details>
|