@codemem/server 0.46.0-alpha.2 → 0.46.0-beta.2
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/application/coordinator-maintenance.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +478 -182
- package/dist/index.js.map +1 -1
- package/dist/routes/config.d.ts.map +1 -1
- package/dist/routes/memory-ownership.d.ts +5 -0
- package/dist/routes/memory-ownership.d.ts.map +1 -0
- package/dist/routes/observer-status.d.ts.map +1 -1
- package/dist/routes/sync.d.ts +36 -8
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/target-validation.d.ts +13 -0
- package/dist/routes/target-validation.d.ts.map +1 -1
- package/dist/snapshot-source.d.ts +12 -0
- package/dist/snapshot-source.d.ts.map +1 -0
- package/package.json +2 -2
- package/static/app.js +64 -56
- package/static/app.js.br +0 -0
- package/static/app.js.gz +0 -0
- package/static/index.html +934 -298
package/static/index.html
CHANGED
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
align-items: center;
|
|
111
111
|
gap: var(--sp-3);
|
|
112
112
|
min-width: 0;
|
|
113
|
-
overflow:
|
|
113
|
+
overflow: visible;
|
|
114
114
|
}
|
|
115
115
|
|
|
116
116
|
.logo {
|
|
@@ -774,6 +774,10 @@
|
|
|
774
774
|
— quieter than any real button nearby, since it's navigation,
|
|
775
775
|
not action. */
|
|
776
776
|
.sync-subview-link {
|
|
777
|
+
background: none;
|
|
778
|
+
border: 0;
|
|
779
|
+
cursor: pointer;
|
|
780
|
+
font-family: inherit;
|
|
777
781
|
display: inline-flex;
|
|
778
782
|
align-items: center;
|
|
779
783
|
gap: 4px;
|
|
@@ -887,17 +891,81 @@
|
|
|
887
891
|
line-height: 1.5;
|
|
888
892
|
}
|
|
889
893
|
|
|
890
|
-
.
|
|
891
|
-
border-width: 2px;
|
|
892
|
-
}
|
|
893
|
-
.health-primary .value { font-size: var(--font-size-3xl); letter-spacing: 0.2px; }
|
|
894
|
-
.health-primary.status-healthy .value { color: var(--status-healthy); }
|
|
895
|
-
.health-primary.status-degraded .value { color: var(--status-degraded); }
|
|
896
|
-
.health-primary.status-attention .value { color: var(--status-attention); }
|
|
894
|
+
.has-tooltip { cursor: help; }
|
|
897
895
|
.health-loading-icon {
|
|
898
896
|
animation: viewerLoadingSpin var(--duration-attention) linear infinite;
|
|
899
897
|
}
|
|
900
898
|
|
|
899
|
+
.health-system-card {
|
|
900
|
+
display: flex;
|
|
901
|
+
flex-direction: column;
|
|
902
|
+
gap: var(--sp-4);
|
|
903
|
+
}
|
|
904
|
+
.health-system-header {
|
|
905
|
+
display: flex;
|
|
906
|
+
flex-wrap: wrap;
|
|
907
|
+
align-items: center;
|
|
908
|
+
justify-content: space-between;
|
|
909
|
+
gap: var(--sp-4);
|
|
910
|
+
}
|
|
911
|
+
.health-status-summary {
|
|
912
|
+
display: flex;
|
|
913
|
+
align-items: center;
|
|
914
|
+
gap: var(--sp-3);
|
|
915
|
+
min-width: 0;
|
|
916
|
+
}
|
|
917
|
+
.health-status-copy {
|
|
918
|
+
display: flex;
|
|
919
|
+
flex-direction: column;
|
|
920
|
+
gap: 2px;
|
|
921
|
+
min-width: 0;
|
|
922
|
+
}
|
|
923
|
+
.health-status-word {
|
|
924
|
+
font-size: var(--font-size-3xl);
|
|
925
|
+
font-weight: var(--font-weight-semibold);
|
|
926
|
+
line-height: 1.15;
|
|
927
|
+
}
|
|
928
|
+
.health-status-word.status-healthy { color: var(--status-healthy); }
|
|
929
|
+
.health-status-word.status-degraded { color: var(--status-degraded); }
|
|
930
|
+
.health-status-word.status-attention { color: var(--status-attention); }
|
|
931
|
+
.health-status-word.status-unknown { color: var(--text-tertiary); }
|
|
932
|
+
.health-status-copy .section-meta { margin: 0; }
|
|
933
|
+
.health-status-meta {
|
|
934
|
+
display: flex;
|
|
935
|
+
align-items: center;
|
|
936
|
+
flex-wrap: wrap;
|
|
937
|
+
gap: var(--sp-2);
|
|
938
|
+
}
|
|
939
|
+
.health-tile-grid {
|
|
940
|
+
display: grid;
|
|
941
|
+
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
942
|
+
gap: var(--sp-3);
|
|
943
|
+
}
|
|
944
|
+
.health-tile {
|
|
945
|
+
display: flex;
|
|
946
|
+
flex-direction: column;
|
|
947
|
+
gap: var(--sp-1);
|
|
948
|
+
min-width: 0;
|
|
949
|
+
padding: var(--sp-3) var(--sp-4);
|
|
950
|
+
border-radius: var(--radius-sm);
|
|
951
|
+
background: var(--surface-2);
|
|
952
|
+
}
|
|
953
|
+
.health-tile-label {
|
|
954
|
+
color: var(--text-tertiary);
|
|
955
|
+
font-size: var(--font-size-2xs);
|
|
956
|
+
letter-spacing: 0.06em;
|
|
957
|
+
text-transform: uppercase;
|
|
958
|
+
}
|
|
959
|
+
.health-tile-value {
|
|
960
|
+
display: inline-flex;
|
|
961
|
+
align-items: center;
|
|
962
|
+
gap: 6px;
|
|
963
|
+
min-width: 0;
|
|
964
|
+
color: var(--text-secondary);
|
|
965
|
+
font-size: var(--font-size-md);
|
|
966
|
+
}
|
|
967
|
+
.health-maintenance-grid { margin-top: var(--sp-3); }
|
|
968
|
+
|
|
901
969
|
/* ── Buttons ───────────────────────────────────────────── */
|
|
902
970
|
|
|
903
971
|
/* ── Button base ─────────────────────────────────────── */
|
|
@@ -1166,16 +1234,10 @@
|
|
|
1166
1234
|
font-family: var(--font-sans);
|
|
1167
1235
|
font-size: var(--font-size-md);
|
|
1168
1236
|
}
|
|
1169
|
-
.
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
}
|
|
1174
|
-
.project-inventory-skeleton {
|
|
1175
|
-
display: grid;
|
|
1176
|
-
gap: var(--sp-3);
|
|
1177
|
-
margin-top: var(--sp-4);
|
|
1178
|
-
}
|
|
1237
|
+
.projects-toolbar #projectsStatusFilter { flex: 0 1 220px; min-width: 0; }
|
|
1238
|
+
#projectsInventoryMeta { color: var(--text-tertiary); white-space: nowrap; }
|
|
1239
|
+
.project-inventory-list { margin-top: var(--sp-3); min-width: 0; }
|
|
1240
|
+
.project-inventory-skeleton { display: grid; gap: var(--sp-3); margin-top: var(--sp-4); }
|
|
1179
1241
|
.project-inventory-skeleton-row {
|
|
1180
1242
|
padding: var(--sp-4);
|
|
1181
1243
|
border: 1px solid var(--border);
|
|
@@ -1193,93 +1255,193 @@
|
|
|
1193
1255
|
.project-inventory-skeleton-line.title { width: 42%; height: 16px; }
|
|
1194
1256
|
.project-inventory-skeleton-line.meta { width: 68%; }
|
|
1195
1257
|
.project-inventory-skeleton-line.signal { width: 86%; }
|
|
1196
|
-
.project-inventory-
|
|
1197
|
-
|
|
1258
|
+
.project-inventory-table {
|
|
1259
|
+
display: block;
|
|
1260
|
+
width: 100%;
|
|
1261
|
+
min-width: 0;
|
|
1262
|
+
overflow: visible;
|
|
1263
|
+
border-spacing: 0;
|
|
1198
1264
|
border: 1px solid var(--border);
|
|
1199
1265
|
border-radius: var(--radius-md);
|
|
1200
|
-
background: var(--surface-1);
|
|
1201
1266
|
}
|
|
1202
|
-
.project-inventory-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1267
|
+
.project-inventory-table > thead,
|
|
1268
|
+
.project-inventory-table > tbody { display: block; width: 100%; }
|
|
1269
|
+
.project-inventory-table th,
|
|
1270
|
+
.project-inventory-table td { padding: 0; text-align: left; font-weight: inherit; }
|
|
1271
|
+
.project-inventory-table-row {
|
|
1272
|
+
display: grid;
|
|
1273
|
+
grid-template-columns: 28px minmax(0, 1fr) 72px 72px 120px minmax(0, 130px) 180px;
|
|
1274
|
+
align-items: center;
|
|
1275
|
+
column-gap: var(--sp-3);
|
|
1276
|
+
min-width: 0;
|
|
1207
1277
|
}
|
|
1208
|
-
.project-inventory-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
font-
|
|
1278
|
+
.project-inventory-table-header {
|
|
1279
|
+
padding: var(--sp-2) var(--sp-4);
|
|
1280
|
+
background: var(--surface-2);
|
|
1281
|
+
color: var(--text-tertiary);
|
|
1282
|
+
font-size: var(--font-size-2xs);
|
|
1283
|
+
font-weight: var(--font-weight-medium);
|
|
1284
|
+
letter-spacing: 0.06em;
|
|
1285
|
+
text-transform: uppercase;
|
|
1286
|
+
}
|
|
1287
|
+
.project-inventory-row-header {
|
|
1288
|
+
min-width: 0;
|
|
1289
|
+
border-top: 1px solid var(--border);
|
|
1290
|
+
background: var(--surface-1);
|
|
1214
1291
|
}
|
|
1215
|
-
.project-inventory-
|
|
1216
|
-
.project-inventory-
|
|
1292
|
+
.project-inventory-row-header { padding: var(--sp-3) var(--sp-4); }
|
|
1293
|
+
.project-inventory-row-stats { display: contents; }
|
|
1294
|
+
.project-inventory-cell { min-width: 0; }
|
|
1295
|
+
.project-inventory-project-cell { display: flex; flex-direction: column; gap: var(--sp-1); }
|
|
1296
|
+
.project-inventory-title { overflow-wrap: anywhere; color: var(--text-primary); font-size: var(--font-size-md); font-weight: var(--font-weight-semibold); }
|
|
1297
|
+
.project-inventory-signal { overflow: hidden; color: var(--text-tertiary); font-size: var(--font-size-xs); text-overflow: ellipsis; white-space: nowrap; }
|
|
1298
|
+
.project-inventory-number { font-variant-numeric: tabular-nums; }
|
|
1299
|
+
.project-inventory-latest { color: var(--text-secondary); }
|
|
1300
|
+
.project-inventory-badges { display: flex; flex-wrap: wrap; gap: var(--sp-1); }
|
|
1301
|
+
.project-inventory-badges:empty { display: none; }
|
|
1302
|
+
.project-inventory-row-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: var(--sp-2); }
|
|
1303
|
+
.project-inventory-row-actions .settings-button { min-width: 0; max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
|
|
1304
|
+
.project-row-menu { position: relative; flex: 0 0 auto; }
|
|
1305
|
+
.project-row-menu-panel { position: absolute; top: calc(100% + var(--sp-1)); right: 0; }
|
|
1306
|
+
button.feed-menu-item { border: 0; background: transparent; font-family: inherit; text-align: left; }
|
|
1307
|
+
button.feed-menu-item:hover,
|
|
1308
|
+
button.feed-menu-item:focus-visible { background: var(--surface-2); }
|
|
1309
|
+
button.feed-menu-item:disabled { color: var(--text-tertiary); cursor: default; }
|
|
1310
|
+
.project-inventory-details { background: var(--surface-2); }
|
|
1311
|
+
.project-inventory-details-row,
|
|
1312
|
+
.project-inventory-details-cell { display: block; min-width: 0; }
|
|
1313
|
+
.project-inventory-details > summary {
|
|
1217
1314
|
display: flex;
|
|
1218
|
-
|
|
1315
|
+
align-items: center;
|
|
1219
1316
|
gap: var(--sp-2);
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
.project-status-badge {
|
|
1223
|
-
padding: 2px 8px;
|
|
1224
|
-
border-radius: var(--radius-pill);
|
|
1225
|
-
background: var(--surface-2);
|
|
1317
|
+
padding: var(--sp-3) var(--sp-4) var(--sp-3) 44px;
|
|
1318
|
+
cursor: pointer;
|
|
1226
1319
|
color: var(--text-secondary);
|
|
1227
|
-
font-size: var(--font-size-
|
|
1228
|
-
border: 1px solid var(--border);
|
|
1320
|
+
font-size: var(--font-size-sm);
|
|
1229
1321
|
}
|
|
1230
|
-
.project-
|
|
1231
|
-
.project-
|
|
1232
|
-
.project-
|
|
1233
|
-
.project-inventory-details { margin-top: var(--sp-3); }
|
|
1234
|
-
.project-inventory-details summary { cursor: pointer; color: var(--text-secondary); font-size: var(--font-size-sm); }
|
|
1322
|
+
.project-inventory-details-body { padding: 0 var(--sp-4) var(--sp-4) 44px; }
|
|
1323
|
+
.project-inventory-domain { color: var(--accent); font-family: var(--font-mono); font-size: var(--font-size-sm); }
|
|
1324
|
+
.project-inventory-meta { margin-top: var(--sp-2); color: var(--text-secondary); font-size: var(--font-size-sm); }
|
|
1235
1325
|
.project-detail-grid {
|
|
1236
1326
|
display: grid;
|
|
1237
|
-
grid-template-columns: minmax(
|
|
1238
|
-
gap: var(--sp-2) var(--sp-
|
|
1327
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1328
|
+
gap: var(--sp-2) var(--sp-4);
|
|
1239
1329
|
margin-top: var(--sp-3);
|
|
1240
1330
|
font-size: var(--font-size-sm);
|
|
1241
1331
|
}
|
|
1332
|
+
.project-detail-pair { display: grid; grid-template-columns: minmax(130px, max-content) minmax(0, 1fr); gap: var(--sp-3); }
|
|
1242
1333
|
.project-detail-grid dt { color: var(--text-tertiary); }
|
|
1243
1334
|
.project-detail-grid dd { margin: 0; overflow-wrap: anywhere; color: var(--text-primary); }
|
|
1244
|
-
.project-inventory-actions {
|
|
1245
|
-
display: flex;
|
|
1246
|
-
align-items: center;
|
|
1247
|
-
flex-wrap: wrap;
|
|
1248
|
-
gap: var(--sp-2);
|
|
1249
|
-
margin-top: var(--sp-4);
|
|
1250
|
-
}
|
|
1335
|
+
.project-inventory-actions { display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-4); }
|
|
1251
1336
|
.project-domain-select {
|
|
1252
1337
|
min-width: min(100%, 260px);
|
|
1253
1338
|
padding: var(--sp-2) var(--sp-3);
|
|
1254
|
-
border-radius: var(--radius-sm);
|
|
1255
1339
|
border: 1px solid var(--border);
|
|
1340
|
+
border-radius: var(--radius-sm);
|
|
1256
1341
|
background: var(--input-bg);
|
|
1257
1342
|
color: var(--text-primary);
|
|
1258
1343
|
font-family: var(--font-sans);
|
|
1259
1344
|
font-size: var(--font-size-md);
|
|
1260
1345
|
}
|
|
1261
|
-
.project-guardrail-confirmation {
|
|
1262
|
-
flex-basis: 100%;
|
|
1263
|
-
margin-top: var(--sp-2);
|
|
1264
|
-
}
|
|
1346
|
+
.project-guardrail-confirmation { flex-basis: 100%; margin-top: var(--sp-2); }
|
|
1265
1347
|
.projects-pagination { margin-top: var(--sp-4); }
|
|
1348
|
+
.project-selection-control { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; min-height: 24px; cursor: pointer; }
|
|
1349
|
+
.project-selection-checkbox { width: 18px; height: 18px; }
|
|
1350
|
+
.project-recipient-summary { min-width: 0; }
|
|
1351
|
+
.project-recipient-status { color: var(--text-secondary); font-size: var(--font-size-sm); }
|
|
1352
|
+
.project-recipient-chips { display: flex; flex-wrap: wrap; gap: var(--sp-1); padding: 0; margin: 0; list-style: none; }
|
|
1353
|
+
.project-recipient-chip { overflow: hidden; padding: 2px var(--sp-2); border: 1px solid var(--border); border-radius: var(--radius-pill); background: var(--surface-2); color: var(--text-primary); font-size: var(--font-size-2xs); text-overflow: ellipsis; white-space: nowrap; }
|
|
1354
|
+
.project-inventory-child-row { padding-left: var(--sp-5); }
|
|
1355
|
+
.project-inventory-cluster + .project-inventory-child .project-inventory-child-row { border-top: 1px solid var(--border); }
|
|
1266
1356
|
.recipient-policy-review-section + .recipient-policy-review-section { margin-top: var(--sp-5); }
|
|
1267
1357
|
.recipient-policy-review-heading { margin-bottom: var(--sp-2); }
|
|
1268
|
-
.recipient-policy-review-status:empty { display: none; }
|
|
1269
|
-
.recipient-policy-review-list { margin-top: var(--sp-3); }
|
|
1270
1358
|
.recipient-policy-review-item .project-inventory-actions label {
|
|
1271
1359
|
color: var(--text-secondary);
|
|
1272
1360
|
font-size: var(--font-size-sm);
|
|
1273
1361
|
font-weight: var(--font-weight-semibold);
|
|
1274
1362
|
}
|
|
1275
|
-
.recipient-policy-review-
|
|
1276
|
-
|
|
1277
|
-
|
|
1363
|
+
.recipient-policy-review-header {
|
|
1364
|
+
display: flex;
|
|
1365
|
+
align-items: baseline;
|
|
1366
|
+
justify-content: space-between;
|
|
1367
|
+
gap: var(--sp-4);
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
.recipient-policy-review-count {
|
|
1371
|
+
color: var(--text-tertiary);
|
|
1372
|
+
font-weight: var(--font-weight-regular);
|
|
1373
|
+
}
|
|
1374
|
+
.recipient-policy-review-status:empty { display: none; }
|
|
1375
|
+
.recipient-policy-review-bulk {
|
|
1376
|
+
display: grid;
|
|
1377
|
+
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
1378
|
+
align-items: center;
|
|
1379
|
+
gap: var(--sp-3);
|
|
1380
|
+
margin: var(--sp-3) 0;
|
|
1381
|
+
padding: var(--sp-3);
|
|
1382
|
+
border: 1px solid var(--border);
|
|
1383
|
+
border-radius: var(--radius-md);
|
|
1384
|
+
background: var(--surface-2);
|
|
1385
|
+
}
|
|
1386
|
+
.recipient-policy-review-select-all,
|
|
1387
|
+
.recipient-policy-review-selection {
|
|
1388
|
+
display: inline-flex;
|
|
1389
|
+
align-items: center;
|
|
1390
|
+
gap: var(--sp-2);
|
|
1391
|
+
cursor: pointer;
|
|
1392
|
+
}
|
|
1393
|
+
.recipient-policy-review-select-all input,
|
|
1394
|
+
.recipient-policy-review-selection input { width: 18px; height: 18px; }
|
|
1395
|
+
.recipient-policy-review-selection-count { color: var(--text-secondary); }
|
|
1396
|
+
.recipient-policy-review-bulk-actions { display: flex; gap: var(--sp-2); }
|
|
1397
|
+
.recipient-policy-review-list {
|
|
1398
|
+
margin-top: var(--sp-3);
|
|
1399
|
+
overflow: hidden;
|
|
1400
|
+
border: 1px solid var(--border);
|
|
1401
|
+
border-radius: var(--radius-md);
|
|
1402
|
+
}
|
|
1403
|
+
.recipient-policy-review-item {
|
|
1404
|
+
display: grid;
|
|
1405
|
+
grid-template-columns: minmax(0, 1fr) 260px auto;
|
|
1406
|
+
align-items: center;
|
|
1407
|
+
column-gap: var(--sp-4);
|
|
1408
|
+
padding: var(--sp-3) var(--sp-4);
|
|
1409
|
+
background: var(--surface-1);
|
|
1410
|
+
}
|
|
1411
|
+
.recipient-policy-review-item + .recipient-policy-review-item { border-top: 1px solid var(--border); }
|
|
1412
|
+
.recipient-policy-review-name,
|
|
1413
|
+
.recipient-policy-review-actions {
|
|
1414
|
+
display: flex;
|
|
1415
|
+
align-items: center;
|
|
1416
|
+
flex-wrap: wrap;
|
|
1417
|
+
gap: var(--sp-2);
|
|
1418
|
+
}
|
|
1419
|
+
.recipient-policy-review-name > strong { font-size: var(--font-size-lg); }
|
|
1420
|
+
.recipient-policy-review-identity { color: var(--text-tertiary); overflow-wrap: anywhere; }
|
|
1421
|
+
.recipient-policy-review-meta {
|
|
1422
|
+
color: var(--text-secondary);
|
|
1423
|
+
margin-top: var(--sp-1);
|
|
1424
|
+
}
|
|
1425
|
+
.recipient-policy-review-meta .badge { margin-left: var(--sp-2); }
|
|
1426
|
+
.recipient-policy-review-select { min-width: 0; width: 100%; }
|
|
1427
|
+
.recipient-policy-review-details {
|
|
1428
|
+
grid-column: 1 / -1;
|
|
1429
|
+
padding: var(--sp-3) 0 var(--sp-1);
|
|
1430
|
+
}
|
|
1431
|
+
.recipient-policy-deferred,
|
|
1432
|
+
.recipient-policy-preview { margin-top: var(--sp-2); }
|
|
1278
1433
|
.recipient-policy-preview-list { margin-top: var(--sp-2); }
|
|
1279
1434
|
.recipient-policy-preview-list ul {
|
|
1280
1435
|
margin-top: var(--sp-1);
|
|
1281
1436
|
padding-left: var(--sp-5);
|
|
1282
1437
|
}
|
|
1438
|
+
.recipient-policy-review-section { margin-top: var(--sp-5); }
|
|
1439
|
+
@media (max-width: 900px) {
|
|
1440
|
+
.recipient-policy-review-bulk { grid-template-columns: minmax(0, 1fr); }
|
|
1441
|
+
.recipient-policy-review-bulk-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
1442
|
+
.recipient-policy-review-item { grid-template-columns: minmax(0, 1fr); row-gap: var(--sp-3); }
|
|
1443
|
+
.recipient-policy-review-details { grid-column: 1; }
|
|
1444
|
+
}
|
|
1283
1445
|
.project-selection-actions,
|
|
1284
1446
|
.recipient-policy-management-actions,
|
|
1285
1447
|
.recipient-policy-sharing-actions {
|
|
@@ -1547,6 +1709,16 @@
|
|
|
1547
1709
|
.recipient-policy-management-details li { overflow-wrap: anywhere; }
|
|
1548
1710
|
.recipient-policy-management-status:empty { display: none; }
|
|
1549
1711
|
.recipient-policy-sharing-header { margin-bottom: var(--sp-4); }
|
|
1712
|
+
.sharing-member-preview {
|
|
1713
|
+
overflow-wrap: anywhere;
|
|
1714
|
+
}
|
|
1715
|
+
.sharing-member-names .sharing-member-preview {
|
|
1716
|
+
display: -webkit-box;
|
|
1717
|
+
-webkit-box-orient: vertical;
|
|
1718
|
+
-webkit-line-clamp: 2;
|
|
1719
|
+
overflow: hidden;
|
|
1720
|
+
}
|
|
1721
|
+
.sharing-member-names p { overflow-wrap: anywhere; }
|
|
1550
1722
|
.recipient-policy-sharing-tabs {
|
|
1551
1723
|
position: static;
|
|
1552
1724
|
display: flex;
|
|
@@ -1574,6 +1746,89 @@
|
|
|
1574
1746
|
gap: var(--sp-3);
|
|
1575
1747
|
}
|
|
1576
1748
|
.recipient-policy-sharing-card-title h3 { margin: 0; }
|
|
1749
|
+
.recipient-policy-sharing-card-header {
|
|
1750
|
+
display: flex;
|
|
1751
|
+
align-items: flex-start;
|
|
1752
|
+
justify-content: space-between;
|
|
1753
|
+
gap: var(--sp-4);
|
|
1754
|
+
}
|
|
1755
|
+
.recipient-policy-sharing-card-title { justify-content: flex-start; flex-wrap: wrap; }
|
|
1756
|
+
.recipient-policy-sharing-card-actions,
|
|
1757
|
+
.recipient-policy-sharing-card-actions .recipient-policy-sharing-actions {
|
|
1758
|
+
display: flex;
|
|
1759
|
+
align-items: center;
|
|
1760
|
+
justify-content: flex-end;
|
|
1761
|
+
gap: var(--sp-2);
|
|
1762
|
+
flex-wrap: wrap;
|
|
1763
|
+
}
|
|
1764
|
+
.recipient-policy-sharing-card-actions .settings-button { margin-top: 0; }
|
|
1765
|
+
.recipient-policy-sharing-stats {
|
|
1766
|
+
display: grid;
|
|
1767
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1768
|
+
gap: var(--sp-2);
|
|
1769
|
+
margin-top: var(--sp-4);
|
|
1770
|
+
}
|
|
1771
|
+
.recipient-policy-sharing-stats > div {
|
|
1772
|
+
display: grid;
|
|
1773
|
+
gap: var(--sp-1);
|
|
1774
|
+
min-width: 0;
|
|
1775
|
+
padding: var(--sp-3);
|
|
1776
|
+
border-radius: var(--radius-sm);
|
|
1777
|
+
background: var(--surface-2);
|
|
1778
|
+
}
|
|
1779
|
+
.recipient-policy-sharing-stats strong { font-size: var(--font-size-lg); }
|
|
1780
|
+
.recipient-policy-sharing-stats span { color: var(--text-secondary); overflow-wrap: anywhere; }
|
|
1781
|
+
.recipient-policy-sharing-projects,
|
|
1782
|
+
.recipient-policy-sharing-identity-rows,
|
|
1783
|
+
.recipient-policy-sharing-identity-rows > div { display: grid; gap: var(--sp-2); }
|
|
1784
|
+
.recipient-policy-sharing-projects,
|
|
1785
|
+
.recipient-policy-sharing-identity-rows { margin-top: var(--sp-4); }
|
|
1786
|
+
.recipient-policy-sharing-identity-rows > div + div { padding-top: var(--sp-3); border-top: 1px solid var(--border); }
|
|
1787
|
+
.recipient-policy-sharing-chips { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
|
|
1788
|
+
.recipient-policy-sharing-more {
|
|
1789
|
+
padding: 0;
|
|
1790
|
+
border: 0;
|
|
1791
|
+
background: transparent;
|
|
1792
|
+
color: var(--accent);
|
|
1793
|
+
font: inherit;
|
|
1794
|
+
cursor: pointer;
|
|
1795
|
+
}
|
|
1796
|
+
.recipient-policy-sharing-toolbar {
|
|
1797
|
+
display: flex;
|
|
1798
|
+
align-items: center;
|
|
1799
|
+
justify-content: space-between;
|
|
1800
|
+
gap: var(--sp-3);
|
|
1801
|
+
margin-bottom: var(--sp-3);
|
|
1802
|
+
}
|
|
1803
|
+
.recipient-policy-sharing-toolbar label { flex: 1; }
|
|
1804
|
+
.recipient-policy-sharing-toolbar input { width: 100%; }
|
|
1805
|
+
.recipient-policy-sharing-received-table { display: block; width: 100%; overflow: hidden; border: 1px solid var(--border); border-spacing: 0; border-radius: var(--radius-md); }
|
|
1806
|
+
.recipient-policy-sharing-received-table thead,
|
|
1807
|
+
.recipient-policy-sharing-received-table tbody { display: block; }
|
|
1808
|
+
.recipient-policy-sharing-received-head,
|
|
1809
|
+
.recipient-policy-sharing-received-row {
|
|
1810
|
+
display: grid;
|
|
1811
|
+
grid-template-columns: minmax(0, 1fr) 180px 190px 170px;
|
|
1812
|
+
gap: var(--sp-4);
|
|
1813
|
+
align-items: center;
|
|
1814
|
+
padding: var(--sp-3) var(--sp-4);
|
|
1815
|
+
}
|
|
1816
|
+
.recipient-policy-sharing-received-head {
|
|
1817
|
+
background: var(--surface-2);
|
|
1818
|
+
color: var(--text-tertiary);
|
|
1819
|
+
font-size: var(--font-size-2xs);
|
|
1820
|
+
font-weight: var(--font-weight-semibold);
|
|
1821
|
+
letter-spacing: var(--letter-spacing-wide);
|
|
1822
|
+
text-transform: uppercase;
|
|
1823
|
+
}
|
|
1824
|
+
.recipient-policy-sharing-received-row { border-top: 1px solid var(--border); background: var(--surface-1); }
|
|
1825
|
+
.recipient-policy-sharing-received-row > * { min-width: 0; overflow-wrap: anywhere; }
|
|
1826
|
+
.recipient-policy-sharing-received-row td { min-width: 0; padding: 0; color: var(--text-secondary); text-align: left; }
|
|
1827
|
+
.recipient-policy-sharing-received-row td:first-child { color: var(--text-primary); }
|
|
1828
|
+
.recipient-policy-sharing-received-head th { min-width: 0; padding: 0; text-align: left; }
|
|
1829
|
+
.recipient-policy-sharing-received-head th:nth-child(n + 3),
|
|
1830
|
+
.recipient-policy-sharing-received-row td:nth-child(n + 3) { text-align: right; }
|
|
1831
|
+
.recipient-policy-sharing-pointer { display: inline-block; margin-top: var(--sp-3); }
|
|
1577
1832
|
.recipient-policy-sharing-card,
|
|
1578
1833
|
.recipient-policy-sharing-card-title,
|
|
1579
1834
|
.recipient-policy-sharing-details dd { min-width: 0; overflow-wrap: anywhere; }
|
|
@@ -1607,10 +1862,6 @@
|
|
|
1607
1862
|
}
|
|
1608
1863
|
.recipient-policy-sharing-details dt { color: var(--text-secondary); }
|
|
1609
1864
|
.recipient-policy-sharing-details dd { margin: 0; color: var(--text-primary); }
|
|
1610
|
-
.recipient-policy-sharing-team-card > .recipient-policy-sharing-actions + .recipient-policy-sharing-actions {
|
|
1611
|
-
margin-top: var(--sp-2);
|
|
1612
|
-
}
|
|
1613
|
-
|
|
1614
1865
|
.loading-card-list { display: grid; gap: var(--sp-3); }
|
|
1615
1866
|
.loading-card {
|
|
1616
1867
|
padding: var(--sp-4);
|
|
@@ -1760,10 +2011,177 @@
|
|
|
1760
2011
|
.device-identity-review-panel ul { margin: var(--sp-3) 0; padding-left: var(--sp-5); }
|
|
1761
2012
|
.device-identity-review-panel .peer-actions { margin-top: var(--sp-4); }
|
|
1762
2013
|
|
|
2014
|
+
#devicesMount .recipient-policy-sharing-header {
|
|
2015
|
+
display: flex;
|
|
2016
|
+
align-items: flex-start;
|
|
2017
|
+
justify-content: space-between;
|
|
2018
|
+
gap: var(--sp-4);
|
|
2019
|
+
}
|
|
2020
|
+
.devices-summary-bar,
|
|
2021
|
+
.devices-summary-counts,
|
|
2022
|
+
.devices-summary-counts > span,
|
|
2023
|
+
.devices-identity-header,
|
|
2024
|
+
.devices-table-device {
|
|
2025
|
+
display: flex;
|
|
2026
|
+
align-items: center;
|
|
2027
|
+
}
|
|
2028
|
+
.devices-summary-bar {
|
|
2029
|
+
justify-content: space-between;
|
|
2030
|
+
gap: var(--sp-4);
|
|
2031
|
+
padding: 10px 14px;
|
|
2032
|
+
border-radius: var(--radius-sm);
|
|
2033
|
+
background: var(--surface-2);
|
|
2034
|
+
color: var(--text-secondary);
|
|
2035
|
+
font-size: var(--font-size-sm);
|
|
2036
|
+
}
|
|
2037
|
+
.devices-summary-counts { gap: var(--sp-4); flex-wrap: wrap; }
|
|
2038
|
+
.devices-summary-counts > span { gap: 6px; }
|
|
2039
|
+
.devices-coordinator-status {
|
|
2040
|
+
display: flex;
|
|
2041
|
+
align-items: center;
|
|
2042
|
+
gap: var(--sp-2);
|
|
2043
|
+
padding: var(--sp-2) var(--sp-3);
|
|
2044
|
+
border-radius: var(--radius-sm);
|
|
2045
|
+
background: var(--surface-2);
|
|
2046
|
+
}
|
|
2047
|
+
.devices-coordinator-status-spacer { flex: 1; }
|
|
2048
|
+
.devices-local-row {
|
|
2049
|
+
display: grid;
|
|
2050
|
+
grid-template-columns: 16px minmax(0, 1fr) auto;
|
|
2051
|
+
align-items: center;
|
|
2052
|
+
gap: var(--sp-3);
|
|
2053
|
+
padding: 14px var(--sp-4);
|
|
2054
|
+
border: 1px solid var(--border);
|
|
2055
|
+
border-radius: var(--radius-md);
|
|
2056
|
+
background: var(--surface-1);
|
|
2057
|
+
}
|
|
2058
|
+
.devices-local-copy { display: grid; gap: 2px; }
|
|
2059
|
+
.devices-local-copy .small { color: var(--text-tertiary); }
|
|
2060
|
+
.devices-empty-state {
|
|
2061
|
+
display: flex;
|
|
2062
|
+
flex-direction: column;
|
|
2063
|
+
align-items: center;
|
|
2064
|
+
gap: var(--sp-2);
|
|
2065
|
+
padding: 40px var(--sp-6);
|
|
2066
|
+
border: 1px dashed var(--border-strong);
|
|
2067
|
+
border-radius: var(--radius-md);
|
|
2068
|
+
text-align: center;
|
|
2069
|
+
}
|
|
2070
|
+
.devices-empty-state > strong { font-size: var(--font-size-lg); }
|
|
2071
|
+
.devices-empty-actions { display: flex; gap: var(--sp-2); margin-top: var(--sp-2); }
|
|
2072
|
+
.devices-pairing-panel {
|
|
2073
|
+
display: grid;
|
|
2074
|
+
gap: var(--sp-3);
|
|
2075
|
+
padding: var(--sp-4);
|
|
2076
|
+
border: 1px solid var(--border);
|
|
2077
|
+
border-radius: var(--radius-md);
|
|
2078
|
+
background: var(--surface-2);
|
|
2079
|
+
}
|
|
2080
|
+
.devices-pairing-panel p { margin: 0; color: var(--text-secondary); }
|
|
2081
|
+
.devices-pairing-header,
|
|
2082
|
+
.devices-pairing-command { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); }
|
|
2083
|
+
.devices-pairing-header h3 { margin: 0; }
|
|
2084
|
+
.devices-pairing-command code { min-width: 0; overflow-wrap: anywhere; }
|
|
2085
|
+
.devices-identity-group { display: grid; gap: var(--sp-2); margin-top: var(--sp-4); }
|
|
2086
|
+
.devices-identity-header { align-items: baseline; justify-content: space-between; gap: var(--sp-3); }
|
|
2087
|
+
.devices-identity-header strong > span { color: var(--text-tertiary); font-weight: var(--font-weight-regular); }
|
|
2088
|
+
.devices-identity-header > .small { color: var(--text-tertiary); }
|
|
2089
|
+
.devices-table { width: 100%; overflow: visible; border: 1px solid var(--border); border-spacing: 0; border-radius: var(--radius-md); }
|
|
2090
|
+
.devices-table-head,
|
|
2091
|
+
.devices-table-row {
|
|
2092
|
+
display: grid;
|
|
2093
|
+
grid-template-columns: 16px minmax(0, 1fr) 160px 140px 48px;
|
|
2094
|
+
align-items: center;
|
|
2095
|
+
column-gap: var(--sp-4);
|
|
2096
|
+
}
|
|
2097
|
+
.devices-table-head {
|
|
2098
|
+
padding: var(--sp-2) var(--sp-4);
|
|
2099
|
+
background: var(--surface-2);
|
|
2100
|
+
color: var(--text-tertiary);
|
|
2101
|
+
font-size: var(--font-size-2xs);
|
|
2102
|
+
font-weight: var(--font-weight-medium);
|
|
2103
|
+
letter-spacing: 0.06em;
|
|
2104
|
+
text-transform: uppercase;
|
|
2105
|
+
}
|
|
2106
|
+
.devices-table th,
|
|
2107
|
+
.devices-table td { min-width: 0; padding: 0; text-align: left; }
|
|
2108
|
+
.devices-table-head { border-radius: var(--radius-md) var(--radius-md) 0 0; }
|
|
2109
|
+
.devices-table-row { min-width: 0; padding: var(--sp-3) var(--sp-4); border-top: 1px solid var(--border); }
|
|
2110
|
+
.devices-table-device { min-width: 0; gap: var(--sp-2); flex-wrap: wrap; }
|
|
2111
|
+
.devices-table-device strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
2112
|
+
.devices-table-availability { color: var(--text-secondary); }
|
|
2113
|
+
.devices-table-version { color: var(--text-tertiary); font-family: var(--font-mono); font-size: var(--font-size-xs); }
|
|
2114
|
+
.devices-row-menu { position: relative; }
|
|
2115
|
+
.devices-row-menu > summary { list-style: none; }
|
|
2116
|
+
.devices-row-menu > summary::-webkit-details-marker { display: none; }
|
|
2117
|
+
.devices-row-menu[open] > .feed-menu-trigger { background: var(--surface-2); color: var(--text-primary); border-color: var(--border-hover); }
|
|
2118
|
+
.devices-row-menu > .feed-menu-panel { position: absolute; top: calc(100% + 4px); right: 0; }
|
|
2119
|
+
.devices-table-details { border-top: 1px solid var(--border); background: var(--surface-2); }
|
|
2120
|
+
.devices-table-details > td { display: grid; gap: var(--sp-3); padding: var(--sp-4) var(--sp-6); }
|
|
2121
|
+
.devices-table-details p { margin: 0; }
|
|
2122
|
+
.devices-table-details ul { margin: 0; padding-left: var(--sp-5); }
|
|
2123
|
+
.devices-table-details .device-identity-rebind { margin-top: 0; }
|
|
2124
|
+
.devices-delivered-copy-warning { margin-top: var(--sp-3); color: var(--text-secondary); }
|
|
2125
|
+
|
|
2126
|
+
@media (max-width: 900px) {
|
|
2127
|
+
.recipient-policy-sharing-card-header { align-items: stretch; flex-direction: column; }
|
|
2128
|
+
.recipient-policy-sharing-card-actions { justify-content: flex-start; }
|
|
2129
|
+
.recipient-policy-sharing-stats { grid-template-columns: 1fr; }
|
|
2130
|
+
.recipient-policy-sharing-received-head {
|
|
2131
|
+
position: absolute;
|
|
2132
|
+
width: 1px;
|
|
2133
|
+
height: 1px;
|
|
2134
|
+
padding: 0;
|
|
2135
|
+
margin: -1px;
|
|
2136
|
+
overflow: hidden;
|
|
2137
|
+
clip: rect(0, 0, 0, 0);
|
|
2138
|
+
clip-path: inset(50%);
|
|
2139
|
+
white-space: nowrap;
|
|
2140
|
+
border: 0;
|
|
2141
|
+
}
|
|
2142
|
+
.recipient-policy-sharing-received-row { grid-template-columns: 1fr 1fr; }
|
|
2143
|
+
.recipient-policy-sharing-received-row > td:not(:first-child)::before {
|
|
2144
|
+
content: attr(data-label) " ";
|
|
2145
|
+
display: block;
|
|
2146
|
+
color: var(--text-tertiary);
|
|
2147
|
+
font-size: var(--font-size-2xs);
|
|
2148
|
+
text-transform: uppercase;
|
|
2149
|
+
}
|
|
2150
|
+
.recipient-policy-sharing-received-row td:nth-child(n + 3) { text-align: left; }
|
|
2151
|
+
.project-inventory-table-header { display: none; }
|
|
2152
|
+
.project-inventory-table-row { grid-template-columns: 28px minmax(0, 1fr) auto; row-gap: var(--sp-3); }
|
|
2153
|
+
.project-inventory-select-cell { grid-column: 1; grid-row: 1; }
|
|
2154
|
+
.project-inventory-project-cell { grid-column: 2; grid-row: 1; }
|
|
2155
|
+
.project-inventory-row-actions { grid-column: 3; grid-row: 1; flex-wrap: wrap; }
|
|
2156
|
+
.project-inventory-number::before,
|
|
2157
|
+
.project-inventory-latest::before,
|
|
2158
|
+
.project-inventory-shared::before { content: attr(data-label) " "; color: var(--text-tertiary); font-size: var(--font-size-2xs); text-transform: uppercase; }
|
|
2159
|
+
.project-inventory-table-row > :nth-child(3) { grid-column: 2; grid-row: 2; }
|
|
2160
|
+
.project-inventory-table-row > :nth-child(4) { grid-column: 3; grid-row: 2; }
|
|
2161
|
+
.project-inventory-table-row > :nth-child(5) { grid-column: 2; grid-row: 3; }
|
|
2162
|
+
.project-inventory-table-row > :nth-child(6) { grid-column: 3; grid-row: 3; }
|
|
2163
|
+
.project-detail-grid { grid-template-columns: 1fr; }
|
|
2164
|
+
.devices-table-head { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
|
|
2165
|
+
.devices-table-row { grid-template-columns: 16px minmax(0, 1fr) 48px; row-gap: var(--sp-2); }
|
|
2166
|
+
.devices-table-row > :nth-child(1) { grid-column: 1; grid-row: 1; }
|
|
2167
|
+
.devices-table-row > :nth-child(2) { grid-column: 2; grid-row: 1; }
|
|
2168
|
+
.devices-table-row > :nth-child(3) { grid-column: 2; grid-row: 2; }
|
|
2169
|
+
.devices-table-row > :nth-child(4) { grid-column: 2; grid-row: 3; }
|
|
2170
|
+
.devices-table-row > :nth-child(5) { grid-column: 3; grid-row: 1; }
|
|
2171
|
+
.devices-table-availability::before,
|
|
2172
|
+
.devices-table-version::before { content: attr(data-label) " "; color: var(--text-tertiary); font-family: var(--font-sans); font-size: var(--font-size-2xs); text-transform: uppercase; }
|
|
2173
|
+
}
|
|
2174
|
+
|
|
1763
2175
|
@media (max-width: 720px) {
|
|
1764
|
-
.
|
|
1765
|
-
.
|
|
1766
|
-
.project-
|
|
2176
|
+
.recipient-policy-sharing-toolbar { align-items: stretch; flex-direction: column; }
|
|
2177
|
+
.recipient-policy-sharing-received-row { grid-template-columns: 1fr; }
|
|
2178
|
+
.project-inventory-row-header { grid-template-columns: 28px minmax(0, 1fr); }
|
|
2179
|
+
.project-inventory-row-actions { grid-column: 2; grid-row: 2; justify-content: flex-start; }
|
|
2180
|
+
.project-inventory-table-row > :nth-child(3) { grid-column: 2; grid-row: 3; }
|
|
2181
|
+
.project-inventory-table-row > :nth-child(4) { grid-column: 2; grid-row: 4; }
|
|
2182
|
+
.project-inventory-table-row > :nth-child(5) { grid-column: 2; grid-row: 5; }
|
|
2183
|
+
.project-inventory-table-row > :nth-child(6) { grid-column: 2; grid-row: 6; }
|
|
2184
|
+
.project-recipient-action { width: auto; }
|
|
1767
2185
|
.recipient-policy-management-dialog .modal-card { width: calc(100vw - 16px); }
|
|
1768
2186
|
.recipient-policy-management-actions,
|
|
1769
2187
|
.recipient-policy-sharing-responsive-actions { display: grid; grid-template-columns: 1fr; }
|
|
@@ -1785,6 +2203,16 @@
|
|
|
1785
2203
|
.device-identity-setup-summary { align-items: stretch; flex-direction: column; }
|
|
1786
2204
|
.device-identity-setup-summary .settings-button,
|
|
1787
2205
|
.device-identity-review-panel .settings-button { min-height: 44px; width: 100%; }
|
|
2206
|
+
.devices-summary-bar,
|
|
2207
|
+
.devices-coordinator-status,
|
|
2208
|
+
.devices-pairing-header,
|
|
2209
|
+
.devices-pairing-command,
|
|
2210
|
+
.devices-identity-header,
|
|
2211
|
+
#devicesMount .recipient-policy-sharing-header { align-items: stretch; flex-direction: column; }
|
|
2212
|
+
.devices-summary-bar .settings-button,
|
|
2213
|
+
.devices-coordinator-status .settings-button,
|
|
2214
|
+
.devices-pairing-panel button { width: 100%; min-height: 44px; }
|
|
2215
|
+
.devices-empty-actions { align-items: stretch; flex-direction: column; width: 100%; }
|
|
1788
2216
|
}
|
|
1789
2217
|
|
|
1790
2218
|
/* 36×36 square icon buttons — theme toggle, settings gear. */
|
|
@@ -1932,7 +2360,9 @@
|
|
|
1932
2360
|
transition: background-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
|
|
1933
2361
|
}
|
|
1934
2362
|
.toggle-button:hover { background: var(--toggle-hover-bg); color: var(--text-primary); }
|
|
1935
|
-
.toggle-button.active
|
|
2363
|
+
.toggle-button.active,
|
|
2364
|
+
.toggle-button[data-state="checked"],
|
|
2365
|
+
.toggle-button[aria-checked="true"] {
|
|
1936
2366
|
background: var(--accent-subtle);
|
|
1937
2367
|
color: var(--accent);
|
|
1938
2368
|
box-shadow: inset 0 0 0 1px var(--accent-strong);
|
|
@@ -2007,18 +2437,14 @@
|
|
|
2007
2437
|
.feed-skeleton-chip.w-56 { width: 56px; }
|
|
2008
2438
|
|
|
2009
2439
|
/* ── Feed items ────────────────────────────────────────── */
|
|
2010
|
-
/* Design-handoff clarification (2026-04-19): feed items render with
|
|
2011
|
-
a full-width top banner in the kind's tint, not a 4px left rail.
|
|
2012
|
-
Banner ~28px tall, --accent-subtle bg per kind, 1px accent-strong
|
|
2013
|
-
bottom border; kind chip sits inset left inside the banner. */
|
|
2014
|
-
|
|
2015
2440
|
.feed-item {
|
|
2441
|
+
display: grid;
|
|
2442
|
+
grid-template-columns: max-content minmax(0, 1fr) auto;
|
|
2443
|
+
column-gap: var(--sp-4);
|
|
2444
|
+
padding: var(--sp-4) var(--sp-5);
|
|
2016
2445
|
border: 1px solid var(--border);
|
|
2017
|
-
border-radius: var(--radius-
|
|
2446
|
+
border-radius: var(--radius-lg);
|
|
2018
2447
|
background: var(--surface-1);
|
|
2019
|
-
overflow: hidden;
|
|
2020
|
-
display: flex;
|
|
2021
|
-
flex-direction: column;
|
|
2022
2448
|
box-shadow: var(--shadow-sm);
|
|
2023
2449
|
transition: transform var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);
|
|
2024
2450
|
}
|
|
@@ -2028,31 +2454,17 @@
|
|
|
2028
2454
|
border-color: var(--border-hover);
|
|
2029
2455
|
}
|
|
2030
2456
|
|
|
2031
|
-
|
|
2032
|
-
.feed-kind-banner {
|
|
2033
|
-
padding: 7px var(--sp-5);
|
|
2034
|
-
background: var(--accent-subtle);
|
|
2035
|
-
border-bottom: 1px solid var(--accent-strong);
|
|
2036
|
-
}
|
|
2037
|
-
.feed-item.change .feed-kind-banner { background: var(--accent-cool-subtle); border-bottom-color: color-mix(in srgb, var(--accent-cool) 30%, transparent); }
|
|
2038
|
-
.feed-item.bugfix .feed-kind-banner { background: var(--accent-warm-subtle); border-bottom-color: color-mix(in srgb, var(--accent-warm) 30%, transparent); }
|
|
2039
|
-
.feed-item.refactor .feed-kind-banner { background: var(--accent-violet-subtle); border-bottom-color: color-mix(in srgb, var(--accent-violet) 30%, transparent); }
|
|
2040
|
-
.feed-item.discovery .feed-kind-banner { background: var(--accent-steel-subtle); border-bottom-color: color-mix(in srgb, var(--accent-steel) 30%, transparent); }
|
|
2041
|
-
.feed-item.docs .feed-kind-banner { background: var(--accent-ochre-subtle); border-bottom-color: color-mix(in srgb, var(--accent-ochre) 30%, transparent); }
|
|
2042
|
-
.feed-item.test .feed-kind-banner { background: var(--accent-neutral-subtle); border-bottom-color: color-mix(in srgb, var(--accent-neutral) 30%, transparent); }
|
|
2043
|
-
/* Core emits 'decision' / 'exploration' / 'session_summary' too — preserve
|
|
2044
|
-
neutral treatments so those items aren't unstyled. */
|
|
2045
|
-
.feed-item.decision .feed-kind-banner { background: var(--accent-neutral-subtle); border-bottom-color: color-mix(in srgb, var(--accent-neutral) 30%, transparent); }
|
|
2046
|
-
.feed-item.exploration .feed-kind-banner { background: color-mix(in srgb, var(--text-tertiary) 12%, transparent); border-bottom-color: color-mix(in srgb, var(--text-tertiary) 24%, transparent); }
|
|
2047
|
-
.feed-item.session_summary .feed-kind-banner { background: color-mix(in srgb, var(--accent-cool) 10%, transparent); border-bottom-color: color-mix(in srgb, var(--accent-cool) 22%, transparent); }
|
|
2048
|
-
|
|
2457
|
+
.feed-kind-rail { align-self: start; min-width: 0; }
|
|
2049
2458
|
.feed-card-body {
|
|
2050
2459
|
padding: var(--sp-4) var(--sp-5);
|
|
2051
2460
|
display: flex;
|
|
2052
2461
|
flex-direction: column;
|
|
2053
2462
|
gap: var(--sp-2);
|
|
2054
2463
|
}
|
|
2055
|
-
|
|
2464
|
+
.feed-item > .feed-card-body {
|
|
2465
|
+
padding: 0;
|
|
2466
|
+
min-width: 0;
|
|
2467
|
+
}
|
|
2056
2468
|
.feed-card-header {
|
|
2057
2469
|
display: flex;
|
|
2058
2470
|
align-items: flex-start;
|
|
@@ -2060,22 +2472,55 @@
|
|
|
2060
2472
|
gap: var(--sp-3);
|
|
2061
2473
|
}
|
|
2062
2474
|
.feed-card-header > .feed-header { flex: 1; overflow: hidden; }
|
|
2063
|
-
|
|
2064
|
-
.feed-header {
|
|
2475
|
+
.feed-card-side {
|
|
2065
2476
|
display: flex;
|
|
2066
|
-
align-items:
|
|
2067
|
-
|
|
2068
|
-
flex-wrap: wrap;
|
|
2477
|
+
align-items: flex-start;
|
|
2478
|
+
justify-content: flex-end;
|
|
2069
2479
|
min-width: 0;
|
|
2070
2480
|
}
|
|
2071
|
-
|
|
2072
|
-
.feed-actions {
|
|
2481
|
+
.feed-card-side-top {
|
|
2073
2482
|
display: flex;
|
|
2074
2483
|
align-items: center;
|
|
2484
|
+
justify-content: flex-end;
|
|
2485
|
+
min-width: 0;
|
|
2075
2486
|
gap: var(--sp-2);
|
|
2076
|
-
flex-shrink: 0;
|
|
2077
2487
|
}
|
|
2078
2488
|
|
|
2489
|
+
.feed-disclosure {
|
|
2490
|
+
display: inline-flex;
|
|
2491
|
+
align-items: center;
|
|
2492
|
+
justify-content: center;
|
|
2493
|
+
width: 30px;
|
|
2494
|
+
height: 30px;
|
|
2495
|
+
min-height: 30px;
|
|
2496
|
+
padding: 0;
|
|
2497
|
+
border: 1px solid var(--border);
|
|
2498
|
+
border-radius: var(--radius-pill);
|
|
2499
|
+
background: transparent;
|
|
2500
|
+
color: var(--text-secondary);
|
|
2501
|
+
font-size: var(--font-size-sm);
|
|
2502
|
+
font-weight: var(--font-weight-medium);
|
|
2503
|
+
white-space: nowrap;
|
|
2504
|
+
cursor: pointer;
|
|
2505
|
+
transition: background var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard);
|
|
2506
|
+
}
|
|
2507
|
+
.feed-disclosure:hover {
|
|
2508
|
+
border-color: var(--border-hover);
|
|
2509
|
+
background: var(--surface-2);
|
|
2510
|
+
color: var(--text-primary);
|
|
2511
|
+
}
|
|
2512
|
+
.feed-disclosure:focus-visible {
|
|
2513
|
+
outline: 2px solid var(--accent);
|
|
2514
|
+
outline-offset: 2px;
|
|
2515
|
+
}
|
|
2516
|
+
.feed-disclosure-icon {
|
|
2517
|
+
width: 14px;
|
|
2518
|
+
height: 14px;
|
|
2519
|
+
flex: 0 0 auto;
|
|
2520
|
+
transition: transform var(--duration-fast) var(--ease-standard);
|
|
2521
|
+
}
|
|
2522
|
+
.feed-disclosure[aria-expanded="false"] .feed-disclosure-icon { transform: rotate(-90deg); }
|
|
2523
|
+
|
|
2079
2524
|
.feed-menu-panel {
|
|
2080
2525
|
min-width: 180px;
|
|
2081
2526
|
padding: 6px;
|
|
@@ -2089,6 +2534,7 @@
|
|
|
2089
2534
|
width: 30px;
|
|
2090
2535
|
height: 30px;
|
|
2091
2536
|
border: 1px solid var(--border);
|
|
2537
|
+
border-radius: var(--radius-pill);
|
|
2092
2538
|
background: transparent;
|
|
2093
2539
|
color: var(--text-tertiary);
|
|
2094
2540
|
font-size: var(--font-size-2xl);
|
|
@@ -2134,25 +2580,75 @@
|
|
|
2134
2580
|
}
|
|
2135
2581
|
|
|
2136
2582
|
.feed-title {
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
flex: 1;
|
|
2583
|
+
display: block;
|
|
2584
|
+
width: 100%;
|
|
2140
2585
|
min-width: 0;
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2586
|
+
padding: 0;
|
|
2587
|
+
border: 0;
|
|
2588
|
+
background: transparent;
|
|
2589
|
+
color: var(--text-primary);
|
|
2590
|
+
font-family: var(--font-sans);
|
|
2591
|
+
font-size: var(--font-size-lg);
|
|
2592
|
+
font-weight: var(--font-weight-semibold);
|
|
2593
|
+
line-height: 1.35;
|
|
2594
|
+
text-align: left;
|
|
2145
2595
|
overflow-wrap: anywhere;
|
|
2146
|
-
|
|
2596
|
+
white-space: normal;
|
|
2147
2597
|
}
|
|
2148
|
-
.feed-
|
|
2149
|
-
|
|
2598
|
+
.feed-meta-line {
|
|
2599
|
+
display: flex;
|
|
2600
|
+
align-items: center;
|
|
2601
|
+
flex-wrap: wrap;
|
|
2602
|
+
min-width: 0;
|
|
2603
|
+
gap: 6px;
|
|
2604
|
+
color: var(--text-tertiary);
|
|
2605
|
+
font-size: var(--font-size-sm);
|
|
2606
|
+
}
|
|
2607
|
+
.feed-collapsed-note {
|
|
2150
2608
|
color: var(--text-tertiary);
|
|
2609
|
+
font-size: var(--font-size-sm);
|
|
2151
2610
|
}
|
|
2611
|
+
.feed-project { color: var(--text-secondary); }
|
|
2152
2612
|
.feed-meta {
|
|
2153
2613
|
color: var(--text-tertiary);
|
|
2154
2614
|
font-size: var(--font-size-sm);
|
|
2155
2615
|
}
|
|
2616
|
+
.feed-expanded-provenance {
|
|
2617
|
+
display: flex;
|
|
2618
|
+
flex-wrap: wrap;
|
|
2619
|
+
gap: 6px;
|
|
2620
|
+
}
|
|
2621
|
+
.feed-search-match {
|
|
2622
|
+
display: flex;
|
|
2623
|
+
min-width: 0;
|
|
2624
|
+
gap: var(--sp-2);
|
|
2625
|
+
padding: var(--sp-2) var(--sp-3);
|
|
2626
|
+
border-left: 2px solid var(--accent);
|
|
2627
|
+
background: var(--accent-subtle);
|
|
2628
|
+
color: var(--text-secondary);
|
|
2629
|
+
font-size: var(--font-size-sm);
|
|
2630
|
+
}
|
|
2631
|
+
.feed-search-match-label {
|
|
2632
|
+
flex-shrink: 0;
|
|
2633
|
+
color: var(--accent);
|
|
2634
|
+
font-family: var(--font-mono);
|
|
2635
|
+
text-transform: capitalize;
|
|
2636
|
+
}
|
|
2637
|
+
.feed-search-match > span:last-child {
|
|
2638
|
+
min-width: 0;
|
|
2639
|
+
overflow-wrap: anywhere;
|
|
2640
|
+
}
|
|
2641
|
+
.feed-detail {
|
|
2642
|
+
display: flex;
|
|
2643
|
+
flex-direction: column;
|
|
2644
|
+
gap: var(--sp-3);
|
|
2645
|
+
padding-top: var(--sp-3);
|
|
2646
|
+
animation: feedDisclosure var(--duration-fast) var(--ease-out);
|
|
2647
|
+
}
|
|
2648
|
+
@keyframes feedDisclosure {
|
|
2649
|
+
from { opacity: 0; transform: translateY(-4px); }
|
|
2650
|
+
to { opacity: 1; transform: translateY(0); }
|
|
2651
|
+
}
|
|
2156
2652
|
/* Empty state renders as a terminal-output block — mono surface,
|
|
2157
2653
|
blinking mint cursor — to match the codemem "warm local journal"
|
|
2158
2654
|
voice and signal "this is a CLI-native tool." */
|
|
@@ -2190,12 +2686,6 @@
|
|
|
2190
2686
|
50% { opacity: 0; }
|
|
2191
2687
|
}
|
|
2192
2688
|
|
|
2193
|
-
.feed-provenance {
|
|
2194
|
-
display: flex;
|
|
2195
|
-
flex-wrap: wrap;
|
|
2196
|
-
gap: 6px;
|
|
2197
|
-
}
|
|
2198
|
-
|
|
2199
2689
|
/* ── Chip base ─────────────────────────────────────────── */
|
|
2200
2690
|
/* Shared layout for every pill-shaped label in the viewer. Per-variant
|
|
2201
2691
|
rules below only override background / color / border / typography.
|
|
@@ -2225,6 +2715,18 @@
|
|
|
2225
2715
|
background: var(--surface-2);
|
|
2226
2716
|
color: var(--text-tertiary);
|
|
2227
2717
|
}
|
|
2718
|
+
.feed-item .feed-meta-line > *, .feed-item .feed-expanded-provenance > * {
|
|
2719
|
+
min-width: 0;
|
|
2720
|
+
max-width: 100%;
|
|
2721
|
+
white-space: normal;
|
|
2722
|
+
overflow-wrap: anywhere;
|
|
2723
|
+
}
|
|
2724
|
+
.feed-item .provenance-chip,
|
|
2725
|
+
.feed-item .tag-chip {
|
|
2726
|
+
min-height: 22px;
|
|
2727
|
+
padding: 2px 7px;
|
|
2728
|
+
border-radius: var(--radius-pill);
|
|
2729
|
+
}
|
|
2228
2730
|
.provenance-chip.mine { background: var(--accent-subtle); color: var(--accent); border-color: rgba(43, 122, 176, 0.18); }
|
|
2229
2731
|
.provenance-chip.author { color: var(--text-secondary); }
|
|
2230
2732
|
.provenance-chip.private { background: rgba(140, 140, 140, 0.12); color: var(--text-secondary); }
|
|
@@ -2241,16 +2743,63 @@
|
|
|
2241
2743
|
}
|
|
2242
2744
|
|
|
2243
2745
|
.feed-body {
|
|
2746
|
+
min-width: 0;
|
|
2747
|
+
overflow-wrap: anywhere;
|
|
2244
2748
|
font-size: var(--font-size-md);
|
|
2245
2749
|
line-height: 1.55;
|
|
2246
2750
|
color: var(--text-secondary);
|
|
2247
2751
|
}
|
|
2248
|
-
.
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
|
|
2252
|
-
|
|
2253
|
-
|
|
2752
|
+
.first-run-guide {
|
|
2753
|
+
display: flex;
|
|
2754
|
+
flex-direction: column;
|
|
2755
|
+
gap: var(--sp-3);
|
|
2756
|
+
margin-bottom: var(--sp-4);
|
|
2757
|
+
padding: var(--sp-4);
|
|
2758
|
+
border: 1px solid var(--border);
|
|
2759
|
+
border-radius: var(--radius-md);
|
|
2760
|
+
background: var(--surface-1);
|
|
2761
|
+
}
|
|
2762
|
+
.first-run-guide-header {
|
|
2763
|
+
display: flex;
|
|
2764
|
+
align-items: flex-start;
|
|
2765
|
+
justify-content: space-between;
|
|
2766
|
+
gap: var(--sp-3);
|
|
2767
|
+
}
|
|
2768
|
+
.first-run-guide h2 { margin: 0; font-size: var(--font-size-lg); }
|
|
2769
|
+
.first-run-guide p { margin: 3px 0 0; color: var(--text-secondary); }
|
|
2770
|
+
.first-run-guide-list {
|
|
2771
|
+
display: grid;
|
|
2772
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
2773
|
+
gap: var(--sp-2);
|
|
2774
|
+
margin: 0;
|
|
2775
|
+
padding: 0;
|
|
2776
|
+
list-style: none;
|
|
2777
|
+
}
|
|
2778
|
+
.first-run-guide-list li {
|
|
2779
|
+
display: flex;
|
|
2780
|
+
align-items: center;
|
|
2781
|
+
justify-content: space-between;
|
|
2782
|
+
gap: var(--sp-2);
|
|
2783
|
+
min-width: 0;
|
|
2784
|
+
padding: var(--sp-2);
|
|
2785
|
+
border: 1px solid var(--border);
|
|
2786
|
+
border-radius: var(--radius-sm);
|
|
2787
|
+
}
|
|
2788
|
+
.first-run-guide-list li.is-complete { background: var(--surface-2); }
|
|
2789
|
+
.first-run-guide-status { display: flex; align-items: flex-start; gap: var(--sp-2); min-width: 0; }
|
|
2790
|
+
.first-run-guide-status > span:last-child { display: flex; flex-direction: column; min-width: 0; }
|
|
2791
|
+
.first-run-guide-status .small { color: var(--text-tertiary); }
|
|
2792
|
+
.feed-empty-actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
|
|
2793
|
+
|
|
2794
|
+
@media (max-width: 755px) {
|
|
2795
|
+
.first-run-guide-header,
|
|
2796
|
+
.first-run-guide-list li { align-items: stretch; flex-direction: column; }
|
|
2797
|
+
.first-run-guide-list { grid-template-columns: 1fr; }
|
|
2798
|
+
.first-run-guide button,
|
|
2799
|
+
.feed-empty-actions .settings-button { width: 100%; }
|
|
2800
|
+
}
|
|
2801
|
+
.feed-body.narrative { max-width: 76ch; line-height: 1.65; color: var(--text-secondary); }
|
|
2802
|
+
.feed-body p { margin: 0 0 0.75em; }
|
|
2254
2803
|
.feed-body p:last-child { margin-bottom: 0; }
|
|
2255
2804
|
.feed-body ul, .feed-body ol { margin: 0.3em 0; padding-left: 1.3em; list-style: revert; }
|
|
2256
2805
|
.feed-body li { margin: 0.15em 0; padding: 0; border: none; border-radius: 0; background: none; font-size: inherit; }
|
|
@@ -2262,61 +2811,99 @@
|
|
|
2262
2811
|
.feed-body em { font-style: italic; }
|
|
2263
2812
|
.feed-body a { color: var(--accent); text-decoration: underline; }
|
|
2264
2813
|
.feed-body h1, .feed-body h2, .feed-body h3, .feed-body h4 { font-size: 1em; font-weight: var(--font-weight-semibold); margin: 0.6em 0 0.3em; }
|
|
2814
|
+
.feed-body .feed-semantic-section {
|
|
2815
|
+
--feed-section-color: var(--accent);
|
|
2816
|
+
--feed-section-tint: var(--accent-subtle);
|
|
2817
|
+
margin: var(--sp-5) 0;
|
|
2818
|
+
padding-bottom: var(--sp-3);
|
|
2819
|
+
border-radius: 0 var(--radius-md) var(--radius-md) 0;
|
|
2820
|
+
background: color-mix(in srgb, var(--feed-section-color) 6%, transparent);
|
|
2821
|
+
overflow: hidden;
|
|
2822
|
+
}
|
|
2823
|
+
.feed-body .feed-semantic-section:first-child { margin-top: 0; }
|
|
2824
|
+
.feed-body .feed-semantic-section:last-child { margin-bottom: 0; }
|
|
2825
|
+
.feed-body .feed-semantic-section > :not(.feed-section-heading) {
|
|
2826
|
+
margin-left: var(--sp-3);
|
|
2827
|
+
margin-right: var(--sp-3);
|
|
2828
|
+
}
|
|
2829
|
+
.feed-body .feed-section-heading {
|
|
2830
|
+
margin: 0 0 var(--sp-3);
|
|
2831
|
+
padding: 5px var(--sp-3);
|
|
2832
|
+
border-left: 3px solid var(--feed-section-color);
|
|
2833
|
+
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
|
2834
|
+
background: var(--feed-section-tint);
|
|
2835
|
+
color: var(--feed-section-color);
|
|
2836
|
+
font-family: var(--font-mono);
|
|
2837
|
+
font-size: var(--font-size-xs);
|
|
2838
|
+
font-weight: var(--font-weight-semibold);
|
|
2839
|
+
letter-spacing: 0.07em;
|
|
2840
|
+
text-transform: uppercase;
|
|
2841
|
+
}
|
|
2842
|
+
.feed-body .feed-section-request { --feed-section-color: var(--accent-cool); --feed-section-tint: var(--accent-cool-subtle); }
|
|
2843
|
+
.feed-body .feed-section-completed { --feed-section-color: var(--accent); --feed-section-tint: var(--accent-subtle); }
|
|
2844
|
+
.feed-body .feed-section-learned { --feed-section-color: var(--accent-violet); --feed-section-tint: var(--accent-violet-subtle); }
|
|
2845
|
+
.feed-body .feed-section-investigated { --feed-section-color: var(--accent-steel); --feed-section-tint: var(--accent-steel-subtle); }
|
|
2846
|
+
.feed-body .feed-section-next-steps { --feed-section-color: var(--accent-ochre); --feed-section-tint: var(--accent-ochre-subtle); }
|
|
2847
|
+
.feed-body .feed-section-notes { --feed-section-color: var(--accent-neutral); --feed-section-tint: var(--accent-neutral-subtle); }
|
|
2265
2848
|
.feed-body blockquote { border-left: 3px solid var(--border); margin: 0.5em 0; padding-left: 0.8em; color: var(--text-tertiary); }
|
|
2266
2849
|
|
|
2267
|
-
.
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2850
|
+
.feed-pack-facts {
|
|
2851
|
+
max-width: 76ch;
|
|
2852
|
+
margin-top: var(--sp-2);
|
|
2853
|
+
padding-top: var(--sp-3);
|
|
2854
|
+
border-top: 1px solid var(--border);
|
|
2855
|
+
}
|
|
2856
|
+
.feed-pack-facts-label {
|
|
2857
|
+
margin-bottom: var(--sp-2);
|
|
2858
|
+
color: var(--text-tertiary);
|
|
2859
|
+
font-family: var(--font-mono);
|
|
2860
|
+
font-size: var(--font-size-2xs);
|
|
2861
|
+
font-weight: var(--font-weight-medium);
|
|
2862
|
+
letter-spacing: 0.08em;
|
|
2863
|
+
text-transform: uppercase;
|
|
2273
2864
|
}
|
|
2274
|
-
.
|
|
2275
|
-
.
|
|
2276
|
-
.summary-section-content { font-size: var(--font-size-md); line-height: 1.5; color: var(--text-primary); }
|
|
2865
|
+
.feed-pack-facts .feed-body ul { display: grid; gap: 4px; margin: 0; }
|
|
2866
|
+
.feed-pack-facts .feed-body li::marker { color: var(--accent); }
|
|
2277
2867
|
|
|
2278
|
-
.feed-footer {
|
|
2868
|
+
.feed-card-footer {
|
|
2279
2869
|
display: flex;
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2870
|
+
margin-top: var(--sp-2);
|
|
2871
|
+
padding-top: var(--sp-3);
|
|
2872
|
+
border-top: 1px solid var(--border);
|
|
2873
|
+
}
|
|
2874
|
+
|
|
2875
|
+
.feed-visibility-label {
|
|
2876
|
+
display: inline-flex;
|
|
2877
|
+
min-width: 0;
|
|
2284
2878
|
}
|
|
2285
|
-
.feed-footer-left { display: flex; flex-direction: column; gap: 6px; }
|
|
2286
|
-
.feed-footer-right { display: flex; align-items: center; gap: var(--sp-2); flex-shrink: 0; }
|
|
2287
|
-
.feed-visibility-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
2288
2879
|
.feed-visibility-select {
|
|
2289
|
-
|
|
2880
|
+
display: inline-flex;
|
|
2881
|
+
align-items: center;
|
|
2882
|
+
justify-content: space-between;
|
|
2883
|
+
gap: var(--sp-2);
|
|
2884
|
+
width: 124px;
|
|
2885
|
+
min-width: 0;
|
|
2886
|
+
min-height: 30px;
|
|
2290
2887
|
padding: 6px 10px;
|
|
2291
|
-
border-radius: var(--radius-
|
|
2888
|
+
border-radius: var(--radius-pill);
|
|
2292
2889
|
border: 1px solid var(--border);
|
|
2293
2890
|
background: var(--input-bg);
|
|
2294
2891
|
color: var(--text-primary);
|
|
2295
2892
|
font-family: var(--font-sans);
|
|
2296
2893
|
font-size: var(--font-size-sm);
|
|
2894
|
+
letter-spacing: normal;
|
|
2895
|
+
text-transform: none;
|
|
2297
2896
|
}
|
|
2298
|
-
.feed-visibility-
|
|
2299
|
-
|
|
2300
|
-
.feed-expand {
|
|
2301
|
-
border: 1px solid var(--border);
|
|
2302
|
-
background: transparent;
|
|
2303
|
-
color: var(--text-tertiary);
|
|
2304
|
-
padding: 3px 10px;
|
|
2305
|
-
font-size: var(--font-size-xs);
|
|
2306
|
-
transition: background var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);
|
|
2307
|
-
}
|
|
2308
|
-
.feed-expand:hover { background: var(--accent-subtle); color: var(--accent); }
|
|
2309
|
-
.feed-expand:focus-visible {
|
|
2310
|
-
outline: 2px solid var(--accent);
|
|
2311
|
-
outline-offset: 2px;
|
|
2312
|
-
box-shadow: 0 0 0 4px var(--focus-ring);
|
|
2313
|
-
}
|
|
2897
|
+
.feed-visibility-content { z-index: 30; }
|
|
2314
2898
|
|
|
2315
2899
|
.feed-tags { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
2316
2900
|
/* File paths render as compact pill-tags in their own row — the actual
|
|
2317
2901
|
filename is informative and earns its horizontal space. */
|
|
2318
2902
|
.feed-files { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
2319
2903
|
.feed-file {
|
|
2904
|
+
max-width: 100%;
|
|
2905
|
+
overflow: hidden;
|
|
2906
|
+
text-overflow: ellipsis;
|
|
2320
2907
|
padding: 2px 8px;
|
|
2321
2908
|
border-radius: var(--radius-sm);
|
|
2322
2909
|
background: var(--surface-2);
|
|
@@ -2330,7 +2917,7 @@
|
|
|
2330
2917
|
|
|
2331
2918
|
/* ── Pills & badges ────────────────────────────────────── */
|
|
2332
2919
|
|
|
2333
|
-
/* Kind chip — lives inside .feed-kind-
|
|
2920
|
+
/* Kind chip — lives inside .feed-kind-rail. Tint + colored border
|
|
2334
2921
|
match the banner per kind so the chip reads as part of the strip. */
|
|
2335
2922
|
.kind-chip {
|
|
2336
2923
|
padding: 2px 10px;
|
|
@@ -2430,55 +3017,31 @@
|
|
|
2430
3017
|
|
|
2431
3018
|
.health-update-banner {
|
|
2432
3019
|
display: flex;
|
|
2433
|
-
align-items:
|
|
2434
|
-
|
|
2435
|
-
|
|
3020
|
+
align-items: center;
|
|
3021
|
+
flex-wrap: wrap;
|
|
3022
|
+
gap: var(--sp-2);
|
|
3023
|
+
padding: 10px var(--sp-4);
|
|
2436
3024
|
border: 1px solid var(--border);
|
|
2437
|
-
border-radius: var(--radius-
|
|
3025
|
+
border-radius: var(--radius-md);
|
|
2438
3026
|
background: var(--surface-1);
|
|
2439
|
-
|
|
2440
|
-
}
|
|
2441
|
-
.health-update-banner--current {
|
|
2442
|
-
border-color: color-mix(in srgb, var(--status-healthy) 34%, var(--border));
|
|
2443
|
-
background: color-mix(in srgb, var(--status-healthy) 7%, var(--surface-1));
|
|
2444
|
-
}
|
|
2445
|
-
.health-update-banner--available,
|
|
2446
|
-
.health-update-banner--stale {
|
|
2447
|
-
border-color: color-mix(in srgb, var(--accent-warm) 34%, var(--border));
|
|
2448
|
-
background: color-mix(in srgb, var(--accent-warm-subtle) 34%, var(--surface-1));
|
|
2449
|
-
}
|
|
2450
|
-
.health-update-banner--unavailable {
|
|
2451
|
-
border-color: color-mix(in srgb, var(--status-attention) 34%, var(--border));
|
|
2452
|
-
background: color-mix(in srgb, var(--status-attention) 7%, var(--surface-1));
|
|
3027
|
+
color: var(--text-secondary);
|
|
2453
3028
|
}
|
|
2454
3029
|
.health-update-icon {
|
|
2455
|
-
width:
|
|
2456
|
-
height:
|
|
2457
|
-
flex: 0 0
|
|
2458
|
-
margin-top: 2px;
|
|
3030
|
+
width: 16px;
|
|
3031
|
+
height: 16px;
|
|
3032
|
+
flex: 0 0 16px;
|
|
2459
3033
|
color: var(--accent);
|
|
2460
3034
|
}
|
|
2461
|
-
.health-update-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
.health-update-banner--unavailable .health-update-icon { color: var(--status-attention); }
|
|
2465
|
-
.health-update-copy { min-width: 0; }
|
|
2466
|
-
.health-update-copy h2 { font-size: var(--font-size-lg); line-height: 1.3; }
|
|
2467
|
-
.health-update-copy p { margin-top: var(--sp-1); color: var(--text-secondary); }
|
|
2468
|
-
.health-update-guidance { display: grid; gap: 3px; }
|
|
2469
|
-
.health-update-guidance-label {
|
|
2470
|
-
color: var(--text-tertiary);
|
|
2471
|
-
font-size: var(--font-size-xs);
|
|
2472
|
-
font-weight: var(--font-weight-semibold);
|
|
2473
|
-
letter-spacing: 0.06em;
|
|
2474
|
-
text-transform: uppercase;
|
|
3035
|
+
.health-update-source {
|
|
3036
|
+
background: var(--accent-cool-subtle);
|
|
3037
|
+
color: var(--accent-cool);
|
|
2475
3038
|
}
|
|
2476
|
-
.health-update-
|
|
2477
|
-
|
|
2478
|
-
|
|
2479
|
-
font-size: var(--font-size-sm);
|
|
3039
|
+
.health-update-detail { flex: 1 1 280px; min-width: 0; }
|
|
3040
|
+
.health-update-command {
|
|
3041
|
+
flex: 1 1 100%;
|
|
2480
3042
|
overflow-wrap: anywhere;
|
|
2481
3043
|
}
|
|
3044
|
+
.health-update-copy-button { margin-left: auto; }
|
|
2482
3045
|
|
|
2483
3046
|
.health-actions, .sync-actions {
|
|
2484
3047
|
display: grid;
|
|
@@ -3056,7 +3619,8 @@
|
|
|
3056
3619
|
animation: sync-attention-target var(--duration-attention) var(--ease-out);
|
|
3057
3620
|
}
|
|
3058
3621
|
.settings-button:disabled,
|
|
3059
|
-
.settings-button[aria-disabled="true"]
|
|
3622
|
+
.settings-button[aria-disabled="true"],
|
|
3623
|
+
.settings-save[aria-disabled="true"] {
|
|
3060
3624
|
opacity: 0.55;
|
|
3061
3625
|
cursor: not-allowed;
|
|
3062
3626
|
}
|
|
@@ -3530,6 +4094,18 @@
|
|
|
3530
4094
|
}
|
|
3531
4095
|
.modal-body { display: flex; flex-direction: column; gap: var(--sp-3); flex: 1; min-height: 0; overflow-y: auto; padding-right: 6px; }
|
|
3532
4096
|
.modal-footer { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-shrink: 0; padding-top: var(--sp-2); border-top: 1px solid var(--border); }
|
|
4097
|
+
.settings-footer-copy { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
|
|
4098
|
+
.settings-link-button {
|
|
4099
|
+
padding: 0;
|
|
4100
|
+
border: 0;
|
|
4101
|
+
background: transparent;
|
|
4102
|
+
color: var(--text-secondary);
|
|
4103
|
+
font: inherit;
|
|
4104
|
+
font-size: var(--font-size-sm);
|
|
4105
|
+
text-decoration: underline;
|
|
4106
|
+
text-underline-offset: 2px;
|
|
4107
|
+
}
|
|
4108
|
+
.settings-link-button:hover { color: var(--text-primary); }
|
|
3533
4109
|
/* ── Toast (Radix Toast-backed) ───────────────────────── */
|
|
3534
4110
|
/* Fixed viewport anchored bottom-right. Each toast is a surface-card
|
|
3535
4111
|
with a severity-tinted left accent keyed to .toast-{variant}. */
|
|
@@ -3690,6 +4266,23 @@
|
|
|
3690
4266
|
color: var(--accent);
|
|
3691
4267
|
background: var(--accent-subtle);
|
|
3692
4268
|
}
|
|
4269
|
+
.advanced-heading { margin: 0 0 var(--sp-4); font-size: var(--font-size-2xl); }
|
|
4270
|
+
#advancedTabsMount .settings-tabs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
4271
|
+
.advanced-sync-status,
|
|
4272
|
+
.advanced-sync-status-label {
|
|
4273
|
+
display: flex;
|
|
4274
|
+
align-items: center;
|
|
4275
|
+
}
|
|
4276
|
+
.advanced-sync-status { justify-content: space-between; gap: var(--sp-4); }
|
|
4277
|
+
.advanced-sync-status-label { gap: var(--sp-3); }
|
|
4278
|
+
.advanced-sync-status-label .xl { font-size: var(--font-size-xl); }
|
|
4279
|
+
.advanced-administration-sections { margin-bottom: var(--sp-3); }
|
|
4280
|
+
|
|
4281
|
+
@media (max-width: 720px) {
|
|
4282
|
+
.advanced-sync-status { align-items: stretch; flex-direction: column; }
|
|
4283
|
+
.advanced-sync-status .section-actions { align-items: stretch; flex-direction: column; }
|
|
4284
|
+
.advanced-sync-status .settings-save { width: 100%; }
|
|
4285
|
+
}
|
|
3693
4286
|
.settings-panel { display: flex; flex-direction: column; gap: var(--sp-3); }
|
|
3694
4287
|
.settings-panel[data-state="inactive"] { display: none; }
|
|
3695
4288
|
.settings-panel[hidden] { display: none; }
|
|
@@ -3849,6 +4442,19 @@
|
|
|
3849
4442
|
}
|
|
3850
4443
|
|
|
3851
4444
|
.field { display: flex; flex-direction: column; gap: 6px; font-size: var(--font-size-md); }
|
|
4445
|
+
.settings-outcome {
|
|
4446
|
+
margin: 0;
|
|
4447
|
+
color: var(--text-tertiary);
|
|
4448
|
+
font-size: var(--font-size-xs);
|
|
4449
|
+
line-height: 1.45;
|
|
4450
|
+
}
|
|
4451
|
+
.settings-outcome > summary,
|
|
4452
|
+
.settings-config-details > summary { cursor: pointer; color: var(--text-secondary); }
|
|
4453
|
+
.settings-outcome > summary:focus-visible,
|
|
4454
|
+
.settings-config-details > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
4455
|
+
.settings-outcome-details { display: grid; gap: var(--sp-1); padding-top: var(--sp-2); }
|
|
4456
|
+
.settings-config-details { margin-top: var(--sp-4); font-size: var(--font-size-xs); overflow-wrap: anywhere; }
|
|
4457
|
+
.settings-outcome strong { color: var(--text-secondary); font-weight: var(--font-weight-medium); }
|
|
3852
4458
|
.field input:not([type="checkbox"]), .field select, .field textarea { padding: var(--sp-2) var(--sp-3); border-radius: var(--radius-sm); border: 1px solid var(--border); background: var(--input-bg); font-family: var(--font-sans); font-size: var(--font-size-md); color: var(--text-primary); }
|
|
3853
4459
|
.settings-select-trigger {
|
|
3854
4460
|
display: inline-flex;
|
|
@@ -3909,7 +4515,9 @@
|
|
|
3909
4515
|
justify-content: flex-start;
|
|
3910
4516
|
gap: 10px;
|
|
3911
4517
|
flex: 0 1 auto;
|
|
4518
|
+
flex-wrap: wrap;
|
|
3912
4519
|
}
|
|
4520
|
+
.settings-switch-row .settings-outcome { flex-basis: 100%; }
|
|
3913
4521
|
.settings-switch-copy {
|
|
3914
4522
|
color: var(--text-primary);
|
|
3915
4523
|
line-height: 1.35;
|
|
@@ -3972,6 +4580,19 @@
|
|
|
3972
4580
|
transition: background var(--duration-fast) var(--ease-standard);
|
|
3973
4581
|
}
|
|
3974
4582
|
.settings-save:hover { background: var(--control-hover-bg); }
|
|
4583
|
+
/* Text actions share geometry; icon, tab, and segmented controls retain theirs. */
|
|
4584
|
+
.settings-button,
|
|
4585
|
+
.settings-save {
|
|
4586
|
+
display: inline-flex;
|
|
4587
|
+
align-items: center;
|
|
4588
|
+
justify-content: center;
|
|
4589
|
+
box-sizing: border-box;
|
|
4590
|
+
min-height: 36px;
|
|
4591
|
+
padding: 8px 12px;
|
|
4592
|
+
border-radius: var(--radius-md);
|
|
4593
|
+
font-size: var(--font-size-sm);
|
|
4594
|
+
line-height: 18px;
|
|
4595
|
+
}
|
|
3975
4596
|
.sync-dialog-card {
|
|
3976
4597
|
width: min(560px, 100%);
|
|
3977
4598
|
}
|
|
@@ -4119,8 +4740,8 @@
|
|
|
4119
4740
|
50% { transform: scale(1.3); opacity: 0.5; }
|
|
4120
4741
|
}
|
|
4121
4742
|
|
|
4122
|
-
/* newPulse: fresh feed items pulse
|
|
4123
|
-
|
|
4743
|
+
/* newPulse: fresh feed items pulse the card outline from accent-strong
|
|
4744
|
+
to transparent once on mount. The class is
|
|
4124
4745
|
applied by feed.ts only while state.newItemKeys holds the item's
|
|
4125
4746
|
key (700ms useEffect then clears it). Skipped entirely under
|
|
4126
4747
|
prefers-reduced-motion so the ambient accessibility pass still
|
|
@@ -4157,12 +4778,9 @@
|
|
|
4157
4778
|
.tab-btn { flex-shrink: 0; }
|
|
4158
4779
|
.tab-panel { padding: var(--sp-4); }
|
|
4159
4780
|
.summary-row { grid-template-columns: 1fr; }
|
|
4160
|
-
.
|
|
4161
|
-
.feed-actions { width: 100%; justify-content: flex-end; }
|
|
4781
|
+
.health-tile-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
4162
4782
|
.actor-row { align-items: stretch; flex-direction: column; }
|
|
4163
4783
|
.peer-scope-row { grid-template-columns: 1fr; }
|
|
4164
|
-
.feed-visibility-controls { align-items: stretch; }
|
|
4165
|
-
.feed-visibility-select { width: 100%; }
|
|
4166
4784
|
.actor-actions { justify-content: flex-start; }
|
|
4167
4785
|
.legacy-review-header { flex-direction: column; }
|
|
4168
4786
|
.legacy-review-group-main { grid-template-columns: 1fr; }
|
|
@@ -4171,6 +4789,31 @@
|
|
|
4171
4789
|
.legacy-review-bulk-row .settings-save { width: 100%; }
|
|
4172
4790
|
}
|
|
4173
4791
|
|
|
4792
|
+
@media (max-width: 755px) {
|
|
4793
|
+
.feed-item {
|
|
4794
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
4795
|
+
row-gap: var(--sp-3);
|
|
4796
|
+
padding: var(--sp-4);
|
|
4797
|
+
}
|
|
4798
|
+
.feed-kind-rail { grid-column: 1; grid-row: 1; align-self: center; }
|
|
4799
|
+
.feed-card-side { display: contents; }
|
|
4800
|
+
.feed-card-side-top { grid-column: 2; grid-row: 1; }
|
|
4801
|
+
.feed-item > .feed-card-body { grid-column: 1 / -1; grid-row: 2; }
|
|
4802
|
+
.feed-meta-line { max-width: 100%; }
|
|
4803
|
+
.feed-file { max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
|
|
4804
|
+
}
|
|
4805
|
+
|
|
4806
|
+
@media print {
|
|
4807
|
+
.feed-menu-trigger,
|
|
4808
|
+
.feed-disclosure { display: none !important; }
|
|
4809
|
+
.feed-item {
|
|
4810
|
+
break-inside: avoid;
|
|
4811
|
+
grid-template-columns: max-content minmax(0, 1fr) auto;
|
|
4812
|
+
box-shadow: none;
|
|
4813
|
+
}
|
|
4814
|
+
.feed-item:hover { transform: none; box-shadow: none; }
|
|
4815
|
+
}
|
|
4816
|
+
|
|
4174
4817
|
@media (max-width: 720px) {
|
|
4175
4818
|
.header-title { font-size: var(--font-size-xl); }
|
|
4176
4819
|
}
|
|
@@ -4189,6 +4832,10 @@
|
|
|
4189
4832
|
.recipient-policy-sharing-team-setup-row { grid-template-columns: 1fr auto; }
|
|
4190
4833
|
.recipient-policy-sharing-team-setup-label { grid-column: 1 / -1; }
|
|
4191
4834
|
.recipient-policy-sharing-team-setup-separator { display: none; }
|
|
4835
|
+
.feed-item { grid-template-columns: minmax(0, 1fr); }
|
|
4836
|
+
.feed-kind-rail { grid-column: 1; grid-row: 1; }
|
|
4837
|
+
.feed-card-side-top { grid-column: 1; grid-row: 2; justify-self: end; }
|
|
4838
|
+
.feed-item > .feed-card-body { grid-column: 1; grid-row: 3; }
|
|
4192
4839
|
}
|
|
4193
4840
|
|
|
4194
4841
|
/* ──────────────────────────────────────────────────────────────────
|
|
@@ -4221,7 +4868,9 @@
|
|
|
4221
4868
|
|
|
4222
4869
|
@media (prefers-reduced-motion: reduce) {
|
|
4223
4870
|
.health-loading-icon,
|
|
4224
|
-
.viewer-reconnect-spinner
|
|
4871
|
+
.viewer-reconnect-spinner,
|
|
4872
|
+
.feed-detail,
|
|
4873
|
+
.feed-item.new-item {
|
|
4225
4874
|
animation: none;
|
|
4226
4875
|
}
|
|
4227
4876
|
*, *::before, *::after {
|
|
@@ -4512,15 +5161,21 @@
|
|
|
4512
5161
|
<!-- ── Tab: Health ─────────────────────────────────────── -->
|
|
4513
5162
|
<div class="tab-panel" id="tab-health" hidden>
|
|
4514
5163
|
<div id="healthUpdateBanner" hidden></div>
|
|
4515
|
-
<
|
|
4516
|
-
<div class="
|
|
4517
|
-
<
|
|
5164
|
+
<section class="card health-system-card" id="healthSystemCard" aria-label="System health" tabindex="-1">
|
|
5165
|
+
<div class="health-system-header">
|
|
5166
|
+
<div id="healthStatus">
|
|
5167
|
+
<div class="health-status-summary">
|
|
5168
|
+
<div class="health-status-copy">
|
|
5169
|
+
<strong class="health-status-word status-unknown">Assessing</strong>
|
|
5170
|
+
<div class="section-meta" id="healthMeta" role="status" aria-live="polite" aria-atomic="true">Assessing health signals…</div>
|
|
5171
|
+
</div>
|
|
5172
|
+
</div>
|
|
5173
|
+
</div>
|
|
4518
5174
|
<button class="settings-button" id="healthOpenDiagnostics" type="button">View diagnostics</button>
|
|
4519
5175
|
</div>
|
|
4520
|
-
<div class="section-meta" id="healthMeta" role="status" aria-live="polite" aria-atomic="true">Assessing health signals…</div>
|
|
4521
5176
|
<div class="health-actions" id="healthActions"></div>
|
|
4522
|
-
<div
|
|
4523
|
-
</
|
|
5177
|
+
<div id="healthGrid"></div>
|
|
5178
|
+
</section>
|
|
4524
5179
|
|
|
4525
5180
|
<div class="summary-row">
|
|
4526
5181
|
<div class="card" style="animation-delay: 0.05s">
|
|
@@ -4541,20 +5196,17 @@
|
|
|
4541
5196
|
<div id="recipientPolicyReviewMount" hidden></div>
|
|
4542
5197
|
<div class="card" style="animation-delay: 0s">
|
|
4543
5198
|
<div class="section-header">
|
|
4544
|
-
<
|
|
4545
|
-
<h2>Projects</h2>
|
|
4546
|
-
<div class="section-meta">Choose exact Projects, then share them with Teams or Identities.</div>
|
|
4547
|
-
</div>
|
|
5199
|
+
<h2>Projects</h2>
|
|
4548
5200
|
<div class="section-actions project-selection-actions">
|
|
4549
5201
|
<span class="section-meta" id="projectsSelectionStatus" role="status" aria-live="polite">0 Projects selected.</span>
|
|
4550
|
-
<button class="settings-button project-selection-target" id="projectsShareSelected" type="button" disabled>
|
|
5202
|
+
<button class="settings-button project-selection-target" id="projectsShareSelected" type="button" disabled>Add Teams or Identities</button>
|
|
4551
5203
|
</div>
|
|
4552
5204
|
</div>
|
|
4553
5205
|
<div class="projects-toolbar">
|
|
4554
|
-
<input class="feed-search" id="projectsSearch" placeholder="Search
|
|
4555
|
-
<select id="projectsStatusFilter" aria-label="
|
|
5206
|
+
<input class="feed-search" id="projectsSearch" placeholder="Search by name, path, or git remote…" />
|
|
5207
|
+
<select id="projectsStatusFilter" aria-label="Filter projects"></select>
|
|
5208
|
+
<span class="small" id="projectsInventoryMeta">Loading project inventory…</span>
|
|
4556
5209
|
</div>
|
|
4557
|
-
<div class="section-meta" id="projectsInventoryMeta">Loading project inventory…</div>
|
|
4558
5210
|
<div class="project-inventory-skeleton" id="projectsInventorySkeleton" role="status" aria-label="Loading project inventory" aria-busy="true">
|
|
4559
5211
|
<div class="project-inventory-skeleton-row">
|
|
4560
5212
|
<div class="project-inventory-skeleton-line title"></div>
|
|
@@ -4574,8 +5226,7 @@
|
|
|
4574
5226
|
</div>
|
|
4575
5227
|
</div>
|
|
4576
5228
|
<details class="card project-advanced-surface">
|
|
4577
|
-
<summary>
|
|
4578
|
-
<div class="section-meta">Use the legacy invitation flow when the recipient does not have an Identity yet.</div>
|
|
5229
|
+
<summary>Invite someone</summary>
|
|
4579
5230
|
<div class="section-actions" id="projectShareFlowMount"></div>
|
|
4580
5231
|
</details>
|
|
4581
5232
|
</div>
|
|
@@ -4592,39 +5243,33 @@
|
|
|
4592
5243
|
|
|
4593
5244
|
<!-- ── Tab: Advanced ───────────────────────────────────── -->
|
|
4594
5245
|
<div class="tab-panel" id="tab-advanced" hidden>
|
|
4595
|
-
<
|
|
4596
|
-
|
|
4597
|
-
<div>
|
|
4598
|
-
<h2>Advanced</h2>
|
|
4599
|
-
<div class="section-meta">Device sync, legacy Team and Space setup, and coordinator administration.</div>
|
|
4600
|
-
</div>
|
|
4601
|
-
<div class="section-actions" aria-label="Advanced sections" role="group">
|
|
4602
|
-
<button class="settings-button" id="advancedSyncButton" type="button" aria-pressed="true">Sync</button>
|
|
4603
|
-
<button class="settings-button" id="advancedTeamsButton" type="button" aria-pressed="false">Coordinator Administration</button>
|
|
4604
|
-
</div>
|
|
4605
|
-
</div>
|
|
4606
|
-
</div>
|
|
5246
|
+
<h2 class="advanced-heading">Advanced</h2>
|
|
5247
|
+
<div id="advancedTabsMount"></div>
|
|
4607
5248
|
|
|
4608
|
-
<div id="advancedSyncContent">
|
|
5249
|
+
<div id="advancedSyncContent" role="tabpanel" aria-labelledby="advancedSyncButton">
|
|
4609
5250
|
|
|
4610
5251
|
<!-- Sub-view: main Sync surface. Toggled by syncViewController and
|
|
4611
5252
|
app compatibility routing for canonical and legacy hashes. -->
|
|
4612
5253
|
<div id="syncMainView">
|
|
4613
5254
|
|
|
5255
|
+
<section class="card advanced-sync-status">
|
|
5256
|
+
<div id="syncAdvancedStatusMount"></div>
|
|
5257
|
+
<div class="section-actions">
|
|
5258
|
+
<button class="settings-button" id="syncNowButton">Sync now</button>
|
|
5259
|
+
<a class="sync-subview-link" href="#advanced/sync/diagnostics">View diagnostics →</a>
|
|
5260
|
+
<button class="settings-save" id="syncTurnOnButton" type="button" hidden>Turn on sync</button>
|
|
5261
|
+
</div>
|
|
5262
|
+
</section>
|
|
5263
|
+
|
|
4614
5264
|
<!-- 1. Needs attention + team setup/status -->
|
|
4615
5265
|
<div class="card" id="syncTeamCard">
|
|
4616
5266
|
<div class="section-header">
|
|
4617
5267
|
<div class="section-header-title">
|
|
4618
|
-
<h2>
|
|
5268
|
+
<h2>Join a team</h2>
|
|
4619
5269
|
<span class="sync-online-badge" id="syncOnlineBadge" hidden role="status" aria-live="polite"></span>
|
|
4620
5270
|
</div>
|
|
4621
|
-
<div class="section-actions">
|
|
4622
|
-
<button class="settings-button" id="syncShareProjectsButton" type="button">Share projects</button>
|
|
4623
|
-
<button class="settings-button" id="syncNowButton">Sync now</button>
|
|
4624
|
-
<a class="sync-subview-link" href="#advanced/sync/diagnostics">View diagnostics →</a>
|
|
4625
|
-
</div>
|
|
4626
5271
|
</div>
|
|
4627
|
-
<div class="section-meta" id="syncTeamMeta"
|
|
5272
|
+
<div class="section-meta" id="syncTeamMeta" hidden></div>
|
|
4628
5273
|
<div class="sync-skeleton" id="syncTeamSkeleton" role="status" aria-label="Loading team sync">
|
|
4629
5274
|
<div class="sync-skeleton-line medium"></div>
|
|
4630
5275
|
<div class="sync-skeleton-block"></div>
|
|
@@ -4634,10 +5279,9 @@
|
|
|
4634
5279
|
<div id="syncSetupPanel">
|
|
4635
5280
|
<div id="syncJoinSection">
|
|
4636
5281
|
<h3 class="settings-group-title">Join a team</h3>
|
|
4637
|
-
<div class="
|
|
4638
|
-
|
|
4639
|
-
<
|
|
4640
|
-
<textarea class="feed-search" id="syncJoinInvite" placeholder="Paste a team invite or device pairing payload"></textarea>
|
|
5282
|
+
<div class="actor-create-row" id="syncJoinPanel" hidden>
|
|
5283
|
+
<label for="syncJoinInvite" class="sr-only">Invite or pairing code</label>
|
|
5284
|
+
<textarea class="feed-search" id="syncJoinInvite" placeholder="Invite or pairing code" rows="2"></textarea>
|
|
4641
5285
|
<div id="syncProjectInviteReview" role="region" aria-labelledby="syncProjectInviteReviewHeading" hidden>
|
|
4642
5286
|
<h4 id="syncProjectInviteReviewHeading" tabindex="-1">Review project invitation</h4>
|
|
4643
5287
|
<div class="section-meta" id="syncProjectInviteContext"></div>
|
|
@@ -4646,6 +5290,15 @@
|
|
|
4646
5290
|
<label for="syncRecipientDeviceName">This device</label>
|
|
4647
5291
|
<input class="feed-search" id="syncRecipientDeviceName" maxlength="120" />
|
|
4648
5292
|
</div>
|
|
5293
|
+
<div id="syncPairingReview" role="region" aria-labelledby="syncPairingReviewHeading" hidden>
|
|
5294
|
+
<h4 id="syncPairingReviewHeading" tabindex="-1">Review device pairing</h4>
|
|
5295
|
+
<p>Check these details with the other device. Accept only a device you trust.</p>
|
|
5296
|
+
<dl>
|
|
5297
|
+
<dt>Device ID</dt><dd id="syncPairingDeviceId" style="overflow-wrap: anywhere"></dd>
|
|
5298
|
+
<dt>Fingerprint</dt><dd id="syncPairingFingerprint" style="overflow-wrap: anywhere"></dd>
|
|
5299
|
+
<dt>Addresses</dt><dd id="syncPairingAddresses" style="white-space: pre-wrap; overflow-wrap: anywhere"></dd>
|
|
5300
|
+
</dl>
|
|
5301
|
+
</div>
|
|
4649
5302
|
<button class="settings-button" id="syncJoinButton">Review invite</button>
|
|
4650
5303
|
</div>
|
|
4651
5304
|
</div>
|
|
@@ -4661,19 +5314,24 @@
|
|
|
4661
5314
|
</div>
|
|
4662
5315
|
</div>
|
|
4663
5316
|
|
|
4664
|
-
<!-- 2. People
|
|
5317
|
+
<!-- 2. People and devices -->
|
|
4665
5318
|
<div class="card" style="animation-delay: 0.04s">
|
|
4666
|
-
<
|
|
5319
|
+
<div class="section-header">
|
|
5320
|
+
<h2>People and devices</h2>
|
|
5321
|
+
<a class="sync-subview-link" href="#sharing" id="advancedSharingLink">Invite someone via Sharing →</a>
|
|
5322
|
+
</div>
|
|
4667
5323
|
|
|
4668
|
-
<
|
|
4669
|
-
|
|
4670
|
-
|
|
5324
|
+
<div id="syncSharingReview" hidden>
|
|
5325
|
+
<h3 class="settings-group-title" style="margin-top: 20px">What teammates will receive</h3>
|
|
5326
|
+
<div class="section-meta" id="syncSharingReviewMeta"></div>
|
|
5327
|
+
<div class="actor-list" id="syncSharingReviewList"></div>
|
|
5328
|
+
</div>
|
|
4671
5329
|
|
|
4672
|
-
<details class="project-inventory-details" style="margin-top: 20px">
|
|
5330
|
+
<details class="project-inventory-details" id="manualDeviceIdentityControls" style="margin-top: 20px">
|
|
4673
5331
|
<summary>Manual device and identity controls</summary>
|
|
4674
5332
|
|
|
4675
5333
|
<h3 class="settings-group-title">People</h3>
|
|
4676
|
-
<div class="section-meta" id="syncActorsMeta"
|
|
5334
|
+
<div class="section-meta" id="syncActorsMeta"></div>
|
|
4677
5335
|
<div class="actor-create-row">
|
|
4678
5336
|
<div class="sync-labeled-field">
|
|
4679
5337
|
<label for="syncActorCreateInput" class="sync-labeled-field-caption">Person name</label>
|
|
@@ -4694,21 +5352,6 @@
|
|
|
4694
5352
|
<div class="device-row-skeleton"><span class="skel-pip"></span><span class="skel-name"></span><span class="skel-chip"></span></div>
|
|
4695
5353
|
<div class="device-row-skeleton"><span class="skel-pip"></span><span class="skel-name"></span><span class="skel-chip"></span></div>
|
|
4696
5354
|
</div>
|
|
4697
|
-
|
|
4698
|
-
<h3 class="settings-group-title" style="margin-top: 20px">Connect another device</h3>
|
|
4699
|
-
<div class="section-meta">Share this command on the new device to join it to the team.</div>
|
|
4700
|
-
<div class="actor-create-row">
|
|
4701
|
-
<div id="syncPairingDisclosureMount" style="display: contents"></div>
|
|
4702
|
-
</div>
|
|
4703
|
-
<div id="syncPairingPanelMount" style="display: contents"></div>
|
|
4704
|
-
</details>
|
|
4705
|
-
|
|
4706
|
-
<div id="syncSharingReview" hidden>
|
|
4707
|
-
<h3 class="settings-group-title" style="margin-top: 20px">What teammates will receive</h3>
|
|
4708
|
-
<div class="section-meta" id="syncSharingReviewMeta"></div>
|
|
4709
|
-
<div class="actor-list" id="syncSharingReviewList"></div>
|
|
4710
|
-
</div>
|
|
4711
|
-
|
|
4712
5355
|
<div id="syncLegacyClaims" hidden>
|
|
4713
5356
|
<h3 class="settings-group-title" style="margin-top: 20px">Legacy device history</h3>
|
|
4714
5357
|
<div class="peer-meta" id="syncLegacyClaimsMeta"></div>
|
|
@@ -4718,6 +5361,7 @@
|
|
|
4718
5361
|
<button class="sync-legacy-button" id="syncLegacyClaimButton">Attach device history</button>
|
|
4719
5362
|
</div>
|
|
4720
5363
|
</div>
|
|
5364
|
+
</details>
|
|
4721
5365
|
</div>
|
|
4722
5366
|
|
|
4723
5367
|
</div><!-- /#syncMainView -->
|
|
@@ -4739,7 +5383,8 @@
|
|
|
4739
5383
|
</label>
|
|
4740
5384
|
</div>
|
|
4741
5385
|
</div>
|
|
4742
|
-
<div class="section-meta" id="
|
|
5386
|
+
<div class="section-meta" id="syncPrimaryStatusDetail"></div>
|
|
5387
|
+
<div class="section-meta" id="syncMeta"></div>
|
|
4743
5388
|
<div class="sync-skeleton" id="syncDiagSkeleton" role="status" aria-label="Loading diagnostics">
|
|
4744
5389
|
<div class="sync-skeleton-line long"></div>
|
|
4745
5390
|
<div class="sync-skeleton-line medium"></div>
|
|
@@ -4754,30 +5399,21 @@
|
|
|
4754
5399
|
</div><!-- /#syncDiagnosticsView -->
|
|
4755
5400
|
</div><!-- /#advancedSyncContent -->
|
|
4756
5401
|
|
|
4757
|
-
<div id="advancedTeamsContent" hidden>
|
|
5402
|
+
<div id="advancedTeamsContent" role="tabpanel" aria-labelledby="advancedTeamsButton" hidden>
|
|
4758
5403
|
<div class="card">
|
|
4759
|
-
<
|
|
4760
|
-
|
|
4761
|
-
class="
|
|
4762
|
-
|
|
4763
|
-
>
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
<div class="peer-submeta">
|
|
4767
|
-
Manage Team members, names, and Project access in Sharing. Use this page only for older coordinator groups and Spaces.
|
|
4768
|
-
</div>
|
|
4769
|
-
</div>
|
|
4770
|
-
<button class="settings-button" id="coordinatorAdminOpenSharing" type="button">Open Sharing</button>
|
|
4771
|
-
</aside>
|
|
4772
|
-
<details class="advanced-administration-disclosure" open>
|
|
4773
|
-
<summary>Coordinator Administration</summary>
|
|
4774
|
-
<div class="section-meta">Technical coordinator groups, Spaces, enrollment, and recovery controls.</div>
|
|
5404
|
+
<div class="section-header">
|
|
5405
|
+
<h2 id="coordinatorAdminHeading" tabindex="-1">Coordinator administration</h2>
|
|
5406
|
+
<a class="sync-subview-link" href="#sharing" id="advancedTeamSettingsLink">Team settings →</a>
|
|
5407
|
+
</div>
|
|
5408
|
+
<div class="section-meta advanced-administration-sections">Groups · Invites · Join requests · Devices</div>
|
|
5409
|
+
<details class="advanced-administration-disclosure" id="advancedAdministrationDisclosure">
|
|
5410
|
+
<summary>Legacy administration</summary>
|
|
4775
5411
|
<div id="coordinatorAdminMount"></div>
|
|
4776
5412
|
</details>
|
|
4777
5413
|
</div>
|
|
4778
5414
|
</div>
|
|
4779
5415
|
</div>
|
|
4780
5416
|
|
|
4781
|
-
<script src="/assets/app.js?v=
|
|
5417
|
+
<script src="/assets/app.js?v=cfd33fb491d8"></script>
|
|
4782
5418
|
</body>
|
|
4783
5419
|
</html>
|