@codemem/server 0.44.0-beta.1 → 0.44.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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +464 -45
- package/dist/index.js.map +1 -1
- package/dist/routes/diagnostics.d.ts +31 -0
- package/dist/routes/diagnostics.d.ts.map +1 -0
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/pack.d.ts.map +1 -1
- package/dist/routes/stats.d.ts.map +1 -1
- package/package.json +2 -2
- package/static/app.js +37 -37
- package/static/app.js.br +0 -0
- package/static/app.js.gz +0 -0
- package/static/index.html +207 -19
package/static/app.js.br
CHANGED
|
Binary file
|
package/static/app.js.gz
CHANGED
|
Binary file
|
package/static/index.html
CHANGED
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
*, *::before, *::after { box-sizing: border-box; margin: 0; }
|
|
44
44
|
|
|
45
45
|
body {
|
|
46
|
+
--header-sticky-offset: 73px;
|
|
46
47
|
font-family: var(--font-sans);
|
|
47
48
|
font-size: var(--font-size-base);
|
|
48
49
|
line-height: 1.55;
|
|
@@ -108,6 +109,8 @@
|
|
|
108
109
|
display: flex;
|
|
109
110
|
align-items: center;
|
|
110
111
|
gap: var(--sp-3);
|
|
112
|
+
min-width: 0;
|
|
113
|
+
overflow: hidden;
|
|
111
114
|
}
|
|
112
115
|
|
|
113
116
|
.logo {
|
|
@@ -127,7 +130,10 @@
|
|
|
127
130
|
font-size: var(--font-size-2xl);
|
|
128
131
|
font-weight: var(--font-weight-semibold);
|
|
129
132
|
letter-spacing: -0.01em;
|
|
133
|
+
min-width: 0;
|
|
130
134
|
white-space: nowrap;
|
|
135
|
+
overflow: hidden;
|
|
136
|
+
text-overflow: ellipsis;
|
|
131
137
|
}
|
|
132
138
|
|
|
133
139
|
.health-dot {
|
|
@@ -144,6 +150,7 @@
|
|
|
144
150
|
display: flex;
|
|
145
151
|
align-items: center;
|
|
146
152
|
gap: var(--sp-2);
|
|
153
|
+
min-width: 0;
|
|
147
154
|
}
|
|
148
155
|
|
|
149
156
|
/* Diagnostic metadata cluster: runtime version + database path. Grouped
|
|
@@ -194,7 +201,7 @@
|
|
|
194
201
|
-webkit-backdrop-filter: blur(10px) saturate(1.2);
|
|
195
202
|
border-bottom: 1px solid var(--border);
|
|
196
203
|
position: sticky;
|
|
197
|
-
top:
|
|
204
|
+
top: var(--header-sticky-offset);
|
|
198
205
|
z-index: 9;
|
|
199
206
|
}
|
|
200
207
|
|
|
@@ -229,7 +236,7 @@
|
|
|
229
236
|
.tab-btn.active::after {
|
|
230
237
|
content: "";
|
|
231
238
|
position: absolute;
|
|
232
|
-
bottom:
|
|
239
|
+
bottom: 0;
|
|
233
240
|
left: var(--sp-4);
|
|
234
241
|
right: var(--sp-4);
|
|
235
242
|
height: 2px;
|
|
@@ -851,6 +858,30 @@
|
|
|
851
858
|
text-transform: uppercase;
|
|
852
859
|
}
|
|
853
860
|
|
|
861
|
+
.stat[tabindex="0"]:focus-visible {
|
|
862
|
+
outline: 2px solid var(--accent);
|
|
863
|
+
outline-offset: 2px;
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
.automatic-recall { margin-top: var(--sp-3); }
|
|
867
|
+
.automatic-recall > summary {
|
|
868
|
+
min-height: 44px;
|
|
869
|
+
padding: 10px 0;
|
|
870
|
+
cursor: pointer;
|
|
871
|
+
color: var(--text-secondary);
|
|
872
|
+
font-size: var(--font-size-md);
|
|
873
|
+
font-weight: var(--font-weight-medium);
|
|
874
|
+
}
|
|
875
|
+
.automatic-recall > section { margin-top: var(--sp-2); }
|
|
876
|
+
.automatic-recall-grid { margin-top: var(--sp-3); }
|
|
877
|
+
.automatic-recall-meta {
|
|
878
|
+
max-width: 65ch;
|
|
879
|
+
margin-top: var(--sp-3);
|
|
880
|
+
color: var(--text-tertiary);
|
|
881
|
+
font-size: var(--font-size-sm);
|
|
882
|
+
line-height: 1.5;
|
|
883
|
+
}
|
|
884
|
+
|
|
854
885
|
.health-primary {
|
|
855
886
|
border-width: 2px;
|
|
856
887
|
}
|
|
@@ -2206,6 +2237,7 @@
|
|
|
2206
2237
|
line-height: 1.55;
|
|
2207
2238
|
color: var(--text-secondary);
|
|
2208
2239
|
}
|
|
2240
|
+
.feed-body.narrative { max-width: 88ch; }
|
|
2209
2241
|
.feed-body.clamp { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
|
|
2210
2242
|
.feed-body.clamp-3 { -webkit-line-clamp: 3; }
|
|
2211
2243
|
.feed-body.clamp-5 { -webkit-line-clamp: 5; }
|
|
@@ -3241,6 +3273,146 @@
|
|
|
3241
3273
|
@media (max-height: 720px) { .modal { align-items: flex-start; } }
|
|
3242
3274
|
.modal-backdrop[hidden], .modal[hidden] { display: none; }
|
|
3243
3275
|
|
|
3276
|
+
/* ── Contextual diagnostics drawer ─────────────────────── */
|
|
3277
|
+
.diagnostics-drawer-overlay {
|
|
3278
|
+
position: fixed;
|
|
3279
|
+
inset: 0;
|
|
3280
|
+
z-index: 45;
|
|
3281
|
+
background: rgba(25, 24, 23, 0.42);
|
|
3282
|
+
backdrop-filter: blur(4px);
|
|
3283
|
+
animation: diagnosticsOverlayIn var(--duration-fast) var(--ease-standard);
|
|
3284
|
+
}
|
|
3285
|
+
.diagnostics-drawer {
|
|
3286
|
+
position: fixed;
|
|
3287
|
+
inset: 0 0 0 auto;
|
|
3288
|
+
z-index: 46;
|
|
3289
|
+
width: clamp(420px, 42vw, 640px);
|
|
3290
|
+
display: flex;
|
|
3291
|
+
flex-direction: column;
|
|
3292
|
+
gap: var(--sp-3);
|
|
3293
|
+
padding: var(--sp-5);
|
|
3294
|
+
border-left: 1px solid var(--border);
|
|
3295
|
+
background: var(--surface-1);
|
|
3296
|
+
box-shadow: var(--shadow-lg);
|
|
3297
|
+
color: var(--text-primary);
|
|
3298
|
+
animation: diagnosticsDrawerIn var(--duration-fast) var(--ease-standard);
|
|
3299
|
+
}
|
|
3300
|
+
.diagnostics-drawer-header,
|
|
3301
|
+
.diagnostics-secondary-controls,
|
|
3302
|
+
.diagnostics-notice,
|
|
3303
|
+
.diagnostics-event-heading,
|
|
3304
|
+
.diagnostics-event-context {
|
|
3305
|
+
display: flex;
|
|
3306
|
+
align-items: center;
|
|
3307
|
+
justify-content: space-between;
|
|
3308
|
+
gap: var(--sp-3);
|
|
3309
|
+
}
|
|
3310
|
+
.diagnostics-drawer-header { flex-shrink: 0; align-items: flex-start; }
|
|
3311
|
+
.diagnostics-drawer-header h2 { margin: 0; font-size: var(--font-size-2xl); }
|
|
3312
|
+
.diagnostics-drawer-header p { margin-top: var(--sp-1); color: var(--text-secondary); }
|
|
3313
|
+
.diagnostics-controls {
|
|
3314
|
+
display: grid;
|
|
3315
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
|
|
3316
|
+
gap: var(--sp-2);
|
|
3317
|
+
align-items: end;
|
|
3318
|
+
flex-shrink: 0;
|
|
3319
|
+
}
|
|
3320
|
+
.diagnostics-controls label { display: grid; gap: 5px; color: var(--text-secondary); font-size: var(--font-size-sm); }
|
|
3321
|
+
.diagnostics-controls select {
|
|
3322
|
+
width: 100%;
|
|
3323
|
+
min-height: 36px;
|
|
3324
|
+
border: 1px solid var(--border);
|
|
3325
|
+
border-radius: var(--radius-md);
|
|
3326
|
+
padding: 6px 10px;
|
|
3327
|
+
background: var(--input-bg);
|
|
3328
|
+
color: var(--text-primary);
|
|
3329
|
+
}
|
|
3330
|
+
.diagnostics-controls select:focus-visible,
|
|
3331
|
+
.diagnostics-new-events:focus-visible,
|
|
3332
|
+
.diagnostics-recovery:focus-visible {
|
|
3333
|
+
outline: 2px solid var(--accent);
|
|
3334
|
+
outline-offset: 2px;
|
|
3335
|
+
box-shadow: 0 0 0 4px var(--focus-ring);
|
|
3336
|
+
}
|
|
3337
|
+
.diagnostics-secondary-controls { flex-shrink: 0; }
|
|
3338
|
+
.diagnostics-secondary-actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
|
|
3339
|
+
.diagnostics-copy-status { min-height: 1.25em; color: var(--text-secondary); font-size: var(--font-size-sm); }
|
|
3340
|
+
.diagnostics-generated-at,
|
|
3341
|
+
.diagnostics-limit-note,
|
|
3342
|
+
.diagnostics-filter-context { color: var(--text-tertiary); font-size: var(--font-size-sm); }
|
|
3343
|
+
.diagnostics-notice {
|
|
3344
|
+
border: 1px solid var(--border);
|
|
3345
|
+
border-radius: var(--radius-md);
|
|
3346
|
+
padding: var(--sp-2) var(--sp-3);
|
|
3347
|
+
background: var(--surface-2);
|
|
3348
|
+
color: var(--text-secondary);
|
|
3349
|
+
flex-shrink: 0;
|
|
3350
|
+
}
|
|
3351
|
+
.diagnostics-notice--error { border-color: color-mix(in srgb, var(--status-attention) 42%, var(--border)); }
|
|
3352
|
+
.diagnostics-new-events {
|
|
3353
|
+
align-self: center;
|
|
3354
|
+
border: 1px solid var(--accent);
|
|
3355
|
+
border-radius: var(--radius-pill);
|
|
3356
|
+
padding: 7px 14px;
|
|
3357
|
+
background: var(--accent-subtle);
|
|
3358
|
+
color: var(--text-primary);
|
|
3359
|
+
cursor: pointer;
|
|
3360
|
+
font: inherit;
|
|
3361
|
+
font-weight: var(--font-weight-semibold);
|
|
3362
|
+
}
|
|
3363
|
+
.diagnostics-event-list { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
|
|
3364
|
+
.diagnostics-event-list ul { display: grid; gap: var(--sp-2); margin: 0; padding: 0; list-style: none; }
|
|
3365
|
+
.diagnostics-event {
|
|
3366
|
+
display: grid;
|
|
3367
|
+
gap: var(--sp-2);
|
|
3368
|
+
border: 1px solid var(--border);
|
|
3369
|
+
border-left-width: 3px;
|
|
3370
|
+
border-radius: var(--radius-md);
|
|
3371
|
+
padding: var(--sp-3);
|
|
3372
|
+
background: var(--surface-0);
|
|
3373
|
+
}
|
|
3374
|
+
.diagnostics-event--info { border-left-color: var(--accent); }
|
|
3375
|
+
.diagnostics-event--warning { border-left-color: var(--status-degraded); }
|
|
3376
|
+
.diagnostics-event--error { border-left-color: var(--status-attention); }
|
|
3377
|
+
.diagnostics-event-heading time,
|
|
3378
|
+
.diagnostics-event-context,
|
|
3379
|
+
.diagnostics-event-meta { color: var(--text-tertiary); font-size: var(--font-size-sm); }
|
|
3380
|
+
.diagnostics-event-context { justify-content: flex-start; flex-wrap: wrap; }
|
|
3381
|
+
.diagnostics-event-context span { text-transform: capitalize; }
|
|
3382
|
+
.diagnostics-event p { margin: 0; line-height: 1.5; }
|
|
3383
|
+
.diagnostics-severity { display: inline-flex; align-items: center; gap: 6px; font-weight: var(--font-weight-semibold); }
|
|
3384
|
+
.diagnostics-severity-icon {
|
|
3385
|
+
display: inline-grid;
|
|
3386
|
+
place-items: center;
|
|
3387
|
+
width: 20px;
|
|
3388
|
+
height: 20px;
|
|
3389
|
+
border: 1px solid currentColor;
|
|
3390
|
+
border-radius: 50%;
|
|
3391
|
+
font-weight: var(--font-weight-semibold);
|
|
3392
|
+
}
|
|
3393
|
+
.diagnostics-technical-detail pre,
|
|
3394
|
+
.diagnostics-recovery-command code { white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
3395
|
+
.diagnostics-technical-detail pre { margin: var(--sp-2) 0 0; color: var(--text-secondary); }
|
|
3396
|
+
.diagnostics-recovery { color: var(--accent); font-weight: var(--font-weight-semibold); width: fit-content; }
|
|
3397
|
+
.diagnostics-recovery-command { display: grid; gap: 4px; color: var(--text-secondary); }
|
|
3398
|
+
.diagnostics-empty { display: grid; place-items: center; gap: var(--sp-3); min-height: 220px; text-align: center; color: var(--text-secondary); }
|
|
3399
|
+
.diagnostics-loading { display: grid; gap: var(--sp-2); }
|
|
3400
|
+
.diagnostics-loading-row { display: grid; gap: var(--sp-2); padding: var(--sp-3); border: 1px solid var(--border); border-radius: var(--radius-md); }
|
|
3401
|
+
.diagnostics-loading-row span { height: 10px; border-radius: var(--radius-pill); background: var(--surface-2); animation: pulse var(--duration-pulse) var(--ease-standard) infinite; }
|
|
3402
|
+
.diagnostics-loading-row span:nth-child(2) { width: 64%; }
|
|
3403
|
+
.diagnostics-loading-row span:nth-child(3) { width: 82%; }
|
|
3404
|
+
.diagnostics-load-older { display: block; margin: var(--sp-3) auto 0; }
|
|
3405
|
+
.diagnostics-limit-note { padding: var(--sp-3); text-align: center; }
|
|
3406
|
+
@keyframes diagnosticsOverlayIn { from { opacity: 0; } to { opacity: 1; } }
|
|
3407
|
+
@keyframes diagnosticsDrawerIn { from { transform: translateX(24px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
|
|
3408
|
+
|
|
3409
|
+
@media (max-width: 699px) {
|
|
3410
|
+
.diagnostics-drawer { inset: 0; width: 100vw; padding: var(--sp-4); border-left: 0; }
|
|
3411
|
+
.diagnostics-controls { grid-template-columns: 1fr 1fr; }
|
|
3412
|
+
.diagnostics-controls > button { grid-column: 1 / -1; }
|
|
3413
|
+
.diagnostics-secondary-controls { align-items: flex-start; flex-direction: column; }
|
|
3414
|
+
}
|
|
3415
|
+
|
|
3244
3416
|
.legacy-upgrade-modal .modal-card { width: min(620px, 100%); }
|
|
3245
3417
|
.legacy-upgrade-summary {
|
|
3246
3418
|
padding: var(--sp-3);
|
|
@@ -3476,6 +3648,7 @@
|
|
|
3476
3648
|
color: var(--text-secondary);
|
|
3477
3649
|
font-size: var(--font-size-sm);
|
|
3478
3650
|
}
|
|
3651
|
+
.viewer-reconnect-actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
|
|
3479
3652
|
.viewer-reconnect-spinner {
|
|
3480
3653
|
width: 14px;
|
|
3481
3654
|
height: 14px;
|
|
@@ -3954,6 +4127,24 @@
|
|
|
3954
4127
|
/* ── Responsive ────────────────────────────────────────── */
|
|
3955
4128
|
|
|
3956
4129
|
@media (max-width: 900px) {
|
|
4130
|
+
.header-row { flex-wrap: nowrap; }
|
|
4131
|
+
.header-right { flex: 1 1 auto; justify-content: flex-end; }
|
|
4132
|
+
/* Diagnostic metadata yields before project scope or controls clip. */
|
|
4133
|
+
.header-tertiary { display: none; }
|
|
4134
|
+
.header-right .project-filter {
|
|
4135
|
+
flex: 1 1 140px;
|
|
4136
|
+
min-width: 96px;
|
|
4137
|
+
max-width: 240px;
|
|
4138
|
+
}
|
|
4139
|
+
/* Keep navigation to one compact row while preserving every destination. */
|
|
4140
|
+
.tab-bar {
|
|
4141
|
+
overflow-x: auto;
|
|
4142
|
+
overscroll-behavior-inline: contain;
|
|
4143
|
+
-webkit-overflow-scrolling: touch;
|
|
4144
|
+
scrollbar-width: none;
|
|
4145
|
+
}
|
|
4146
|
+
.tab-bar::-webkit-scrollbar { display: none; }
|
|
4147
|
+
.tab-btn { flex-shrink: 0; }
|
|
3957
4148
|
.tab-panel { padding: var(--sp-4); }
|
|
3958
4149
|
.summary-row { grid-template-columns: 1fr; }
|
|
3959
4150
|
.feed-card-header { flex-wrap: wrap; }
|
|
@@ -3971,23 +4162,15 @@
|
|
|
3971
4162
|
}
|
|
3972
4163
|
|
|
3973
4164
|
@media (max-width: 720px) {
|
|
3974
|
-
|
|
3975
|
-
header would otherwise wrap. Keeps brand + project filter + theme
|
|
3976
|
-
+ settings on a single row at common split-window widths. */
|
|
3977
|
-
.header-tertiary { display: none; }
|
|
3978
|
-
/* Allow the tab bar to scroll horizontally rather than wrap into two
|
|
3979
|
-
rows. Scrollbar is hidden to keep the sticky chrome compact. */
|
|
3980
|
-
.tab-bar {
|
|
3981
|
-
overflow-x: auto;
|
|
3982
|
-
-webkit-overflow-scrolling: touch;
|
|
3983
|
-
scrollbar-width: none;
|
|
3984
|
-
}
|
|
3985
|
-
.tab-bar::-webkit-scrollbar { display: none; }
|
|
3986
|
-
.tab-btn { flex-shrink: 0; }
|
|
4165
|
+
.header-title { font-size: var(--font-size-xl); }
|
|
3987
4166
|
}
|
|
3988
4167
|
|
|
3989
4168
|
@media (max-width: 520px) {
|
|
4169
|
+
body { --header-sticky-offset: 117px; }
|
|
3990
4170
|
header { padding: var(--sp-3) var(--sp-4); }
|
|
4171
|
+
.header-row { flex-wrap: wrap; }
|
|
4172
|
+
.header-left, .header-right { flex-basis: 100%; }
|
|
4173
|
+
.refresh-status[data-refresh-state="idle"] { display: none; }
|
|
3991
4174
|
.tab-bar { padding: 0 var(--sp-4); }
|
|
3992
4175
|
.modal { padding: var(--sp-3); }
|
|
3993
4176
|
.modal-card { padding: var(--sp-4); border-radius: var(--radius-lg); }
|
|
@@ -4051,7 +4234,7 @@
|
|
|
4051
4234
|
<span class="header-title">codemem</span>
|
|
4052
4235
|
<span class="health-dot status-healthy" id="healthDot" title="Healthy"></span>
|
|
4053
4236
|
</div>
|
|
4054
|
-
<span class="refresh-status" id="refreshStatus">refreshing…</span>
|
|
4237
|
+
<span class="refresh-status" id="refreshStatus" data-refresh-state="refreshing">refreshing…</span>
|
|
4055
4238
|
<span class="sr-only" id="refreshAnnouncer" aria-live="polite"></span>
|
|
4056
4239
|
</div>
|
|
4057
4240
|
<div class="header-right">
|
|
@@ -4084,6 +4267,7 @@
|
|
|
4084
4267
|
<div id="toastRoot"></div>
|
|
4085
4268
|
<div id="recipientPolicyManagementMount"></div>
|
|
4086
4269
|
<div id="legacyTeamSetupMount"></div>
|
|
4270
|
+
<div id="diagnosticsDrawerMount"></div>
|
|
4087
4271
|
<div class="viewer-reconnect-overlay" id="viewerReconnectOverlay" hidden>
|
|
4088
4272
|
<div class="viewer-reconnect-card" role="status" aria-live="assertive">
|
|
4089
4273
|
<div class="viewer-reconnect-eyebrow">Viewer connection</div>
|
|
@@ -4095,8 +4279,9 @@
|
|
|
4095
4279
|
<span class="viewer-reconnect-spinner" aria-hidden="true"></span>
|
|
4096
4280
|
<span>The page will recover automatically when the server responds.</span>
|
|
4097
4281
|
</div>
|
|
4098
|
-
<div>
|
|
4099
|
-
<button class="settings-button" id="viewerReconnectRetry">Retry now</button>
|
|
4282
|
+
<div class="viewer-reconnect-actions">
|
|
4283
|
+
<button class="settings-button" id="viewerReconnectRetry" type="button">Retry now</button>
|
|
4284
|
+
<button class="settings-button" id="viewerReconnectDiagnostics" type="button">View connection diagnostics</button>
|
|
4100
4285
|
</div>
|
|
4101
4286
|
</div>
|
|
4102
4287
|
</div>
|
|
@@ -4357,6 +4542,7 @@
|
|
|
4357
4542
|
<div class="card" style="animation-delay: 0s">
|
|
4358
4543
|
<div class="section-header">
|
|
4359
4544
|
<h2>System health</h2>
|
|
4545
|
+
<button class="settings-button" id="healthOpenDiagnostics" type="button">View diagnostics</button>
|
|
4360
4546
|
</div>
|
|
4361
4547
|
<div class="section-meta" id="healthMeta">Assessing health signals…</div>
|
|
4362
4548
|
<div class="health-actions" id="healthActions"></div>
|
|
@@ -4367,6 +4553,7 @@
|
|
|
4367
4553
|
<div class="card" style="animation-delay: 0.05s">
|
|
4368
4554
|
<h2>Stats</h2>
|
|
4369
4555
|
<div class="grid-2" id="statsGrid"></div>
|
|
4556
|
+
<div id="automaticRecallStats"></div>
|
|
4370
4557
|
</div>
|
|
4371
4558
|
<div class="card" style="animation-delay: 0.1s">
|
|
4372
4559
|
<h2>Current session</h2>
|
|
@@ -4572,6 +4759,7 @@
|
|
|
4572
4759
|
<h2>Sync diagnostics</h2>
|
|
4573
4760
|
</div>
|
|
4574
4761
|
<div class="section-actions">
|
|
4762
|
+
<button class="settings-button" id="syncOpenDiagnostics" type="button">Recent sync events</button>
|
|
4575
4763
|
<label class="small sync-redact-control">
|
|
4576
4764
|
<span id="syncRedactMount"></span>
|
|
4577
4765
|
<span id="syncRedactLabel">Redact</span>
|
|
@@ -4617,6 +4805,6 @@
|
|
|
4617
4805
|
</div>
|
|
4618
4806
|
</div>
|
|
4619
4807
|
|
|
4620
|
-
<script src="/assets/app.js?v=
|
|
4808
|
+
<script src="/assets/app.js?v=7b6125a564c8"></script>
|
|
4621
4809
|
</body>
|
|
4622
4810
|
</html>
|