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
|
@@ -6,15 +6,19 @@ const UPDATE_STATE_KEY = 'codex-overleaf-managed-update-state-v1';
|
|
|
6
6
|
const UPDATE_RELOAD_TABS_KEY = 'codex-overleaf-managed-update-tabs-v1';
|
|
7
7
|
const CHECK_ALARM = 'codex-overleaf-stable-update-check';
|
|
8
8
|
const IDLE_ALARM = 'codex-overleaf-staged-update-idle';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const OVERLEAF_MATCHES = [
|
|
9
|
+
// Built-in sites. The replaceable runtime manifest may list more; any extra
|
|
10
|
+
// site is used only after Chrome reports its permission as granted, so a later
|
|
11
|
+
// release can add an Overleaf site without changing this Bootstrap file.
|
|
12
|
+
const BUILT_IN_OVERLEAF_MATCHES = Object.freeze([
|
|
14
13
|
'https://www.overleaf.com/project',
|
|
15
14
|
'https://overleaf.com/project',
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
'https://cn.overleaf.com/project',
|
|
16
|
+
'https://www.overleaf.com/project/*',
|
|
17
|
+
'https://overleaf.com/project/*',
|
|
18
|
+
'https://cn.overleaf.com/project/*'
|
|
19
|
+
]);
|
|
20
|
+
let OVERLEAF_MATCHES = [...BUILT_IN_OVERLEAF_MATCHES];
|
|
21
|
+
let OVERLEAF_HOSTS = hostsOf(OVERLEAF_MATCHES);
|
|
18
22
|
const APPLYING_STATES = new Set(['applying', 'awaiting_health', 'rolling_back']);
|
|
19
23
|
const FAST_IDLE_RETRY_BLOCKERS = new Set(['recent_user_activity', 'save_state_not_stable']);
|
|
20
24
|
const FAST_IDLE_RETRY_MS = 4000;
|
|
@@ -58,6 +62,10 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
|
|
58
62
|
return undefined;
|
|
59
63
|
});
|
|
60
64
|
|
|
65
|
+
// A newly granted site starts working without a reload or reinstall.
|
|
66
|
+
chrome.permissions?.onAdded?.addListener(() => { registerManagedRuntime().catch(() => {}); });
|
|
67
|
+
chrome.permissions?.onRemoved?.addListener(() => { registerManagedRuntime().catch(() => {}); });
|
|
68
|
+
|
|
61
69
|
chrome.alarms.onAlarm.addListener(alarm => {
|
|
62
70
|
if (alarm.name === CHECK_ALARM) {
|
|
63
71
|
checkAndStage().catch(() => {});
|
|
@@ -105,6 +113,10 @@ async function registerManagedRuntime() {
|
|
|
105
113
|
}
|
|
106
114
|
const manifest = await response.json();
|
|
107
115
|
validateRuntimeManifest(manifest);
|
|
116
|
+
const matches = await grantedMatches(manifest.matches);
|
|
117
|
+
if (!matches.length) throw new Error('No Overleaf site in the runtime manifest is permitted.');
|
|
118
|
+
OVERLEAF_MATCHES = [...new Set([...BUILT_IN_OVERLEAF_MATCHES, ...matches])];
|
|
119
|
+
OVERLEAF_HOSTS = hostsOf(OVERLEAF_MATCHES);
|
|
108
120
|
managedRuntimeAssets = {
|
|
109
121
|
js: ['bootstrap/runtimeContext.js', ...manifest.js.map(value => 'runtime/' + value)],
|
|
110
122
|
css: manifest.css.map(value => 'runtime/' + value)
|
|
@@ -115,7 +127,7 @@ async function registerManagedRuntime() {
|
|
|
115
127
|
}
|
|
116
128
|
await chrome.scripting.registerContentScripts([{
|
|
117
129
|
id: RUNTIME_SCRIPT_ID,
|
|
118
|
-
matches
|
|
130
|
+
matches,
|
|
119
131
|
js: managedRuntimeAssets.js,
|
|
120
132
|
css: managedRuntimeAssets.css,
|
|
121
133
|
runAt: manifest.runAt || 'document_idle',
|
|
@@ -127,7 +139,7 @@ function validateRuntimeManifest(manifest) {
|
|
|
127
139
|
if (!manifest || manifest.schemaVersion !== 1 || !Array.isArray(manifest.matches) || !Array.isArray(manifest.js) || !Array.isArray(manifest.css)) {
|
|
128
140
|
throw new Error('Managed runtime manifest is invalid.');
|
|
129
141
|
}
|
|
130
|
-
if (!manifest.matches.length || manifest.matches.some(value => !
|
|
142
|
+
if (!manifest.matches.length || manifest.matches.some(value => !isProjectMatch(value))) {
|
|
131
143
|
throw new Error('Managed runtime match patterns are invalid.');
|
|
132
144
|
}
|
|
133
145
|
const paths = [...manifest.js, ...manifest.css];
|
|
@@ -303,11 +315,36 @@ async function probeTabIdle(tab) {
|
|
|
303
315
|
return { idle: false, blockers: ['tab_probe_unavailable'] };
|
|
304
316
|
}
|
|
305
317
|
|
|
318
|
+
// Only project pages on overleaf.com or one of its subdomains: the same scope
|
|
319
|
+
// as optional_host_permissions and web_accessible_resources in the manifest.
|
|
320
|
+
function isProjectMatch(value) {
|
|
321
|
+
return typeof value === 'string'
|
|
322
|
+
&& /^https:\/\/(?:[a-z0-9-]+\.)*overleaf\.com\/project(?:\/\*)?$/.test(value);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
function hostsOf(matches) {
|
|
326
|
+
return new Set(matches.map(value => {
|
|
327
|
+
try { return new URL(value.replace(/\*$/, '')).host; } catch (_error) { return ''; }
|
|
328
|
+
}).filter(Boolean));
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
// Built-in sites are granted at install; a site a later runtime adds only
|
|
332
|
+
// counts once the user has approved Chrome's prompt for it (see the popup).
|
|
333
|
+
async function grantedMatches(matches) {
|
|
334
|
+
const result = [];
|
|
335
|
+
for (const value of matches) {
|
|
336
|
+
if (BUILT_IN_OVERLEAF_MATCHES.includes(value)) { result.push(value); continue; }
|
|
337
|
+
const granted = await chrome.permissions.contains({ origins: [value] }).catch(() => false);
|
|
338
|
+
if (granted) result.push(value);
|
|
339
|
+
}
|
|
340
|
+
return result;
|
|
341
|
+
}
|
|
342
|
+
|
|
306
343
|
function isEditorProjectTab(tab) {
|
|
307
344
|
try {
|
|
308
345
|
const url = new URL(tab?.url || '');
|
|
309
346
|
return url.protocol === 'https:' &&
|
|
310
|
-
(url.
|
|
347
|
+
OVERLEAF_HOSTS.has(url.host) &&
|
|
311
348
|
/^\/project\/[^/]+(?:\/|$)/.test(url.pathname);
|
|
312
349
|
} catch (_error) {
|
|
313
350
|
return false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest_version": 3,
|
|
3
3
|
"name": "Codex Overleaf Link",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.5.0",
|
|
5
5
|
"description": "Connect the active Overleaf project to a local Codex bridge.",
|
|
6
6
|
"icons": {
|
|
7
7
|
"16": "assets/icons/icon16.png",
|
|
@@ -20,7 +20,12 @@
|
|
|
20
20
|
"https://www.overleaf.com/project",
|
|
21
21
|
"https://overleaf.com/project",
|
|
22
22
|
"https://www.overleaf.com/project/*",
|
|
23
|
-
"https://overleaf.com/project/*"
|
|
23
|
+
"https://overleaf.com/project/*",
|
|
24
|
+
"https://cn.overleaf.com/project",
|
|
25
|
+
"https://cn.overleaf.com/project/*"
|
|
26
|
+
],
|
|
27
|
+
"optional_host_permissions": [
|
|
28
|
+
"https://*.overleaf.com/*"
|
|
24
29
|
],
|
|
25
30
|
"background": {
|
|
26
31
|
"service_worker": "bootstrap/background.js"
|
|
@@ -36,8 +41,8 @@
|
|
|
36
41
|
"runtime/src/pageBridge.js"
|
|
37
42
|
],
|
|
38
43
|
"matches": [
|
|
39
|
-
"https://
|
|
40
|
-
"https
|
|
44
|
+
"https://overleaf.com/*",
|
|
45
|
+
"https://*.overleaf.com/*"
|
|
41
46
|
]
|
|
42
47
|
}
|
|
43
48
|
],
|
|
@@ -1,24 +1,18 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html>
|
|
2
|
+
<html lang="en" class="popup-minimal-root" data-popup-theme="dark">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
5
6
|
<title>Codex Overleaf Link</title>
|
|
6
|
-
<link rel="stylesheet" href="popup.css">
|
|
7
|
+
<link id="popup-styles" rel="stylesheet" href="../runtime/styles/popup.css">
|
|
7
8
|
</head>
|
|
8
|
-
<body>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<p id="status" data-popup-context>Use this on an Overleaf project tab.</p>
|
|
16
|
-
<div id="native-install" class="install" data-popup-context hidden>
|
|
17
|
-
<strong>Native host attention required</strong>
|
|
18
|
-
<p>Run this command in Terminal, then reload this extension in Chrome.</p>
|
|
19
|
-
<code id="install-command"></code>
|
|
20
|
-
<button id="copy-install-command" class="secondary" type="button">Copy install command</button>
|
|
21
|
-
</div>
|
|
9
|
+
<body class="popup-minimal">
|
|
10
|
+
<!-- The popup body is drawn by the replaceable runtime (runtime/src/popup.js),
|
|
11
|
+
so popup changes ship through normal updates. This shell only holds
|
|
12
|
+
the fallback shown if the runtime cannot load. -->
|
|
13
|
+
<main id="popup-shell" data-bootstrap-shell>
|
|
14
|
+
<p class="popup-note">Codex Overleaf Link could not load its runtime. Rerun the installer, then reload the extension.</p>
|
|
15
|
+
</main>
|
|
22
16
|
<script src="../runtime/src/shared/compatibility.js"></script>
|
|
23
17
|
<script src="../runtime/src/popup.js"></script>
|
|
24
18
|
<script src="updateStatus.js"></script>
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
up_to_date: ['Everything is up to date', 'Extension and Native Host are on the latest stable release.', 'Up to date', 'success'],
|
|
89
89
|
checking: ['Checking for updates', 'Reading the latest signed stable release.', 'Checking', 'active'],
|
|
90
90
|
update_available: ['A stable update is ready', 'Review the target version, then update when convenient.', 'Available', 'success'],
|
|
91
|
+
manual_install_required: ['This update needs a one-time reinstall', 'Update now cannot apply this release. Run the command below once, then reload the extension and refresh Overleaf. Your sessions, settings, provider keys and project mirrors are kept.', 'Reinstall', 'warning'],
|
|
91
92
|
downloading: ['Downloading the signed release', 'The package is being fetched and verified before any files change.', 'Downloading', 'active'],
|
|
92
93
|
staged: ['Update verified', 'The signed package is ready and waiting for a safe installation point.', 'Verified', 'active'],
|
|
93
94
|
waiting: ['Waiting for a safe point', 'Active Overleaf work will finish before the runtime changes.', 'Waiting', 'warning'],
|
|
@@ -164,6 +165,12 @@
|
|
|
164
165
|
{ id: 'install', label: 'Update now', kind: 'primary' }
|
|
165
166
|
];
|
|
166
167
|
}
|
|
168
|
+
if (phase === 'manual_install_required') {
|
|
169
|
+
return [
|
|
170
|
+
{ id: 'later', label: 'Later', kind: 'quiet' },
|
|
171
|
+
{ id: 'copy-command', label: 'Copy command', kind: 'primary' }
|
|
172
|
+
];
|
|
173
|
+
}
|
|
167
174
|
if (['failed', 'rolled_back'].includes(phase)) {
|
|
168
175
|
return [
|
|
169
176
|
{ id: 'close', label: 'Close', kind: 'quiet' },
|
|
@@ -229,8 +236,14 @@
|
|
|
229
236
|
? 'The extension may restart briefly. This window will reconnect and restore the saved progress.'
|
|
230
237
|
: 'This window can stay open while work continues elsewhere. Progress is saved automatically.';
|
|
231
238
|
|
|
232
|
-
|
|
233
|
-
|
|
239
|
+
// The signed reason and the exact reinstall command replace the generic
|
|
240
|
+
// detail; the command stays visible and selectable in the details box.
|
|
241
|
+
const manual = presentation.phase === 'manual_install_required';
|
|
242
|
+
const reason = manual ? String(currentView.manualReason?.en || currentView.manualReason?.zh || '').trim() : '';
|
|
243
|
+
if (reason) elements.detail.textContent = reason + ' ' + presentation.detail;
|
|
244
|
+
const technical = manual ? manualCommand(target) : technicalText(currentView);
|
|
245
|
+
elements.details.hidden = !technical || !['failed', 'rolled_back', 'manual_install_required'].includes(presentation.phase);
|
|
246
|
+
elements.details.open = manual || elements.details.open;
|
|
234
247
|
elements.technicalMessage.textContent = technical;
|
|
235
248
|
renderActions(presentation.phase);
|
|
236
249
|
schedulePolling(presentation.phase);
|
|
@@ -286,8 +299,18 @@
|
|
|
286
299
|
}, 1100);
|
|
287
300
|
}
|
|
288
301
|
|
|
302
|
+
function manualCommand(version) {
|
|
303
|
+
const pinned = /^\d+\.\d+\.\d+$/.test(String(version || '')) ? version : 'latest';
|
|
304
|
+
return `npm exec --yes codex-overleaf-link@${pinned} -- install-managed`;
|
|
305
|
+
}
|
|
306
|
+
|
|
289
307
|
async function runAction(action) {
|
|
290
308
|
if (actionPending) return;
|
|
309
|
+
if (action === 'copy-command') {
|
|
310
|
+
const target = versionOf(currentView, ['latestVersion', 'targetVersion', 'availableVersion'], '');
|
|
311
|
+
await navigator.clipboard.writeText(manualCommand(target)).catch(() => {});
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
291
314
|
if (action === 'close') {
|
|
292
315
|
window.close();
|
|
293
316
|
return;
|
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
"https://www.overleaf.com/project",
|
|
5
5
|
"https://overleaf.com/project",
|
|
6
6
|
"https://www.overleaf.com/project/*",
|
|
7
|
-
"https://overleaf.com/project/*"
|
|
7
|
+
"https://overleaf.com/project/*",
|
|
8
|
+
"https://cn.overleaf.com/project",
|
|
9
|
+
"https://cn.overleaf.com/project/*"
|
|
8
10
|
],
|
|
9
11
|
"js": [
|
|
10
12
|
"src/content/generated/content.bundle.js"
|
|
@@ -20,6 +20,29 @@ if (!globalThis.CodexOverleafGlobalPreferences) {
|
|
|
20
20
|
importScripts(runtimeBase ? chrome.runtime.getURL(`${runtimeBase}/src/shared/globalPreferences.js`) : 'shared/globalPreferences.js');
|
|
21
21
|
}
|
|
22
22
|
globalThis.CodexOverleafGlobalPreferences?.installBackground(chrome);
|
|
23
|
+
if (!globalThis.CodexOverleafStorageRunActions) {
|
|
24
|
+
const runtimeBase = String(globalThis.__CODEX_OVERLEAF_RUNTIME_BASE__ || '');
|
|
25
|
+
// The service worker has its own loading graph; the content bundle's
|
|
26
|
+
// registry and shared-module imports do not exist in this context.
|
|
27
|
+
const storageDependencies = [
|
|
28
|
+
['CodexOverleafModuleRegistry', 'content/moduleRegistryKernel.js'],
|
|
29
|
+
['CodexOverleafUndoOperations', 'shared/undoOperations.js'],
|
|
30
|
+
['CodexOverleafSelectionContext', 'shared/selectionContext.js'],
|
|
31
|
+
['CodexOverleafWritebackIntent', 'shared/writebackIntent.js'],
|
|
32
|
+
['CodexOverleafWritingStyle', 'shared/writingStyle.js'],
|
|
33
|
+
['CodexOverleafStorageRunActions', 'shared/storageRunActions.js']
|
|
34
|
+
];
|
|
35
|
+
for (const [globalName, scriptPath] of storageDependencies) {
|
|
36
|
+
if (!globalThis[globalName]) {
|
|
37
|
+
importScripts(runtimeBase ? chrome.runtime.getURL(`${runtimeBase}/src/${scriptPath}`) : scriptPath);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!globalThis.CodexOverleafSharedSessionsBackground) {
|
|
42
|
+
const runtimeBase = String(globalThis.__CODEX_OVERLEAF_RUNTIME_BASE__ || '');
|
|
43
|
+
importScripts(runtimeBase ? chrome.runtime.getURL(`${runtimeBase}/src/backgroundSharedSessions.js`) : 'backgroundSharedSessions.js');
|
|
44
|
+
}
|
|
45
|
+
globalThis.CodexOverleafSharedSessionsBackground.installBackground(chrome);
|
|
23
46
|
if (!globalThis.CodexOverleafUpdateRuntimeIdentity) {
|
|
24
47
|
const runtimeBase = String(globalThis.__CODEX_OVERLEAF_RUNTIME_BASE__ || '');
|
|
25
48
|
importScripts(runtimeBase ? chrome.runtime.getURL(`${runtimeBase}/src/shared/updateRuntimeIdentity.js`) : 'shared/updateRuntimeIdentity.js');
|
|
@@ -35,8 +58,10 @@ if (!globalThis.CodexOverleafUpdateRuntimeIdentity) {
|
|
|
35
58
|
const MANAGED_OVERLEAF_MATCHES = [
|
|
36
59
|
'https://www.overleaf.com/project',
|
|
37
60
|
'https://overleaf.com/project',
|
|
61
|
+
'https://cn.overleaf.com/project',
|
|
38
62
|
'https://www.overleaf.com/project/*',
|
|
39
|
-
'https://overleaf.com/project/*'
|
|
63
|
+
'https://overleaf.com/project/*',
|
|
64
|
+
'https://cn.overleaf.com/project/*'
|
|
40
65
|
];
|
|
41
66
|
const COMPATIBILITY_REQUIRED_METHODS = new Set([
|
|
42
67
|
'codex.run',
|
|
@@ -382,7 +407,7 @@ if (!globalThis.CodexOverleafUpdateRuntimeIdentity) {
|
|
|
382
407
|
try {
|
|
383
408
|
const url = new URL(tab?.url || '');
|
|
384
409
|
return url.protocol === 'https:' &&
|
|
385
|
-
(
|
|
410
|
+
(['overleaf.com', 'www.overleaf.com', 'cn.overleaf.com'].includes(url.hostname)) &&
|
|
386
411
|
/^\/project\/[^/]+(?:\/|$)/.test(url.pathname);
|
|
387
412
|
} catch (_error) {
|
|
388
413
|
return false;
|
|
@@ -853,7 +878,7 @@ if (!globalThis.CodexOverleafUpdateRuntimeIdentity) {
|
|
|
853
878
|
try {
|
|
854
879
|
const url = new URL(senderUrl);
|
|
855
880
|
return url.protocol === 'https:' && (
|
|
856
|
-
|
|
881
|
+
['overleaf.com', 'www.overleaf.com', 'cn.overleaf.com'].includes(url.hostname)
|
|
857
882
|
);
|
|
858
883
|
} catch (_error) {
|
|
859
884
|
return false;
|