codex-overleaf-link 1.9.13 → 2.1.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 (122) hide show
  1. package/README.md +24 -23
  2. package/extension/bootstrap/manifest.template.json +2 -1
  3. package/extension/runtime-manifest.json +13 -6
  4. package/extension/src/background.js +7 -0
  5. package/extension/src/content/composerPanel.js +13 -3
  6. package/extension/src/content/contentRuntime.js +130 -65
  7. package/extension/src/content/contextTray.js +173 -9
  8. package/extension/src/content/markdownText.js +16 -1
  9. package/extension/src/content/mathText.js +233 -0
  10. package/extension/src/content/modelPicker.js +117 -106
  11. package/extension/src/content/modelPickerSupport.js +115 -0
  12. package/extension/src/content/nativeChannel.js +20 -1
  13. package/extension/src/content/panelMaintenance.js +2 -0
  14. package/extension/src/content/projectSettingsCoordinator.js +2 -0
  15. package/extension/src/content/providerSettingsCoordinator.js +413 -0
  16. package/extension/src/content/providerSettingsDialog.js +981 -0
  17. package/extension/src/content/runTimelineView.js +24 -5
  18. package/extension/src/content/settingsPanel.js +33 -2
  19. package/extension/src/content/writebackOrchestrator.js +3 -1
  20. package/extension/src/page/overleafProjectSnapshot.js +29 -33
  21. package/extension/src/page/snapshotRouter.js +75 -8
  22. package/extension/src/page/trackedChangesLifecycle.js +154 -26
  23. package/extension/src/page/writebackRouter.js +31 -60
  24. package/extension/src/pageBridge.js +1 -1
  25. package/extension/src/shared/agentTranscript.js +130 -0
  26. package/extension/src/shared/compatibility.js +10 -7
  27. package/extension/src/shared/failureReasons.js +75 -0
  28. package/extension/src/shared/i18n.js +22 -0
  29. package/extension/src/shared/models.js +1 -0
  30. package/extension/src/shared/providerProfiles.js +283 -0
  31. package/extension/src/shared/sessionState.js +12 -2
  32. package/extension/src/shared/storageDb.js +27 -19
  33. package/extension/src/shared/storageRunActions.js +99 -0
  34. package/extension/styles/panel.css +587 -1
  35. package/extension/vendor/katex/LICENSE +21 -0
  36. package/extension/vendor/katex/VERSION +2 -0
  37. package/extension/vendor/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  38. package/extension/vendor/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  39. package/extension/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  40. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  41. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  42. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  43. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  44. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  45. package/extension/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  46. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  47. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  48. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  49. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  50. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  51. package/extension/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  52. package/extension/vendor/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  53. package/extension/vendor/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  54. package/extension/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  55. package/extension/vendor/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  56. package/extension/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  57. package/extension/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  58. package/extension/vendor/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  59. package/extension/vendor/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  60. package/extension/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  61. package/extension/vendor/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  62. package/extension/vendor/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  63. package/extension/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  64. package/extension/vendor/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  65. package/extension/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  66. package/extension/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  67. package/extension/vendor/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  68. package/extension/vendor/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  69. package/extension/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  70. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  71. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  72. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  73. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  74. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  75. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  76. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  77. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  78. package/extension/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  79. package/extension/vendor/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  80. package/extension/vendor/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  81. package/extension/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  82. package/extension/vendor/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  83. package/extension/vendor/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  84. package/extension/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  85. package/extension/vendor/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  86. package/extension/vendor/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  87. package/extension/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  88. package/extension/vendor/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  89. package/extension/vendor/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  90. package/extension/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  91. package/extension/vendor/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  92. package/extension/vendor/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  93. package/extension/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  94. package/extension/vendor/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  95. package/extension/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  96. package/extension/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  97. package/extension/vendor/katex/katex.min.css +1 -0
  98. package/extension/vendor/katex/katex.min.js +1 -0
  99. package/native-host/src/anthropicBridgeRequest.js +435 -0
  100. package/native-host/src/anthropicBridgeResponse.js +431 -0
  101. package/native-host/src/anthropicMessagesBridge.js +281 -0
  102. package/native-host/src/chatBridgeRequest.js +274 -0
  103. package/native-host/src/chatBridgeResponse.js +594 -0
  104. package/native-host/src/chatCompletionsBridge.js +485 -0
  105. package/native-host/src/codexCommand.js +25 -0
  106. package/native-host/src/codexPromptAssembly.js +9 -0
  107. package/native-host/src/codexProviderLaunch.js +213 -0
  108. package/native-host/src/codexProviderTest.js +196 -0
  109. package/native-host/src/codexSessionRunner.js +29 -25
  110. package/native-host/src/managedInstall.js +1 -0
  111. package/native-host/src/providerBridgeRoutes.js +11 -0
  112. package/native-host/src/providerModelCatalog.js +107 -0
  113. package/native-host/src/providerProfile.js +454 -0
  114. package/native-host/src/providerReasoning.js +235 -0
  115. package/native-host/src/providerRedaction.js +18 -0
  116. package/native-host/src/providerRuntime.js +365 -0
  117. package/native-host/src/providerStore.js +691 -0
  118. package/native-host/src/readProgressGuard.js +360 -0
  119. package/native-host/src/taskRunnerRuntime.js +40 -4
  120. package/native-host/src/updateArchive.js +1 -0
  121. package/native-host/src/updateTrust.js +2 -1
  122. package/package.json +2 -1
@@ -2,6 +2,353 @@
2
2
  --codex-overleaf-panel-width: 380px;
3
3
  }
4
4
 
5
+ /* v2.1 provider profiles: detailed configuration lives in a viewport modal. */
6
+ .codex-provider-settings-entry {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: space-between;
10
+ gap: 18px;
11
+ }
12
+
13
+ .codex-provider-settings-entry-copy {
14
+ min-width: 0;
15
+ }
16
+
17
+ .codex-provider-settings-summary {
18
+ margin: 5px 0 0;
19
+ color: #92d99a;
20
+ font-size: 12px;
21
+ }
22
+
23
+ .codex-provider-settings-summary[data-tone="warning"] { color: #d9bd78; }
24
+ .codex-provider-settings-summary[data-tone="failed"] { color: #ef8f84; }
25
+
26
+ .codex-provider-experimental-badge {
27
+ display: inline-flex;
28
+ align-items: center;
29
+ min-height: 19px;
30
+ padding: 0 7px;
31
+ border: 1px solid rgba(217, 189, 120, 0.42);
32
+ border-radius: 999px;
33
+ background: rgba(217, 189, 120, 0.08);
34
+ color: #d9bd78;
35
+ font-size: 9px;
36
+ font-weight: 700;
37
+ line-height: 1;
38
+ letter-spacing: 0.035em;
39
+ white-space: nowrap;
40
+ }
41
+
42
+ .codex-provider-dialog-root {
43
+ --provider-bg: var(--provider-panel-bg, #151716);
44
+ --provider-surface: #1c1f1d;
45
+ --provider-surface-raised: #222622;
46
+ --provider-line: rgba(255, 255, 255, 0.12);
47
+ --provider-muted: #a0a59f;
48
+ --provider-accent: #79d58a;
49
+ --provider-danger: #ef8176;
50
+ position: fixed;
51
+ inset: 0;
52
+ z-index: 2147483600;
53
+ color: var(--provider-panel-color, #eef0ec);
54
+ font-family: "Aptos", "SF Pro Text", sans-serif;
55
+ }
56
+
57
+ .codex-provider-dialog-root[hidden] { display: none !important; }
58
+
59
+ .codex-provider-dialog-backdrop {
60
+ position: absolute;
61
+ inset: 0;
62
+ background: rgba(4, 7, 5, 0.68);
63
+ backdrop-filter: blur(3px);
64
+ }
65
+
66
+ .codex-provider-dialog {
67
+ position: absolute;
68
+ top: 50%;
69
+ left: 50%;
70
+ transform: translate(-50%, -50%);
71
+ display: flex;
72
+ flex-direction: column;
73
+ width: min(800px, calc(100vw - 32px));
74
+ height: min(680px, calc(100vh - 32px));
75
+ max-height: 82vh;
76
+ overflow: hidden;
77
+ border: 1px solid var(--provider-line);
78
+ border-radius: 16px;
79
+ background:
80
+ radial-gradient(circle at 92% -8%, rgba(83, 177, 105, 0.13), transparent 34%),
81
+ var(--provider-bg);
82
+ box-shadow: 0 28px 80px rgba(0, 0, 0, 0.48);
83
+ }
84
+
85
+ .codex-provider-dialog-head,
86
+ .codex-provider-dialog-foot {
87
+ flex: 0 0 auto;
88
+ display: flex;
89
+ align-items: center;
90
+ justify-content: space-between;
91
+ gap: 20px;
92
+ padding: 20px 24px;
93
+ border-bottom: 1px solid var(--provider-line);
94
+ }
95
+
96
+ .codex-provider-dialog-head h2,
97
+ .codex-provider-detail h3 {
98
+ margin: 0;
99
+ color: inherit;
100
+ font-size: 18px;
101
+ line-height: 1.2;
102
+ }
103
+
104
+ .codex-provider-dialog-heading { min-width: 0; }
105
+
106
+ .codex-provider-dialog-titleline {
107
+ display: flex;
108
+ align-items: center;
109
+ gap: 9px;
110
+ min-width: 0;
111
+ }
112
+
113
+ .codex-provider-dialog-head p,
114
+ .codex-provider-detail-titleline p,
115
+ .codex-provider-builtin p {
116
+ margin: 6px 0 0;
117
+ color: var(--provider-muted);
118
+ font-size: 12px;
119
+ }
120
+
121
+ .codex-provider-dialog-close {
122
+ width: 34px;
123
+ height: 34px;
124
+ border: 0;
125
+ border-radius: 9px;
126
+ background: transparent;
127
+ color: var(--provider-muted);
128
+ font-size: 24px;
129
+ cursor: pointer;
130
+ }
131
+
132
+ .codex-provider-dialog-close:hover { background: rgba(255, 255, 255, 0.07); color: inherit; }
133
+
134
+ .codex-provider-dialog-body {
135
+ min-height: 0;
136
+ flex: 1 1 auto;
137
+ display: grid;
138
+ grid-template-columns: 205px minmax(0, 1fr);
139
+ }
140
+
141
+ .codex-provider-list {
142
+ min-width: 0;
143
+ padding: 14px 10px;
144
+ overflow: auto;
145
+ border-right: 1px solid var(--provider-line);
146
+ background: rgba(0, 0, 0, 0.09);
147
+ }
148
+
149
+ .codex-provider-row,
150
+ .codex-provider-add {
151
+ box-sizing: border-box;
152
+ width: 100%;
153
+ max-width: 100%;
154
+ min-width: 0;
155
+ display: flex;
156
+ flex-direction: column;
157
+ align-items: stretch;
158
+ gap: 3px;
159
+ padding: 10px 11px;
160
+ border: 0;
161
+ border-radius: 9px;
162
+ background: transparent;
163
+ color: inherit;
164
+ text-align: left;
165
+ overflow: hidden;
166
+ cursor: pointer;
167
+ }
168
+
169
+ .codex-provider-row:hover,
170
+ .codex-provider-row[aria-current="true"] { background: rgba(255, 255, 255, 0.07); }
171
+ .codex-provider-row[aria-current="true"] { box-shadow: inset 2px 0 var(--provider-accent); }
172
+ .codex-provider-row-main { display: block; width: 100%; min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: 13px; font-weight: 650; white-space: nowrap; }
173
+ .codex-provider-row-status { color: var(--provider-muted); font-size: 11px; }
174
+ .codex-provider-row-status[data-tone="active"] { color: var(--provider-accent); }
175
+ .codex-provider-add { margin-top: 8px; color: var(--provider-accent); }
176
+
177
+ .codex-provider-detail {
178
+ min-width: 0;
179
+ padding: 22px 24px 28px;
180
+ overflow: auto;
181
+ }
182
+
183
+ .codex-provider-detail-titleline {
184
+ display: flex;
185
+ align-items: flex-start;
186
+ justify-content: space-between;
187
+ gap: 16px;
188
+ margin-bottom: 22px;
189
+ }
190
+
191
+ .codex-provider-active-badge {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ min-height: 24px;
195
+ padding: 0 9px;
196
+ border: 1px solid rgba(121, 213, 138, 0.42);
197
+ border-radius: 999px;
198
+ color: var(--provider-accent);
199
+ font-size: 11px;
200
+ font-weight: 700;
201
+ }
202
+
203
+ .codex-provider-form-grid {
204
+ display: grid;
205
+ grid-template-columns: repeat(2, minmax(0, 1fr));
206
+ gap: 16px;
207
+ }
208
+
209
+ .codex-provider-field {
210
+ min-width: 0;
211
+ display: flex;
212
+ flex-direction: column;
213
+ gap: 7px;
214
+ color: #dfe3dd;
215
+ font-size: 12px;
216
+ font-weight: 650;
217
+ }
218
+
219
+ .codex-provider-field--wide { grid-column: 1 / -1; }
220
+
221
+ .codex-provider-field input,
222
+ .codex-provider-field textarea,
223
+ .codex-provider-field select {
224
+ box-sizing: border-box;
225
+ width: 100%;
226
+ min-height: 38px;
227
+ padding: 8px 10px;
228
+ border: 1px solid var(--provider-line);
229
+ border-radius: 8px;
230
+ outline: 0;
231
+ background: rgba(255, 255, 255, 0.035);
232
+ color: inherit;
233
+ font: inherit;
234
+ font-weight: 450;
235
+ }
236
+
237
+ .codex-provider-field textarea { resize: vertical; }
238
+ .codex-provider-field input:focus,
239
+ .codex-provider-field textarea:focus,
240
+ .codex-provider-field select:focus { border-color: rgba(121, 213, 138, 0.7); box-shadow: 0 0 0 3px rgba(121, 213, 138, 0.1); }
241
+ .codex-provider-field small { color: var(--provider-muted); font-size: 11px; font-weight: 450; }
242
+ .codex-provider-secret-row { display: flex; gap: 8px; }
243
+
244
+ .codex-provider-advanced {
245
+ margin-top: 18px;
246
+ padding: 14px 0;
247
+ border-top: 1px solid var(--provider-line);
248
+ border-bottom: 1px solid var(--provider-line);
249
+ }
250
+
251
+ .codex-provider-advanced summary { color: var(--provider-muted); cursor: pointer; font-size: 12px; font-weight: 650; }
252
+ .codex-provider-advanced[open] summary { margin-bottom: 14px; color: inherit; }
253
+
254
+ .codex-provider-disclosure {
255
+ display: flex;
256
+ gap: 9px;
257
+ margin-top: 18px;
258
+ padding: 12px;
259
+ border-radius: 9px;
260
+ background: rgba(217, 189, 120, 0.09);
261
+ color: #d8c892;
262
+ font-size: 11px;
263
+ line-height: 1.45;
264
+ }
265
+
266
+ .codex-provider-test-row {
267
+ display: flex;
268
+ align-items: center;
269
+ gap: 12px;
270
+ margin-top: 18px;
271
+ }
272
+
273
+ .codex-provider-test-state { color: var(--provider-muted); font-size: 11px; }
274
+ .codex-provider-test-state[data-tone="success"] { color: var(--provider-accent); }
275
+
276
+ .codex-provider-dialog-foot {
277
+ min-height: 70px;
278
+ padding-top: 14px;
279
+ padding-bottom: 14px;
280
+ border-top: 1px solid var(--provider-line);
281
+ border-bottom: 0;
282
+ background: rgba(0, 0, 0, 0.08);
283
+ }
284
+
285
+ .codex-provider-operation-status { min-width: 0; color: var(--provider-muted); font-size: 11px; }
286
+ .codex-provider-operation-status[data-tone="success"] { color: var(--provider-accent); }
287
+ .codex-provider-operation-status[data-tone="failed"] { color: var(--provider-danger); }
288
+ .codex-provider-operation-status[data-tone="progress"]::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 7px; border: 2px solid rgba(121, 213, 138, 0.3); border-top-color: var(--provider-accent); border-radius: 50%; animation: codex-provider-spin 0.8s linear infinite; }
289
+
290
+ .codex-provider-footer-actions { display: flex; align-items: center; gap: 8px; }
291
+ .codex-provider-footer-spacer { width: 8px; }
292
+ .codex-provider-primary-button,
293
+ .codex-provider-secondary-button,
294
+ .codex-provider-danger-button,
295
+ .codex-provider-inline-button {
296
+ min-height: 34px;
297
+ padding: 0 13px;
298
+ border: 1px solid var(--provider-line);
299
+ border-radius: 8px;
300
+ background: rgba(255, 255, 255, 0.04);
301
+ color: inherit;
302
+ font: inherit;
303
+ font-size: 12px;
304
+ font-weight: 700;
305
+ cursor: pointer;
306
+ }
307
+ .codex-provider-primary-button { border-color: #56ac68; background: #397b48; color: #fff; }
308
+ .codex-provider-secondary-button[data-provider-action="save"]:not(:disabled) {
309
+ border-color: #5dbb72;
310
+ background: linear-gradient(180deg, #3f8d51 0%, #337342 100%);
311
+ color: #fff;
312
+ box-shadow: 0 0 0 1px rgba(121, 213, 138, 0.08), 0 4px 12px rgba(22, 83, 39, 0.22);
313
+ }
314
+ .codex-provider-secondary-button[data-provider-action="save"]:not(:disabled):hover {
315
+ border-color: #79d58a;
316
+ background: linear-gradient(180deg, #499d5c 0%, #397f49 100%);
317
+ }
318
+ .codex-provider-secondary-button[data-provider-action="save"]:disabled {
319
+ border-color: var(--provider-line);
320
+ background: rgba(255, 255, 255, 0.04);
321
+ color: var(--provider-muted);
322
+ box-shadow: none;
323
+ }
324
+ .codex-provider-danger-button { color: var(--provider-danger); }
325
+ .codex-provider-inline-button { flex: 0 0 auto; }
326
+ .codex-provider-dialog-root button:disabled,
327
+ .codex-provider-dialog-root input:disabled,
328
+ .codex-provider-dialog-root select:disabled,
329
+ .codex-provider-dialog-root textarea:disabled { cursor: not-allowed; opacity: 0.5; }
330
+
331
+ .codex-provider-builtin { max-width: 430px; padding-top: 34px; }
332
+ .codex-provider-builtin-mark { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: 18px; border-radius: 14px; background: linear-gradient(145deg, #3f8d51, #255932); color: #fff; font-size: 21px; font-weight: 800; }
333
+ .codex-provider-builtin-mark svg { display: block; width: 27px; height: 27px; fill: currentColor; }
334
+ .codex-provider-builtin .codex-provider-active-badge,
335
+ .codex-provider-builtin button { margin-top: 18px; }
336
+
337
+ @keyframes codex-provider-spin { to { transform: rotate(360deg); } }
338
+
339
+ @media (max-width: 720px) {
340
+ .codex-provider-dialog { width: calc(100vw - 16px); height: calc(100vh - 16px); max-height: none; border-radius: 12px; }
341
+ .codex-provider-dialog-body { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
342
+ .codex-provider-list { display: flex; gap: 6px; padding: 10px; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--provider-line); }
343
+ .codex-provider-row,
344
+ .codex-provider-add { flex: 0 0 150px; margin-top: 0; }
345
+ .codex-provider-form-grid { grid-template-columns: 1fr; }
346
+ .codex-provider-field--wide { grid-column: auto; }
347
+ .codex-provider-dialog-head,
348
+ .codex-provider-dialog-foot,
349
+ .codex-provider-detail { padding-left: 16px; padding-right: 16px; }
350
+ }
351
+
5
352
  :root.codex-overleaf-panel-mounted:not(.codex-overleaf-panel-compact) body {
6
353
  box-sizing: border-box;
7
354
  width: calc(100vw - var(--codex-overleaf-panel-width)) !important;
@@ -1845,6 +2192,9 @@
1845
2192
 
1846
2193
  #codex-overleaf-panel .run-activity-list {
1847
2194
  display: grid;
2195
+ grid-template-columns: minmax(0, 1fr);
2196
+ min-width: 0;
2197
+ max-width: 100%;
1848
2198
  gap: 0;
1849
2199
  margin-top: 2px;
1850
2200
  }
@@ -1986,6 +2336,10 @@
1986
2336
  }
1987
2337
 
1988
2338
  #codex-overleaf-panel .run-stream {
2339
+ box-sizing: border-box;
2340
+ width: 100%;
2341
+ min-width: 0;
2342
+ max-width: 100%;
1989
2343
  margin: 6px 0 2px;
1990
2344
  color: var(--tl-fg-1);
1991
2345
  border-left: 2px solid var(--tl-border);
@@ -2003,12 +2357,58 @@
2003
2357
  }
2004
2358
 
2005
2359
  #codex-overleaf-panel .run-stream-text {
2360
+ min-width: 0;
2361
+ max-width: 100%;
2006
2362
  white-space: pre-wrap;
2007
- word-break: break-word;
2363
+ overflow-wrap: anywhere;
2364
+ word-break: normal;
2008
2365
  font-size: 12px;
2009
2366
  line-height: 1.48;
2010
2367
  }
2011
2368
 
2369
+ #codex-overleaf-panel .run-stream-text > * {
2370
+ box-sizing: border-box;
2371
+ min-width: 0;
2372
+ max-width: 100%;
2373
+ }
2374
+
2375
+ #codex-overleaf-panel .run-math {
2376
+ max-width: 100%;
2377
+ color: inherit;
2378
+ font-size: 1.02em;
2379
+ }
2380
+
2381
+ #codex-overleaf-panel .run-math--inline {
2382
+ display: inline-block;
2383
+ overflow-x: auto;
2384
+ overflow-y: hidden;
2385
+ vertical-align: -0.15em;
2386
+ }
2387
+
2388
+ #codex-overleaf-panel .run-math--display {
2389
+ display: block;
2390
+ overflow-x: auto;
2391
+ overflow-y: hidden;
2392
+ margin: 8px 0;
2393
+ padding: 2px 0 4px;
2394
+ }
2395
+
2396
+ #codex-overleaf-panel .run-math--display .katex-display {
2397
+ min-width: max-content;
2398
+ margin: 0;
2399
+ text-align: left;
2400
+ }
2401
+
2402
+ #codex-overleaf-panel .run-math--fallback {
2403
+ border-radius: 4px;
2404
+ background: var(--tl-surface-2);
2405
+ color: var(--tl-review);
2406
+ padding: 1px 4px;
2407
+ white-space: pre-wrap;
2408
+ overflow-wrap: anywhere;
2409
+ font: 0.96em/1.4 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
2410
+ }
2411
+
2012
2412
  #codex-overleaf-panel .run-stream[data-stream-role="reasoning"] .run-stream-text {
2013
2413
  color: var(--tl-fg-3);
2014
2414
  }
@@ -2047,6 +2447,8 @@
2047
2447
  }
2048
2448
 
2049
2449
  #codex-overleaf-panel .run-process {
2450
+ min-width: 0;
2451
+ max-width: 100%;
2050
2452
  margin-top: 4px;
2051
2453
  }
2052
2454
 
@@ -3044,6 +3446,101 @@
3044
3446
  font-size: 12px;
3045
3447
  }
3046
3448
 
3449
+ #codex-overleaf-panel .codex-context-actions {
3450
+ display: inline-flex;
3451
+ align-items: center;
3452
+ margin-left: auto;
3453
+ gap: 5px;
3454
+ }
3455
+
3456
+ #codex-overleaf-panel .codex-context-sync-status {
3457
+ display: inline-flex;
3458
+ align-items: center;
3459
+ justify-content: center;
3460
+ width: 18px;
3461
+ height: 18px;
3462
+ color: var(--tl-fg-3);
3463
+ transition: color 140ms ease, opacity 140ms ease;
3464
+ }
3465
+
3466
+ #codex-overleaf-panel .codex-context-sync-status[data-state="idle"] {
3467
+ visibility: hidden;
3468
+ }
3469
+
3470
+ #codex-overleaf-panel .codex-context-sync-status svg {
3471
+ width: 16px;
3472
+ height: 16px;
3473
+ overflow: visible;
3474
+ fill: none;
3475
+ stroke: currentColor;
3476
+ stroke-linecap: round;
3477
+ stroke-linejoin: round;
3478
+ stroke-width: 1.8;
3479
+ }
3480
+
3481
+ #codex-overleaf-panel .codex-context-sync-ring,
3482
+ #codex-overleaf-panel .codex-context-sync-check,
3483
+ #codex-overleaf-panel .codex-context-sync-alert {
3484
+ display: none;
3485
+ }
3486
+
3487
+ #codex-overleaf-panel .codex-context-sync-status[data-state="tree-loading"] .codex-context-sync-ring,
3488
+ #codex-overleaf-panel .codex-context-sync-status[data-state="exact-loading"] .codex-context-sync-ring {
3489
+ display: block;
3490
+ stroke-dasharray: 28 14;
3491
+ transform-origin: 10px 10px;
3492
+ animation: codex-context-sync-spin 850ms linear infinite;
3493
+ }
3494
+
3495
+ #codex-overleaf-panel .codex-context-sync-status[data-state="exact-loading"] {
3496
+ color: var(--tl-accent);
3497
+ }
3498
+
3499
+ #codex-overleaf-panel .codex-context-sync-status[data-state="exact-ready"] {
3500
+ color: var(--tl-ok);
3501
+ }
3502
+
3503
+ #codex-overleaf-panel .codex-context-sync-status[data-state="exact-ready"] .codex-context-sync-check {
3504
+ display: block;
3505
+ }
3506
+
3507
+ #codex-overleaf-panel .codex-context-sync-status[data-state="partial"] {
3508
+ color: var(--tl-warn, #d6b36a);
3509
+ }
3510
+
3511
+ #codex-overleaf-panel .codex-context-sync-status[data-state="partial"] .codex-context-sync-ring,
3512
+ #codex-overleaf-panel .codex-context-sync-status[data-state="partial"] .codex-context-sync-alert {
3513
+ display: block;
3514
+ }
3515
+
3516
+ #codex-overleaf-panel .codex-context-sync-status[data-state="partial"] .codex-context-sync-ring {
3517
+ stroke-dasharray: none;
3518
+ }
3519
+
3520
+ #codex-overleaf-panel .codex-context-sync-copy {
3521
+ position: absolute;
3522
+ width: 1px;
3523
+ height: 1px;
3524
+ padding: 0;
3525
+ margin: -1px;
3526
+ overflow: hidden;
3527
+ clip: rect(0, 0, 0, 0);
3528
+ white-space: nowrap;
3529
+ border: 0;
3530
+ }
3531
+
3532
+ @keyframes codex-context-sync-spin {
3533
+ to {
3534
+ transform: rotate(360deg);
3535
+ }
3536
+ }
3537
+
3538
+ @media (prefers-reduced-motion: reduce) {
3539
+ #codex-overleaf-panel .codex-context-sync-status .codex-context-sync-ring {
3540
+ animation: none;
3541
+ }
3542
+ }
3543
+
3047
3544
  #codex-overleaf-panel .codex-context-head button {
3048
3545
  display: inline-flex;
3049
3546
  align-items: center;
@@ -4192,3 +4689,92 @@
4192
4689
  animation: none;
4193
4690
  }
4194
4691
  }
4692
+ .codex-provider-dialog-root .codex-provider-capability-grid {
4693
+ display: grid;
4694
+ grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
4695
+ gap: 4px 18px;
4696
+ margin-top: 3px;
4697
+ }
4698
+
4699
+ .codex-provider-dialog-root .codex-provider-capability-option {
4700
+ position: relative;
4701
+ display: flex;
4702
+ align-items: center;
4703
+ gap: 9px;
4704
+ min-width: 0;
4705
+ padding: 5px 6px;
4706
+ border-radius: 6px;
4707
+ color: var(--tl-fg-2);
4708
+ font-size: 13px;
4709
+ font-weight: 500;
4710
+ line-height: 1.35;
4711
+ cursor: pointer;
4712
+ transition:
4713
+ background 120ms ease,
4714
+ color 120ms ease;
4715
+ }
4716
+
4717
+ .codex-provider-dialog-root .codex-provider-capability-option:hover {
4718
+ color: var(--tl-fg-1);
4719
+ background: rgba(255, 255, 255, 0.035);
4720
+ }
4721
+
4722
+ .codex-provider-dialog-root .codex-provider-capability-option--wide {
4723
+ grid-column: 1 / -1;
4724
+ }
4725
+
4726
+ .codex-provider-dialog-root .codex-provider-field .codex-provider-capability-input {
4727
+ position: absolute;
4728
+ width: 1px !important;
4729
+ height: 1px !important;
4730
+ min-width: 0 !important;
4731
+ min-height: 0 !important;
4732
+ margin: -1px !important;
4733
+ padding: 0 !important;
4734
+ border: 0 !important;
4735
+ border-radius: 0 !important;
4736
+ overflow: hidden;
4737
+ clip: rect(0 0 0 0);
4738
+ white-space: nowrap;
4739
+ background: transparent !important;
4740
+ opacity: 0;
4741
+ pointer-events: none;
4742
+ }
4743
+
4744
+ .codex-provider-dialog-root .codex-provider-capability-control {
4745
+ position: relative;
4746
+ display: grid;
4747
+ flex: 0 0 16px;
4748
+ width: 16px;
4749
+ height: 16px;
4750
+ place-items: center;
4751
+ box-sizing: border-box;
4752
+ border: 1px solid var(--tl-border-strong);
4753
+ border-radius: 4px;
4754
+ background: rgba(255, 255, 255, 0.025);
4755
+ transition:
4756
+ border-color 120ms ease,
4757
+ background 120ms ease,
4758
+ box-shadow 120ms ease;
4759
+ }
4760
+
4761
+ .codex-provider-dialog-root .codex-provider-capability-input:focus-visible + .codex-provider-capability-control {
4762
+ outline: 2px solid color-mix(in srgb, var(--tl-ok) 62%, transparent);
4763
+ outline-offset: 2px;
4764
+ }
4765
+
4766
+ .codex-provider-dialog-root .codex-provider-capability-input:checked + .codex-provider-capability-control {
4767
+ border-color: var(--tl-ok);
4768
+ background: var(--tl-ok);
4769
+ box-shadow: 0 0 0 1px color-mix(in srgb, var(--tl-ok) 18%, transparent);
4770
+ }
4771
+
4772
+ .codex-provider-dialog-root .codex-provider-capability-input:checked + .codex-provider-capability-control::after {
4773
+ content: "";
4774
+ width: 4px;
4775
+ height: 8px;
4776
+ margin-top: -2px;
4777
+ border-right: 2px solid #102016;
4778
+ border-bottom: 2px solid #102016;
4779
+ transform: rotate(45deg);
4780
+ }
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2013-2020 Khan Academy and other contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ KaTeX 0.17.0
2
+ Source: https://github.com/KaTeX/KaTeX/releases/tag/v0.17.0