codex-overleaf-link 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/README.md +155 -392
  2. package/README.zh-CN.md +154 -393
  3. package/extension/bootstrap/background.js +52 -9
  4. package/extension/bootstrap/manifest.template.json +1 -1
  5. package/extension/bootstrap/popup.html +1 -0
  6. package/extension/bootstrap/popupFallback.js +55 -0
  7. package/extension/bootstrap/updateStatus.js +1 -0
  8. package/extension/src/background.js +283 -55
  9. package/extension/src/backgroundBootstrapMigration.js +181 -0
  10. package/extension/src/backgroundSharedSessions.js +129 -16
  11. package/extension/src/backgroundUpdateCoordinator.js +242 -29
  12. package/extension/src/backgroundUpdateSafety.js +173 -0
  13. package/extension/src/content/activeTurnControl.js +171 -8
  14. package/extension/src/content/applyResultFormatters.js +46 -73
  15. package/extension/src/content/assetTransferBroker.js +72 -14
  16. package/extension/src/content/composerAttachments.js +104 -47
  17. package/extension/src/content/composerPanel.js +110 -12
  18. package/extension/src/content/contentRuntime.js +1555 -926
  19. package/extension/src/content/contextTray.js +8 -2
  20. package/extension/src/content/contextUsageView.js +267 -0
  21. package/extension/src/content/diagnosticsController.js +122 -96
  22. package/extension/src/content/diagnosticsExport.js +19 -5
  23. package/extension/src/content/diagnosticsPanel.js +48 -0
  24. package/extension/src/content/directoryCleanupRecovery.js +54 -0
  25. package/extension/src/content/generated/content.bundle.js +11077 -3412
  26. package/extension/src/content/generated/content.bundle.meta.json +14 -3
  27. package/extension/src/content/globalPreferencesController.js +1 -1
  28. package/extension/src/content/legacyGlobalRegistry.js +10 -0
  29. package/extension/src/content/localSkillsPanel.js +104 -14
  30. package/extension/src/content/markdownDomRenderer.js +5 -3
  31. package/extension/src/content/markdownText.js +47 -11
  32. package/extension/src/content/modelPicker.js +8 -4
  33. package/extension/src/content/nativeCompatibilityController.js +74 -30
  34. package/extension/src/content/otWarmMirror.js +5 -6
  35. package/extension/src/content/otWarmMirrorController.js +17 -20
  36. package/extension/src/content/pageBridgeClient.js +17 -4
  37. package/extension/src/content/panelMaintenance.js +46 -14
  38. package/extension/src/content/panelRenderer.js +57 -27
  39. package/extension/src/content/pendingInputView.js +1 -1
  40. package/extension/src/content/projectProviderSelection.js +13 -4
  41. package/extension/src/content/projectSessionCleanup.js +109 -62
  42. package/extension/src/content/projectSettingsCoordinator.js +67 -6
  43. package/extension/src/content/providerSettingsCoordinator.js +46 -8
  44. package/extension/src/content/providerSettingsDialog.js +73 -14
  45. package/extension/src/content/recentProjects.js +15 -8
  46. package/extension/src/content/runActivitySummary.js +160 -18
  47. package/extension/src/content/runCompletionMeta.js +532 -0
  48. package/extension/src/content/runController.js +39 -15
  49. package/extension/src/content/runFailureNotice.js +29 -13
  50. package/extension/src/content/runGuidanceController.js +72 -27
  51. package/extension/src/content/runGuidanceView.js +59 -10
  52. package/extension/src/content/runPresence.js +18 -8
  53. package/extension/src/content/runQueueScheduler.js +157 -47
  54. package/extension/src/content/runRecoveryActions.js +147 -0
  55. package/extension/src/content/runResultActions.js +28 -143
  56. package/extension/src/content/runReviewController.js +633 -0
  57. package/extension/src/content/runScrollLayout.js +21 -2
  58. package/extension/src/content/runTimelineView.js +367 -175
  59. package/extension/src/content/scopedPersistencePanelState.js +134 -20
  60. package/extension/src/content/selectionContextView.js +1 -1
  61. package/extension/src/content/sensitivePreflight.js +153 -0
  62. package/extension/src/content/sessionForkController.js +80 -17
  63. package/extension/src/content/sessionManager.js +50 -4
  64. package/extension/src/content/sessionMenuView.js +54 -18
  65. package/extension/src/content/sessionPersistence.js +25 -5
  66. package/extension/src/content/settingsPanel.js +22 -5
  67. package/extension/src/content/settingsWorkbench.js +132 -89
  68. package/extension/src/content/sharedSessionViewSync.js +49 -11
  69. package/extension/src/content/subagentActivityView.js +23 -7
  70. package/extension/src/content/updateIdle.js +4 -1
  71. package/extension/src/content/updateNotice.js +118 -12
  72. package/extension/src/content/updateSafetyReceiver.js +58 -0
  73. package/extension/src/content/writebackController.js +53 -4
  74. package/extension/src/content/writebackOrchestrator.js +116 -94
  75. package/extension/src/content/writingStyleSettings.js +35 -11
  76. package/extension/src/page/binaryAssetUploader.js +136 -14
  77. package/extension/src/page/compileBridge.js +193 -180
  78. package/extension/src/page/fileMover.js +256 -0
  79. package/extension/src/page/overleafCapabilities.js +4 -1
  80. package/extension/src/page/ownedDirectoryCleanup.js +94 -0
  81. package/extension/src/page/referenceProjects.js +1 -0
  82. package/extension/src/page/reviewContext.js +113 -0
  83. package/extension/src/page/saveState.js +6 -4
  84. package/extension/src/page/snapshotRouter.js +84 -39
  85. package/extension/src/page/textCoordinates.js +17 -1
  86. package/extension/src/page/textFileCreator.js +114 -26
  87. package/extension/src/page/trackedChangeCapture.js +12 -2
  88. package/extension/src/page/trackedChangeOwnership.js +19 -1
  89. package/extension/src/page/trackedChangeReplay.js +41 -21
  90. package/extension/src/page/trackedChangesLifecycle.js +217 -199
  91. package/extension/src/page/treeOperations.js +7 -10
  92. package/extension/src/page/updateSafetyProbe.js +41 -0
  93. package/extension/src/page/writebackReceiptJournal.js +2 -0
  94. package/extension/src/page/writebackRouter.js +103 -155
  95. package/extension/src/pageBridge.js +126 -69
  96. package/extension/src/popup.js +62 -10
  97. package/extension/src/shared/agentTranscript.js +373 -17
  98. package/extension/src/shared/auditRecords.js +4 -0
  99. package/extension/src/shared/compatibility.js +22 -6
  100. package/extension/src/shared/compileAdapter.js +129 -66
  101. package/extension/src/shared/composerAttachmentDraft.js +156 -0
  102. package/extension/src/shared/contextUsage.js +125 -0
  103. package/extension/src/shared/directoryCleanupProof.js +43 -0
  104. package/extension/src/shared/failureReasons.js +349 -4
  105. package/extension/src/shared/globalPreferences.js +30 -13
  106. package/extension/src/shared/governanceRules.js +4 -37
  107. package/extension/src/shared/i18n.js +590 -24
  108. package/extension/src/shared/lineReferences.js +38 -31
  109. package/extension/src/shared/managedUpdateProjection.js +2 -2
  110. package/extension/src/shared/nativeRequestIdentity.js +1 -0
  111. package/extension/src/shared/pageRpcContract.js +5 -4
  112. package/extension/src/shared/panelIcons.js +39 -0
  113. package/extension/src/shared/projectFiles.js +21 -44
  114. package/extension/src/shared/providerProfiles.js +5 -3
  115. package/extension/src/shared/reviewing.js +130 -1
  116. package/extension/src/shared/runActivityModel.js +70 -4
  117. package/extension/src/shared/runExecutionSnapshot.js +13 -0
  118. package/extension/src/shared/runInputQueue.js +48 -5
  119. package/extension/src/shared/selectionContext.js +12 -3
  120. package/extension/src/shared/sessionState.js +132 -28
  121. package/extension/src/shared/sessionTitle.js +14 -1
  122. package/extension/src/shared/settlementFacts.js +10 -2
  123. package/extension/src/shared/sharedSessionBridge.js +118 -27
  124. package/extension/src/shared/sharedSessionTransfer.js +140 -0
  125. package/extension/src/shared/staleGuard.js +166 -52
  126. package/extension/src/shared/storageDb.js +90 -26
  127. package/extension/src/shared/storageMigration.js +78 -112
  128. package/extension/src/shared/storageRunActions.js +267 -30
  129. package/extension/src/shared/subagentActivityModel.js +1 -1
  130. package/extension/src/shared/undoOperations.js +253 -32
  131. package/extension/src/shared/updateConsent.js +6 -4
  132. package/extension/src/shared/updateRuntimeIdentity.js +17 -3
  133. package/extension/src/shared/writebackIntent.js +16 -0
  134. package/extension/src/shared/writebackOperationEvidence.js +4 -15
  135. package/extension/src/shared/writebackSettlement.js +58 -40
  136. package/extension/styles/panel.css +1123 -493
  137. package/native-host/src/anthropicBridgeRequest.js +4 -2
  138. package/native-host/src/anthropicBridgeResponse.js +6 -2
  139. package/native-host/src/anthropicMessagesBridge.js +24 -16
  140. package/native-host/src/bootstrapMigration.js +296 -0
  141. package/native-host/src/bootstrapMigrationContract.js +101 -0
  142. package/native-host/src/bootstrapUpdate.js +269 -0
  143. package/native-host/src/bootstrapUpdateWatchdog.js +44 -0
  144. package/native-host/src/chatBridgeRequest.js +60 -6
  145. package/native-host/src/chatBridgeResponse.js +20 -1
  146. package/native-host/src/chatCompletionsBridge.js +48 -15
  147. package/native-host/src/codexConfigPaths.js +106 -0
  148. package/native-host/src/codexHome.js +66 -73
  149. package/native-host/src/codexHomeScope.js +124 -0
  150. package/native-host/src/codexInheritedAuth.js +90 -0
  151. package/native-host/src/codexLocalSkills.js +301 -0
  152. package/native-host/src/codexPromptAssembly.js +114 -127
  153. package/native-host/src/codexProviderTest.js +24 -26
  154. package/native-host/src/codexSessionRunner.js +234 -198
  155. package/native-host/src/codexSessionTiming.js +18 -8
  156. package/native-host/src/codexSkillIsolation.js +170 -0
  157. package/native-host/src/codexThreadFork.js +19 -3
  158. package/native-host/src/index.js +19 -7
  159. package/native-host/src/managedInstall.js +110 -35
  160. package/native-host/src/managedInstallRecovery.js +140 -0
  161. package/native-host/src/managedRuntimeEvidence.js +57 -0
  162. package/native-host/src/mirrorWorkspace.js +92 -22
  163. package/native-host/src/nativeDoctor.js +15 -0
  164. package/native-host/src/nativeHelperLifecycle.js +21 -0
  165. package/native-host/src/nativeHostRegistration.js +33 -0
  166. package/native-host/src/nativeRunLifecycle.js +71 -0
  167. package/native-host/src/processStopBarrier.js +42 -7
  168. package/native-host/src/projectPathPlatform.js +30 -0
  169. package/native-host/src/providerContextError.js +20 -0
  170. package/native-host/src/providerHttp.js +80 -0
  171. package/native-host/src/providerProfile.js +4 -2
  172. package/native-host/src/providerReasoning.js +2 -7
  173. package/native-host/src/providerRuntime.js +1 -0
  174. package/native-host/src/providerStore.js +72 -14
  175. package/native-host/src/responsesPassthroughBridge.js +266 -52
  176. package/native-host/src/runtimeInstaller.js +21 -1
  177. package/native-host/src/selectionScope.js +36 -8
  178. package/native-host/src/subagentAdmission.js +26 -0
  179. package/native-host/src/subagentBroker.js +79 -66
  180. package/native-host/src/subagentTelemetry.js +19 -10
  181. package/native-host/src/subagentWorkspacePath.js +5 -2
  182. package/native-host/src/taskRunnerRuntime.js +92 -57
  183. package/native-host/src/textPatch.js +473 -377
  184. package/native-host/src/tomlStatements.js +140 -0
  185. package/native-host/src/updateManager.js +409 -46
  186. package/native-host/src/writingStyleRuntime.js +57 -29
  187. package/native-host/src/writingStyleStore.js +73 -0
  188. package/package.json +5 -8
  189. package/scripts/install-managed.mjs +1 -0
@@ -12,9 +12,201 @@
12
12
 
13
13
  const MESSAGES = {
14
14
  en: {
15
+ runOutcomeIncomplete: "Didn't finish",
16
+ runOutcomePartial: "Partly written",
17
+ runOutcomeNotWritten: "Not written",
18
+ runOutcomeCheck: "Check Overleaf",
19
+ runOutcomeNoWrites: "Nothing was written to Overleaf.",
20
+ runOutcomeNotWrittenBody: "Codex did not overwrite it. Nothing was written.",
21
+ runOutcomePartialTitle: "{wrote} of {total} changes written",
22
+ runOutcomePartialNext: "Review the skipped files, then send again. You can also use \"Undo written parts\" above.",
23
+ runOutcomeUnconfirmedFile: "Couldn't confirm the write to {file}",
24
+ runOutcomeUnconfirmed: "Couldn't confirm the write",
25
+ runOutcomeUnconfirmedBody: "Some changes may already be in Overleaf.",
26
+ runOutcomeCheckNext: "Check {file} before sending again.",
27
+ runOutcomeContextNext: "Use /compact or start a new conversation with less context, then retry.",
28
+ runOutcomeNativeNext: "Send again. If it keeps happening, open Diagnostics to check the bridge.",
29
+ runOutcomeStaleNext: "Review the current file, then send again.",
30
+ runOutcomeStaleReason: "Changed while Codex was working, so it was not overwritten.",
31
+ runOutcomeSkipped: "Skipped",
32
+ runOutcomeWritten: "Written",
33
+ runOutcomeNext: "Review the details, then retry.",
34
+ runOutcomeDetails: "Details",
35
+ runOutcomeCode: "Code",
36
+ runOutcomeStage: "Stage",
37
+ runOutcomeWrites: "Writes",
38
+ runOutcomeNoneAttempted: "None attempted",
39
+ runOutcomeCompileChip: "{count} compile error{plural}",
40
+ runOutcomeCompileTitle: "Overleaf compile: {count} error{plural}",
41
+ runCompileUnconfirmed: 'Post-write compile check: Result unconfirmed.',
42
+ runOutcomeCause_stale_source_changed: "{file} changed while Codex was working",
43
+ runOutcomeCause_target_editor_not_ready: "The editor for {file} wasn't ready",
44
+ runOutcomeCause_write_timeout: "Write confirmation timed out",
45
+ runOutcomeCause_write_observed_mismatch: "The write didn't match the expected content",
46
+ runOutcomeCause_codex_context_limit: "Model context limit exceeded",
47
+ runOutcomeCause_codex_timeout: "Local Codex timed out",
48
+ runOutcomeCause_codex_output_limit: "Model output limit exceeded",
49
+ runOutcomeCause_codex_no_usable_result: "Local Codex returned no usable result",
50
+ runOutcomeCause_native_request_failed: "Lost connection to local Codex",
51
+ runOutcomeCause_panel_reload_interrupted: "The page was refreshed while Codex was working",
52
+ runOutcomeReloadUnknownBody: "No write was recorded before the refresh. Check the files in Overleaf before sending again.",
53
+ runOutcomeCause_governance_readonly: "{file} is read-only under this project's path rules",
54
+ runOutcomeCause_governance_writable_allowlist: "{file} is outside this project's writable paths",
55
+ runOutcomeCause_sensitive_content_blocked: "Possible {finding} found before sending",
56
+ sensitiveFinding_private_key: "private key",
57
+ sensitiveFinding_bearer_token: "bearer token",
58
+ sensitiveFinding_api_token: "API token",
59
+ sensitiveFinding_aws_access_key: "AWS access key",
60
+ sensitiveFinding_google_api_key: "Google API key",
61
+ sensitiveFinding_huggingface_token: "Hugging Face token",
62
+ sensitiveFinding_gitlab_token: "GitLab token",
63
+ sensitiveFinding_stripe_live_secret: "Stripe secret key",
64
+ sensitiveFinding_jwt_token: "JWT",
65
+ sensitiveFinding_secret_assignment: "secret value",
66
+ sensitiveFinding_mixed: "sensitive content",
67
+ runOutcomeCause_native_bridge_unavailable: "Couldn't connect to local Codex",
68
+ runOutcomeCause_project_snapshot_unavailable: "Couldn't read the Overleaf project",
69
+ runOutcomeCause_patch_anchor_not_found: "Couldn't locate the change in {file}",
70
+ runOutcomeCause_undo_not_verified: "Couldn't confirm Undo",
71
+ runOutcomeCause_undo_operation_failed: "Couldn't finish Undo",
72
+ failureReason_base_file_missing_at_start_user: "A file needed for this task was missing during the initial project read.",
73
+ failureReason_base_file_missing_at_start_next: "Refresh project context and rerun.",
74
+ failureReason_target_file_missing_path_user: "The change did not include a target file path.",
75
+ failureReason_target_file_missing_path_next: "Retry after regenerating the change; report a bug if repeated.",
76
+ failureReason_target_file_focus_lost_user: "Target file became active, then focus switched before the write landed.",
77
+ failureReason_target_file_focus_lost_next: "Avoid switching files during writeback and retry.",
78
+ failureReason_jump_target_not_resolved_user: "A line/position link could not map to an editor range.",
79
+ failureReason_jump_target_not_resolved_next: "Open the file manually and inspect the referenced line.",
80
+ failureReason_missing_base_file_user: "A write safety check needed a base file that is missing from the run snapshot.",
81
+ failureReason_missing_base_file_next: "Refresh project context and rerun.",
82
+ failureReason_patch_anchor_ambiguous_user: "The edit anchor matches multiple locations.",
83
+ failureReason_patch_anchor_ambiguous_next: "Narrow the request or select a smaller region.",
84
+ failureReason_delete_confirmation_missing_user: "A destructive delete was not confirmed.",
85
+ failureReason_delete_confirmation_missing_next: "Confirm the delete explicitly if intended.",
86
+ failureReason_binary_write_blocked_user: "Codex tried to write unsupported binary content.",
87
+ failureReason_binary_write_blocked_next: "Upload the file manually or attach a supported text file.",
88
+ failureReason_write_post_read_failed_user: "Codex could not read the file after writing.",
89
+ failureReason_write_post_read_failed_next: "Check Overleaf manually, then refresh and retry.",
90
+ failureReason_file_tree_verification_failed_user: "Create/delete/rename/move did not appear in the file tree as expected.",
91
+ failureReason_file_tree_verification_failed_next: "Inspect the file tree and retry if needed.",
92
+ failureReason_source_zip_unavailable_user: "The project could not be checked before uploading this file.",
93
+ failureReason_source_zip_unavailable_next: "Retry sync; only missing files will be uploaded.",
94
+ failureReason_file_upload_unconfirmed_user: "The file was submitted, but its saved content is not yet confirmed.",
95
+ failureReason_file_upload_unconfirmed_next: "Check the file before retrying; matching content will not be uploaded twice.",
96
+ failureReason_subagent_unfinished_output_user: "A subagent stopped before finishing this file; the main agent must review and adopt it.",
97
+ failureReason_subagent_unfinished_output_next: "Have the main agent complete and adopt the pending file.",
98
+ failureReason_subagent_unauthorized_edit_user: "A file changed outside the subagent ownership boundary and was not synced.",
99
+ failureReason_subagent_unauthorized_edit_next: "Review the ownership violation; it cannot be cleared through output adoption.",
100
+ failureReason_reviewing_unavailable_user: "Track Changes is unavailable for this project. It depends on the project owner's Overleaf plan.",
101
+ failureReason_reviewing_unavailable_next: "Turn off Track in the composer to write without tracked changes. Codex still records each change so you can undo it.",
102
+ failureReason_reviewing_unavailable_cancelled_next: "Nothing ran and your Track setting is unchanged. Send again to choose an option.",
103
+ runNotStarted: 'Not started',
104
+ runNotStartedCancelled: 'Not started · cancelled',
105
+ runNotStartedTrackTitle: "Track Changes isn't available for this project",
106
+ runNotStartedModeTitle: "Couldn't confirm Overleaf's editing mode",
107
+ runNotStartedTrackBody: "Track Changes depends on the project owner's Overleaf plan; nothing ran and no files were written.",
108
+ runNotStartedModeBody: 'Overleaf did not confirm the required editing mode; nothing ran and no files were written.',
109
+ runNotStartedCancelledNext: 'Your Track setting is unchanged. Send again to choose an option.',
110
+ runNotStartedNext: 'Check the editing mode in Overleaf, then retry.',
111
+ reviewingUnavailableTitle: "Track Changes unavailable",
112
+ reviewingUnavailableChoiceMessage: "Track Changes is unavailable for this project. It depends on the project owner's Overleaf plan. Codex can still write without tracked changes and records each change so you can undo it.",
113
+ reviewingUnavailableContinue: "Continue without tracking",
114
+ reviewingUnavailableDisable: "Turn off Track for this project",
115
+ reviewingUnavailableStatus: "Track Changes unavailable",
116
+ reviewingUnavailableTooltip: "Track Changes is unavailable for this project. Codex will ask before each run. Turn Track off and on to check again.",
117
+ reviewingUnavailableRunUntracked: "This run writes without tracked changes because Track Changes is unavailable. Codex still records changes for Undo.",
118
+ failureReason_reviewing_enable_failed_user: "Codex could not enable Reviewing when it needed to.",
119
+ failureReason_reviewing_enable_failed_next: "Enable Reviewing manually or retry.",
120
+ failureReason_reviewing_disable_failed_user: "Codex could not switch to Editing / no-trace mode.",
121
+ failureReason_reviewing_disable_failed_next: "Switch to Editing manually, wait briefly, then retry.",
122
+ failureReason_tracked_changes_created_unexpectedly_user: "A replay intended to be untracked created Track Changes.",
123
+ failureReason_tracked_changes_created_unexpectedly_next: "Inspect Overleaf Reviewing and decide whether to accept or reject.",
124
+ failureReason_tracked_change_nodes_not_identified_user: "Codex wrote while Reviewing was enabled but cannot map generated tracked-change nodes.",
125
+ failureReason_tracked_change_nodes_not_identified_next: "Use Overleaf review tools manually; automatic tracked undo is disabled.",
126
+ failureReason_undo_preflight_content_drift_user: "Current content no longer matches this run's written content.",
127
+ failureReason_undo_preflight_content_drift_next: "Review manual edits; Codex did not undo to avoid removing them.",
128
+ failureReason_undo_reviewing_restore_unverified_user: "Undo completed but previous Reviewing state was not verified afterward.",
129
+ failureReason_undo_reviewing_restore_unverified_next: "Check Overleaf Reviewing/Editing mode manually.",
130
+ failureReason_accept_preflight_content_drift_user: "Content drifted from this run's writeback before accept.",
131
+ failureReason_accept_preflight_content_drift_next: "Retry Accept changes after reviewing current content.",
132
+ failureReason_accept_replay_created_tracked_changes_user: "Replay created tracked changes, so accept cannot be proven clean.",
133
+ failureReason_accept_replay_created_tracked_changes_next: "Review remaining tracked changes manually.",
134
+ failureReason_native_protocol_incompatible_user: "Native host version or capabilities do not match the extension.",
135
+ failureReason_native_protocol_incompatible_next: "Update the native host.",
136
+ failureReason_provider_revision_conflict_user: "The active model provider changed after this tab loaded it.",
137
+ failureReason_provider_revision_conflict_next: "Refresh the provider configuration and retry.",
138
+ failureReason_provider_not_found_user: "The active model provider no longer exists.",
139
+ failureReason_provider_not_found_next: "Select Built-in Codex or another provider.",
140
+ failureReason_provider_model_not_configured_user: "The selected model is not configured for the active provider.",
141
+ failureReason_provider_model_not_configured_next: "Add or select a model in Model Providers.",
142
+ failureReason_provider_protocol_unverified_user: "The provider API protocol has not been verified.",
143
+ failureReason_provider_protocol_unverified_next: "Run Test connection, save the provider, and retry.",
144
+ failureReason_provider_auth_rejected_user: "The provider rejected the configured API key.",
145
+ failureReason_provider_auth_rejected_next: "Replace the API key and test the connection.",
146
+ failureReason_provider_model_not_found_user: "The provider could not find the configured model.",
147
+ failureReason_provider_model_not_found_next: "Correct the model ID and test the connection.",
148
+ failureReason_provider_protocol_incompatible_user: "The endpoint is incompatible with the selected API protocol.",
149
+ failureReason_provider_protocol_incompatible_next: "Select another protocol or use Auto detection.",
150
+ failureReason_provider_request_rejected_user: "The provider rejected the protocol probe request.",
151
+ failureReason_provider_request_rejected_next: "Review the model ID, reasoning controls, tool support, and request overrides.",
152
+ failureReason_provider_rate_limited_user: "The provider rate limit was reached.",
153
+ failureReason_provider_rate_limited_next: "Wait for the rate-limit window to recover and retry.",
154
+ failureReason_provider_connection_timeout_user: "The provider connection timed out.",
155
+ failureReason_provider_connection_timeout_next: "Check the endpoint and network, then retry.",
156
+ failureReason_provider_dns_failed_user: "The provider hostname could not be resolved.",
157
+ failureReason_provider_dns_failed_next: "Check the Base URL and DNS, then retry.",
158
+ failureReason_provider_tls_failed_user: "TLS verification failed for the provider endpoint.",
159
+ failureReason_provider_tls_failed_next: "Check the endpoint certificate and Base URL.",
160
+ failureReason_provider_response_invalid_user: "The provider returned an incompatible or invalid response.",
161
+ failureReason_provider_response_invalid_next: "Test the connection and verify protocol compatibility.",
162
+ failureReason_provider_store_unavailable_user: "The Native Host could not access provider configuration storage.",
163
+ failureReason_provider_store_unavailable_next: "Check local permissions and Native Host status.",
164
+ failureReason_provider_store_corrupt_user: "The provider configuration store is corrupt or inconsistent.",
165
+ failureReason_provider_store_corrupt_next: "Repair or rebuild the local provider configuration.",
166
+ failureReason_codex_result_parse_failed_user: "Codex output could not be parsed into operations.",
167
+ failureReason_codex_result_parse_failed_next: "Retry with a simpler request; report if repeated.",
168
+ failureReason_run_state_persist_failed_user: "Current run state could not be saved.",
169
+ failureReason_run_state_persist_failed_next: "Continue carefully; refresh may lose this run's recovery state.",
170
+ failureReason_receipt_persist_failed_user: "Writeback receipt could not be saved.",
171
+ failureReason_receipt_persist_failed_next: "Export/copy Technical Details before refreshing.",
172
+ deleteSessionNativeFailureDetail: "The local bridge did not confirm success.",
173
+ failureReason_missing_tracked_changes_user: "No matching Overleaf tracked-change records were found for this run. Codex did not undo with text patches.",
174
+ failureReason_tracked_change_file_open_failed_user: "Could not open the file to find this run's tracked changes. Check it in the Overleaf review panel.",
175
+ failureReason_tracked_change_reject_control_not_found_user: "Some tracked changes remain, but the matching Reject button was not found. Check them in the Overleaf review panel.",
176
+ failureReason_tracked_change_reject_not_confirmed_user: "Codex clicked Reject, but Overleaf still shows this tracked change. Check it in the Overleaf review panel.",
177
+ failureReason_tracked_change_accept_control_not_found_user: "Some tracked changes remain, but the matching Accept button was not found. Check them in the Overleaf review panel.",
178
+ failureReason_tracked_change_accept_not_confirmed_user: "Codex clicked Accept, but Overleaf still shows this tracked change. Check it in the Overleaf review panel.",
179
+ failureReason_tracked_change_editor_undo_open_failed_user: "Could not open the file for Overleaf native Undo.",
180
+ failureReason_tracked_change_editor_undo_current_mismatch_user: "The current content no longer matches this run's written content. Codex stopped native Undo to preserve later edits.",
181
+ failureReason_editor_undo_control_not_found_user: "Could not find Overleaf's editor Undo button to undo this run.",
182
+ failureReason_editor_undo_no_progress_user: "Codex clicked Overleaf Undo, but the file did not change.",
183
+ failureReason_editor_undo_max_iterations_user: "The file did not return to its pre-run content after repeated native Undo steps. Codex stopped to avoid undoing other edits.",
184
+ failureReason_tracked_change_undo_max_iterations_user: "Tracked changes are still left. Codex stopped to avoid rejecting unrelated edits.",
185
+ failureReason_tracked_change_undo_verify_open_failed_user: "Could not open the file after Undo to verify its content. Reload Overleaf and check it.",
186
+ failureReason_tracked_change_undo_verify_failed_user: "The file did not return to its pre-run content after rejecting tracked changes. Check this run's changes in the Overleaf review panel.",
187
+ failureReason_accept_missing_run_content_user: "The pre-write or post-write content is unavailable. Codex did not replay or accept the tracked changes.",
188
+ failureReason_accept_editor_undo_unavailable_user: "Native Undo and a safe checkpoint rollback are unavailable. Codex did not accept this run.",
189
+ failureReason_accept_editing_not_confirmed_user: "Codex could not confirm Overleaf Editing mode. It stopped replaying this run to avoid creating new tracked changes.",
190
+ failureReason_accept_editing_not_stable_user: "Overleaf Editing mode did not remain stable long enough for an untracked Accept replay. Codex did not replay this write.",
191
+ failureReason_accept_replay_rollback_missing_content_user: "Accept created fresh tracked changes, but rollback could not run because the pre-write or post-write content was unavailable.",
192
+ failureReason_review_scope_unavailable_user: "The native tracked-change scope could not be safely isolated. No review mutation was attempted. Check the changes individually in Overleaf Review.",
193
+ failureReason_native_untracked_undo_pending_changes_user: "This file has unresolved tracked changes. Undo without track changes was stopped to preserve them; no document changes were made.",
194
+ failureReason_native_untracked_undo_pending_changes_next: "Resolve the pending changes in Overleaf Review, then retry Undo. Switching to Editing does not clear existing tracked changes.",
195
+ failureReason_review_request_unverified_user: "The native review request could not be fully verified; some target changes may already be accepted. No text replay was attempted. Check Overleaf Review before retrying.",
196
+ failureReason_review_owner_disconnected_user: "The Undo owner disconnected; no further review writes were started.",
197
+ failureReason_review_deadline_exceeded_user: "The review time budget expired; no further review writes were started.",
198
+ failureReason_review_cancelled_user: "The review was cancelled; no further review writes were started.",
199
+ failureReason_review_project_changed_user: "The original review project is no longer active.",
200
+ failureReason_review_detail_next: "Check the remaining changes and run details in Overleaf before continuing.",
201
+ queuedInputGuideNotReady: "The active Codex turn is not ready for guidance.",
202
+ queuedInputGuideTurnChanged: "The active Codex turn changed before the guidance was delivered.",
203
+ queuedInputGuideEmpty: "Guidance input is empty.",
204
+ queuedInputGuideTooLarge: "Guidance input exceeds the 12000 character limit.",
15
205
  resizePanel: 'Drag to resize the Codex panel. Double click to reset.',
16
206
  codexActions: 'Codex actions',
17
207
  refreshProbe: 'Refresh current file status. This will not sync or modify files.',
208
+ refreshProbeTitle: 'Refresh file status',
209
+ refreshProbeSubtitle: 'Re-reads Overleaf state; does not sync or modify files',
18
210
  diagnosticsMenu: 'Diagnostics',
19
211
  diagnosticsHint: 'Use when Codex cannot run, write, or read files',
20
212
  diagnosticsRunAllTitle: 'Run all checks',
@@ -74,6 +266,9 @@
74
266
  nativeCompatibilityBlockedProtocol: 'Native host protocol mismatch before {method}. Update the extension and native host together.',
75
267
  nativeCompatibilityBlockedUnhealthy: 'Local Codex is not ready for {method}. Open Diagnostics > Check Local Connection for details.',
76
268
  nativeCompatibilityBlockedMissing: 'Native host is not connected for {method}. Install the local native host, reload the extension, and try again.',
269
+ nativeCompatibilityMissingTitle: 'Native host is not connected',
270
+ nativeCompatibilityMissingGuidance: 'Install the local native host, reload the extension, and try again.',
271
+ nativeCompatibilityUnavailableFeatures: '{count} features unavailable',
77
272
  nativeCompatibilityBlockedGeneric: 'Native host is not compatible with this extension for {method}. Update the native host and extension, then try again.',
78
273
  diagnosticsPageLoading: 'Checking the current file, write access, and track changes.',
79
274
  diagnosticsLoading: 'Checking current state.',
@@ -93,6 +288,9 @@
93
288
  threadResumeNew: 'New thread',
94
289
  sessionsHead: 'Sessions',
95
290
  sessionMenuOpen: 'Switch session',
291
+ sessionMenuNewShort: 'New',
292
+ sessionMenuRenameShort: 'Rename',
293
+ sessionMenuDeleteShort: 'Delete',
96
294
  sessionListEmpty: 'No saved sessions yet — start a task to create one.',
97
295
  deleteSessionDeletedToast: 'Session deleted.',
98
296
  resetSessionTitle: 'Start a fresh session?',
@@ -139,6 +337,7 @@
139
337
  undoRunTitle: 'Undo this run\'s Overleaf writes',
140
338
  undoPartialRunTitle: 'Undo the parts of this run already written to Overleaf',
141
339
  undoAppliedTitle: 'This run\'s writes have been undone',
340
+ undoAcceptedTitle: 'These changes were accepted in Overleaf, so Undo is no longer available.',
142
341
  undoNoWritesTitle: 'No writes in this run; nothing to undo.',
143
342
  undoUnsafeFullFileTitle: 'Blocked legacy full-file undo',
144
343
  undoUnsafeFullFileReason: 'This undo point would restore the file with a full-text replacement, which can mark the whole document as changed in Overleaf Track Changes. Run the task again to create a local undo point, or handle this old change manually.',
@@ -147,11 +346,11 @@
147
346
  undoConfirm: 'Undo writes',
148
347
  undoNoTraceStarted: 'Starting no-track undo for this run',
149
348
  undoResult: 'Undo result: undone {applied} item(s), skipped {skipped} item(s)',
150
- undoTrackedTitle: 'Reject this run\'s Overleaf tracked changes?',
349
+ undoTrackedTitle: 'Undo this run\'s tracked changes?',
151
350
  undoNativeTitle: 'Undo this run\'s Overleaf writes?',
152
351
  undoTrackedMessage: 'This will use Overleaf Reject to undo {files}.\n\nIt will not rewrite files with text patches. If the extension cannot verify the matching tracked changes, it will stop and let you handle them in Overleaf review tools.',
153
352
  undoNativeMessage: 'Undo this run\'s changes in {files}.',
154
- undoTrackedConfirm: 'Reject this run',
353
+ undoTrackedConfirm: 'Undo changes',
155
354
  undoTrackedStarted: 'Starting rejection of this run\'s Overleaf tracked changes',
156
355
  undoNativeStarted: 'Undoing this run\'s changes',
157
356
  undoTrackedResult: 'Undo result: rejected {applied} tracked change(s), skipped {skipped}',
@@ -242,6 +441,20 @@
242
441
  sensitiveConfirmMessage: 'Codex found possible sensitive content. Raw detected secrets are not shown here. Continue only if this project context may be sent to Codex.',
243
442
  sensitiveConfirmRun: 'Run anyway',
244
443
  localSkillsTitle: 'Skills',
444
+ skillsManageEntry: 'Manage skills',
445
+ codexLocalSkillsTitle: 'Local Codex skills',
446
+ codexLocalSkillsEmpty: 'No local Codex skills found.',
447
+ codexLocalSkillsSkipped: '{count} local skills could not be loaded.',
448
+ codexLocalSkillsLoadFailed: 'Could not load local Codex skills. Open Skills again to retry.',
449
+ codexLocalSkillsDisabled: 'Local Codex skills are disabled for runs.',
450
+ slashUseLocalSkillSubtitle: 'Use for this turn',
451
+ slashUseOverleafSkillSubtitle: 'Use for this turn',
452
+ slashGroupCommands: 'Commands',
453
+ slashGroupOverleafSkills: 'Codex Overleaf skills',
454
+ slashGroupLocalSkills: 'Local Codex skills',
455
+ slashKeyMove: 'Move',
456
+ slashKeyRun: 'Run',
457
+ slashKeyClose: 'Close',
245
458
  codexOverleafSkillsEmpty: 'No Codex Overleaf skills installed.',
246
459
  codexOverleafSkillsDisabled: 'Codex Overleaf skills are disabled for runs.',
247
460
  loadCodexLocalSkills: 'Load local Codex skills',
@@ -259,6 +472,13 @@
259
472
  codexOverleafSkillsSummaryOff: 'Off',
260
473
  codexOverleafSkillsSummaryCount: '{count} enabled',
261
474
  slashInstallSkillTitle: 'Install skill',
475
+ slashCompactTitle: 'Compact context',
476
+ slashCompactSubtitle: 'Summarize earlier turns to free the context window',
477
+ compactNoThread: 'Start a conversation before compacting its context.',
478
+ compactBusy: 'Wait for the current task to finish before compacting context.',
479
+ compactUnsupported: 'This local Codex connection does not support manual compaction. Update Codex and reload the extension.',
480
+ compactCompleted: 'Conversation context compacted.',
481
+ compactFailed: 'Context compaction did not complete. Check Technical Details before retrying.',
262
482
  slashInstallSkillSubtitle: 'Use the Codex skill installer with natural language.',
263
483
  slashUseSkillSubtitle: 'Use this skill for the next Codex turn.',
264
484
  skillInstallerComposerLabel: 'Skill Installer',
@@ -273,21 +493,17 @@
273
493
  settingsSaved: 'Saved',
274
494
  appearanceTitle: 'Appearance',
275
495
  settingsWorkbenchTitle: 'Settings',
276
- settingsWorkbenchSubtitle: 'Preferences, project rules, and local tools.',
277
- settingsWorkbenchGeneral: 'General & appearance',
496
+ settingsWorkbenchWriting: 'Writing',
278
497
  settingsWorkbenchModels: 'Models & connections',
279
- settingsWorkbenchContext: 'Project context',
280
- settingsWorkbenchInstructions: 'Instructions & skills',
498
+ settingsWorkbenchContextSkills: 'Context & skills',
281
499
  settingsWorkbenchProtection: 'Protection & privacy',
282
- settingsWorkbenchHistory: 'History & storage',
283
- settingsWorkbenchAll: 'All settings',
284
- settingsWorkbenchFilter: 'Filter settings by scope',
500
+ settingsWorkbenchChanges: 'History',
285
501
  settingsWorkbenchCategories: 'Settings categories',
286
- settingsWorkbenchProjectFilter: 'Show only settings that apply to this project.',
287
- settingsWorkbenchOpenProject: 'Open a project to configure its settings.',
502
+ settingsPageScopeProject: 'Only for this project',
503
+ settingsPageScopeGlobal: 'Applies to all projects',
288
504
  settingsWorkbenchClose: 'Close settings',
289
505
  settingsWorkbenchEnableSkills: 'Enable Overleaf skills',
290
- settingsWorkbenchSkillsHelp: 'Turn off all skills without changing individual selections.',
506
+ settingsWorkbenchSkillsHelp: 'Turn off Overleaf skills without changing individual selections.',
291
507
  settingsWorkbenchSkillsList: 'Available skills',
292
508
  settingsWorkbenchProviderOpenFailed: 'Could not open provider settings.',
293
509
  themeLabel: 'Theme',
@@ -357,6 +573,10 @@
357
573
  diagnosticsDotWarn: 'Diagnostics — something needs attention',
358
574
  diagnosticsDotFail: 'Diagnostics — a check failed, click to inspect',
359
575
  diagnosticsDotUnknown: 'Diagnostics',
576
+ diagnosticsPillOk: 'Ready',
577
+ diagnosticsPillWarn: 'Attention',
578
+ diagnosticsPillFail: 'Problem',
579
+ diagnosticsPillUnknown: 'Checking',
360
580
  reasoningLabel: 'Reasoning effort',
361
581
  speedLabel: 'Speed',
362
582
  requireReviewing: 'Track',
@@ -424,6 +644,33 @@
424
644
  queuedInputError_queue_full: 'The follow-up queue is full.',
425
645
  queuedInputError_queue_too_large: 'The follow-up queue reached its storage limit.',
426
646
  contextTitle: '@ Context',
647
+ contextUsageTitle: 'Context window',
648
+ contextUsageAmount: '{used} / {capacity} tokens',
649
+ contextUsageSummary: 'Context window: {amount} ({percentage})',
650
+ contextUsageEstimate: 'Latest reported context estimate.',
651
+ contextUsageUnavailable: 'Context usage is not available yet.',
652
+ contextUsageBeforeFirstMessage: 'Usage appears after your first message.',
653
+ contextUsageCapacityUnknown: 'Latest reported usage; window size is unavailable.',
654
+ contextUsageCompacting: 'Compacting context…',
655
+ contextUsageCompactingAuto: 'Compacting context; Codex will continue.',
656
+ contextUsagePending: 'Context compacted. Usage updates after the next reply.',
657
+ contextUsagePendingDetail: 'Usage updates after the next reply.',
658
+ contextUsageCompactedChip: 'Compacted',
659
+ contextUsageHigh: 'High',
660
+ contextUsageNearLimit: 'Near limit',
661
+ contextUsageInput: 'Input',
662
+ contextUsageOutput: 'Output',
663
+ contextUsageBreakdownBasis: 'Shares of reported input + output.',
664
+ contextUsageCacheHit: 'Cached',
665
+ contextUsageCacheHitRate: 'Input cache hit rate',
666
+ contextUsageLatestReply: 'Latest reply · {time}',
667
+ contextUsageJustNow: 'just now',
668
+ contextUsageMinutesAgo: '{count} min ago',
669
+ contextUsageHoursAgo: '{count} hr ago',
670
+ contextUsageDayAgo: '1 day ago',
671
+ contextUsageDaysAgo: '{count} days ago',
672
+ contextUsageCompactAction: 'Compact',
673
+ contextUsageCompactHint: 'Summarize earlier turns to free the window. Documents are not read or changed.',
427
674
  refreshFileList: 'Refresh file list',
428
675
  contextStatus: 'Type @ to add files, or click +: files, attachments (PDF/images), @compile-log.',
429
676
  contextLoadingFiles: 'Reading available @files...',
@@ -460,6 +707,11 @@
460
707
  fileContext: 'has selected @file context',
461
708
  contextContext: 'has selected @context',
462
709
  refreshProbeLoading: 'Refreshing current file, write access, and track changes...',
710
+ probeScopeCurrentFile: 'Current file',
711
+ probeScopeSelection: 'Selected text',
712
+ probeScopeFiles: 'Selected files',
713
+ probeScopeContext: 'Selected context',
714
+ probeScopeProject: 'Whole project',
463
715
  refreshProbeDone: 'Refreshed: {status}',
464
716
  refreshProbeFailed: 'Refresh failed. Reload Overleaf and try again.',
465
717
  processedFailed: 'Failed {elapsed}',
@@ -478,6 +730,12 @@
478
730
  // Each entry follows the §9 catalog copy. {file} / {activeFile} interpolate from the failure record.
479
731
  failureReason_partial_write_needs_review_user: 'Some operations wrote to Overleaf; others were skipped.',
480
732
  failureReason_partial_write_needs_review_next: 'Review the written files; use "Undo written parts" to roll back if needed.',
733
+ failureReason_file_plan_confirmation_rejected_user: 'The complete file plan was cancelled; no part was applied.',
734
+ failureReason_file_plan_confirmation_rejected_next: 'Review the intended changes and start a new run if you want to apply them.',
735
+ failureReason_file_tree_controls_unavailable_user: 'Codex could not safely perform this file operation with the available Overleaf controls.',
736
+ failureReason_file_tree_controls_unavailable_next: 'Check the file operation in Overleaf before starting a new task.',
737
+ failureReason_delete_confirmation_rejected_user: 'The deletion was cancelled and was not applied. Other allowed changes in this run may still proceed.',
738
+ failureReason_delete_confirmation_rejected_next: 'Review the other changes. If deletion is still intended, request it in a new task.',
481
739
  failureReason_codex_run_cancelled_user: 'The local Codex run was cancelled.',
482
740
  failureReason_codex_run_cancelled_next: 'Start a new run when you are ready.',
483
741
  failureReason_write_operation_failed_user: 'The editor write call for {file} failed.',
@@ -486,6 +744,13 @@
486
744
  failureReason_write_timeout_next: 'Refresh Overleaf, then retry.',
487
745
  failureReason_undo_operation_failed_user: 'The Overleaf undo or reject operation failed.',
488
746
  failureReason_undo_operation_failed_next: 'Use Overleaf undo/review tools manually.',
747
+ failureReason_tracked_change_not_found_user: 'No matching tracked changes were found on the Overleaf page for this run. Codex did not undo with text patches.',
748
+ failureReason_snapshot_undo_current_mismatch_user: 'The current content or document identity does not match this run\'s undo checkpoint. Codex stopped Undo and kept the recovery data.',
749
+ failureReason_snapshot_undo_current_mismatch_next: 'Inspect the file and any later edits before trying Undo again.',
750
+ failureReason_snapshot_undo_open_failed_user: 'Codex could not open the file to restore its saved checkpoint.',
751
+ failureReason_snapshot_undo_open_failed_next: 'Open the file in Overleaf, wait for it to load, then retry Undo.',
752
+ failureReason_snapshot_undo_unavailable_user: 'The saved checkpoint is unavailable for this Undo. Codex kept the remaining recovery data.',
753
+ failureReason_snapshot_undo_unavailable_next: 'Inspect the file and the run details before continuing.',
489
754
  failureReason_undo_partial_user: "Some of this run's writes were undone; others were skipped.",
490
755
  failureReason_undo_partial_next: 'Review the remaining files and retry undo if it is safe.',
491
756
  failureReason_accept_force_editing_failed_user: 'Codex could not enter a stable Editing mode to accept the changes.',
@@ -494,10 +759,22 @@
494
759
  failureReason_accept_replay_failed_next: 'Inspect the file in Overleaf, then retry.',
495
760
  failureReason_native_request_failed_user: 'The request to the local Codex bridge failed.',
496
761
  failureReason_native_request_failed_next: 'Open Diagnostics to check the bridge, then retry.',
762
+ failureReason_panel_reload_interrupted_user: 'This run was interrupted by a page refresh.',
763
+ failureReason_panel_reload_interrupted_next: 'Edit and resend the task to continue.',
764
+ failureReason_sensitive_content_blocked_user: 'Sensitive content was found before sending, so Codex did not receive this request.',
765
+ failureReason_sensitive_content_blocked_next: 'Remove the sensitive content, narrow @context, or enable explicit sensitive confirmation in Project Settings.',
497
766
  failureReason_project_snapshot_unavailable_user: 'Codex could not read the Overleaf project snapshot.',
498
767
  failureReason_project_snapshot_unavailable_next: 'Refresh Overleaf, then rerun the task.',
499
768
  failureReason_selected_context_unresolved_user: 'Codex could not resolve the requested selection or context.',
500
769
  failureReason_selected_context_unresolved_next: 'Select the target again or specify the file/section explicitly.',
770
+ failureReason_selection_scope_violation_user: 'A generated change exceeded the attached selection and was blocked.',
771
+ failureReason_selection_scope_violation_next: 'Select the intended region again and request only changes within it. Valid written parts can be undone.',
772
+ failureReason_governance_blocked_user: 'Project file rules blocked this write. Codex did not write the affected path.',
773
+ failureReason_governance_blocked_next: 'Review the project file rules in Settings > Protection & privacy, then request changes within the allowed paths.',
774
+ failureReason_governance_readonly_user: 'Project file rules marked a path in this operation read-only. Codex did not apply this operation.',
775
+ failureReason_governance_readonly_next: 'Review the read-only paths in Settings > Protection & privacy, then request changes within the allowed paths.',
776
+ failureReason_governance_writable_allowlist_user: 'A path in this operation is outside the configured writable paths. Codex did not apply this operation.',
777
+ failureReason_governance_writable_allowlist_next: 'Review the writable paths in Settings > Protection & privacy, then request changes within those paths.',
501
778
  failureReason_target_file_not_found_user: 'Codex could not find {file} in this Overleaf project.',
502
779
  failureReason_target_file_not_found_next: 'Check the file name/path in Overleaf and retry.',
503
780
  failureReason_target_file_open_failed_user: 'Codex could not open {file} in Overleaf.',
@@ -524,6 +801,8 @@
524
801
  failureReason_accept_not_verified_next: 'Inspect Overleaf Reviewing before continuing.',
525
802
  failureReason_native_bridge_unavailable_user: 'Extension cannot connect to the Codex native host.',
526
803
  failureReason_native_bridge_unavailable_next: 'Run install-native or reload the extension.',
804
+ failureReason_codex_context_limit_user: 'This run stopped because the model context limit was exceeded.',
805
+ failureReason_codex_context_limit_next: 'Retry the task. If the context limit is reached again, use /compact or start a new conversation with less context.',
527
806
  failureReason_codex_no_usable_result_user: 'Local Codex returned no usable final report or operations.',
528
807
  failureReason_codex_no_usable_result_next: 'Open Technical Details and resolve the local Codex error.',
529
808
  failureReason_codex_project_locked_user: 'Another Codex task is already running for this Overleaf project.',
@@ -532,6 +811,10 @@
532
811
  failureReason_codex_timeout_next: 'Check whether local Codex is still running. If there is no progress, cancel and retry with smaller @context.',
533
812
  failureReason_codex_output_limit_user: 'Local Codex output was too large, so the bridge stopped reading.',
534
813
  failureReason_codex_output_limit_next: 'Retry with smaller @context, or open Technical Details to inspect the output limit.',
814
+ failureReason_codex_local_skill_unavailable_user: 'The selected local Codex skill is unavailable or disabled. This run did not start.',
815
+ failureReason_codex_local_skill_unavailable_next: 'Open Skills, select an available enabled skill, and submit again.',
816
+ failureReason_codex_local_skills_failed_user: 'Local Codex skills could not be loaded. This run did not start.',
817
+ failureReason_codex_local_skills_failed_next: 'Open Skills to reload the local catalog, then submit again.',
535
818
  failureReason_codex_not_found_user: 'Codex CLI was not found on this machine.',
536
819
  failureReason_codex_not_found_next: 'Confirm `codex` works in Terminal, then reinstall the native host or reload the extension.',
537
820
  failureReason_storage_quota_exceeded_user: 'Browser storage quota was exceeded.',
@@ -613,9 +896,201 @@
613
896
  recentProjects_badge_abandoned_after_navigation: 'Last run stopped after navigation'
614
897
  },
615
898
  zh: {
899
+ runOutcomeIncomplete: "未完成",
900
+ runOutcomePartial: "部分写入",
901
+ runOutcomeNotWritten: "未写入",
902
+ runOutcomeCheck: "请检查 Overleaf",
903
+ runOutcomeNoWrites: "没有向 Overleaf 写入任何内容。",
904
+ runOutcomeNotWrittenBody: "Codex 没有覆盖文件,没有写入任何内容。",
905
+ runOutcomePartialTitle: "已写入 {wrote}/{total} 项修改",
906
+ runOutcomePartialNext: "请检查跳过的文件后重新发送,也可以点击上方的“撤销已写入部分”。",
907
+ runOutcomeUnconfirmedFile: "无法确认对 {file} 的写入",
908
+ runOutcomeUnconfirmed: "无法确认写入结果",
909
+ runOutcomeUnconfirmedBody: "部分改动可能已经写入 Overleaf。",
910
+ runOutcomeCheckNext: "请先检查 {file} 再重新发送。",
911
+ runOutcomeContextNext: "请使用 /compact 或以更少的上下文开始新对话后重试。",
912
+ runOutcomeNativeNext: "请重新发送;若持续中断,请打开诊断检查桥接连接。",
913
+ runOutcomeStaleNext: "请检查当前文件后重新发送。",
914
+ runOutcomeStaleReason: "文件在 Codex 工作期间发生变化,因此没有覆盖。",
915
+ runOutcomeSkipped: "已跳过",
916
+ runOutcomeWritten: "已写入",
917
+ runOutcomeNext: "请检查详情后重试。",
918
+ runOutcomeDetails: "详情",
919
+ runOutcomeCode: "代码",
920
+ runOutcomeStage: "阶段",
921
+ runOutcomeWrites: "写入",
922
+ runOutcomeNoneAttempted: "未尝试写入",
923
+ runOutcomeCompileChip: "{count} 个编译错误",
924
+ runOutcomeCompileTitle: "Overleaf 编译:{count} 个错误",
925
+ runCompileUnconfirmed: '写后编译检查:结果待确认。',
926
+ runOutcomeCause_stale_source_changed: "{file} 在 Codex 工作期间发生变化",
927
+ runOutcomeCause_target_editor_not_ready: "{file} 的编辑器尚未就绪",
928
+ runOutcomeCause_write_timeout: "写入确认超时",
929
+ runOutcomeCause_write_observed_mismatch: "写入后的内容与预期不符",
930
+ runOutcomeCause_codex_context_limit: "超出模型上下文限制",
931
+ runOutcomeCause_codex_timeout: "本地 Codex 超时",
932
+ runOutcomeCause_codex_output_limit: "超出模型输出限制",
933
+ runOutcomeCause_codex_no_usable_result: "本地 Codex 没有返回可用结果",
934
+ runOutcomeCause_native_request_failed: "与本地 Codex 的连接中断",
935
+ runOutcomeCause_panel_reload_interrupted: "Codex 工作时页面被刷新了",
936
+ runOutcomeReloadUnknownBody: "刷新前没有记录到写入。再次发送前,请先在 Overleaf 中检查文件。",
937
+ runOutcomeCause_governance_readonly: "{file} 在本项目的路径规则中设为只读",
938
+ runOutcomeCause_governance_writable_allowlist: "{file} 不在本项目允许写入的路径内",
939
+ runOutcomeCause_sensitive_content_blocked: "发送前发现疑似{finding}",
940
+ sensitiveFinding_private_key: "私钥",
941
+ sensitiveFinding_bearer_token: "Bearer 令牌",
942
+ sensitiveFinding_api_token: "API 令牌",
943
+ sensitiveFinding_aws_access_key: "AWS 访问密钥",
944
+ sensitiveFinding_google_api_key: "Google API 密钥",
945
+ sensitiveFinding_huggingface_token: "Hugging Face 令牌",
946
+ sensitiveFinding_gitlab_token: "GitLab 令牌",
947
+ sensitiveFinding_stripe_live_secret: "Stripe 密钥",
948
+ sensitiveFinding_jwt_token: "JWT",
949
+ sensitiveFinding_secret_assignment: "密钥值",
950
+ sensitiveFinding_mixed: "敏感内容",
951
+ runOutcomeCause_native_bridge_unavailable: "无法连接到本地 Codex",
952
+ runOutcomeCause_project_snapshot_unavailable: "无法读取 Overleaf 项目",
953
+ runOutcomeCause_patch_anchor_not_found: "无法在 {file} 中定位修改位置",
954
+ runOutcomeCause_undo_not_verified: "无法确认撤销结果",
955
+ runOutcomeCause_undo_operation_failed: "无法完成撤销",
956
+ failureReason_base_file_missing_at_start_user: "首次读取项目时,缺少本任务所需的文件。",
957
+ failureReason_base_file_missing_at_start_next: "请刷新项目上下文后重新运行。",
958
+ failureReason_target_file_missing_path_user: "改动中未包含目标文件路径。",
959
+ failureReason_target_file_missing_path_next: "请重新生成改动后重试;若再次发生,请报告此问题。",
960
+ failureReason_target_file_focus_lost_user: "目标文件曾处于活动状态,但写入前焦点切换到了其他文件。",
961
+ failureReason_target_file_focus_lost_next: "写回期间请保持当前文件不变,然后重试。",
962
+ failureReason_jump_target_not_resolved_user: "无法将行号或位置链接对应到编辑器中的文本范围。",
963
+ failureReason_jump_target_not_resolved_next: "请手动打开文件,检查所引用的行。",
964
+ failureReason_missing_base_file_user: "写入安全检查所需的基准文件未包含在本轮快照中。",
965
+ failureReason_missing_base_file_next: "请刷新项目上下文后重新运行。",
966
+ failureReason_patch_anchor_ambiguous_user: "修改位置的定位文本匹配到了多处内容。",
967
+ failureReason_patch_anchor_ambiguous_next: "请缩小请求范围,或选择更小的文本区域。",
968
+ failureReason_delete_confirmation_missing_user: "删除操作尚未得到确认。",
969
+ failureReason_delete_confirmation_missing_next: "如果确实需要删除,请明确确认该操作。",
970
+ failureReason_binary_write_blocked_user: "Codex 尝试写入尚不支持的二进制内容。",
971
+ failureReason_binary_write_blocked_next: "请手动上传文件,或附上受支持的文本文件。",
972
+ failureReason_write_post_read_failed_user: "写入后,Codex 无法读取该文件。",
973
+ failureReason_write_post_read_failed_next: "请先在 Overleaf 检查文件,再刷新并重试。",
974
+ failureReason_file_tree_verification_failed_user: "新建、删除、重命名或移动的结果未按预期出现在文件树中。",
975
+ failureReason_file_tree_verification_failed_next: "请检查文件树,必要时再重试。",
976
+ failureReason_source_zip_unavailable_user: "上传此文件前,无法完成项目检查。",
977
+ failureReason_source_zip_unavailable_next: "请重试同步;仅会上传缺失的文件。",
978
+ failureReason_file_upload_unconfirmed_user: "文件已提交,但尚未确认其保存后的内容。",
979
+ failureReason_file_upload_unconfirmed_next: "重试前请检查文件;内容一致的文件不会重复上传。",
980
+ failureReason_subagent_unfinished_output_user: "子代理在完成此文件前已停止;主代理需要审阅并采纳该文件。",
981
+ failureReason_subagent_unfinished_output_next: "请由主代理完成并采纳待处理文件。",
982
+ failureReason_subagent_unauthorized_edit_user: "文件修改超出了子代理负责的范围,因此未同步。",
983
+ failureReason_subagent_unauthorized_edit_next: "请检查超出负责范围的修改;采纳输出无法解除此限制。",
984
+ failureReason_reviewing_unavailable_user: "此项目无法使用 Track Changes(留痕),是否可用取决于项目所有者的 Overleaf 订阅方案。",
985
+ failureReason_reviewing_unavailable_next: "关闭输入框旁的“留痕”即可不留痕写入。Codex 仍会记录每次改动,方便你撤销。",
986
+ failureReason_reviewing_unavailable_cancelled_next: "没有运行,Track 设置保持不变。重新发送即可再次选择。",
987
+ runNotStarted: '未开始',
988
+ runNotStartedCancelled: '未开始 · 已取消',
989
+ runNotStartedTrackTitle: '此项目无法使用 Track Changes(留痕)',
990
+ runNotStartedModeTitle: '无法确认 Overleaf 的编辑模式',
991
+ runNotStartedTrackBody: '留痕功能取决于项目所有者的 Overleaf 订阅方案;任务没有运行,也没有写入文件。',
992
+ runNotStartedModeBody: 'Overleaf 未确认所需的编辑模式;任务没有运行,也没有写入文件。',
993
+ runNotStartedCancelledNext: 'Track 设置保持不变。重新发送即可再次选择。',
994
+ runNotStartedNext: '请检查 Overleaf 的编辑模式后重试。',
995
+ reviewingUnavailableTitle: "此项目无法留痕",
996
+ reviewingUnavailableChoiceMessage: "此项目无法使用 Track Changes(留痕),是否可用取决于项目所有者的 Overleaf 订阅方案。Codex 仍可不留痕写入,并记录每次改动,方便你撤销。",
997
+ reviewingUnavailableContinue: "本轮不留痕继续",
998
+ reviewingUnavailableDisable: "关闭此项目的留痕",
999
+ reviewingUnavailableStatus: "无法留痕",
1000
+ reviewingUnavailableTooltip: "此项目无法使用 Track Changes(留痕)。Codex 会在每轮运行前询问是否不留痕继续。关闭再开启留痕可重新检查。",
1001
+ reviewingUnavailableRunUntracked: "此项目无法使用 Track Changes,本轮将不留痕写入。Codex 仍会记录改动,方便撤销。",
1002
+ failureReason_reviewing_enable_failed_user: "Codex 无法在需要时启用审阅模式。",
1003
+ failureReason_reviewing_enable_failed_next: "请手动启用审阅模式,或重试。",
1004
+ failureReason_reviewing_disable_failed_user: "Codex 无法切换到不留痕的编辑模式。",
1005
+ failureReason_reviewing_disable_failed_next: "请手动切换到编辑模式,稍候再重试。",
1006
+ failureReason_tracked_changes_created_unexpectedly_user: "原本应当不留痕的重放产生了留痕改动。",
1007
+ failureReason_tracked_changes_created_unexpectedly_next: "请在 Overleaf 审阅面板检查,并决定接受或拒绝。",
1008
+ failureReason_tracked_change_nodes_not_identified_user: "Codex 在审阅模式下完成了写入,但无法识别所生成的留痕记录。",
1009
+ failureReason_tracked_change_nodes_not_identified_next: "请手动使用 Overleaf 审阅工具;自动留痕撤销当前不可用。",
1010
+ failureReason_undo_preflight_content_drift_user: "当前内容已与本轮写入后的内容不一致。",
1011
+ failureReason_undo_preflight_content_drift_next: "请检查后续手动编辑;Codex 未执行撤销,以免删除这些编辑。",
1012
+ failureReason_undo_reviewing_restore_unverified_user: "撤销已完成,但未能确认原来的审阅状态已恢复。",
1013
+ failureReason_undo_reviewing_restore_unverified_next: "请手动检查 Overleaf 的审阅或编辑模式。",
1014
+ failureReason_accept_preflight_content_drift_user: "接受改动前,内容已偏离本轮写回的结果。",
1015
+ failureReason_accept_preflight_content_drift_next: "请检查当前内容后,再重试接受改动。",
1016
+ failureReason_accept_replay_created_tracked_changes_user: "重放产生了留痕改动,无法确认接受操作已无留痕地完成。",
1017
+ failureReason_accept_replay_created_tracked_changes_next: "请手动检查剩余的留痕改动。",
1018
+ failureReason_native_protocol_incompatible_user: "本地主机的版本或能力与扩展不匹配。",
1019
+ failureReason_native_protocol_incompatible_next: "请更新本地主机。",
1020
+ failureReason_provider_revision_conflict_user: "本标签页加载配置后,当前模型服务的配置已发生变化。",
1021
+ failureReason_provider_revision_conflict_next: "请刷新模型服务配置后重试。",
1022
+ failureReason_provider_not_found_user: "当前模型服务已不存在。",
1023
+ failureReason_provider_not_found_next: "请选择内置 Codex 或其他模型服务。",
1024
+ failureReason_provider_model_not_configured_user: "当前模型服务中未配置所选模型。",
1025
+ failureReason_provider_model_not_configured_next: "请在模型服务设置中添加或选择模型。",
1026
+ failureReason_provider_protocol_unverified_user: "模型服务的 API 协议尚未验证。",
1027
+ failureReason_provider_protocol_unverified_next: "请测试连接并保存模型服务配置,然后重试。",
1028
+ failureReason_provider_auth_rejected_user: "模型服务拒绝了所配置的 API 密钥。",
1029
+ failureReason_provider_auth_rejected_next: "请更换 API 密钥并测试连接。",
1030
+ failureReason_provider_model_not_found_user: "模型服务找不到所配置的模型。",
1031
+ failureReason_provider_model_not_found_next: "请修正模型标识并测试连接。",
1032
+ failureReason_provider_protocol_incompatible_user: "服务端点与所选 API 协议不兼容。",
1033
+ failureReason_provider_protocol_incompatible_next: "请选择其他协议,或使用自动检测。",
1034
+ failureReason_provider_request_rejected_user: "模型服务拒绝了协议探测请求。",
1035
+ failureReason_provider_request_rejected_next: "请检查模型标识、推理设置、工具支持及自定义请求参数。",
1036
+ failureReason_provider_rate_limited_user: "模型服务已达到请求频率限制。",
1037
+ failureReason_provider_rate_limited_next: "请等待限流窗口恢复后重试。",
1038
+ failureReason_provider_connection_timeout_user: "模型服务连接超时。",
1039
+ failureReason_provider_connection_timeout_next: "请检查服务端点和网络,然后重试。",
1040
+ failureReason_provider_dns_failed_user: "无法解析模型服务的主机名。",
1041
+ failureReason_provider_dns_failed_next: "请检查基础 URL 和 DNS,然后重试。",
1042
+ failureReason_provider_tls_failed_user: "模型服务端点的 TLS 验证失败。",
1043
+ failureReason_provider_tls_failed_next: "请检查端点证书和基础 URL。",
1044
+ failureReason_provider_response_invalid_user: "模型服务返回了不兼容或无效的响应。",
1045
+ failureReason_provider_response_invalid_next: "请测试连接并确认协议兼容性。",
1046
+ failureReason_provider_store_unavailable_user: "本地主机无法访问模型服务配置存储。",
1047
+ failureReason_provider_store_unavailable_next: "请检查本地权限和本地主机状态。",
1048
+ failureReason_provider_store_corrupt_user: "模型服务配置存储已损坏或不一致。",
1049
+ failureReason_provider_store_corrupt_next: "请修复或重建本地模型服务配置。",
1050
+ failureReason_codex_result_parse_failed_user: "无法将 Codex 输出解析为操作。",
1051
+ failureReason_codex_result_parse_failed_next: "请使用更简单的请求重试;若再次发生,请报告此问题。",
1052
+ failureReason_run_state_persist_failed_user: "无法保存当前运行状态。",
1053
+ failureReason_run_state_persist_failed_next: "请谨慎继续;刷新可能导致本轮恢复状态丢失。",
1054
+ failureReason_receipt_persist_failed_user: "无法保存写回回执。",
1055
+ failureReason_receipt_persist_failed_next: "刷新前请导出或复制技术详情。",
1056
+ deleteSessionNativeFailureDetail: "本地桥接程序未确认操作成功。",
1057
+ failureReason_missing_tracked_changes_user: "这轮写入没有可识别的 Overleaf 留痕记录;Codex 没有执行文本补丁撤销。",
1058
+ failureReason_tracked_change_file_open_failed_user: "无法打开文件来查找这轮写入的留痕记录;请在 Overleaf 审阅面板检查。",
1059
+ failureReason_tracked_change_reject_control_not_found_user: "仍有留痕记录未处理,但未找到对应的拒绝按钮;请在 Overleaf 审阅面板检查。",
1060
+ failureReason_tracked_change_reject_not_confirmed_user: "Codex 已点击拒绝,但 Overleaf 仍显示该留痕记录;请在审阅面板检查。",
1061
+ failureReason_tracked_change_accept_control_not_found_user: "仍有留痕记录未处理,但未找到对应的接受按钮;请在 Overleaf 审阅面板检查。",
1062
+ failureReason_tracked_change_accept_not_confirmed_user: "Codex 已点击接受,但 Overleaf 仍显示该留痕记录;请在审阅面板检查。",
1063
+ failureReason_tracked_change_editor_undo_open_failed_user: "无法打开文件来执行 Overleaf 原生撤销。",
1064
+ failureReason_tracked_change_editor_undo_current_mismatch_user: "当前内容与本轮写入后的内容不一致;Codex 已停止原生撤销,以保留后续编辑。",
1065
+ failureReason_editor_undo_control_not_found_user: "未找到 Overleaf 编辑器的撤销按钮,无法撤销本轮改动。",
1066
+ failureReason_editor_undo_no_progress_user: "Codex 已点击 Overleaf 撤销,但文件内容没有变化。",
1067
+ failureReason_editor_undo_max_iterations_user: "经过多次原生撤销后,文件仍未恢复到本轮写入前的内容;Codex 已停止,以免撤销其他编辑。",
1068
+ failureReason_tracked_change_undo_max_iterations_user: "仍有未处理的留痕记录;Codex 已停止,以免误拒绝其他编辑。",
1069
+ failureReason_tracked_change_undo_verify_open_failed_user: "撤销后无法打开文件验证内容;请刷新 Overleaf 后检查。",
1070
+ failureReason_tracked_change_undo_verify_failed_user: "拒绝留痕后,文件内容仍未恢复到写入前状态;请在 Overleaf 审阅面板检查本轮修改。",
1071
+ failureReason_accept_missing_run_content_user: "缺少写入前或写入后的内容;Codex 未重放或接受留痕改动。",
1072
+ failureReason_accept_editor_undo_unavailable_user: "原生撤销及安全的检查点回滚均不可用;Codex 未接受本轮改动。",
1073
+ failureReason_accept_editing_not_confirmed_user: "无法确认 Overleaf 已进入编辑模式;Codex 已停止重放本轮改动,以免产生新的留痕。",
1074
+ failureReason_accept_editing_not_stable_user: "Overleaf 编辑模式未保持稳定,无法无留痕地重放接受的改动;Codex 未重放此次写入。",
1075
+ failureReason_accept_replay_rollback_missing_content_user: "接受改动时产生了新的留痕,但缺少写入前或写入后的内容,无法回滚。",
1076
+ failureReason_review_scope_unavailable_user: "无法安全确认本轮原生留痕的范围;尚未尝试审阅写入。请在 Overleaf 审阅面板逐项检查。",
1077
+ failureReason_native_untracked_undo_pending_changes_user: "此文件仍有未处理的留痕改动。为保留这些改动,本次无留痕撤销已停止,文档未改动。",
1078
+ failureReason_native_untracked_undo_pending_changes_next: "请先在 Overleaf 审阅面板处理现有留痕,再重试撤销。切换到编辑模式不会清除已有留痕。",
1079
+ failureReason_review_request_unverified_user: "原生审阅请求未能完全核实,部分目标改动可能已接受;未尝试文本重放。请先在 Overleaf 审阅面板检查,再决定是否重试。",
1080
+ failureReason_review_owner_disconnected_user: "撤销操作的连接已断开;未再启动后续审阅写入。",
1081
+ failureReason_review_deadline_exceeded_user: "审阅操作已超时;未再启动后续审阅写入。",
1082
+ failureReason_review_cancelled_user: "审阅操作已取消;未再启动后续审阅写入。",
1083
+ failureReason_review_project_changed_user: "原审阅项目已不再处于活动状态。",
1084
+ failureReason_review_detail_next: "继续操作前,请在 Overleaf 检查剩余改动及运行详情。",
1085
+ queuedInputGuideNotReady: "当前 Codex 轮次尚未准备好接收指导。",
1086
+ queuedInputGuideTurnChanged: "指导送达前,当前 Codex 轮次已发生变化。",
1087
+ queuedInputGuideEmpty: "指导内容为空。",
1088
+ queuedInputGuideTooLarge: "指导内容超过 12000 字符上限。",
616
1089
  resizePanel: '拖动调整 Codex 面板宽度,双击恢复默认宽度',
617
1090
  codexActions: 'Codex 操作',
618
1091
  refreshProbe: '重新检测当前文件状态;不会同步或修改文件',
1092
+ refreshProbeTitle: '刷新文件状态',
1093
+ refreshProbeSubtitle: '重新读取 Overleaf 状态;不会同步或修改文件',
619
1094
  diagnosticsMenu: '排查问题',
620
1095
  diagnosticsHint: '遇到无法运行、无法写入、读不到文件时使用',
621
1096
  diagnosticsRunAllTitle: '运行全部检查',
@@ -675,6 +1150,9 @@
675
1150
  nativeCompatibilityBlockedProtocol: '执行 {method} 前发现 native host 协议不匹配。请同时更新扩展和 native host。',
676
1151
  nativeCompatibilityBlockedUnhealthy: '本机 Codex 还不能执行 {method}。请打开“排查问题 > 检查本机连接”查看详情。',
677
1152
  nativeCompatibilityBlockedMissing: '执行 {method} 时没有连接到 native host。请安装本机 native host,重新加载扩展后再试。',
1153
+ nativeCompatibilityMissingTitle: 'Native host 未连接',
1154
+ nativeCompatibilityMissingGuidance: '请安装本机 native host,重新加载扩展后再试。',
1155
+ nativeCompatibilityUnavailableFeatures: '{count} 项功能不可用',
678
1156
  nativeCompatibilityBlockedGeneric: '当前 native host 与扩展不兼容,不能执行 {method}。请更新 native host 和扩展后再试。',
679
1157
  diagnosticsPageLoading: '确认当前文件、写入能力和留痕状态。',
680
1158
  diagnosticsLoading: '正在检查当前状态。',
@@ -694,6 +1172,9 @@
694
1172
  threadResumeNew: '新建线程',
695
1173
  sessionsHead: '会话',
696
1174
  sessionMenuOpen: '切换会话',
1175
+ sessionMenuNewShort: '新建',
1176
+ sessionMenuRenameShort: '重命名',
1177
+ sessionMenuDeleteShort: '删除',
697
1178
  sessionListEmpty: '还没有保存的会话——发起一个任务即可创建。',
698
1179
  deleteSessionDeletedToast: '已删除会话。',
699
1180
  resetSessionTitle: '开一个新会话?',
@@ -740,6 +1221,7 @@
740
1221
  undoRunTitle: '撤销本轮写入到 Overleaf 的改动',
741
1222
  undoPartialRunTitle: '撤销本轮已经写入 Overleaf 的部分改动',
742
1223
  undoAppliedTitle: '本轮写入已经撤销',
1224
+ undoAcceptedTitle: '这些改动已在 Overleaf 中接受,无法再撤销。',
743
1225
  undoNoWritesTitle: '本轮没有写入,无需撤销。',
744
1226
  undoUnsafeFullFileTitle: '已阻止旧格式全文撤销',
745
1227
  undoUnsafeFullFileReason: '这个撤销点会用全文替换恢复文件,在 Overleaf 留痕模式下会把整篇文档标成改动。请重新运行任务生成局部撤销点,或手动处理这次历史改动。',
@@ -748,11 +1230,11 @@
748
1230
  undoConfirm: '撤销写入',
749
1231
  undoNoTraceStarted: '开始无留痕撤销本轮写入',
750
1232
  undoResult: '撤销结果:已撤销 {applied} 项,跳过 {skipped} 项',
751
- undoTrackedTitle: '拒绝本轮 Overleaf 留痕改动?',
1233
+ undoTrackedTitle: '撤销本轮留痕改动?',
752
1234
  undoNativeTitle: '撤销本轮 Overleaf 写入?',
753
1235
  undoTrackedMessage: '将通过 Overleaf 自己的 Reject/拒绝功能撤销 {files}。\n\n这不会用文本补丁重写文件;如果插件不能确认对应留痕记录,会停止并让你在 Overleaf 审阅面板手动处理。',
754
1236
  undoNativeMessage: '撤销本轮在 {files} 中的改动。',
755
- undoTrackedConfirm: '拒绝本轮改动',
1237
+ undoTrackedConfirm: '撤销改动',
756
1238
  undoTrackedStarted: '开始拒绝本轮 Overleaf 留痕改动',
757
1239
  undoNativeStarted: '正在撤销本轮改动',
758
1240
  undoTrackedResult: '撤销结果:已拒绝 {applied} 条留痕,跳过 {skipped} 条',
@@ -843,6 +1325,20 @@
843
1325
  sensitiveConfirmMessage: 'Codex 发现了可能的敏感内容。这里不会显示原始密钥或秘密值。只有在确认可以把这些项目上下文发送给 Codex 时才继续。',
844
1326
  sensitiveConfirmRun: '仍然运行',
845
1327
  localSkillsTitle: '技能',
1328
+ skillsManageEntry: '管理技能',
1329
+ codexLocalSkillsTitle: 'Codex 本地技能',
1330
+ codexLocalSkillsEmpty: '没有找到 Codex 本地技能。',
1331
+ codexLocalSkillsSkipped: '有 {count} 个本地技能未能加载。',
1332
+ codexLocalSkillsLoadFailed: '无法加载 Codex 本地技能,请重新打开技能页重试。',
1333
+ codexLocalSkillsDisabled: '运行时已禁用 Codex 本地技能。',
1334
+ slashUseLocalSkillSubtitle: '本轮使用',
1335
+ slashUseOverleafSkillSubtitle: '本轮使用',
1336
+ slashGroupCommands: '命令',
1337
+ slashGroupOverleafSkills: 'Codex Overleaf 技能',
1338
+ slashGroupLocalSkills: 'Codex 本地技能',
1339
+ slashKeyMove: '选择',
1340
+ slashKeyRun: '执行',
1341
+ slashKeyClose: '关闭',
846
1342
  codexOverleafSkillsEmpty: '没有安装 Codex Overleaf 专属技能。',
847
1343
  codexOverleafSkillsDisabled: '运行时已禁用 Codex Overleaf 专属技能。',
848
1344
  loadCodexLocalSkills: '加载 Codex 本地技能',
@@ -860,6 +1356,13 @@
860
1356
  codexOverleafSkillsSummaryOff: '已关闭',
861
1357
  codexOverleafSkillsSummaryCount: '已启用 {count} 个',
862
1358
  slashInstallSkillTitle: '安装 skill',
1359
+ slashCompactTitle: '压缩上下文',
1360
+ slashCompactSubtitle: '整理此前的对话,释放上下文窗口',
1361
+ compactNoThread: '请先开始一轮对话,再压缩上下文。',
1362
+ compactBusy: '请等待当前任务结束后再压缩上下文。',
1363
+ compactUnsupported: '当前本地 Codex 连接不支持手动压缩,请更新 Codex 并重新加载扩展。',
1364
+ compactCompleted: '会话上下文已压缩。',
1365
+ compactFailed: '上下文压缩未完成,请查看技术详情后再重试。',
863
1366
  slashInstallSkillSubtitle: '用自然语言调用 Codex 的 skill installer。',
864
1367
  slashUseSkillSubtitle: '本轮使用这个 skill。',
865
1368
  skillInstallerComposerLabel: 'Skill Installer',
@@ -874,21 +1377,17 @@
874
1377
  settingsSaved: '已保存',
875
1378
  appearanceTitle: '外观',
876
1379
  settingsWorkbenchTitle: '设置',
877
- settingsWorkbenchSubtitle: '偏好设置、项目规则与本地工具。',
878
- settingsWorkbenchGeneral: '常规与外观',
1380
+ settingsWorkbenchWriting: '写作',
879
1381
  settingsWorkbenchModels: '模型与连接',
880
- settingsWorkbenchContext: '项目上下文',
881
- settingsWorkbenchInstructions: '指令与技能',
1382
+ settingsWorkbenchContextSkills: '上下文与技能',
882
1383
  settingsWorkbenchProtection: '文件保护与隐私',
883
- settingsWorkbenchHistory: '历史与存储',
884
- settingsWorkbenchAll: '全部设置',
885
- settingsWorkbenchFilter: '按作用范围筛选设置',
1384
+ settingsWorkbenchChanges: '修改记录',
886
1385
  settingsWorkbenchCategories: '设置分类',
887
- settingsWorkbenchProjectFilter: '仅显示作用于当前项目的设置。',
888
- settingsWorkbenchOpenProject: '进入项目后可配置项目设置。',
1386
+ settingsPageScopeProject: '仅当前项目',
1387
+ settingsPageScopeGlobal: '适用于所有项目',
889
1388
  settingsWorkbenchClose: '关闭设置',
890
1389
  settingsWorkbenchEnableSkills: '启用 Overleaf 技能',
891
- settingsWorkbenchSkillsHelp: '关闭总开关时,各技能的单独选择会保留。',
1390
+ settingsWorkbenchSkillsHelp: '关闭 Overleaf 技能时,各项选择会保留。',
892
1391
  settingsWorkbenchSkillsList: '可用技能',
893
1392
  settingsWorkbenchProviderOpenFailed: '无法打开模型服务设置。',
894
1393
  themeLabel: '主题',
@@ -958,6 +1457,10 @@
958
1457
  diagnosticsDotWarn: '诊断——有需要留意的项',
959
1458
  diagnosticsDotFail: '诊断——有检查未通过,点击查看',
960
1459
  diagnosticsDotUnknown: '诊断',
1460
+ diagnosticsPillOk: '就绪',
1461
+ diagnosticsPillWarn: '需留意',
1462
+ diagnosticsPillFail: '有问题',
1463
+ diagnosticsPillUnknown: '检查中',
961
1464
  reasoningLabel: '推理强度',
962
1465
  speedLabel: '速度',
963
1466
  requireReviewing: '留痕',
@@ -1025,6 +1528,33 @@
1025
1528
  queuedInputError_queue_full: '后续任务队列已满。',
1026
1529
  queuedInputError_queue_too_large: '后续任务队列已达到存储上限。',
1027
1530
  contextTitle: '@ 上下文',
1531
+ contextUsageTitle: '上下文窗口',
1532
+ contextUsageAmount: '{used} / {capacity} 词元',
1533
+ contextUsageSummary: '上下文窗口:{amount}({percentage})',
1534
+ contextUsageEstimate: '最近上报的上下文用量估计。',
1535
+ contextUsageUnavailable: '尚无上下文用量数据。',
1536
+ contextUsageBeforeFirstMessage: '发送第一条消息后,这里会显示用量。',
1537
+ contextUsageCapacityUnknown: '显示最近上报的用量;窗口容量未知。',
1538
+ contextUsageCompacting: '正在压缩上下文…',
1539
+ contextUsageCompactingAuto: '正在压缩上下文,Codex 会继续处理。',
1540
+ contextUsagePending: '上下文已压缩,下一次回复后会更新用量。',
1541
+ contextUsagePendingDetail: '下一次回复后会更新用量。',
1542
+ contextUsageCompactedChip: '已压缩',
1543
+ contextUsageHigh: '偏高',
1544
+ contextUsageNearLimit: '接近上限',
1545
+ contextUsageInput: '输入',
1546
+ contextUsageOutput: '输出',
1547
+ contextUsageBreakdownBasis: '占比按上报的输入 + 输出计算。',
1548
+ contextUsageCacheHit: '其中缓存命中',
1549
+ contextUsageCacheHitRate: '输入缓存命中率',
1550
+ contextUsageLatestReply: '最近一次回复 · {time}',
1551
+ contextUsageJustNow: '刚刚',
1552
+ contextUsageMinutesAgo: '{count} 分钟前',
1553
+ contextUsageHoursAgo: '{count} 小时前',
1554
+ contextUsageDayAgo: '1 天前',
1555
+ contextUsageDaysAgo: '{count} 天前',
1556
+ contextUsageCompactAction: '压缩',
1557
+ contextUsageCompactHint: '把此前的对话整理为摘要,释放上下文窗口;不读取或修改文档。',
1028
1558
  refreshFileList: '刷新文件列表',
1029
1559
  contextStatus: '输入 @ 添加文件,或点 +:文件、附件(PDF/图片)、@compile-log。',
1030
1560
  contextLoadingFiles: '正在读取可添加的 @文件...',
@@ -1061,6 +1591,11 @@
1061
1591
  fileContext: '已选择 @file 上下文',
1062
1592
  contextContext: '已选择 @context',
1063
1593
  refreshProbeLoading: '正在重新检测当前文件、写入权限和留痕状态...',
1594
+ probeScopeCurrentFile: '当前文件',
1595
+ probeScopeSelection: '已选文本',
1596
+ probeScopeFiles: '已选文件',
1597
+ probeScopeContext: '已选上下文',
1598
+ probeScopeProject: '整个项目',
1064
1599
  refreshProbeDone: '已重新检测:{status}',
1065
1600
  refreshProbeFailed: '检测失败:请刷新 Overleaf 页面后重试',
1066
1601
  processedFailed: '处理失败 {elapsed}',
@@ -1078,6 +1613,8 @@
1078
1613
  // FailureReason 高优先级双语文案(设计规格 §15.4)。文案对应 §9 目录的英文 fallback。
1079
1614
  failureReason_partial_write_needs_review_user: '部分操作已写入 Overleaf,其余被跳过。',
1080
1615
  failureReason_partial_write_needs_review_next: '请检查已写入的文件;如需回滚,使用「撤销已写入部分」。',
1616
+ failureReason_file_plan_confirmation_rejected_user: '整份文件计划已取消,未应用任何部分。',
1617
+ failureReason_file_plan_confirmation_rejected_next: '请先审阅预期改动;需要应用时重新发起一轮任务。',
1081
1618
  failureReason_codex_run_cancelled_user: '本地 Codex 任务已取消。',
1082
1619
  failureReason_codex_run_cancelled_next: '准备好后可以重新发起一轮任务。',
1083
1620
  failureReason_write_operation_failed_user: '对 {file} 的编辑器写入调用失败。',
@@ -1085,7 +1622,18 @@
1085
1622
  failureReason_write_timeout_user: 'Overleaf 在超时前没有接受对 {file} 的写入。',
1086
1623
  failureReason_write_timeout_next: '刷新 Overleaf 后重试。',
1087
1624
  failureReason_undo_operation_failed_user: 'Overleaf 的撤销或拒绝操作失败。',
1625
+ failureReason_file_tree_controls_unavailable_user: 'Codex 无法通过当前可用的 Overleaf 控件安全执行此文件操作。',
1626
+ failureReason_file_tree_controls_unavailable_next: '请先在 Overleaf 中检查文件操作,再开始新任务。',
1627
+ failureReason_delete_confirmation_rejected_user: '删除已取消,未执行该删除;本轮其他获准改动仍可能继续。',
1628
+ failureReason_delete_confirmation_rejected_next: '请检查其他改动;若仍需删除,请在新任务中提出。',
1088
1629
  failureReason_undo_operation_failed_next: '请手动使用 Overleaf 的撤销/审阅工具。',
1630
+ failureReason_tracked_change_not_found_user: '没有在 Overleaf 页面里找到这轮写入对应的留痕记录;Codex 没有用文本补丁伪撤销。',
1631
+ failureReason_snapshot_undo_current_mismatch_user: '当前内容或文档身份与本轮撤销检查点不一致;Codex 已停止撤销并保留恢复材料。',
1632
+ failureReason_snapshot_undo_current_mismatch_next: '请先检查文件及后续编辑,再决定是否重试撤销。',
1633
+ failureReason_snapshot_undo_open_failed_user: 'Codex 无法打开文件来恢复已保存的检查点。',
1634
+ failureReason_snapshot_undo_open_failed_next: '请在 Overleaf 中打开文件,等待加载完成后再重试撤销。',
1635
+ failureReason_snapshot_undo_unavailable_user: '本次撤销所需的检查点不可用;Codex 已保留剩余恢复材料。',
1636
+ failureReason_snapshot_undo_unavailable_next: '请先检查文件和本轮运行详情,再继续操作。',
1089
1637
  failureReason_undo_partial_user: '本轮的部分写入已撤销,其余被跳过。',
1090
1638
  failureReason_undo_partial_next: '检查剩余文件,确认安全后再重试撤销。',
1091
1639
  failureReason_accept_force_editing_failed_user: 'Codex 未能进入稳定的 Editing 模式来接受改动。',
@@ -1094,10 +1642,22 @@
1094
1642
  failureReason_accept_replay_failed_next: '请在 Overleaf 中检查该文件后重试。',
1095
1643
  failureReason_native_request_failed_user: '向本地 Codex bridge 的请求失败。',
1096
1644
  failureReason_native_request_failed_next: '打开「诊断」检查 bridge 后重试。',
1645
+ failureReason_panel_reload_interrupted_user: '页面刷新导致本轮中断。',
1646
+ failureReason_panel_reload_interrupted_next: '可编辑后重发任务以继续。',
1647
+ failureReason_sensitive_content_blocked_user: '发送前发现敏感内容,Codex 没有收到这次请求。',
1648
+ failureReason_sensitive_content_blocked_next: '请移除敏感内容、缩小 @context,或在项目设置里允许敏感内容显式确认。',
1097
1649
  failureReason_project_snapshot_unavailable_user: 'Codex 没能读到 Overleaf 项目快照。',
1098
1650
  failureReason_project_snapshot_unavailable_next: '请刷新 Overleaf,然后重试本轮任务。',
1099
1651
  failureReason_selected_context_unresolved_user: 'Codex 没能解析所选的内容或上下文。',
1100
1652
  failureReason_selected_context_unresolved_next: '请重新选择目标,或者显式指定文件 / 区段。',
1653
+ failureReason_selection_scope_violation_user: '生成的一项改动超出了已附加的选区,已阻止写回。',
1654
+ failureReason_selection_scope_violation_next: '请重新选择目标范围,仅请求修改该范围。已写入的合法部分可撤销。',
1655
+ failureReason_governance_blocked_user: '项目文件规则阻止了此次写入。Codex 未写入受影响的路径。',
1656
+ failureReason_governance_blocked_next: '请在「设置 > 文件保护与隐私」中查看项目文件规则,然后请求修改允许写入的路径。',
1657
+ failureReason_governance_readonly_user: '项目文件规则将此操作涉及的路径标记为只读。Codex 未执行此操作。',
1658
+ failureReason_governance_readonly_next: '请在「设置 > 文件保护与隐私」中查看只读路径规则,然后请求修改允许写入的路径。',
1659
+ failureReason_governance_writable_allowlist_user: '此操作涉及的路径不在配置的可写路径范围内。Codex 未执行此操作。',
1660
+ failureReason_governance_writable_allowlist_next: '请在「设置 > 文件保护与隐私」中查看可写路径规则,然后请求修改允许范围内的路径。',
1101
1661
  failureReason_target_file_not_found_user: 'Codex 在当前 Overleaf 项目中没有找到 {file}。',
1102
1662
  failureReason_target_file_not_found_next: '请在 Overleaf 中核对文件名和路径后重试。',
1103
1663
  failureReason_target_file_open_failed_user: 'Codex 没能在 Overleaf 中打开 {file}。',
@@ -1124,6 +1684,8 @@
1124
1684
  failureReason_accept_not_verified_next: '请先在 Overleaf 审阅面板核对后再继续。',
1125
1685
  failureReason_native_bridge_unavailable_user: '扩展无法连接到 Codex Native Host。',
1126
1686
  failureReason_native_bridge_unavailable_next: '请运行 install-native,或者重新加载扩展。',
1687
+ failureReason_codex_context_limit_user: '本轮已停止:上下文超出模型的容量限制。',
1688
+ failureReason_codex_context_limit_next: '请重试任务;如果再次超限,可使用 /compact,或新建会话并减少上下文。',
1127
1689
  failureReason_codex_no_usable_result_user: '本地 Codex 没有返回可用的最终报告或操作。',
1128
1690
  failureReason_codex_no_usable_result_next: '请打开“技术细节”排查本地 Codex 错误。',
1129
1691
  failureReason_codex_project_locked_user: '同一个 Overleaf 项目里已经有一轮 Codex 任务正在运行。',
@@ -1132,6 +1694,10 @@
1132
1694
  failureReason_codex_timeout_next: '请检查本机 Codex 是否仍在运行;如果没有进展,可以中断后缩小 @context 再重试。',
1133
1695
  failureReason_codex_output_limit_user: '本地 Codex 输出过长,桥接器停止读取。',
1134
1696
  failureReason_codex_output_limit_next: '请缩小 @context 后重试,或在技术详情中查看输出限制。',
1697
+ failureReason_codex_local_skill_unavailable_user: '所选 Codex 本地技能不可用或已关闭,本轮没有启动。',
1698
+ failureReason_codex_local_skill_unavailable_next: '请打开技能页,选择可用且已启用的技能后重新提交。',
1699
+ failureReason_codex_local_skills_failed_user: 'Codex 本地技能未能加载,本轮没有启动。',
1700
+ failureReason_codex_local_skills_failed_next: '请打开技能页重新加载本地目录,然后重新提交。',
1135
1701
  failureReason_codex_not_found_user: '本机没有找到 Codex CLI。',
1136
1702
  failureReason_codex_not_found_next: '请确认终端里可以运行 `codex`,然后重新安装 native host 或刷新扩展后重试。',
1137
1703
  failureReason_storage_quota_exceeded_user: '浏览器本地存储配额已超出。',