codex-overleaf-link 2.2.1 → 2.3.1

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 (79) hide show
  1. package/README.md +25 -23
  2. package/extension/bootstrap/manifest.template.json +1 -1
  3. package/extension/runtime-manifest.json +5 -71
  4. package/extension/src/background.js +67 -63
  5. package/extension/src/backgroundUpdateCoordinator.js +128 -66
  6. package/extension/src/content/applyResultFormatters.js +2 -3
  7. package/extension/src/content/composerPanel.js +0 -2
  8. package/extension/src/content/contentRuntime.js +757 -1558
  9. package/extension/src/content/contextTray.js +4 -6
  10. package/extension/src/content/diagnosticsController.js +1 -2
  11. package/extension/src/content/diffReviewPanel.js +14 -13
  12. package/extension/src/content/generated/content.bundle.js +41605 -0
  13. package/extension/src/content/generated/content.bundle.meta.json +103 -0
  14. package/extension/src/content/legacyGlobalRegistry.js +129 -0
  15. package/extension/src/content/markdownText.js +17 -17
  16. package/extension/src/content/mathText.js +155 -9
  17. package/extension/src/content/modelPicker.js +1 -1
  18. package/extension/src/content/modelPickerSupport.js +10 -5
  19. package/extension/src/content/moduleRegistryKernel.js +125 -0
  20. package/extension/src/content/nativeCompatibilityController.js +313 -0
  21. package/extension/src/content/otWarmMirror.js +8 -6
  22. package/extension/src/content/pageBridgeClient.js +224 -0
  23. package/extension/src/content/panelMaintenance.js +8 -3
  24. package/extension/src/content/postNavigationSettlementPersistence.js +100 -0
  25. package/extension/src/content/projectProviderSelection.js +4 -12
  26. package/extension/src/content/projectSessionCleanup.js +3 -3
  27. package/extension/src/content/providerSettingsCoordinator.js +59 -26
  28. package/extension/src/content/providerSettingsDialog.js +30 -18
  29. package/extension/src/content/recentProjects.js +15 -23
  30. package/extension/src/content/runGuidanceController.js +1 -1
  31. package/extension/src/content/runQueueScheduler.js +129 -29
  32. package/extension/src/content/runSettlementPersistence.js +51 -0
  33. package/extension/src/content/runTimelineView.js +17 -8
  34. package/extension/src/content/scopedPersistenceCoordinator.js +100 -0
  35. package/extension/src/content/scopedPersistenceDetachedCommit.js +47 -0
  36. package/extension/src/content/scopedPersistencePanelState.js +111 -0
  37. package/extension/src/content/sessionManager.js +15 -12
  38. package/extension/src/content/sessionPersistence.js +67 -8
  39. package/extension/src/content/updateNotice.js +10 -4
  40. package/extension/src/content/writebackOrchestrator.js +89 -68
  41. package/extension/src/contentScript.js +5 -1
  42. package/extension/src/page/trackedChangesLifecycle.js +16 -5
  43. package/extension/src/page/writebackRouter.js +6 -2
  44. package/extension/src/pageBridge.js +47 -98
  45. package/extension/src/shared/agentTranscript.js +18 -8
  46. package/extension/src/shared/compatibility.js +1 -1
  47. package/extension/src/shared/governanceRules.js +1 -1
  48. package/extension/src/shared/i18n.js +2 -4
  49. package/extension/src/shared/managedUpdateProjection.js +337 -0
  50. package/extension/src/shared/nativeRequestIdentity.js +60 -0
  51. package/extension/src/shared/otText.js +0 -19
  52. package/extension/src/shared/pageRpcContract.js +136 -0
  53. package/extension/src/shared/runExecutionSnapshot.js +187 -0
  54. package/extension/src/shared/runExecutionSnapshotCodec.js +171 -0
  55. package/extension/src/shared/runInputQueue.js +81 -34
  56. package/extension/src/shared/scopedPersistenceBrowserAdapter.js +79 -0
  57. package/extension/src/shared/scopedPersistenceQueuePolicy.js +200 -0
  58. package/extension/src/shared/scopedPersistenceReceipt.js +60 -0
  59. package/extension/src/shared/scopedPersistenceTransaction.js +241 -0
  60. package/extension/src/shared/sessionState.js +110 -59
  61. package/extension/src/shared/settlementFacts.js +351 -0
  62. package/extension/src/shared/storageDb.js +25 -10
  63. package/extension/src/shared/storageMigration.js +275 -61
  64. package/extension/src/shared/storageSessionClaims.js +60 -0
  65. package/extension/src/shared/updateConsent.js +4 -0
  66. package/extension/src/shared/updateRevocationIntent.js +109 -0
  67. package/extension/src/shared/writebackEvidenceProjection.js +150 -0
  68. package/extension/src/shared/writebackOperationEvidence.js +153 -0
  69. package/extension/src/shared/writebackSettlement.js +727 -0
  70. package/extension/styles/panel.css +18 -8
  71. package/native-host/src/codexPromptAssembly.js +1 -1
  72. package/native-host/src/codexRuntimeIdentity.js +1 -1
  73. package/native-host/src/codexSessionRunner.js +7 -13
  74. package/native-host/src/index.js +3 -69
  75. package/native-host/src/managedInstall.js +50 -8
  76. package/native-host/src/nativeTransportEnvelope.js +148 -0
  77. package/native-host/src/taskRunnerRuntime.js +14 -84
  78. package/native-host/src/updateManager.js +36 -1
  79. package/package.json +13 -5
@@ -743,6 +743,8 @@ function cleanupOrphanStageRoots(updatesRoot, retainedRoots = []) {
743
743
 
744
744
  function recoverAndReadStatus(context) {
745
745
  let journal = readJournal(context);
746
+ const alignedVersion = readAlignedManagedVersion(context);
747
+ journal = supersedeObsoleteJournal(context, journal, alignedVersion);
746
748
  if (journal?.state === 'activation_pending') {
747
749
  journal = { ...journal, state: 'staged', reasonCode: 'update_activation_interrupted', updatedAt: new Date().toISOString() };
748
750
  writeJournal(context, journal);
@@ -753,7 +755,7 @@ function recoverAndReadStatus(context) {
753
755
  writeJournal(context, journal);
754
756
  settleAuthorization(context, journal.authorizationId, 'revoked');
755
757
  }
756
- if (journal?.state === 'rolled_back') {
758
+ if (journal?.state === 'rolled_back' || journal?.state === 'superseded') {
757
759
  pruneNativeVersions(context.nativeRoot, new Set([
758
760
  readVersionPointer(context.nativeRoot, 'active-version'),
759
761
  readVersionPointer(context.nativeRoot, 'previous-version')
@@ -768,6 +770,36 @@ function recoverAndReadStatus(context) {
768
770
  };
769
771
  }
770
772
 
773
+ function readAlignedManagedVersion(context) {
774
+ try {
775
+ return assertManagedLayout(context);
776
+ } catch (_error) {
777
+ return '';
778
+ }
779
+ }
780
+
781
+ function supersedeObsoleteJournal(context, journal, activeVersion) {
782
+ if (!journal || journal.state === 'superseded' || !parseSemver(activeVersion) ||
783
+ !parseSemver(journal.sourceVersion) || !parseSemver(journal.targetVersion) ||
784
+ compareSemver(activeVersion, journal.sourceVersion) <= 0 ||
785
+ compareSemver(activeVersion, journal.targetVersion) <= 0) {
786
+ return journal;
787
+ }
788
+ const timestamp = new Date().toISOString();
789
+ const superseded = {
790
+ ...journal,
791
+ state: 'superseded',
792
+ supersededFromState: journal.state,
793
+ supersededByVersion: activeVersion,
794
+ supersededAt: timestamp,
795
+ updatedAt: timestamp
796
+ };
797
+ writeJournal(context, superseded);
798
+ cleanupStage(journal.stageRoot);
799
+ cleanupOrphanStageRoots(context.updatesRoot);
800
+ return superseded;
801
+ }
802
+
771
803
  function pruneNativeVersions(nativeRoot, retainedVersions) {
772
804
  const versionsRoot = path.join(nativeRoot, 'versions');
773
805
  let entries = [];
@@ -960,6 +992,9 @@ function publicTransaction(journal) {
960
992
  appliedAt: journal.appliedAt,
961
993
  confirmedAt: journal.confirmedAt,
962
994
  rolledBackAt: journal.rolledBackAt,
995
+ supersededAt: journal.supersededAt,
996
+ supersededByVersion: journal.supersededByVersion,
997
+ supersededFromState: journal.supersededFromState,
963
998
  reasonCode: journal.reasonCode || ''
964
999
  };
965
1000
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-overleaf-link",
3
- "version": "2.2.1",
3
+ "version": "2.3.1",
4
4
  "description": "Cross-platform Chrome bridge that connects Codex to the active Overleaf project.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -14,14 +14,19 @@
14
14
  "homepage": "https://github.com/Ghqqqq/codex-overleaf-link#readme",
15
15
  "scripts": {
16
16
  "agent:codex": "node scripts/codex-json-agent.mjs",
17
- "test": "node scripts/run-tests.mjs",
17
+ "build:content": "node scripts/build-content-bundle.mjs",
18
+ "check:module-graph": "node scripts/check-content-module-graph.mjs",
19
+ "test": "npm run check:module-graph && node scripts/run-tests.mjs",
18
20
  "check:architecture": "node scripts/check-architecture-budget.mjs --enforce-target",
19
21
  "benchmark:large": "node scripts/benchmark-large-project.mjs --gate",
20
- "smoke:extension": "node scripts/smoke-extension.mjs",
22
+ "smoke:extension": "npm run build:content && node scripts/smoke-extension.mjs",
21
23
  "verify:release": "node scripts/verify-release.mjs",
24
+ "verify:source": "node scripts/verify-release.mjs --source-hygiene-only",
22
25
  "verify:release-artifacts": "node scripts/verify-release-artifacts.mjs",
23
26
  "verify:update-boundary": "node scripts/verify-update-boundary.mjs",
24
27
  "verify:update-hop": "node scripts/verify-update-hop.mjs",
28
+ "verify:update-hop:local": "node scripts/verify-update-hop.mjs --local-test-key",
29
+ "rehearse:update-hop": "npm run build:release && npm run verify:update-hop:local",
25
30
  "build:release": "node scripts/build-release.mjs",
26
31
  "sign:release": "node scripts/sign-release-manifest.mjs",
27
32
  "install:managed": "node scripts/install-managed.mjs",
@@ -30,7 +35,7 @@
30
35
  "uninstall:native": "node scripts/uninstall-native-host.mjs",
31
36
  "bridge": "node native-host/src/index.js",
32
37
  "verify:npm-package": "node scripts/verify-npm-package.mjs",
33
- "pack:npm": "node scripts/verify-npm-package.mjs --pack"
38
+ "pack:npm": "npm run build:content && node scripts/verify-npm-package.mjs --pack"
34
39
  },
35
40
  "engines": {
36
41
  "node": ">=20"
@@ -56,5 +61,8 @@
56
61
  "scripts/verify-npm-package.mjs",
57
62
  "README.md",
58
63
  "package.json"
59
- ]
64
+ ],
65
+ "devDependencies": {
66
+ "esbuild": "0.28.1"
67
+ }
60
68
  }