codex-overleaf-link 2.5.1 → 2.6.5

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 (111) 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 +148 -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 +46 -10
  9. package/extension/src/content/composerPanel.js +92 -12
  10. package/extension/src/content/contentRuntime.js +1114 -321
  11. package/extension/src/content/contextTray.js +8 -2
  12. package/extension/src/content/contextUsageView.js +267 -0
  13. package/extension/src/content/diagnosticsController.js +77 -34
  14. package/extension/src/content/diagnosticsExport.js +1 -1
  15. package/extension/src/content/diagnosticsPanel.js +147 -42
  16. package/extension/src/content/generated/content.bundle.js +5761 -1237
  17. package/extension/src/content/generated/content.bundle.meta.json +6 -3
  18. package/extension/src/content/legacyGlobalRegistry.js +4 -0
  19. package/extension/src/content/localSkillsPanel.js +6 -4
  20. package/extension/src/content/markdownDomRenderer.js +5 -3
  21. package/extension/src/content/markdownText.js +53 -14
  22. package/extension/src/content/modelPicker.js +29 -19
  23. package/extension/src/content/nativeCompatibilityController.js +52 -19
  24. package/extension/src/content/otWarmMirror.js +1 -1
  25. package/extension/src/content/pageBridgeClient.js +7 -7
  26. package/extension/src/content/panelMaintenance.js +10 -2
  27. package/extension/src/content/panelRenderer.js +55 -28
  28. package/extension/src/content/pendingInputView.js +1 -1
  29. package/extension/src/content/projectSettingsCoordinator.js +30 -6
  30. package/extension/src/content/providerSettingsDialog.js +28 -19
  31. package/extension/src/content/recentProjects.js +30 -19
  32. package/extension/src/content/runActivitySummary.js +122 -14
  33. package/extension/src/content/runCompletionMeta.js +194 -6
  34. package/extension/src/content/runController.js +2 -1
  35. package/extension/src/content/runFailureNotice.js +8 -1
  36. package/extension/src/content/runPresence.js +18 -8
  37. package/extension/src/content/runQueueScheduler.js +27 -13
  38. package/extension/src/content/runRecoveryActions.js +2 -1
  39. package/extension/src/content/runResultActions.js +73 -24
  40. package/extension/src/content/runReviewController.js +102 -37
  41. package/extension/src/content/runTimelineView.js +224 -25
  42. package/extension/src/content/scopedPersistencePanelState.js +124 -46
  43. package/extension/src/content/selectionContextView.js +30 -3
  44. package/extension/src/content/sensitivePreflight.js +14 -1
  45. package/extension/src/content/sessionManager.js +49 -3
  46. package/extension/src/content/sessionMenuView.js +54 -18
  47. package/extension/src/content/sessionPersistence.js +25 -5
  48. package/extension/src/content/settingsPanel.js +15 -2
  49. package/extension/src/content/settingsWorkbench.js +127 -89
  50. package/extension/src/content/sharedSessionViewSync.js +13 -4
  51. package/extension/src/content/subagentActivityView.js +23 -7
  52. package/extension/src/content/updateNotice.js +60 -6
  53. package/extension/src/content/writebackOrchestrator.js +301 -72
  54. package/extension/src/content/writingStyleSettings.js +70 -17
  55. package/extension/src/page/compileBridge.js +193 -180
  56. package/extension/src/page/overleafCapabilities.js +4 -1
  57. package/extension/src/page/overleafEditor.js +12 -3
  58. package/extension/src/page/overleafProjectSnapshot.js +56 -3
  59. package/extension/src/page/snapshotRouter.js +75 -66
  60. package/extension/src/page/textCoordinates.js +17 -1
  61. package/extension/src/page/textFileCreator.js +9 -1
  62. package/extension/src/page/treeOperations.js +200 -19
  63. package/extension/src/page/writebackRouter.js +172 -113
  64. package/extension/src/pageBridge.js +124 -73
  65. package/extension/src/popup.js +1 -1
  66. package/extension/src/shared/agentTranscript.js +372 -18
  67. package/extension/src/shared/auditRecords.js +3 -0
  68. package/extension/src/shared/compatibility.js +1 -1
  69. package/extension/src/shared/compileAdapter.js +58 -17
  70. package/extension/src/shared/composerAttachmentDraft.js +27 -7
  71. package/extension/src/shared/contextUsage.js +125 -0
  72. package/extension/src/shared/failureReasons.js +57 -3
  73. package/extension/src/shared/i18n.js +315 -29
  74. package/extension/src/shared/lineReferences.js +38 -31
  75. package/extension/src/shared/pageRpcContract.js +1 -1
  76. package/extension/src/shared/panelIcons.js +39 -0
  77. package/extension/src/shared/projectFiles.js +2 -1
  78. package/extension/src/shared/reviewing.js +130 -1
  79. package/extension/src/shared/runActivityModel.js +70 -4
  80. package/extension/src/shared/runExecutionSnapshot.js +13 -0
  81. package/extension/src/shared/scopedPersistenceBrowserAdapter.js +34 -0
  82. package/extension/src/shared/sessionState.js +63 -4
  83. package/extension/src/shared/sessionTitle.js +14 -1
  84. package/extension/src/shared/sharedSessionBridge.js +81 -13
  85. package/extension/src/shared/staleGuard.js +130 -63
  86. package/extension/src/shared/storageDb.js +35 -3
  87. package/extension/src/shared/storageMigration.js +111 -2
  88. package/extension/src/shared/storageRunActions.js +62 -8
  89. package/extension/src/shared/undoOperations.js +126 -28
  90. package/extension/src/shared/updateRuntimeIdentity.js +16 -2
  91. package/extension/src/shared/writebackSettlement.js +21 -3
  92. package/extension/styles/panel.css +1293 -549
  93. package/native-host/src/bootstrapUpdate.js +52 -16
  94. package/native-host/src/chatBridgeRequest.js +60 -6
  95. package/native-host/src/chatBridgeResponse.js +10 -1
  96. package/native-host/src/chatCompletionsBridge.js +29 -2
  97. package/native-host/src/codexPromptAssembly.js +86 -118
  98. package/native-host/src/codexSessionRunner.js +127 -17
  99. package/native-host/src/debugLog.js +27 -3
  100. package/native-host/src/index.js +42 -11
  101. package/native-host/src/localSkills.js +1 -1
  102. package/native-host/src/mirrorWorkspace.js +47 -3
  103. package/native-host/src/nativeEnvironment.js +27 -5
  104. package/native-host/src/providerContextError.js +20 -0
  105. package/native-host/src/providerRuntime.js +1 -0
  106. package/native-host/src/skills/reviewer-response/SKILL.md +65 -0
  107. package/native-host/src/taskRunnerRuntime.js +28 -8
  108. package/native-host/src/textPatch.js +473 -377
  109. package/native-host/src/updateManager.js +144 -21
  110. package/native-host/src/writingStyleRuntime.js +1 -1
  111. 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.",
@@ -76,6 +151,8 @@
76
151
  failureReason_provider_request_rejected_next: "Review the model ID, reasoning controls, tool support, and request overrides.",
77
152
  failureReason_provider_rate_limited_user: "The provider rate limit was reached.",
78
153
  failureReason_provider_rate_limited_next: "Wait for the rate-limit window to recover and retry.",
154
+ failureReason_provider_quota_exceeded_user: "The model provider quota or billing limit was reached.",
155
+ failureReason_provider_quota_exceeded_next: "Check the provider account and plan, or switch model or provider before retrying.",
79
156
  failureReason_provider_connection_timeout_user: "The provider connection timed out.",
80
157
  failureReason_provider_connection_timeout_next: "Check the endpoint and network, then retry.",
81
158
  failureReason_provider_dns_failed_user: "The provider hostname could not be resolved.",
@@ -130,6 +207,8 @@
130
207
  resizePanel: 'Drag to resize the Codex panel. Double click to reset.',
131
208
  codexActions: 'Codex actions',
132
209
  refreshProbe: 'Refresh current file status. This will not sync or modify files.',
210
+ refreshProbeTitle: 'Refresh file status',
211
+ refreshProbeSubtitle: 'Re-reads Overleaf state; does not sync or modify files',
133
212
  diagnosticsMenu: 'Diagnostics',
134
213
  diagnosticsHint: 'Use when Codex cannot run, write, or read files',
135
214
  diagnosticsRunAllTitle: 'Run all checks',
@@ -189,6 +268,9 @@
189
268
  nativeCompatibilityBlockedProtocol: 'Native host protocol mismatch before {method}. Update the extension and native host together.',
190
269
  nativeCompatibilityBlockedUnhealthy: 'Local Codex is not ready for {method}. Open Diagnostics > Check Local Connection for details.',
191
270
  nativeCompatibilityBlockedMissing: 'Native host is not connected for {method}. Install the local native host, reload the extension, and try again.',
271
+ nativeCompatibilityMissingTitle: 'Native host is not connected',
272
+ nativeCompatibilityMissingGuidance: 'Install the local native host, reload the extension, and try again.',
273
+ nativeCompatibilityUnavailableFeatures: '{count} features unavailable',
192
274
  nativeCompatibilityBlockedGeneric: 'Native host is not compatible with this extension for {method}. Update the native host and extension, then try again.',
193
275
  diagnosticsPageLoading: 'Checking the current file, write access, and track changes.',
194
276
  diagnosticsLoading: 'Checking current state.',
@@ -208,6 +290,9 @@
208
290
  threadResumeNew: 'New thread',
209
291
  sessionsHead: 'Sessions',
210
292
  sessionMenuOpen: 'Switch session',
293
+ sessionMenuNewShort: 'New',
294
+ sessionMenuRenameShort: 'Rename',
295
+ sessionMenuDeleteShort: 'Delete',
211
296
  sessionListEmpty: 'No saved sessions yet — start a task to create one.',
212
297
  deleteSessionDeletedToast: 'Session deleted.',
213
298
  resetSessionTitle: 'Start a fresh session?',
@@ -254,6 +339,7 @@
254
339
  undoRunTitle: 'Undo this run\'s Overleaf writes',
255
340
  undoPartialRunTitle: 'Undo the parts of this run already written to Overleaf',
256
341
  undoAppliedTitle: 'This run\'s writes have been undone',
342
+ undoAcceptedTitle: 'These changes were accepted in Overleaf, so Undo is no longer available.',
257
343
  undoNoWritesTitle: 'No writes in this run; nothing to undo.',
258
344
  undoUnsafeFullFileTitle: 'Blocked legacy full-file undo',
259
345
  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 +348,11 @@
262
348
  undoConfirm: 'Undo writes',
263
349
  undoNoTraceStarted: 'Starting no-track undo for this run',
264
350
  undoResult: 'Undo result: undone {applied} item(s), skipped {skipped} item(s)',
265
- undoTrackedTitle: 'Reject this run\'s Overleaf tracked changes?',
351
+ undoTrackedTitle: 'Undo this run\'s tracked changes?',
266
352
  undoNativeTitle: 'Undo this run\'s Overleaf writes?',
267
353
  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
354
  undoNativeMessage: 'Undo this run\'s changes in {files}.',
269
- undoTrackedConfirm: 'Reject this run',
355
+ undoTrackedConfirm: 'Undo changes',
270
356
  undoTrackedStarted: 'Starting rejection of this run\'s Overleaf tracked changes',
271
357
  undoNativeStarted: 'Undoing this run\'s changes',
272
358
  undoTrackedResult: 'Undo result: rejected {applied} tracked change(s), skipped {skipped}',
@@ -363,8 +449,14 @@
363
449
  codexLocalSkillsSkipped: '{count} local skills could not be loaded.',
364
450
  codexLocalSkillsLoadFailed: 'Could not load local Codex skills. Open Skills again to retry.',
365
451
  codexLocalSkillsDisabled: 'Local Codex skills are disabled for runs.',
366
- slashUseLocalSkillSubtitle: 'Local Codex · Use for this turn',
367
- slashUseOverleafSkillSubtitle: 'Codex Overleaf · Use for this turn',
452
+ slashUseLocalSkillSubtitle: 'Use for this turn',
453
+ slashUseOverleafSkillSubtitle: 'Use for this turn',
454
+ slashGroupCommands: 'Commands',
455
+ slashGroupOverleafSkills: 'Codex Overleaf skills',
456
+ slashGroupLocalSkills: 'Local Codex skills',
457
+ slashKeyMove: 'Move',
458
+ slashKeyRun: 'Run',
459
+ slashKeyClose: 'Close',
368
460
  codexOverleafSkillsEmpty: 'No Codex Overleaf skills installed.',
369
461
  codexOverleafSkillsDisabled: 'Codex Overleaf skills are disabled for runs.',
370
462
  loadCodexLocalSkills: 'Load local Codex skills',
@@ -382,6 +474,13 @@
382
474
  codexOverleafSkillsSummaryOff: 'Off',
383
475
  codexOverleafSkillsSummaryCount: '{count} enabled',
384
476
  slashInstallSkillTitle: 'Install skill',
477
+ slashCompactTitle: 'Compact context',
478
+ slashCompactSubtitle: 'Summarize earlier turns to free the context window',
479
+ compactNoThread: 'Start a conversation before compacting its context.',
480
+ compactBusy: 'Wait for the current task to finish before compacting context.',
481
+ compactUnsupported: 'This local Codex connection does not support manual compaction. Update Codex and reload the extension.',
482
+ compactCompleted: 'Conversation context compacted.',
483
+ compactFailed: 'Context compaction did not complete. Check Technical Details before retrying.',
385
484
  slashInstallSkillSubtitle: 'Use the Codex skill installer with natural language.',
386
485
  slashUseSkillSubtitle: 'Use this skill for the next Codex turn.',
387
486
  skillInstallerComposerLabel: 'Skill Installer',
@@ -396,18 +495,14 @@
396
495
  settingsSaved: 'Saved',
397
496
  appearanceTitle: 'Appearance',
398
497
  settingsWorkbenchTitle: 'Settings',
399
- settingsWorkbenchSubtitle: 'Preferences, project rules, and local tools.',
400
- settingsWorkbenchGeneral: 'General & appearance',
498
+ settingsWorkbenchWriting: 'Writing',
401
499
  settingsWorkbenchModels: 'Models & connections',
402
- settingsWorkbenchContext: 'Project context',
403
- settingsWorkbenchInstructions: 'Instructions & skills',
500
+ settingsWorkbenchContextSkills: 'Context & skills',
404
501
  settingsWorkbenchProtection: 'Protection & privacy',
405
- settingsWorkbenchHistory: 'History & storage',
406
- settingsWorkbenchAll: 'All settings',
407
- settingsWorkbenchFilter: 'Filter settings by scope',
502
+ settingsWorkbenchChanges: 'History',
408
503
  settingsWorkbenchCategories: 'Settings categories',
409
- settingsWorkbenchProjectFilter: 'Show only settings that apply to this project.',
410
- settingsWorkbenchOpenProject: 'Open a project to configure its settings.',
504
+ settingsPageScopeProject: 'Only for this project',
505
+ settingsPageScopeGlobal: 'Applies to all projects',
411
506
  settingsWorkbenchClose: 'Close settings',
412
507
  settingsWorkbenchEnableSkills: 'Enable Overleaf skills',
413
508
  settingsWorkbenchSkillsHelp: 'Turn off Overleaf skills without changing individual selections.',
@@ -480,6 +575,10 @@
480
575
  diagnosticsDotWarn: 'Diagnostics — something needs attention',
481
576
  diagnosticsDotFail: 'Diagnostics — a check failed, click to inspect',
482
577
  diagnosticsDotUnknown: 'Diagnostics',
578
+ diagnosticsPillOk: 'Ready',
579
+ diagnosticsPillWarn: 'Attention',
580
+ diagnosticsPillFail: 'Problem',
581
+ diagnosticsPillUnknown: 'Checking',
483
582
  reasoningLabel: 'Reasoning effort',
484
583
  speedLabel: 'Speed',
485
584
  requireReviewing: 'Track',
@@ -542,11 +641,39 @@
542
641
  queuedInputResume: 'Resume',
543
642
  queuedInputRemove: 'Remove',
544
643
  queuedInputAttachmentsUnsupported: 'Queued follow-ups currently support text and @context. Remove binary attachments before queuing.',
644
+ attachmentsLoading: 'Attachments are still loading',
545
645
  queuedInputError_empty_input: 'Enter a follow-up first.',
546
646
  queuedInputError_input_too_long: 'This follow-up is too long to queue.',
547
647
  queuedInputError_queue_full: 'The follow-up queue is full.',
548
648
  queuedInputError_queue_too_large: 'The follow-up queue reached its storage limit.',
549
649
  contextTitle: '@ Context',
650
+ contextUsageTitle: 'Context window',
651
+ contextUsageAmount: '{used} / {capacity} tokens',
652
+ contextUsageSummary: 'Context window: {amount} ({percentage})',
653
+ contextUsageEstimate: 'Latest reported context estimate.',
654
+ contextUsageUnavailable: 'Context usage is not available yet.',
655
+ contextUsageBeforeFirstMessage: 'Usage appears after your first message.',
656
+ contextUsageCapacityUnknown: 'Latest reported usage; window size is unavailable.',
657
+ contextUsageCompacting: 'Compacting context…',
658
+ contextUsageCompactingAuto: 'Compacting context; Codex will continue.',
659
+ contextUsagePending: 'Context compacted. Usage updates after the next reply.',
660
+ contextUsagePendingDetail: 'Usage updates after the next reply.',
661
+ contextUsageCompactedChip: 'Compacted',
662
+ contextUsageHigh: 'High',
663
+ contextUsageNearLimit: 'Near limit',
664
+ contextUsageInput: 'Input',
665
+ contextUsageOutput: 'Output',
666
+ contextUsageBreakdownBasis: 'Shares of reported input + output.',
667
+ contextUsageCacheHit: 'Cached',
668
+ contextUsageCacheHitRate: 'Input cache hit rate',
669
+ contextUsageLatestReply: 'Latest reply · {time}',
670
+ contextUsageJustNow: 'just now',
671
+ contextUsageMinutesAgo: '{count} min ago',
672
+ contextUsageHoursAgo: '{count} hr ago',
673
+ contextUsageDayAgo: '1 day ago',
674
+ contextUsageDaysAgo: '{count} days ago',
675
+ contextUsageCompactAction: 'Compact',
676
+ contextUsageCompactHint: 'Summarize earlier turns to free the window. Documents are not read or changed.',
550
677
  refreshFileList: 'Refresh file list',
551
678
  contextStatus: 'Type @ to add files, or click +: files, attachments (PDF/images), @compile-log.',
552
679
  contextLoadingFiles: 'Reading available @files...',
@@ -583,6 +710,11 @@
583
710
  fileContext: 'has selected @file context',
584
711
  contextContext: 'has selected @context',
585
712
  refreshProbeLoading: 'Refreshing current file, write access, and track changes...',
713
+ probeScopeCurrentFile: 'Current file',
714
+ probeScopeSelection: 'Selected text',
715
+ probeScopeFiles: 'Selected files',
716
+ probeScopeContext: 'Selected context',
717
+ probeScopeProject: 'Whole project',
586
718
  refreshProbeDone: 'Refreshed: {status}',
587
719
  refreshProbeFailed: 'Refresh failed. Reload Overleaf and try again.',
588
720
  processedFailed: 'Failed {elapsed}',
@@ -630,6 +762,12 @@
630
762
  failureReason_accept_replay_failed_next: 'Inspect the file in Overleaf, then retry.',
631
763
  failureReason_native_request_failed_user: 'The request to the local Codex bridge failed.',
632
764
  failureReason_native_request_failed_next: 'Open Diagnostics to check the bridge, then retry.',
765
+ failureReason_native_request_timeout_user: 'The local service did not respond.',
766
+ failureReason_native_request_timeout_next: 'Retry, or open Diagnostics to check the local connection.',
767
+ failureReason_panel_reload_interrupted_user: 'This run was interrupted by a page refresh.',
768
+ failureReason_panel_reload_interrupted_next: 'Edit and resend the task to continue.',
769
+ failureReason_sensitive_content_blocked_user: 'Sensitive content was found before sending, so Codex did not receive this request.',
770
+ failureReason_sensitive_content_blocked_next: 'Remove the sensitive content, narrow @context, or enable explicit sensitive confirmation in Project Settings.',
633
771
  failureReason_project_snapshot_unavailable_user: 'Codex could not read the Overleaf project snapshot.',
634
772
  failureReason_project_snapshot_unavailable_next: 'Refresh Overleaf, then rerun the task.',
635
773
  failureReason_selected_context_unresolved_user: 'Codex could not resolve the requested selection or context.',
@@ -652,6 +790,8 @@
652
790
  failureReason_target_editor_not_ready_next: 'Wait for Overleaf to finish loading, then retry.',
653
791
  failureReason_stale_source_changed_user: '{file} changed while Codex was working, so Codex did not overwrite it.',
654
792
  failureReason_stale_source_changed_next: 'Review the current file, then rerun the task.',
793
+ failureReason_document_identity_mismatch_user: 'Codex could not confirm that the editor content belongs to the target file, so it was not used.',
794
+ failureReason_document_identity_mismatch_next: 'Wait for the target file to open and settle, then retry. Reload Overleaf if this continues.',
655
795
  failureReason_patch_anchor_not_found_user: 'The edit anchor for {file} no longer matches current Overleaf content.',
656
796
  failureReason_patch_anchor_not_found_next: 'Rerun the task against the current document.',
657
797
  failureReason_write_observed_mismatch_user: 'Codex attempted to write {file}, but the content read back from Overleaf did not match the approved change.',
@@ -668,6 +808,8 @@
668
808
  failureReason_accept_not_verified_next: 'Inspect Overleaf Reviewing before continuing.',
669
809
  failureReason_native_bridge_unavailable_user: 'Extension cannot connect to the Codex native host.',
670
810
  failureReason_native_bridge_unavailable_next: 'Run install-native or reload the extension.',
811
+ failureReason_codex_context_limit_user: 'This run stopped because the model context limit was exceeded.',
812
+ 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
813
  failureReason_codex_no_usable_result_user: 'Local Codex returned no usable final report or operations.',
672
814
  failureReason_codex_no_usable_result_next: 'Open Technical Details and resolve the local Codex error.',
673
815
  failureReason_codex_project_locked_user: 'Another Codex task is already running for this Overleaf project.',
@@ -716,6 +858,7 @@
716
858
  recentProjects_previewUnavailableHint: 'Saved conversation could not be loaded.',
717
859
  recentProjects_conversationGone: 'This conversation is no longer available. Choose another conversation from the refreshed list.',
718
860
  recentProjects_continueFailed: 'Could not open the conversation. Please try again.',
861
+ recentProjects_renameFailed: 'Could not rename the conversation. Your title is still available to edit or copy.',
719
862
  recentProjects_welcome_subtitle: 'Conversations saved in this browser',
720
863
  recentProjects_empty: 'No conversations saved in this browser yet. Open an Overleaf project and start a Codex conversation.',
721
864
  recentProjects_sessions_empty: 'No saved conversations in this project',
@@ -761,6 +904,63 @@
761
904
  recentProjects_badge_abandoned_after_navigation: 'Last run stopped after navigation'
762
905
  },
763
906
  zh: {
907
+ runOutcomeIncomplete: "未完成",
908
+ runOutcomePartial: "部分写入",
909
+ runOutcomeNotWritten: "未写入",
910
+ runOutcomeCheck: "请检查 Overleaf",
911
+ runOutcomeNoWrites: "没有向 Overleaf 写入任何内容。",
912
+ runOutcomeNotWrittenBody: "Codex 没有覆盖文件,没有写入任何内容。",
913
+ runOutcomePartialTitle: "已写入 {wrote}/{total} 项修改",
914
+ runOutcomePartialNext: "请检查跳过的文件后重新发送,也可以点击上方的“撤销已写入部分”。",
915
+ runOutcomeUnconfirmedFile: "无法确认对 {file} 的写入",
916
+ runOutcomeUnconfirmed: "无法确认写入结果",
917
+ runOutcomeUnconfirmedBody: "部分改动可能已经写入 Overleaf。",
918
+ runOutcomeCheckNext: "请先检查 {file} 再重新发送。",
919
+ runOutcomeContextNext: "请使用 /compact 或以更少的上下文开始新对话后重试。",
920
+ runOutcomeNativeNext: "请重新发送;若持续中断,请打开诊断检查桥接连接。",
921
+ runOutcomeStaleNext: "请检查当前文件后重新发送。",
922
+ runOutcomeStaleReason: "文件在 Codex 工作期间发生变化,因此没有覆盖。",
923
+ runOutcomeSkipped: "已跳过",
924
+ runOutcomeWritten: "已写入",
925
+ runOutcomeNext: "请检查详情后重试。",
926
+ runOutcomeDetails: "详情",
927
+ runOutcomeCode: "代码",
928
+ runOutcomeStage: "阶段",
929
+ runOutcomeWrites: "写入",
930
+ runOutcomeNoneAttempted: "未尝试写入",
931
+ runOutcomeCompileChip: "{count} 个编译错误",
932
+ runOutcomeCompileTitle: "Overleaf 编译:{count} 个错误",
933
+ runCompileUnconfirmed: '写后编译检查:结果待确认。',
934
+ runOutcomeCause_stale_source_changed: "{file} 在 Codex 工作期间发生变化",
935
+ runOutcomeCause_target_editor_not_ready: "{file} 的编辑器尚未就绪",
936
+ runOutcomeCause_write_timeout: "写入确认超时",
937
+ runOutcomeCause_write_observed_mismatch: "写入后的内容与预期不符",
938
+ runOutcomeCause_codex_context_limit: "超出模型上下文限制",
939
+ runOutcomeCause_codex_timeout: "本地 Codex 超时",
940
+ runOutcomeCause_codex_output_limit: "超出模型输出限制",
941
+ runOutcomeCause_codex_no_usable_result: "本地 Codex 没有返回可用结果",
942
+ runOutcomeCause_native_request_failed: "与本地 Codex 的连接中断",
943
+ runOutcomeCause_panel_reload_interrupted: "Codex 工作时页面被刷新了",
944
+ runOutcomeReloadUnknownBody: "刷新前没有记录到写入。再次发送前,请先在 Overleaf 中检查文件。",
945
+ runOutcomeCause_governance_readonly: "{file} 在本项目的路径规则中设为只读",
946
+ runOutcomeCause_governance_writable_allowlist: "{file} 不在本项目允许写入的路径内",
947
+ runOutcomeCause_sensitive_content_blocked: "发送前发现疑似{finding}",
948
+ sensitiveFinding_private_key: "私钥",
949
+ sensitiveFinding_bearer_token: "Bearer 令牌",
950
+ sensitiveFinding_api_token: "API 令牌",
951
+ sensitiveFinding_aws_access_key: "AWS 访问密钥",
952
+ sensitiveFinding_google_api_key: "Google API 密钥",
953
+ sensitiveFinding_huggingface_token: "Hugging Face 令牌",
954
+ sensitiveFinding_gitlab_token: "GitLab 令牌",
955
+ sensitiveFinding_stripe_live_secret: "Stripe 密钥",
956
+ sensitiveFinding_jwt_token: "JWT",
957
+ sensitiveFinding_secret_assignment: "密钥值",
958
+ sensitiveFinding_mixed: "敏感内容",
959
+ runOutcomeCause_native_bridge_unavailable: "无法连接到本地 Codex",
960
+ runOutcomeCause_project_snapshot_unavailable: "无法读取 Overleaf 项目",
961
+ runOutcomeCause_patch_anchor_not_found: "无法在 {file} 中定位修改位置",
962
+ runOutcomeCause_undo_not_verified: "无法确认撤销结果",
963
+ runOutcomeCause_undo_operation_failed: "无法完成撤销",
764
964
  failureReason_base_file_missing_at_start_user: "首次读取项目时,缺少本任务所需的文件。",
765
965
  failureReason_base_file_missing_at_start_next: "请刷新项目上下文后重新运行。",
766
966
  failureReason_target_file_missing_path_user: "改动中未包含目标文件路径。",
@@ -789,6 +989,24 @@
789
989
  failureReason_subagent_unfinished_output_next: "请由主代理完成并采纳待处理文件。",
790
990
  failureReason_subagent_unauthorized_edit_user: "文件修改超出了子代理负责的范围,因此未同步。",
791
991
  failureReason_subagent_unauthorized_edit_next: "请检查超出负责范围的修改;采纳输出无法解除此限制。",
992
+ failureReason_reviewing_unavailable_user: "此项目无法使用 Track Changes(留痕),是否可用取决于项目所有者的 Overleaf 订阅方案。",
993
+ failureReason_reviewing_unavailable_next: "关闭输入框旁的“留痕”即可不留痕写入。Codex 仍会记录每次改动,方便你撤销。",
994
+ failureReason_reviewing_unavailable_cancelled_next: "没有运行,Track 设置保持不变。重新发送即可再次选择。",
995
+ runNotStarted: '未开始',
996
+ runNotStartedCancelled: '未开始 · 已取消',
997
+ runNotStartedTrackTitle: '此项目无法使用 Track Changes(留痕)',
998
+ runNotStartedModeTitle: '无法确认 Overleaf 的编辑模式',
999
+ runNotStartedTrackBody: '留痕功能取决于项目所有者的 Overleaf 订阅方案;任务没有运行,也没有写入文件。',
1000
+ runNotStartedModeBody: 'Overleaf 未确认所需的编辑模式;任务没有运行,也没有写入文件。',
1001
+ runNotStartedCancelledNext: 'Track 设置保持不变。重新发送即可再次选择。',
1002
+ runNotStartedNext: '请检查 Overleaf 的编辑模式后重试。',
1003
+ reviewingUnavailableTitle: "此项目无法留痕",
1004
+ reviewingUnavailableChoiceMessage: "此项目无法使用 Track Changes(留痕),是否可用取决于项目所有者的 Overleaf 订阅方案。Codex 仍可不留痕写入,并记录每次改动,方便你撤销。",
1005
+ reviewingUnavailableContinue: "本轮不留痕继续",
1006
+ reviewingUnavailableDisable: "关闭此项目的留痕",
1007
+ reviewingUnavailableStatus: "无法留痕",
1008
+ reviewingUnavailableTooltip: "此项目无法使用 Track Changes(留痕)。Codex 会在每轮运行前询问是否不留痕继续。关闭再开启留痕可重新检查。",
1009
+ reviewingUnavailableRunUntracked: "此项目无法使用 Track Changes,本轮将不留痕写入。Codex 仍会记录改动,方便撤销。",
792
1010
  failureReason_reviewing_enable_failed_user: "Codex 无法在需要时启用审阅模式。",
793
1011
  failureReason_reviewing_enable_failed_next: "请手动启用审阅模式,或重试。",
794
1012
  failureReason_reviewing_disable_failed_user: "Codex 无法切换到不留痕的编辑模式。",
@@ -825,6 +1043,8 @@
825
1043
  failureReason_provider_request_rejected_next: "请检查模型标识、推理设置、工具支持及自定义请求参数。",
826
1044
  failureReason_provider_rate_limited_user: "模型服务已达到请求频率限制。",
827
1045
  failureReason_provider_rate_limited_next: "请等待限流窗口恢复后重试。",
1046
+ failureReason_provider_quota_exceeded_user: "模型服务的配额或账单限额已达到。",
1047
+ failureReason_provider_quota_exceeded_next: "请检查模型服务账户和套餐,或切换模型或模型服务后重试。",
828
1048
  failureReason_provider_connection_timeout_user: "模型服务连接超时。",
829
1049
  failureReason_provider_connection_timeout_next: "请检查服务端点和网络,然后重试。",
830
1050
  failureReason_provider_dns_failed_user: "无法解析模型服务的主机名。",
@@ -879,6 +1099,8 @@
879
1099
  resizePanel: '拖动调整 Codex 面板宽度,双击恢复默认宽度',
880
1100
  codexActions: 'Codex 操作',
881
1101
  refreshProbe: '重新检测当前文件状态;不会同步或修改文件',
1102
+ refreshProbeTitle: '刷新文件状态',
1103
+ refreshProbeSubtitle: '重新读取 Overleaf 状态;不会同步或修改文件',
882
1104
  diagnosticsMenu: '排查问题',
883
1105
  diagnosticsHint: '遇到无法运行、无法写入、读不到文件时使用',
884
1106
  diagnosticsRunAllTitle: '运行全部检查',
@@ -938,6 +1160,9 @@
938
1160
  nativeCompatibilityBlockedProtocol: '执行 {method} 前发现 native host 协议不匹配。请同时更新扩展和 native host。',
939
1161
  nativeCompatibilityBlockedUnhealthy: '本机 Codex 还不能执行 {method}。请打开“排查问题 > 检查本机连接”查看详情。',
940
1162
  nativeCompatibilityBlockedMissing: '执行 {method} 时没有连接到 native host。请安装本机 native host,重新加载扩展后再试。',
1163
+ nativeCompatibilityMissingTitle: 'Native host 未连接',
1164
+ nativeCompatibilityMissingGuidance: '请安装本机 native host,重新加载扩展后再试。',
1165
+ nativeCompatibilityUnavailableFeatures: '{count} 项功能不可用',
941
1166
  nativeCompatibilityBlockedGeneric: '当前 native host 与扩展不兼容,不能执行 {method}。请更新 native host 和扩展后再试。',
942
1167
  diagnosticsPageLoading: '确认当前文件、写入能力和留痕状态。',
943
1168
  diagnosticsLoading: '正在检查当前状态。',
@@ -957,6 +1182,9 @@
957
1182
  threadResumeNew: '新建线程',
958
1183
  sessionsHead: '会话',
959
1184
  sessionMenuOpen: '切换会话',
1185
+ sessionMenuNewShort: '新建',
1186
+ sessionMenuRenameShort: '重命名',
1187
+ sessionMenuDeleteShort: '删除',
960
1188
  sessionListEmpty: '还没有保存的会话——发起一个任务即可创建。',
961
1189
  deleteSessionDeletedToast: '已删除会话。',
962
1190
  resetSessionTitle: '开一个新会话?',
@@ -1003,6 +1231,7 @@
1003
1231
  undoRunTitle: '撤销本轮写入到 Overleaf 的改动',
1004
1232
  undoPartialRunTitle: '撤销本轮已经写入 Overleaf 的部分改动',
1005
1233
  undoAppliedTitle: '本轮写入已经撤销',
1234
+ undoAcceptedTitle: '这些改动已在 Overleaf 中接受,无法再撤销。',
1006
1235
  undoNoWritesTitle: '本轮没有写入,无需撤销。',
1007
1236
  undoUnsafeFullFileTitle: '已阻止旧格式全文撤销',
1008
1237
  undoUnsafeFullFileReason: '这个撤销点会用全文替换恢复文件,在 Overleaf 留痕模式下会把整篇文档标成改动。请重新运行任务生成局部撤销点,或手动处理这次历史改动。',
@@ -1011,11 +1240,11 @@
1011
1240
  undoConfirm: '撤销写入',
1012
1241
  undoNoTraceStarted: '开始无留痕撤销本轮写入',
1013
1242
  undoResult: '撤销结果:已撤销 {applied} 项,跳过 {skipped} 项',
1014
- undoTrackedTitle: '拒绝本轮 Overleaf 留痕改动?',
1243
+ undoTrackedTitle: '撤销本轮留痕改动?',
1015
1244
  undoNativeTitle: '撤销本轮 Overleaf 写入?',
1016
1245
  undoTrackedMessage: '将通过 Overleaf 自己的 Reject/拒绝功能撤销 {files}。\n\n这不会用文本补丁重写文件;如果插件不能确认对应留痕记录,会停止并让你在 Overleaf 审阅面板手动处理。',
1017
1246
  undoNativeMessage: '撤销本轮在 {files} 中的改动。',
1018
- undoTrackedConfirm: '拒绝本轮改动',
1247
+ undoTrackedConfirm: '撤销改动',
1019
1248
  undoTrackedStarted: '开始拒绝本轮 Overleaf 留痕改动',
1020
1249
  undoNativeStarted: '正在撤销本轮改动',
1021
1250
  undoTrackedResult: '撤销结果:已拒绝 {applied} 条留痕,跳过 {skipped} 条',
@@ -1112,8 +1341,14 @@
1112
1341
  codexLocalSkillsSkipped: '有 {count} 个本地技能未能加载。',
1113
1342
  codexLocalSkillsLoadFailed: '无法加载 Codex 本地技能,请重新打开技能页重试。',
1114
1343
  codexLocalSkillsDisabled: '运行时已禁用 Codex 本地技能。',
1115
- slashUseLocalSkillSubtitle: 'Codex 本地 · 本轮使用',
1116
- slashUseOverleafSkillSubtitle: 'Codex Overleaf · 本轮使用',
1344
+ slashUseLocalSkillSubtitle: '本轮使用',
1345
+ slashUseOverleafSkillSubtitle: '本轮使用',
1346
+ slashGroupCommands: '命令',
1347
+ slashGroupOverleafSkills: 'Codex Overleaf 技能',
1348
+ slashGroupLocalSkills: 'Codex 本地技能',
1349
+ slashKeyMove: '选择',
1350
+ slashKeyRun: '执行',
1351
+ slashKeyClose: '关闭',
1117
1352
  codexOverleafSkillsEmpty: '没有安装 Codex Overleaf 专属技能。',
1118
1353
  codexOverleafSkillsDisabled: '运行时已禁用 Codex Overleaf 专属技能。',
1119
1354
  loadCodexLocalSkills: '加载 Codex 本地技能',
@@ -1131,6 +1366,13 @@
1131
1366
  codexOverleafSkillsSummaryOff: '已关闭',
1132
1367
  codexOverleafSkillsSummaryCount: '已启用 {count} 个',
1133
1368
  slashInstallSkillTitle: '安装 skill',
1369
+ slashCompactTitle: '压缩上下文',
1370
+ slashCompactSubtitle: '整理此前的对话,释放上下文窗口',
1371
+ compactNoThread: '请先开始一轮对话,再压缩上下文。',
1372
+ compactBusy: '请等待当前任务结束后再压缩上下文。',
1373
+ compactUnsupported: '当前本地 Codex 连接不支持手动压缩,请更新 Codex 并重新加载扩展。',
1374
+ compactCompleted: '会话上下文已压缩。',
1375
+ compactFailed: '上下文压缩未完成,请查看技术详情后再重试。',
1134
1376
  slashInstallSkillSubtitle: '用自然语言调用 Codex 的 skill installer。',
1135
1377
  slashUseSkillSubtitle: '本轮使用这个 skill。',
1136
1378
  skillInstallerComposerLabel: 'Skill Installer',
@@ -1145,18 +1387,14 @@
1145
1387
  settingsSaved: '已保存',
1146
1388
  appearanceTitle: '外观',
1147
1389
  settingsWorkbenchTitle: '设置',
1148
- settingsWorkbenchSubtitle: '偏好设置、项目规则与本地工具。',
1149
- settingsWorkbenchGeneral: '常规与外观',
1390
+ settingsWorkbenchWriting: '写作',
1150
1391
  settingsWorkbenchModels: '模型与连接',
1151
- settingsWorkbenchContext: '项目上下文',
1152
- settingsWorkbenchInstructions: '指令与技能',
1392
+ settingsWorkbenchContextSkills: '上下文与技能',
1153
1393
  settingsWorkbenchProtection: '文件保护与隐私',
1154
- settingsWorkbenchHistory: '历史与存储',
1155
- settingsWorkbenchAll: '全部设置',
1156
- settingsWorkbenchFilter: '按作用范围筛选设置',
1394
+ settingsWorkbenchChanges: '修改记录',
1157
1395
  settingsWorkbenchCategories: '设置分类',
1158
- settingsWorkbenchProjectFilter: '仅显示作用于当前项目的设置。',
1159
- settingsWorkbenchOpenProject: '进入项目后可配置项目设置。',
1396
+ settingsPageScopeProject: '仅当前项目',
1397
+ settingsPageScopeGlobal: '适用于所有项目',
1160
1398
  settingsWorkbenchClose: '关闭设置',
1161
1399
  settingsWorkbenchEnableSkills: '启用 Overleaf 技能',
1162
1400
  settingsWorkbenchSkillsHelp: '关闭 Overleaf 技能时,各项选择会保留。',
@@ -1229,6 +1467,10 @@
1229
1467
  diagnosticsDotWarn: '诊断——有需要留意的项',
1230
1468
  diagnosticsDotFail: '诊断——有检查未通过,点击查看',
1231
1469
  diagnosticsDotUnknown: '诊断',
1470
+ diagnosticsPillOk: '就绪',
1471
+ diagnosticsPillWarn: '需留意',
1472
+ diagnosticsPillFail: '有问题',
1473
+ diagnosticsPillUnknown: '检查中',
1232
1474
  reasoningLabel: '推理强度',
1233
1475
  speedLabel: '速度',
1234
1476
  requireReviewing: '留痕',
@@ -1291,11 +1533,39 @@
1291
1533
  queuedInputResume: '继续',
1292
1534
  queuedInputRemove: '删除',
1293
1535
  queuedInputAttachmentsUnsupported: '当前排队消息支持文本和 @context;请先移除二进制附件。',
1536
+ attachmentsLoading: '附件读取中',
1294
1537
  queuedInputError_empty_input: '请先输入后续任务。',
1295
1538
  queuedInputError_input_too_long: '这条后续任务太长,无法排队。',
1296
1539
  queuedInputError_queue_full: '后续任务队列已满。',
1297
1540
  queuedInputError_queue_too_large: '后续任务队列已达到存储上限。',
1298
1541
  contextTitle: '@ 上下文',
1542
+ contextUsageTitle: '上下文窗口',
1543
+ contextUsageAmount: '{used} / {capacity} 词元',
1544
+ contextUsageSummary: '上下文窗口:{amount}({percentage})',
1545
+ contextUsageEstimate: '最近上报的上下文用量估计。',
1546
+ contextUsageUnavailable: '尚无上下文用量数据。',
1547
+ contextUsageBeforeFirstMessage: '发送第一条消息后,这里会显示用量。',
1548
+ contextUsageCapacityUnknown: '显示最近上报的用量;窗口容量未知。',
1549
+ contextUsageCompacting: '正在压缩上下文…',
1550
+ contextUsageCompactingAuto: '正在压缩上下文,Codex 会继续处理。',
1551
+ contextUsagePending: '上下文已压缩,下一次回复后会更新用量。',
1552
+ contextUsagePendingDetail: '下一次回复后会更新用量。',
1553
+ contextUsageCompactedChip: '已压缩',
1554
+ contextUsageHigh: '偏高',
1555
+ contextUsageNearLimit: '接近上限',
1556
+ contextUsageInput: '输入',
1557
+ contextUsageOutput: '输出',
1558
+ contextUsageBreakdownBasis: '占比按上报的输入 + 输出计算。',
1559
+ contextUsageCacheHit: '其中缓存命中',
1560
+ contextUsageCacheHitRate: '输入缓存命中率',
1561
+ contextUsageLatestReply: '最近一次回复 · {time}',
1562
+ contextUsageJustNow: '刚刚',
1563
+ contextUsageMinutesAgo: '{count} 分钟前',
1564
+ contextUsageHoursAgo: '{count} 小时前',
1565
+ contextUsageDayAgo: '1 天前',
1566
+ contextUsageDaysAgo: '{count} 天前',
1567
+ contextUsageCompactAction: '压缩',
1568
+ contextUsageCompactHint: '把此前的对话整理为摘要,释放上下文窗口;不读取或修改文档。',
1299
1569
  refreshFileList: '刷新文件列表',
1300
1570
  contextStatus: '输入 @ 添加文件,或点 +:文件、附件(PDF/图片)、@compile-log。',
1301
1571
  contextLoadingFiles: '正在读取可添加的 @文件...',
@@ -1332,6 +1602,11 @@
1332
1602
  fileContext: '已选择 @file 上下文',
1333
1603
  contextContext: '已选择 @context',
1334
1604
  refreshProbeLoading: '正在重新检测当前文件、写入权限和留痕状态...',
1605
+ probeScopeCurrentFile: '当前文件',
1606
+ probeScopeSelection: '已选文本',
1607
+ probeScopeFiles: '已选文件',
1608
+ probeScopeContext: '已选上下文',
1609
+ probeScopeProject: '整个项目',
1335
1610
  refreshProbeDone: '已重新检测:{status}',
1336
1611
  refreshProbeFailed: '检测失败:请刷新 Overleaf 页面后重试',
1337
1612
  processedFailed: '处理失败 {elapsed}',
@@ -1378,6 +1653,12 @@
1378
1653
  failureReason_accept_replay_failed_next: '请在 Overleaf 中检查该文件后重试。',
1379
1654
  failureReason_native_request_failed_user: '向本地 Codex bridge 的请求失败。',
1380
1655
  failureReason_native_request_failed_next: '打开「诊断」检查 bridge 后重试。',
1656
+ failureReason_native_request_timeout_user: '本机服务没有响应。',
1657
+ failureReason_native_request_timeout_next: '请重试,或打开「诊断」检查本机连接。',
1658
+ failureReason_panel_reload_interrupted_user: '页面刷新导致本轮中断。',
1659
+ failureReason_panel_reload_interrupted_next: '可编辑后重发任务以继续。',
1660
+ failureReason_sensitive_content_blocked_user: '发送前发现敏感内容,Codex 没有收到这次请求。',
1661
+ failureReason_sensitive_content_blocked_next: '请移除敏感内容、缩小 @context,或在项目设置里允许敏感内容显式确认。',
1381
1662
  failureReason_project_snapshot_unavailable_user: 'Codex 没能读到 Overleaf 项目快照。',
1382
1663
  failureReason_project_snapshot_unavailable_next: '请刷新 Overleaf,然后重试本轮任务。',
1383
1664
  failureReason_selected_context_unresolved_user: 'Codex 没能解析所选的内容或上下文。',
@@ -1385,11 +1666,11 @@
1385
1666
  failureReason_selection_scope_violation_user: '生成的一项改动超出了已附加的选区,已阻止写回。',
1386
1667
  failureReason_selection_scope_violation_next: '请重新选择目标范围,仅请求修改该范围。已写入的合法部分可撤销。',
1387
1668
  failureReason_governance_blocked_user: '项目文件规则阻止了此次写入。Codex 未写入受影响的路径。',
1388
- failureReason_governance_blocked_next: '请在「设置 > 保护与隐私」中查看项目文件规则,然后请求修改允许写入的路径。',
1669
+ failureReason_governance_blocked_next: '请在「设置 > 文件保护与隐私」中查看项目文件规则,然后请求修改允许写入的路径。',
1389
1670
  failureReason_governance_readonly_user: '项目文件规则将此操作涉及的路径标记为只读。Codex 未执行此操作。',
1390
- failureReason_governance_readonly_next: '请在「设置 > 保护与隐私」中查看只读路径规则,然后请求修改允许写入的路径。',
1671
+ failureReason_governance_readonly_next: '请在「设置 > 文件保护与隐私」中查看只读路径规则,然后请求修改允许写入的路径。',
1391
1672
  failureReason_governance_writable_allowlist_user: '此操作涉及的路径不在配置的可写路径范围内。Codex 未执行此操作。',
1392
- failureReason_governance_writable_allowlist_next: '请在「设置 > 保护与隐私」中查看可写路径规则,然后请求修改允许范围内的路径。',
1673
+ failureReason_governance_writable_allowlist_next: '请在「设置 > 文件保护与隐私」中查看可写路径规则,然后请求修改允许范围内的路径。',
1393
1674
  failureReason_target_file_not_found_user: 'Codex 在当前 Overleaf 项目中没有找到 {file}。',
1394
1675
  failureReason_target_file_not_found_next: '请在 Overleaf 中核对文件名和路径后重试。',
1395
1676
  failureReason_target_file_open_failed_user: 'Codex 没能在 Overleaf 中打开 {file}。',
@@ -1400,6 +1681,8 @@
1400
1681
  failureReason_target_editor_not_ready_next: '请等 Overleaf 加载完成后再重试。',
1401
1682
  failureReason_stale_source_changed_user: '{file} 在任务执行期间被修改过,Codex 没有覆盖它。',
1402
1683
  failureReason_stale_source_changed_next: '请先查看当前文件内容,再重新运行本轮任务。',
1684
+ failureReason_document_identity_mismatch_user: 'Codex 无法确认编辑器内容属于目标文件,因此没有使用这些内容。',
1685
+ failureReason_document_identity_mismatch_next: '请等目标文件打开并稳定后重试;如果问题持续,请重新加载 Overleaf。',
1403
1686
  failureReason_patch_anchor_not_found_user: '{file} 的修改锚点已经无法和当前 Overleaf 内容对齐。',
1404
1687
  failureReason_patch_anchor_not_found_next: '请基于当前文档重新运行任务。',
1405
1688
  failureReason_write_observed_mismatch_user: 'Codex 尝试写入 {file},但写入后从 Overleaf 读回的内容与批准的改动不一致。',
@@ -1416,6 +1699,8 @@
1416
1699
  failureReason_accept_not_verified_next: '请先在 Overleaf 审阅面板核对后再继续。',
1417
1700
  failureReason_native_bridge_unavailable_user: '扩展无法连接到 Codex Native Host。',
1418
1701
  failureReason_native_bridge_unavailable_next: '请运行 install-native,或者重新加载扩展。',
1702
+ failureReason_codex_context_limit_user: '本轮已停止:上下文超出模型的容量限制。',
1703
+ failureReason_codex_context_limit_next: '请重试任务;如果再次超限,可使用 /compact,或新建会话并减少上下文。',
1419
1704
  failureReason_codex_no_usable_result_user: '本地 Codex 没有返回可用的最终报告或操作。',
1420
1705
  failureReason_codex_no_usable_result_next: '请打开“技术细节”排查本地 Codex 错误。',
1421
1706
  failureReason_codex_project_locked_user: '同一个 Overleaf 项目里已经有一轮 Codex 任务正在运行。',
@@ -1464,6 +1749,7 @@
1464
1749
  recentProjects_previewUnavailableHint: '已保存的对话暂时无法读取。',
1465
1750
  recentProjects_conversationGone: '该对话已不可用,请从更新后的列表中选择其他对话。',
1466
1751
  recentProjects_continueFailed: '暂时无法打开对话,请重试。',
1752
+ recentProjects_renameFailed: '暂时无法重命名对话,输入的标题仍保留,可继续编辑或复制。',
1467
1753
  recentProjects_welcome_subtitle: '当前浏览器保存的对话',
1468
1754
  recentProjects_empty: '当前浏览器还没有保存的对话。打开一个 Overleaf 项目,与 Codex 开始对话即可。',
1469
1755
  recentProjects_sessions_empty: '该项目还没有保存的对话',