codex-overleaf-link 2.5.1 → 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 (93) hide show
  1. package/README.md +149 -398
  2. package/README.zh-CN.md +153 -404
  3. package/extension/bootstrap/manifest.template.json +1 -1
  4. package/extension/src/background.js +78 -3
  5. package/extension/src/backgroundSharedSessions.js +55 -2
  6. package/extension/src/backgroundUpdateCoordinator.js +128 -12
  7. package/extension/src/content/activeTurnControl.js +164 -7
  8. package/extension/src/content/composerAttachments.js +11 -2
  9. package/extension/src/content/composerPanel.js +92 -12
  10. package/extension/src/content/contentRuntime.js +920 -276
  11. package/extension/src/content/contextTray.js +8 -2
  12. package/extension/src/content/contextUsageView.js +267 -0
  13. package/extension/src/content/diagnosticsPanel.js +18 -0
  14. package/extension/src/content/generated/content.bundle.js +4496 -924
  15. package/extension/src/content/generated/content.bundle.meta.json +6 -3
  16. package/extension/src/content/legacyGlobalRegistry.js +4 -0
  17. package/extension/src/content/localSkillsPanel.js +2 -2
  18. package/extension/src/content/markdownDomRenderer.js +5 -3
  19. package/extension/src/content/markdownText.js +42 -5
  20. package/extension/src/content/modelPicker.js +1 -0
  21. package/extension/src/content/nativeCompatibilityController.js +29 -10
  22. package/extension/src/content/otWarmMirror.js +1 -1
  23. package/extension/src/content/pageBridgeClient.js +2 -2
  24. package/extension/src/content/panelMaintenance.js +6 -2
  25. package/extension/src/content/panelRenderer.js +51 -27
  26. package/extension/src/content/pendingInputView.js +1 -1
  27. package/extension/src/content/projectSettingsCoordinator.js +30 -6
  28. package/extension/src/content/providerSettingsDialog.js +2 -1
  29. package/extension/src/content/recentProjects.js +4 -3
  30. package/extension/src/content/runActivitySummary.js +122 -14
  31. package/extension/src/content/runCompletionMeta.js +194 -6
  32. package/extension/src/content/runController.js +2 -1
  33. package/extension/src/content/runFailureNotice.js +8 -1
  34. package/extension/src/content/runPresence.js +18 -8
  35. package/extension/src/content/runQueueScheduler.js +9 -5
  36. package/extension/src/content/runRecoveryActions.js +2 -1
  37. package/extension/src/content/runResultActions.js +22 -20
  38. package/extension/src/content/runReviewController.js +94 -35
  39. package/extension/src/content/runTimelineView.js +224 -25
  40. package/extension/src/content/scopedPersistencePanelState.js +92 -23
  41. package/extension/src/content/sensitivePreflight.js +14 -1
  42. package/extension/src/content/sessionManager.js +49 -3
  43. package/extension/src/content/sessionMenuView.js +54 -18
  44. package/extension/src/content/sessionPersistence.js +25 -5
  45. package/extension/src/content/settingsPanel.js +15 -2
  46. package/extension/src/content/settingsWorkbench.js +127 -89
  47. package/extension/src/content/sharedSessionViewSync.js +4 -3
  48. package/extension/src/content/subagentActivityView.js +23 -7
  49. package/extension/src/content/updateNotice.js +60 -6
  50. package/extension/src/content/writebackOrchestrator.js +35 -22
  51. package/extension/src/page/compileBridge.js +193 -180
  52. package/extension/src/page/overleafCapabilities.js +4 -1
  53. package/extension/src/page/textCoordinates.js +17 -1
  54. package/extension/src/page/textFileCreator.js +9 -1
  55. package/extension/src/page/writebackRouter.js +24 -77
  56. package/extension/src/pageBridge.js +107 -66
  57. package/extension/src/popup.js +1 -1
  58. package/extension/src/shared/agentTranscript.js +350 -17
  59. package/extension/src/shared/auditRecords.js +2 -0
  60. package/extension/src/shared/compatibility.js +1 -1
  61. package/extension/src/shared/compileAdapter.js +58 -17
  62. package/extension/src/shared/composerAttachmentDraft.js +6 -1
  63. package/extension/src/shared/contextUsage.js +125 -0
  64. package/extension/src/shared/failureReasons.js +42 -3
  65. package/extension/src/shared/i18n.js +299 -29
  66. package/extension/src/shared/lineReferences.js +38 -31
  67. package/extension/src/shared/pageRpcContract.js +1 -1
  68. package/extension/src/shared/panelIcons.js +39 -0
  69. package/extension/src/shared/reviewing.js +130 -1
  70. package/extension/src/shared/runActivityModel.js +70 -4
  71. package/extension/src/shared/runExecutionSnapshot.js +13 -0
  72. package/extension/src/shared/sessionState.js +63 -4
  73. package/extension/src/shared/sessionTitle.js +14 -1
  74. package/extension/src/shared/sharedSessionBridge.js +81 -13
  75. package/extension/src/shared/staleGuard.js +72 -63
  76. package/extension/src/shared/storageDb.js +35 -3
  77. package/extension/src/shared/storageMigration.js +7 -1
  78. package/extension/src/shared/storageRunActions.js +62 -8
  79. package/extension/src/shared/undoOperations.js +126 -28
  80. package/extension/src/shared/updateRuntimeIdentity.js +16 -2
  81. package/extension/src/shared/writebackSettlement.js +21 -3
  82. package/extension/styles/panel.css +1106 -490
  83. package/native-host/src/bootstrapUpdate.js +52 -16
  84. package/native-host/src/chatBridgeRequest.js +60 -6
  85. package/native-host/src/chatBridgeResponse.js +10 -1
  86. package/native-host/src/chatCompletionsBridge.js +29 -2
  87. package/native-host/src/codexPromptAssembly.js +86 -118
  88. package/native-host/src/codexSessionRunner.js +126 -17
  89. package/native-host/src/providerContextError.js +20 -0
  90. package/native-host/src/taskRunnerRuntime.js +18 -6
  91. package/native-host/src/textPatch.js +473 -377
  92. package/native-host/src/updateManager.js +120 -15
  93. package/package.json +5 -8
@@ -12,6 +12,63 @@
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",
15
72
  failureReason_base_file_missing_at_start_user: "A file needed for this task was missing during the initial project read.",
16
73
  failureReason_base_file_missing_at_start_next: "Refresh project context and rerun.",
17
74
  failureReason_target_file_missing_path_user: "The change did not include a target file path.",
@@ -40,6 +97,24 @@
40
97
  failureReason_subagent_unfinished_output_next: "Have the main agent complete and adopt the pending file.",
41
98
  failureReason_subagent_unauthorized_edit_user: "A file changed outside the subagent ownership boundary and was not synced.",
42
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.",
43
118
  failureReason_reviewing_enable_failed_user: "Codex could not enable Reviewing when it needed to.",
44
119
  failureReason_reviewing_enable_failed_next: "Enable Reviewing manually or retry.",
45
120
  failureReason_reviewing_disable_failed_user: "Codex could not switch to Editing / no-trace mode.",
@@ -130,6 +205,8 @@
130
205
  resizePanel: 'Drag to resize the Codex panel. Double click to reset.',
131
206
  codexActions: 'Codex actions',
132
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',
133
210
  diagnosticsMenu: 'Diagnostics',
134
211
  diagnosticsHint: 'Use when Codex cannot run, write, or read files',
135
212
  diagnosticsRunAllTitle: 'Run all checks',
@@ -189,6 +266,9 @@
189
266
  nativeCompatibilityBlockedProtocol: 'Native host protocol mismatch before {method}. Update the extension and native host together.',
190
267
  nativeCompatibilityBlockedUnhealthy: 'Local Codex is not ready for {method}. Open Diagnostics > Check Local Connection for details.',
191
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',
192
272
  nativeCompatibilityBlockedGeneric: 'Native host is not compatible with this extension for {method}. Update the native host and extension, then try again.',
193
273
  diagnosticsPageLoading: 'Checking the current file, write access, and track changes.',
194
274
  diagnosticsLoading: 'Checking current state.',
@@ -208,6 +288,9 @@
208
288
  threadResumeNew: 'New thread',
209
289
  sessionsHead: 'Sessions',
210
290
  sessionMenuOpen: 'Switch session',
291
+ sessionMenuNewShort: 'New',
292
+ sessionMenuRenameShort: 'Rename',
293
+ sessionMenuDeleteShort: 'Delete',
211
294
  sessionListEmpty: 'No saved sessions yet — start a task to create one.',
212
295
  deleteSessionDeletedToast: 'Session deleted.',
213
296
  resetSessionTitle: 'Start a fresh session?',
@@ -254,6 +337,7 @@
254
337
  undoRunTitle: 'Undo this run\'s Overleaf writes',
255
338
  undoPartialRunTitle: 'Undo the parts of this run already written to Overleaf',
256
339
  undoAppliedTitle: 'This run\'s writes have been undone',
340
+ undoAcceptedTitle: 'These changes were accepted in Overleaf, so Undo is no longer available.',
257
341
  undoNoWritesTitle: 'No writes in this run; nothing to undo.',
258
342
  undoUnsafeFullFileTitle: 'Blocked legacy full-file undo',
259
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.',
@@ -262,11 +346,11 @@
262
346
  undoConfirm: 'Undo writes',
263
347
  undoNoTraceStarted: 'Starting no-track undo for this run',
264
348
  undoResult: 'Undo result: undone {applied} item(s), skipped {skipped} item(s)',
265
- undoTrackedTitle: 'Reject this run\'s Overleaf tracked changes?',
349
+ undoTrackedTitle: 'Undo this run\'s tracked changes?',
266
350
  undoNativeTitle: 'Undo this run\'s Overleaf writes?',
267
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.',
268
352
  undoNativeMessage: 'Undo this run\'s changes in {files}.',
269
- undoTrackedConfirm: 'Reject this run',
353
+ undoTrackedConfirm: 'Undo changes',
270
354
  undoTrackedStarted: 'Starting rejection of this run\'s Overleaf tracked changes',
271
355
  undoNativeStarted: 'Undoing this run\'s changes',
272
356
  undoTrackedResult: 'Undo result: rejected {applied} tracked change(s), skipped {skipped}',
@@ -363,8 +447,14 @@
363
447
  codexLocalSkillsSkipped: '{count} local skills could not be loaded.',
364
448
  codexLocalSkillsLoadFailed: 'Could not load local Codex skills. Open Skills again to retry.',
365
449
  codexLocalSkillsDisabled: 'Local Codex skills are disabled for runs.',
366
- slashUseLocalSkillSubtitle: 'Local Codex · Use for this turn',
367
- slashUseOverleafSkillSubtitle: 'Codex Overleaf · Use for this turn',
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',
368
458
  codexOverleafSkillsEmpty: 'No Codex Overleaf skills installed.',
369
459
  codexOverleafSkillsDisabled: 'Codex Overleaf skills are disabled for runs.',
370
460
  loadCodexLocalSkills: 'Load local Codex skills',
@@ -382,6 +472,13 @@
382
472
  codexOverleafSkillsSummaryOff: 'Off',
383
473
  codexOverleafSkillsSummaryCount: '{count} enabled',
384
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.',
385
482
  slashInstallSkillSubtitle: 'Use the Codex skill installer with natural language.',
386
483
  slashUseSkillSubtitle: 'Use this skill for the next Codex turn.',
387
484
  skillInstallerComposerLabel: 'Skill Installer',
@@ -396,18 +493,14 @@
396
493
  settingsSaved: 'Saved',
397
494
  appearanceTitle: 'Appearance',
398
495
  settingsWorkbenchTitle: 'Settings',
399
- settingsWorkbenchSubtitle: 'Preferences, project rules, and local tools.',
400
- settingsWorkbenchGeneral: 'General & appearance',
496
+ settingsWorkbenchWriting: 'Writing',
401
497
  settingsWorkbenchModels: 'Models & connections',
402
- settingsWorkbenchContext: 'Project context',
403
- settingsWorkbenchInstructions: 'Instructions & skills',
498
+ settingsWorkbenchContextSkills: 'Context & skills',
404
499
  settingsWorkbenchProtection: 'Protection & privacy',
405
- settingsWorkbenchHistory: 'History & storage',
406
- settingsWorkbenchAll: 'All settings',
407
- settingsWorkbenchFilter: 'Filter settings by scope',
500
+ settingsWorkbenchChanges: 'History',
408
501
  settingsWorkbenchCategories: 'Settings categories',
409
- settingsWorkbenchProjectFilter: 'Show only settings that apply to this project.',
410
- settingsWorkbenchOpenProject: 'Open a project to configure its settings.',
502
+ settingsPageScopeProject: 'Only for this project',
503
+ settingsPageScopeGlobal: 'Applies to all projects',
411
504
  settingsWorkbenchClose: 'Close settings',
412
505
  settingsWorkbenchEnableSkills: 'Enable Overleaf skills',
413
506
  settingsWorkbenchSkillsHelp: 'Turn off Overleaf skills without changing individual selections.',
@@ -480,6 +573,10 @@
480
573
  diagnosticsDotWarn: 'Diagnostics — something needs attention',
481
574
  diagnosticsDotFail: 'Diagnostics — a check failed, click to inspect',
482
575
  diagnosticsDotUnknown: 'Diagnostics',
576
+ diagnosticsPillOk: 'Ready',
577
+ diagnosticsPillWarn: 'Attention',
578
+ diagnosticsPillFail: 'Problem',
579
+ diagnosticsPillUnknown: 'Checking',
483
580
  reasoningLabel: 'Reasoning effort',
484
581
  speedLabel: 'Speed',
485
582
  requireReviewing: 'Track',
@@ -547,6 +644,33 @@
547
644
  queuedInputError_queue_full: 'The follow-up queue is full.',
548
645
  queuedInputError_queue_too_large: 'The follow-up queue reached its storage limit.',
549
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.',
550
674
  refreshFileList: 'Refresh file list',
551
675
  contextStatus: 'Type @ to add files, or click +: files, attachments (PDF/images), @compile-log.',
552
676
  contextLoadingFiles: 'Reading available @files...',
@@ -583,6 +707,11 @@
583
707
  fileContext: 'has selected @file context',
584
708
  contextContext: 'has selected @context',
585
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',
586
715
  refreshProbeDone: 'Refreshed: {status}',
587
716
  refreshProbeFailed: 'Refresh failed. Reload Overleaf and try again.',
588
717
  processedFailed: 'Failed {elapsed}',
@@ -630,6 +759,10 @@
630
759
  failureReason_accept_replay_failed_next: 'Inspect the file in Overleaf, then retry.',
631
760
  failureReason_native_request_failed_user: 'The request to the local Codex bridge failed.',
632
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.',
633
766
  failureReason_project_snapshot_unavailable_user: 'Codex could not read the Overleaf project snapshot.',
634
767
  failureReason_project_snapshot_unavailable_next: 'Refresh Overleaf, then rerun the task.',
635
768
  failureReason_selected_context_unresolved_user: 'Codex could not resolve the requested selection or context.',
@@ -668,6 +801,8 @@
668
801
  failureReason_accept_not_verified_next: 'Inspect Overleaf Reviewing before continuing.',
669
802
  failureReason_native_bridge_unavailable_user: 'Extension cannot connect to the Codex native host.',
670
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.',
671
806
  failureReason_codex_no_usable_result_user: 'Local Codex returned no usable final report or operations.',
672
807
  failureReason_codex_no_usable_result_next: 'Open Technical Details and resolve the local Codex error.',
673
808
  failureReason_codex_project_locked_user: 'Another Codex task is already running for this Overleaf project.',
@@ -761,6 +896,63 @@
761
896
  recentProjects_badge_abandoned_after_navigation: 'Last run stopped after navigation'
762
897
  },
763
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: "无法完成撤销",
764
956
  failureReason_base_file_missing_at_start_user: "首次读取项目时,缺少本任务所需的文件。",
765
957
  failureReason_base_file_missing_at_start_next: "请刷新项目上下文后重新运行。",
766
958
  failureReason_target_file_missing_path_user: "改动中未包含目标文件路径。",
@@ -789,6 +981,24 @@
789
981
  failureReason_subagent_unfinished_output_next: "请由主代理完成并采纳待处理文件。",
790
982
  failureReason_subagent_unauthorized_edit_user: "文件修改超出了子代理负责的范围,因此未同步。",
791
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 仍会记录改动,方便撤销。",
792
1002
  failureReason_reviewing_enable_failed_user: "Codex 无法在需要时启用审阅模式。",
793
1003
  failureReason_reviewing_enable_failed_next: "请手动启用审阅模式,或重试。",
794
1004
  failureReason_reviewing_disable_failed_user: "Codex 无法切换到不留痕的编辑模式。",
@@ -879,6 +1089,8 @@
879
1089
  resizePanel: '拖动调整 Codex 面板宽度,双击恢复默认宽度',
880
1090
  codexActions: 'Codex 操作',
881
1091
  refreshProbe: '重新检测当前文件状态;不会同步或修改文件',
1092
+ refreshProbeTitle: '刷新文件状态',
1093
+ refreshProbeSubtitle: '重新读取 Overleaf 状态;不会同步或修改文件',
882
1094
  diagnosticsMenu: '排查问题',
883
1095
  diagnosticsHint: '遇到无法运行、无法写入、读不到文件时使用',
884
1096
  diagnosticsRunAllTitle: '运行全部检查',
@@ -938,6 +1150,9 @@
938
1150
  nativeCompatibilityBlockedProtocol: '执行 {method} 前发现 native host 协议不匹配。请同时更新扩展和 native host。',
939
1151
  nativeCompatibilityBlockedUnhealthy: '本机 Codex 还不能执行 {method}。请打开“排查问题 > 检查本机连接”查看详情。',
940
1152
  nativeCompatibilityBlockedMissing: '执行 {method} 时没有连接到 native host。请安装本机 native host,重新加载扩展后再试。',
1153
+ nativeCompatibilityMissingTitle: 'Native host 未连接',
1154
+ nativeCompatibilityMissingGuidance: '请安装本机 native host,重新加载扩展后再试。',
1155
+ nativeCompatibilityUnavailableFeatures: '{count} 项功能不可用',
941
1156
  nativeCompatibilityBlockedGeneric: '当前 native host 与扩展不兼容,不能执行 {method}。请更新 native host 和扩展后再试。',
942
1157
  diagnosticsPageLoading: '确认当前文件、写入能力和留痕状态。',
943
1158
  diagnosticsLoading: '正在检查当前状态。',
@@ -957,6 +1172,9 @@
957
1172
  threadResumeNew: '新建线程',
958
1173
  sessionsHead: '会话',
959
1174
  sessionMenuOpen: '切换会话',
1175
+ sessionMenuNewShort: '新建',
1176
+ sessionMenuRenameShort: '重命名',
1177
+ sessionMenuDeleteShort: '删除',
960
1178
  sessionListEmpty: '还没有保存的会话——发起一个任务即可创建。',
961
1179
  deleteSessionDeletedToast: '已删除会话。',
962
1180
  resetSessionTitle: '开一个新会话?',
@@ -1003,6 +1221,7 @@
1003
1221
  undoRunTitle: '撤销本轮写入到 Overleaf 的改动',
1004
1222
  undoPartialRunTitle: '撤销本轮已经写入 Overleaf 的部分改动',
1005
1223
  undoAppliedTitle: '本轮写入已经撤销',
1224
+ undoAcceptedTitle: '这些改动已在 Overleaf 中接受,无法再撤销。',
1006
1225
  undoNoWritesTitle: '本轮没有写入,无需撤销。',
1007
1226
  undoUnsafeFullFileTitle: '已阻止旧格式全文撤销',
1008
1227
  undoUnsafeFullFileReason: '这个撤销点会用全文替换恢复文件,在 Overleaf 留痕模式下会把整篇文档标成改动。请重新运行任务生成局部撤销点,或手动处理这次历史改动。',
@@ -1011,11 +1230,11 @@
1011
1230
  undoConfirm: '撤销写入',
1012
1231
  undoNoTraceStarted: '开始无留痕撤销本轮写入',
1013
1232
  undoResult: '撤销结果:已撤销 {applied} 项,跳过 {skipped} 项',
1014
- undoTrackedTitle: '拒绝本轮 Overleaf 留痕改动?',
1233
+ undoTrackedTitle: '撤销本轮留痕改动?',
1015
1234
  undoNativeTitle: '撤销本轮 Overleaf 写入?',
1016
1235
  undoTrackedMessage: '将通过 Overleaf 自己的 Reject/拒绝功能撤销 {files}。\n\n这不会用文本补丁重写文件;如果插件不能确认对应留痕记录,会停止并让你在 Overleaf 审阅面板手动处理。',
1017
1236
  undoNativeMessage: '撤销本轮在 {files} 中的改动。',
1018
- undoTrackedConfirm: '拒绝本轮改动',
1237
+ undoTrackedConfirm: '撤销改动',
1019
1238
  undoTrackedStarted: '开始拒绝本轮 Overleaf 留痕改动',
1020
1239
  undoNativeStarted: '正在撤销本轮改动',
1021
1240
  undoTrackedResult: '撤销结果:已拒绝 {applied} 条留痕,跳过 {skipped} 条',
@@ -1112,8 +1331,14 @@
1112
1331
  codexLocalSkillsSkipped: '有 {count} 个本地技能未能加载。',
1113
1332
  codexLocalSkillsLoadFailed: '无法加载 Codex 本地技能,请重新打开技能页重试。',
1114
1333
  codexLocalSkillsDisabled: '运行时已禁用 Codex 本地技能。',
1115
- slashUseLocalSkillSubtitle: 'Codex 本地 · 本轮使用',
1116
- slashUseOverleafSkillSubtitle: 'Codex Overleaf · 本轮使用',
1334
+ slashUseLocalSkillSubtitle: '本轮使用',
1335
+ slashUseOverleafSkillSubtitle: '本轮使用',
1336
+ slashGroupCommands: '命令',
1337
+ slashGroupOverleafSkills: 'Codex Overleaf 技能',
1338
+ slashGroupLocalSkills: 'Codex 本地技能',
1339
+ slashKeyMove: '选择',
1340
+ slashKeyRun: '执行',
1341
+ slashKeyClose: '关闭',
1117
1342
  codexOverleafSkillsEmpty: '没有安装 Codex Overleaf 专属技能。',
1118
1343
  codexOverleafSkillsDisabled: '运行时已禁用 Codex Overleaf 专属技能。',
1119
1344
  loadCodexLocalSkills: '加载 Codex 本地技能',
@@ -1131,6 +1356,13 @@
1131
1356
  codexOverleafSkillsSummaryOff: '已关闭',
1132
1357
  codexOverleafSkillsSummaryCount: '已启用 {count} 个',
1133
1358
  slashInstallSkillTitle: '安装 skill',
1359
+ slashCompactTitle: '压缩上下文',
1360
+ slashCompactSubtitle: '整理此前的对话,释放上下文窗口',
1361
+ compactNoThread: '请先开始一轮对话,再压缩上下文。',
1362
+ compactBusy: '请等待当前任务结束后再压缩上下文。',
1363
+ compactUnsupported: '当前本地 Codex 连接不支持手动压缩,请更新 Codex 并重新加载扩展。',
1364
+ compactCompleted: '会话上下文已压缩。',
1365
+ compactFailed: '上下文压缩未完成,请查看技术详情后再重试。',
1134
1366
  slashInstallSkillSubtitle: '用自然语言调用 Codex 的 skill installer。',
1135
1367
  slashUseSkillSubtitle: '本轮使用这个 skill。',
1136
1368
  skillInstallerComposerLabel: 'Skill Installer',
@@ -1145,18 +1377,14 @@
1145
1377
  settingsSaved: '已保存',
1146
1378
  appearanceTitle: '外观',
1147
1379
  settingsWorkbenchTitle: '设置',
1148
- settingsWorkbenchSubtitle: '偏好设置、项目规则与本地工具。',
1149
- settingsWorkbenchGeneral: '常规与外观',
1380
+ settingsWorkbenchWriting: '写作',
1150
1381
  settingsWorkbenchModels: '模型与连接',
1151
- settingsWorkbenchContext: '项目上下文',
1152
- settingsWorkbenchInstructions: '指令与技能',
1382
+ settingsWorkbenchContextSkills: '上下文与技能',
1153
1383
  settingsWorkbenchProtection: '文件保护与隐私',
1154
- settingsWorkbenchHistory: '历史与存储',
1155
- settingsWorkbenchAll: '全部设置',
1156
- settingsWorkbenchFilter: '按作用范围筛选设置',
1384
+ settingsWorkbenchChanges: '修改记录',
1157
1385
  settingsWorkbenchCategories: '设置分类',
1158
- settingsWorkbenchProjectFilter: '仅显示作用于当前项目的设置。',
1159
- settingsWorkbenchOpenProject: '进入项目后可配置项目设置。',
1386
+ settingsPageScopeProject: '仅当前项目',
1387
+ settingsPageScopeGlobal: '适用于所有项目',
1160
1388
  settingsWorkbenchClose: '关闭设置',
1161
1389
  settingsWorkbenchEnableSkills: '启用 Overleaf 技能',
1162
1390
  settingsWorkbenchSkillsHelp: '关闭 Overleaf 技能时,各项选择会保留。',
@@ -1229,6 +1457,10 @@
1229
1457
  diagnosticsDotWarn: '诊断——有需要留意的项',
1230
1458
  diagnosticsDotFail: '诊断——有检查未通过,点击查看',
1231
1459
  diagnosticsDotUnknown: '诊断',
1460
+ diagnosticsPillOk: '就绪',
1461
+ diagnosticsPillWarn: '需留意',
1462
+ diagnosticsPillFail: '有问题',
1463
+ diagnosticsPillUnknown: '检查中',
1232
1464
  reasoningLabel: '推理强度',
1233
1465
  speedLabel: '速度',
1234
1466
  requireReviewing: '留痕',
@@ -1296,6 +1528,33 @@
1296
1528
  queuedInputError_queue_full: '后续任务队列已满。',
1297
1529
  queuedInputError_queue_too_large: '后续任务队列已达到存储上限。',
1298
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: '把此前的对话整理为摘要,释放上下文窗口;不读取或修改文档。',
1299
1558
  refreshFileList: '刷新文件列表',
1300
1559
  contextStatus: '输入 @ 添加文件,或点 +:文件、附件(PDF/图片)、@compile-log。',
1301
1560
  contextLoadingFiles: '正在读取可添加的 @文件...',
@@ -1332,6 +1591,11 @@
1332
1591
  fileContext: '已选择 @file 上下文',
1333
1592
  contextContext: '已选择 @context',
1334
1593
  refreshProbeLoading: '正在重新检测当前文件、写入权限和留痕状态...',
1594
+ probeScopeCurrentFile: '当前文件',
1595
+ probeScopeSelection: '已选文本',
1596
+ probeScopeFiles: '已选文件',
1597
+ probeScopeContext: '已选上下文',
1598
+ probeScopeProject: '整个项目',
1335
1599
  refreshProbeDone: '已重新检测:{status}',
1336
1600
  refreshProbeFailed: '检测失败:请刷新 Overleaf 页面后重试',
1337
1601
  processedFailed: '处理失败 {elapsed}',
@@ -1378,6 +1642,10 @@
1378
1642
  failureReason_accept_replay_failed_next: '请在 Overleaf 中检查该文件后重试。',
1379
1643
  failureReason_native_request_failed_user: '向本地 Codex bridge 的请求失败。',
1380
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,或在项目设置里允许敏感内容显式确认。',
1381
1649
  failureReason_project_snapshot_unavailable_user: 'Codex 没能读到 Overleaf 项目快照。',
1382
1650
  failureReason_project_snapshot_unavailable_next: '请刷新 Overleaf,然后重试本轮任务。',
1383
1651
  failureReason_selected_context_unresolved_user: 'Codex 没能解析所选的内容或上下文。',
@@ -1385,11 +1653,11 @@
1385
1653
  failureReason_selection_scope_violation_user: '生成的一项改动超出了已附加的选区,已阻止写回。',
1386
1654
  failureReason_selection_scope_violation_next: '请重新选择目标范围,仅请求修改该范围。已写入的合法部分可撤销。',
1387
1655
  failureReason_governance_blocked_user: '项目文件规则阻止了此次写入。Codex 未写入受影响的路径。',
1388
- failureReason_governance_blocked_next: '请在「设置 > 保护与隐私」中查看项目文件规则,然后请求修改允许写入的路径。',
1656
+ failureReason_governance_blocked_next: '请在「设置 > 文件保护与隐私」中查看项目文件规则,然后请求修改允许写入的路径。',
1389
1657
  failureReason_governance_readonly_user: '项目文件规则将此操作涉及的路径标记为只读。Codex 未执行此操作。',
1390
- failureReason_governance_readonly_next: '请在「设置 > 保护与隐私」中查看只读路径规则,然后请求修改允许写入的路径。',
1658
+ failureReason_governance_readonly_next: '请在「设置 > 文件保护与隐私」中查看只读路径规则,然后请求修改允许写入的路径。',
1391
1659
  failureReason_governance_writable_allowlist_user: '此操作涉及的路径不在配置的可写路径范围内。Codex 未执行此操作。',
1392
- failureReason_governance_writable_allowlist_next: '请在「设置 > 保护与隐私」中查看可写路径规则,然后请求修改允许范围内的路径。',
1660
+ failureReason_governance_writable_allowlist_next: '请在「设置 > 文件保护与隐私」中查看可写路径规则,然后请求修改允许范围内的路径。',
1393
1661
  failureReason_target_file_not_found_user: 'Codex 在当前 Overleaf 项目中没有找到 {file}。',
1394
1662
  failureReason_target_file_not_found_next: '请在 Overleaf 中核对文件名和路径后重试。',
1395
1663
  failureReason_target_file_open_failed_user: 'Codex 没能在 Overleaf 中打开 {file}。',
@@ -1416,6 +1684,8 @@
1416
1684
  failureReason_accept_not_verified_next: '请先在 Overleaf 审阅面板核对后再继续。',
1417
1685
  failureReason_native_bridge_unavailable_user: '扩展无法连接到 Codex Native Host。',
1418
1686
  failureReason_native_bridge_unavailable_next: '请运行 install-native,或者重新加载扩展。',
1687
+ failureReason_codex_context_limit_user: '本轮已停止:上下文超出模型的容量限制。',
1688
+ failureReason_codex_context_limit_next: '请重试任务;如果再次超限,可使用 /compact,或新建会话并减少上下文。',
1419
1689
  failureReason_codex_no_usable_result_user: '本地 Codex 没有返回可用的最终报告或操作。',
1420
1690
  failureReason_codex_no_usable_result_next: '请打开“技术细节”排查本地 Codex 错误。',
1421
1691
  failureReason_codex_project_locked_user: '同一个 Overleaf 项目里已经有一轮 Codex 任务正在运行。',