codex-overleaf-link 2.4.0 → 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 -311
- package/README.zh-CN.md +287 -326
- 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 +572 -571
- 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 +8974 -1781
- 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 +51 -120
- 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 +364 -356
- 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 +194 -164
- package/extension/src/content/scopedPersistenceCoordinator.js +2 -1
- package/extension/src/content/scopedPersistencePanelState.js +45 -2
- package/extension/src/content/selectionContextView.js +300 -0
- package/extension/src/content/sessionPersistence.js +10 -2
- package/extension/src/content/settingsPanel.js +93 -54
- 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 +58 -3
- 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 +139 -150
- package/extension/src/page/treeOperations.js +36 -29
- package/extension/src/page/writebackReceiptJournal.js +112 -0
- package/extension/src/page/writebackRouter.js +176 -136
- package/extension/src/pageBridge.js +59 -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 +187 -65
- 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 +23 -55
- package/extension/src/shared/storageMigration.js +3 -0
- package/extension/src/shared/storageRunActions.js +54 -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 +2136 -744
- 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 +146 -177
- package/native-host/src/codexSessionTiming.js +71 -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/readProgressGuard.js +84 -17
- 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
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
(function
|
|
1
|
+
(function (root, factory) {
|
|
2
|
+
if (typeof module === 'object' && module.exports) {
|
|
3
|
+
module.exports = factory(require('./settingsWorkbench'));
|
|
4
|
+
} else {
|
|
5
|
+
root.CodexOverleafModuleRegistry.define('SettingsPanel', ['SettingsWorkbench'], factory);
|
|
6
|
+
}
|
|
7
|
+
})(typeof globalThis !== 'undefined' ? globalThis : this, function settingsPanelFactory(SettingsWorkbench) {
|
|
2
8
|
'use strict';
|
|
3
9
|
|
|
4
10
|
function codexIcon(name) {
|
|
@@ -38,17 +44,23 @@
|
|
|
38
44
|
<div class="codex-custom-instructions-head">
|
|
39
45
|
<button type="button" data-settings-back title="Back" aria-label="Back">‹</button>
|
|
40
46
|
<div>
|
|
41
|
-
<div class="codex-custom-instructions-title" data-i18n="projectSettingsTitle">Project Settings</div>
|
|
42
|
-
<div class="codex-custom-instructions-subtitle" data-i18n="projectSettingsSubtitle">Customize how Codex behaves in this and all projects.</div>
|
|
47
|
+
<div class="codex-custom-instructions-title" data-settings-title data-i18n="projectSettingsTitle">Project Settings</div>
|
|
48
|
+
<div class="codex-custom-instructions-subtitle" data-settings-subtitle data-i18n="projectSettingsSubtitle">Customize how Codex behaves in this and all projects.</div>
|
|
43
49
|
</div>
|
|
44
50
|
</div>
|
|
45
51
|
<div class="codex-project-settings-status" data-project-settings-status></div>
|
|
46
52
|
<div class="codex-project-settings-scope">
|
|
47
53
|
<div class="codex-project-settings-scope-title codex-set-eyebrow" data-i18n="settingsScopeProjectTitle">This project</div>
|
|
54
|
+
<details class="codex-set-group" data-set-group="writing-style" open>
|
|
55
|
+
<summary class="codex-set-group-head">
|
|
56
|
+
<span class="codex-set-group-title">${codexSetIcon('pen')}<span data-writing-style-heading>Writing style</span></span>
|
|
57
|
+
</summary>
|
|
58
|
+
<div class="codex-set-card" data-writing-style-settings></div>
|
|
59
|
+
</details>
|
|
48
60
|
<details class="codex-set-group" data-set-group="personalization" open>
|
|
49
61
|
<summary class="codex-set-group-head">
|
|
50
62
|
<span class="codex-set-group-title">${codexSetIcon('pen')}<span data-i18n="personalizationConfig">Personalization</span></span>
|
|
51
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
63
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
52
64
|
</summary>
|
|
53
65
|
<div class="codex-set-card">
|
|
54
66
|
<p class="codex-set-row-help" data-i18n="personalizationHelp">Style, terminology, and LaTeX conventions Codex should follow in this project.</p>
|
|
@@ -58,7 +70,7 @@
|
|
|
58
70
|
<details class="codex-set-group" data-set-group="protection" open>
|
|
59
71
|
<summary class="codex-set-group-head">
|
|
60
72
|
<span class="codex-set-group-title">${codexSetIcon('shield')}<span data-i18n="fileProtectionTitle">File protection</span></span>
|
|
61
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
73
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
62
74
|
</summary>
|
|
63
75
|
<div class="codex-set-card">
|
|
64
76
|
<div class="codex-set-row">
|
|
@@ -78,7 +90,7 @@
|
|
|
78
90
|
<details class="codex-set-group" data-set-group="privacy" open>
|
|
79
91
|
<summary class="codex-set-group-head">
|
|
80
92
|
<span class="codex-set-group-title">${codexSetIcon('lock')}<span data-i18n="privacyTitle">Privacy</span></span>
|
|
81
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
93
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
82
94
|
</summary>
|
|
83
95
|
<div class="codex-set-card">
|
|
84
96
|
<label class="codex-project-settings-row codex-project-settings-row--switch">
|
|
@@ -96,7 +108,7 @@
|
|
|
96
108
|
<details class="codex-set-group" data-set-group="experimental">
|
|
97
109
|
<summary class="codex-set-group-head">
|
|
98
110
|
<span class="codex-set-group-title">${codexSetIcon('database')}<span data-i18n="otSettingsTitle">Project cache</span></span>
|
|
99
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
111
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
100
112
|
</summary>
|
|
101
113
|
<div class="codex-set-card">
|
|
102
114
|
<label class="codex-project-settings-row codex-project-settings-row--switch">
|
|
@@ -113,19 +125,37 @@
|
|
|
113
125
|
<div class="codex-project-settings-scope codex-project-settings-scope--global">
|
|
114
126
|
<details class="codex-set-group" data-set-group="history" data-history-card>
|
|
115
127
|
<summary class="codex-set-group-head">
|
|
116
|
-
<span class="codex-set-group-title">${codexSetIcon('history')}<span data-i18n="historyTitle">
|
|
128
|
+
<span class="codex-set-group-title">${codexSetIcon('history')}<span data-i18n="historyTitle">File changes</span><span class="codex-history-count" data-history-count aria-live="polite"></span></span>
|
|
117
129
|
</summary>
|
|
118
130
|
<div class="codex-set-card">
|
|
119
|
-
<p class="codex-set-row-help" data-i18n="historyHelp">
|
|
120
|
-
<
|
|
131
|
+
<p class="codex-set-row-help" data-i18n="historyHelp">Review recent file changes and open the matching conversation.</p>
|
|
132
|
+
<div class="codex-history-toolbar">
|
|
133
|
+
<label class="codex-history-search">
|
|
134
|
+
<span class="codex-history-search-mark" aria-hidden="true"></span>
|
|
135
|
+
<input type="search" class="codex-set-select codex-history-filter" data-history-filter autocomplete="off">
|
|
136
|
+
</label>
|
|
137
|
+
<select class="codex-set-select codex-history-status-filter" data-history-status data-i18n-aria-label="historyStatusLabel">
|
|
138
|
+
<option value="all" data-i18n="historyStatusAll">All statuses</option>
|
|
139
|
+
<option value="pending" data-i18n="historyStatusPending">Pending review</option>
|
|
140
|
+
<option value="accepted" data-i18n="historyStatusAccepted">Accepted</option>
|
|
141
|
+
<option value="undone" data-i18n="historyStatusUndone">Undone</option>
|
|
142
|
+
<option value="attention" data-i18n="historyStatusAttention">Needs attention</option>
|
|
143
|
+
<option value="written" data-i18n="historyStatusWritten">Written</option>
|
|
144
|
+
</select>
|
|
145
|
+
</div>
|
|
121
146
|
<div class="codex-history-list" data-history-list></div>
|
|
147
|
+
<button type="button" class="codex-history-jump codex-history-more" data-history-more hidden></button>
|
|
148
|
+
<label class="codex-history-include" hidden>
|
|
149
|
+
<input type="checkbox" data-history-include-empty>
|
|
150
|
+
<span data-history-include-label></span>
|
|
151
|
+
</label>
|
|
122
152
|
</div>
|
|
123
153
|
</details>
|
|
124
154
|
<div class="codex-project-settings-scope-title codex-set-eyebrow" data-i18n="settingsScopeGlobalTitle">All projects</div>
|
|
125
155
|
<details class="codex-set-group" data-set-group="appearance" open>
|
|
126
156
|
<summary class="codex-set-group-head">
|
|
127
157
|
<span class="codex-set-group-title">${codexSetIcon('appearance')}<span data-i18n="appearanceTitle">Appearance</span></span>
|
|
128
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
158
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
129
159
|
</summary>
|
|
130
160
|
<div class="codex-set-card">
|
|
131
161
|
<label class="codex-project-settings-row codex-project-settings-row--select">
|
|
@@ -153,7 +183,7 @@
|
|
|
153
183
|
</summary>
|
|
154
184
|
<div class="codex-set-card codex-provider-settings-entry">
|
|
155
185
|
<div class="codex-provider-settings-entry-copy">
|
|
156
|
-
<p class="codex-set-row-help" data-i18n="providerSettingsHelp">
|
|
186
|
+
<p class="codex-set-row-help" data-i18n="providerSettingsHelp">Manage model API connections.</p>
|
|
157
187
|
<p class="codex-provider-settings-summary" data-provider-settings-summary data-tone="loading">${t(instance, 'providerSettingsLoading')}</p>
|
|
158
188
|
</div>
|
|
159
189
|
<button type="button" class="codex-set-btn" data-provider-settings-open data-i18n="providerSettingsConfigure">Configure</button>
|
|
@@ -162,7 +192,7 @@
|
|
|
162
192
|
<details class="codex-set-group" data-set-group="context-loading" open>
|
|
163
193
|
<summary class="codex-set-group-head">
|
|
164
194
|
<span class="codex-set-group-title">${codexSetIcon('database')}<span data-i18n="contextLoadingTitle">Context loading</span></span>
|
|
165
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
195
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
166
196
|
</summary>
|
|
167
197
|
<div class="codex-set-card">
|
|
168
198
|
<label class="codex-project-settings-row codex-project-settings-row--switch">
|
|
@@ -186,18 +216,24 @@
|
|
|
186
216
|
</details>
|
|
187
217
|
<details class="codex-set-group" data-set-group="storage" data-storage-card>
|
|
188
218
|
<summary class="codex-set-group-head">
|
|
189
|
-
<span class="codex-set-group-title">${codexSetIcon('database')}<span data-i18n="storageTitle">
|
|
219
|
+
<span class="codex-set-group-title">${codexSetIcon('database')}<span data-i18n="storageTitle">Local data</span></span>
|
|
190
220
|
</summary>
|
|
191
221
|
<div class="codex-set-card">
|
|
192
|
-
<
|
|
193
|
-
|
|
194
|
-
|
|
222
|
+
<div class="codex-storage-data-row">
|
|
223
|
+
<div class="codex-storage-data-copy">
|
|
224
|
+
<div class="codex-storage-data-label" data-i18n="storageSavedData">Saved conversations & records</div>
|
|
225
|
+
<p class="codex-set-row-help" data-storage-usage data-i18n="storageUsageLoading">Loading saved history…</p>
|
|
226
|
+
</div>
|
|
227
|
+
<button type="button" class="codex-set-btn codex-set-btn--danger" data-clear-all-history data-i18n="storageClearAll">Clear local history…</button>
|
|
228
|
+
</div>
|
|
229
|
+
<p class="codex-set-row-help codex-storage-clear-help" data-i18n="storageClearAllHelp">Clearing removes local history and undo information. Overleaf project files stay unchanged.</p>
|
|
230
|
+
<p class="codex-storage-estimate" data-storage-estimate aria-live="polite"></p>
|
|
195
231
|
</div>
|
|
196
232
|
</details>
|
|
197
233
|
<details class="codex-set-group" data-set-group="skills" open>
|
|
198
234
|
<summary class="codex-set-group-head">
|
|
199
235
|
<span class="codex-set-group-title">${codexSetIcon('bolt')}<span data-i18n="localSkillsTitle">Skills</span></span>
|
|
200
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
236
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
201
237
|
</summary>
|
|
202
238
|
<div class="codex-set-card">
|
|
203
239
|
<label class="codex-project-settings-row codex-project-settings-row--switch">
|
|
@@ -220,7 +256,7 @@
|
|
|
220
256
|
<div>
|
|
221
257
|
<div class="codex-custom-instructions-title" data-i18n="codexOverleafSkillsTitle">Codex Overleaf skills</div>
|
|
222
258
|
</div>
|
|
223
|
-
<span class="codex-set-saved" data-set-saved hidden
|
|
259
|
+
<span class="codex-set-saved" data-set-saved hidden><svg class="codex-glyph" viewBox="0 0 16 16" aria-hidden="true" focusable="false"><path d="m3.5 8 3 3 6-6"/></svg><span data-i18n="settingsSaved">Saved</span></span>
|
|
224
260
|
</div>
|
|
225
261
|
<div class="codex-set-card">
|
|
226
262
|
<label class="codex-project-settings-row codex-project-settings-row--switch">
|
|
@@ -247,6 +283,8 @@
|
|
|
247
283
|
if (event.target.open) instance.callbacks.onStorageOpen?.();
|
|
248
284
|
});
|
|
249
285
|
container.querySelector('[data-history-filter]')?.addEventListener('input', () => instance.callbacks.onHistoryFilter?.());
|
|
286
|
+
container.querySelector('[data-history-status]')?.addEventListener('change', () => instance.callbacks.onHistoryFilter?.());
|
|
287
|
+
container.querySelector('[data-history-include-empty]')?.addEventListener('change', () => instance.callbacks.onHistoryFilter?.());
|
|
250
288
|
// OT mirror: a single visible switch; legacy storage/DOM keys are retained. The click is
|
|
251
289
|
// intercepted (the runtime's handler preventDefaults, runs the enable
|
|
252
290
|
// confirmation, then sets checked + drives the change flow itself) so the
|
|
@@ -265,8 +303,9 @@
|
|
|
265
303
|
Promise.resolve(instance.callbacks.onInputChange?.(event))
|
|
266
304
|
.then(() => {
|
|
267
305
|
flashSaved(instance, event);
|
|
268
|
-
if (selector === '[data-language-select]'
|
|
269
|
-
instance.callbacks.onStorageOpen?.();
|
|
306
|
+
if (selector === '[data-language-select]') {
|
|
307
|
+
if (container.querySelector('[data-storage-card]')?.open) instance.callbacks.onStorageOpen?.();
|
|
308
|
+
instance.callbacks.onHistoryFilter?.();
|
|
270
309
|
}
|
|
271
310
|
}).catch(() => {});
|
|
272
311
|
});
|
|
@@ -280,12 +319,18 @@
|
|
|
280
319
|
element?.addEventListener?.('input', () => updateGovernanceNotes(instance));
|
|
281
320
|
element?.addEventListener?.('change', () => updateGovernanceNotes(instance));
|
|
282
321
|
}
|
|
283
|
-
|
|
322
|
+
instance.workbench = SettingsWorkbench.mount(instance, { icon: codexIcon });
|
|
284
323
|
|
|
285
324
|
return {
|
|
286
325
|
get container() { return instance.container; },
|
|
287
326
|
show: () => show(instance),
|
|
288
327
|
hide: () => hide(instance),
|
|
328
|
+
openProviderPage: () => {
|
|
329
|
+
const host = instance.workbench?.revealProviders();
|
|
330
|
+
if (host) show(instance);
|
|
331
|
+
return host || null;
|
|
332
|
+
},
|
|
333
|
+
setProviderCloseGuard: guard => instance.workbench?.setProviderCloseGuard(guard),
|
|
289
334
|
loadState: state => loadState(instance, state),
|
|
290
335
|
readState: () => readState(instance),
|
|
291
336
|
setStatus: (text, status) => setStatus(instance, text, status),
|
|
@@ -304,12 +349,27 @@
|
|
|
304
349
|
if (!root) {
|
|
305
350
|
return;
|
|
306
351
|
}
|
|
352
|
+
refreshSettingsScope(instance, root);
|
|
307
353
|
const button = getButton(instance);
|
|
308
354
|
if (button) {
|
|
309
355
|
button.dataset.active = 'true';
|
|
310
356
|
button.setAttribute('aria-expanded', 'true');
|
|
311
357
|
}
|
|
312
|
-
|
|
358
|
+
if (instance.workbench) instance.workbench.show();
|
|
359
|
+
else root.querySelector('[data-custom-instructions-input]')?.focus?.();
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
function refreshSettingsScope(instance, root) {
|
|
363
|
+
if (instance.workbench) { instance.workbench.refresh(); return; }
|
|
364
|
+
const accountScope = instance.container?.closest?.('[data-settings-scope]')?.dataset?.settingsScope === 'account';
|
|
365
|
+
const prefix = accountScope ? 'recentProjects_settings' : 'projectSettings';
|
|
366
|
+
for (const [selector, suffix] of [['[data-settings-title]', 'Title'], ['[data-settings-subtitle]', 'Subtitle']]) {
|
|
367
|
+
const label = root.querySelector(selector);
|
|
368
|
+
if (!label) continue;
|
|
369
|
+
const key = prefix + suffix;
|
|
370
|
+
label.setAttribute('data-i18n', key);
|
|
371
|
+
label.textContent = t(instance, key);
|
|
372
|
+
}
|
|
313
373
|
}
|
|
314
374
|
|
|
315
375
|
function hide(target) {
|
|
@@ -324,6 +384,7 @@
|
|
|
324
384
|
button.setAttribute('aria-expanded', 'false');
|
|
325
385
|
}
|
|
326
386
|
clearStatus(instance);
|
|
387
|
+
instance.workbench?.hide();
|
|
327
388
|
}
|
|
328
389
|
|
|
329
390
|
function isVisible(target) {
|
|
@@ -346,6 +407,7 @@
|
|
|
346
407
|
if (!root) {
|
|
347
408
|
return;
|
|
348
409
|
}
|
|
410
|
+
refreshSettingsScope(instance, root);
|
|
349
411
|
if (Object.prototype.hasOwnProperty.call(state, 'customInstructions')) {
|
|
350
412
|
const input = root.querySelector('[data-custom-instructions-input]');
|
|
351
413
|
if (input) {
|
|
@@ -372,6 +434,7 @@
|
|
|
372
434
|
setValue(scope, '[data-theme-select]', state.theme || 'dark');
|
|
373
435
|
setValue(scope, '[data-language-select]', state.language || 'en');
|
|
374
436
|
}
|
|
437
|
+
instance.workbench?.refresh();
|
|
375
438
|
}
|
|
376
439
|
|
|
377
440
|
function readState(target) {
|
|
@@ -399,7 +462,7 @@
|
|
|
399
462
|
|
|
400
463
|
function setStatus(target, text, status = 'info') {
|
|
401
464
|
const instance = target?._instance || target;
|
|
402
|
-
const element =
|
|
465
|
+
const element = instance?.container?.querySelector('[data-project-settings-status]');
|
|
403
466
|
if (!element) {
|
|
404
467
|
return;
|
|
405
468
|
}
|
|
@@ -409,7 +472,7 @@
|
|
|
409
472
|
|
|
410
473
|
function clearStatus(target) {
|
|
411
474
|
const instance = target?._instance || target;
|
|
412
|
-
const element =
|
|
475
|
+
const element = instance?.container?.querySelector('[data-project-settings-status]');
|
|
413
476
|
if (!element) {
|
|
414
477
|
return;
|
|
415
478
|
}
|
|
@@ -426,11 +489,11 @@
|
|
|
426
489
|
element.textContent = text || '';
|
|
427
490
|
}
|
|
428
491
|
|
|
429
|
-
// Flash the "
|
|
492
|
+
// Flash the check-mark "Saved" indicator after a field auto-saves, then fade it out.
|
|
430
493
|
// The fields persist immediately on change, so this is purely a confirmation
|
|
431
494
|
// cue — it never gates the save itself.
|
|
432
495
|
function flashSaved(instance, event) {
|
|
433
|
-
// Card-level feedback: the
|
|
496
|
+
// Card-level feedback: the check appears on the card that was actually
|
|
434
497
|
// changed (falls back to the screen's first badge, e.g. the skills page).
|
|
435
498
|
const origin = event?.target?.closest?.('details.codex-set-group, section');
|
|
436
499
|
const badge = origin?.querySelector?.('[data-set-saved]')
|
|
@@ -516,31 +579,6 @@
|
|
|
516
579
|
element.dataset.tone = typeof value === 'object' && value.tone ? value.tone : 'ok';
|
|
517
580
|
}
|
|
518
581
|
|
|
519
|
-
// Collapse memory: card open/closed state persists per browser profile.
|
|
520
|
-
const GROUP_STORE_KEY = 'codexOverleafSettingsGroups';
|
|
521
|
-
|
|
522
|
-
function setupGroupPersistence(instance) {
|
|
523
|
-
let stored = {};
|
|
524
|
-
try {
|
|
525
|
-
stored = JSON.parse(globalThis.localStorage?.getItem(GROUP_STORE_KEY) || '{}') || {};
|
|
526
|
-
} catch (_error) {
|
|
527
|
-
stored = {};
|
|
528
|
-
}
|
|
529
|
-
for (const details of instance.container.querySelectorAll('details[data-set-group]')) {
|
|
530
|
-
const key = details.dataset.setGroup;
|
|
531
|
-
if (key in stored) {
|
|
532
|
-
details.open = stored[key] !== false;
|
|
533
|
-
}
|
|
534
|
-
details.addEventListener('toggle', () => {
|
|
535
|
-
try {
|
|
536
|
-
const current = JSON.parse(globalThis.localStorage?.getItem(GROUP_STORE_KEY) || '{}') || {};
|
|
537
|
-
current[key] = details.open;
|
|
538
|
-
globalThis.localStorage?.setItem(GROUP_STORE_KEY, JSON.stringify(current));
|
|
539
|
-
} catch (_error) { /* private mode — collapse state just doesn't persist */ }
|
|
540
|
-
});
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
|
|
544
582
|
function getRoot(instance) {
|
|
545
583
|
return instance?.container?.querySelector('[data-project-settings-panel]') || null;
|
|
546
584
|
}
|
|
@@ -568,6 +606,7 @@
|
|
|
568
606
|
}
|
|
569
607
|
|
|
570
608
|
function destroy(instance) {
|
|
609
|
+
instance.workbench?.destroy();
|
|
571
610
|
if (instance._savedFlashTimer) {
|
|
572
611
|
clearTimeout(instance._savedFlashTimer);
|
|
573
612
|
instance._savedFlashTimer = null;
|
|
@@ -575,7 +614,7 @@
|
|
|
575
614
|
instance.container.textContent = '';
|
|
576
615
|
}
|
|
577
616
|
|
|
578
|
-
|
|
617
|
+
return {
|
|
579
618
|
create,
|
|
580
619
|
loadState,
|
|
581
620
|
readState,
|
|
@@ -587,4 +626,4 @@
|
|
|
587
626
|
setSkillsSummary,
|
|
588
627
|
setProviderSummary
|
|
589
628
|
};
|
|
590
|
-
})
|
|
629
|
+
});
|