cortico 0.1.1 → 0.1.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/README.md +3 -3
- package/package.json +1 -1
- package/src/boot.ts +18 -0
- package/src/bot.ts +40 -5
- package/src/core/README.md +4 -2
- package/src/core/blobs.ts +23 -2
- package/src/core/config-schema.ts +1 -1
- package/src/core/config.ts +2 -16
- package/src/core/core.ts +15 -5
- package/src/core/loop.ts +55 -27
- package/src/core/session.ts +3 -2
- package/src/core/timers.ts +8 -6
- package/src/core/types.ts +18 -2
- package/src/core/util.ts +15 -0
- package/src/deploy.ts +5 -4
- package/src/extensions/README.md +6 -4
- package/src/extensions/dry-mount.ts +23 -2
- package/src/extensions/manifest.ts +21 -11
- package/src/extensions.ts +147 -23
- package/src/launcher.ts +23 -9
- package/src/protocol/open-responses/context-log.ts +37 -9
- package/src/providers/README.md +32 -7
- package/src/providers/base.ts +2 -0
- package/src/providers/console/config.ts +21 -0
- package/src/providers/console/hub.ts +270 -0
- package/src/providers/console/settings.ts +11 -19
- package/src/providers/console/types.ts +5 -0
- package/src/providers/hub-api.ts +3 -0
- package/src/providers/llamacpp/config.ts +38 -0
- package/src/providers/llamacpp/console/runtime-panel.ts +36 -73
- package/src/providers/llamacpp/console/server.ts +23 -2
- package/src/providers/llamacpp/index.ts +5 -1
- package/src/providers/llamacpp/native.ts +10 -5
- package/src/providers/llamacpp/options.ts +2 -0
- package/src/providers/name.ts +8 -0
- package/src/providers/openai-responses-compat/config.ts +33 -0
- package/src/providers/openai-responses-compat/console/client.ts +5 -0
- package/src/providers/openai-responses-compat/console/reasoning-panel.ts +84 -0
- package/src/providers/openai-responses-compat/console/server.ts +127 -0
- package/src/providers/openai-responses-compat/index.ts +40 -12
- package/src/providers/openai-responses-compat/native.ts +9 -4
- package/src/providers/openai-responses-compat/strings.ts +62 -1
- package/src/providers/registry.ts +5 -0
- package/src/providers/transport/responses-input.ts +59 -10
- package/src/web/README.md +12 -3
- package/src/web/auth.ts +80 -0
- package/src/web/client/console-pages/builtins/llm-settings/panel.ts +42 -35
- package/src/web/client/console-pages/builtins/llm-settings/pricing-panel.ts +22 -8
- package/src/web/client/console-pages/builtins/llm-settings/strings.ts +2 -4
- package/src/web/client/console-pages/host.ts +22 -5
- package/src/web/client/core/api.ts +5 -1
- package/src/web/client/core/router.ts +15 -0
- package/src/web/client/features/extensions/index.ts +276 -41
- package/src/web/client/features/extensions/strings.ts +84 -10
- package/src/web/client/features/feature.ts +1 -1
- package/src/web/client/features/live/diagnostics.ts +32 -0
- package/src/web/client/features/live/index.ts +27 -11
- package/src/web/client/features/live/protocol.ts +1 -0
- package/src/web/client/features/live/strings.ts +9 -3
- package/src/web/client/features/providers/detail.ts +262 -0
- package/src/web/client/features/providers/drafts.ts +23 -0
- package/src/web/client/features/providers/index.ts +173 -87
- package/src/web/client/features/providers/strings.ts +44 -17
- package/src/web/client/features/providers/types.ts +15 -0
- package/src/web/client/features/settings/general.ts +12 -0
- package/src/web/client/features/settings/strings.ts +6 -0
- package/src/web/client/main.ts +4 -0
- package/src/web/client/shell/index.ts +1 -1
- package/src/web/client/ui/icons.ts +9 -1
- package/src/web/client/ui/prompt-input.tsx +17 -5
- package/src/web/client/ui/strings.ts +0 -2
- package/src/web/diagnostics.ts +133 -0
- package/src/web/public/login.html +67 -0
- package/src/web/public/styles.css +122 -18
- package/src/web/server.ts +227 -21
- package/src/web/shared/client-panel.ts +3 -0
- package/src/web/shared/console-protocol.ts +3 -1
- package/src/worlds/bilibili/README.md +1 -1
- package/src/worlds/bilibili/overlay/server.ts +4 -2
- package/src/worlds/minecraft/ADAPT.md +66 -0
- package/src/worlds/minecraft/README.md +8 -0
- package/src/worlds/minecraft/mineflayer-fixes.ts +55 -1
- package/src/worlds/qq/normalize.ts +14 -0
- package/src/worlds/qq/world.ts +53 -7
- package/src/worlds/terminal/world.ts +3 -4
|
@@ -54,8 +54,8 @@
|
|
|
54
54
|
--shadow-soft: color-mix(in srgb, var(--ink) 7%, transparent);
|
|
55
55
|
--shadow-strong: color-mix(in srgb, var(--ink) 20%, transparent);
|
|
56
56
|
--overlay: color-mix(in srgb, var(--ink) 44%, transparent);
|
|
57
|
-
--sans: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
|
|
58
|
-
--mono: ui-monospace, "Cascadia Mono", "Sarasa Mono SC", Consolas,
|
|
57
|
+
--sans: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;
|
|
58
|
+
--mono: ui-monospace, "Cascadia Mono", "Sarasa Mono SC", Consolas, monospace;
|
|
59
59
|
--background: var(--paper);
|
|
60
60
|
--surface: var(--sheet);
|
|
61
61
|
--surface-hover: var(--sheet-2);
|
|
@@ -159,7 +159,7 @@
|
|
|
159
159
|
.pagedesc { font-size: 13px; color: var(--ink-soft); max-width: 68ch; }
|
|
160
160
|
|
|
161
161
|
.scroll { flex: 1; min-height: 0; overflow-y: auto; padding: 18px 30px 40px; }
|
|
162
|
-
.measure { max-width:
|
|
162
|
+
.measure { max-width: var(--content-width); }
|
|
163
163
|
|
|
164
164
|
|
|
165
165
|
.subtabs { display: flex; gap: 4px; flex-wrap: wrap; padding: 12px 30px 0; flex: none; }
|
|
@@ -221,12 +221,14 @@
|
|
|
221
221
|
}
|
|
222
222
|
.btn:hover { color: var(--ink); border-color: var(--line-strong); background: var(--sheet); }
|
|
223
223
|
.btn:disabled { opacity: .45; cursor: default; }
|
|
224
|
-
.btn.primary { background: var(--accent); color:
|
|
225
|
-
.btn.primary:hover { filter: brightness(1.06); color:
|
|
224
|
+
.btn.primary { background: var(--accent); color: #fff; border-color: var(--accent); }
|
|
225
|
+
.btn.primary:hover { filter: brightness(1.06); color: #fff; }
|
|
226
226
|
.btn.warn:hover { color: var(--warn); border-color: var(--warn); }
|
|
227
227
|
.btn.danger { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 42%, transparent); }
|
|
228
228
|
.btn.danger:hover { background: color-mix(in srgb, var(--danger) 9%, transparent); border-color: var(--danger); }
|
|
229
229
|
.btn.sm { padding: 4px 11px; font-size: var(--text-detail); }
|
|
230
|
+
.btn-ico { display: inline-flex; align-items: center; gap: 6px; }
|
|
231
|
+
.btn-ico .icon { width: 14px; height: 14px; }
|
|
230
232
|
|
|
231
233
|
.msgline { font: var(--text-detail)/1.45 var(--sans); min-height: 16px; color: var(--ok); }
|
|
232
234
|
.msgline:empty { display: none; }
|
|
@@ -639,7 +641,7 @@
|
|
|
639
641
|
min-height: 36px;
|
|
640
642
|
transition: background-color .15s ease, color .15s ease, border-color .15s ease, opacity .15s ease;
|
|
641
643
|
}
|
|
642
|
-
.btn.primary, .seg.active { background: var(--accent); border-color: var(--accent); color:
|
|
644
|
+
.btn.primary, .seg.active { background: var(--accent); border-color: var(--accent); color: #fff; }
|
|
643
645
|
input.field, select.field, textarea.field { min-height: 40px; }
|
|
644
646
|
input:focus-visible, textarea:focus-visible, select:focus-visible, button:focus-visible, [tabindex]:focus-visible {
|
|
645
647
|
outline: 2px solid color-mix(in srgb, var(--accent) 45%, transparent); outline-offset: 2px;
|
|
@@ -989,17 +991,19 @@
|
|
|
989
991
|
overflow-x: hidden;
|
|
990
992
|
overflow-y: auto;
|
|
991
993
|
padding: 30px var(--page-gutter) 56px;
|
|
992
|
-
scrollbar-gutter: stable;
|
|
994
|
+
scrollbar-gutter: stable both-edges;
|
|
993
995
|
}
|
|
994
996
|
.providerchrome {
|
|
997
|
+
overflow: hidden;
|
|
998
|
+
scrollbar-gutter: stable both-edges;
|
|
995
999
|
flex: none;
|
|
996
1000
|
min-width: 0;
|
|
997
1001
|
padding: 30px var(--page-gutter) 0;
|
|
998
1002
|
}
|
|
999
1003
|
.panelslot { padding-top: 8px; }
|
|
1000
|
-
.featureslot > :not(.viewport-overlay),
|
|
1004
|
+
.featureslot > :where(:not(.viewport-overlay)),
|
|
1001
1005
|
.providerchrome > *,
|
|
1002
|
-
.panelslot > :not(.viewport-overlay) {
|
|
1006
|
+
.panelslot > :where(:not(.viewport-overlay)) {
|
|
1003
1007
|
flex: none;
|
|
1004
1008
|
width: 100%;
|
|
1005
1009
|
max-width: var(--content-width);
|
|
@@ -1012,9 +1016,8 @@
|
|
|
1012
1016
|
padding: 0;
|
|
1013
1017
|
}
|
|
1014
1018
|
.coreview .measure {
|
|
1015
|
-
width: min(100%, var(--
|
|
1016
|
-
margin-
|
|
1017
|
-
margin-left: 0;
|
|
1019
|
+
width: min(100%, var(--content-width));
|
|
1020
|
+
margin-inline: auto;
|
|
1018
1021
|
}
|
|
1019
1022
|
.featureslot-live > *,
|
|
1020
1023
|
.featureslot-core > * {
|
|
@@ -1035,7 +1038,7 @@
|
|
|
1035
1038
|
.providerintro .msgline { margin-top: 10px; }
|
|
1036
1039
|
.pagetitle { margin-top: 7px; font: 600 22px/1.3 var(--sans); letter-spacing: -.025em; }
|
|
1037
1040
|
.pagedesc { margin-top: 5px; color: var(--muted-foreground); font-size: 13px; line-height: 1.55; }
|
|
1038
|
-
.scroll { padding: 22px var(--page-gutter) 48px; scrollbar-gutter: stable; }
|
|
1041
|
+
.scroll { padding: 22px var(--page-gutter) 48px; scrollbar-gutter: stable both-edges; }
|
|
1039
1042
|
.measure { width: min(100%, var(--content-width)); margin-inline: auto; }
|
|
1040
1043
|
.subtabs {
|
|
1041
1044
|
width: 100%;
|
|
@@ -1068,6 +1071,11 @@
|
|
|
1068
1071
|
details.sheet.fold { margin-bottom: 10px; }
|
|
1069
1072
|
details.sheet.fold > summary { padding: 0; }
|
|
1070
1073
|
details.sheet.fold > .foldbody { padding: 14px 0 0; }
|
|
1074
|
+
/* 整张点开详细页的卡(npm 搜索结果)。取值与 .connection-card 一致。 */
|
|
1075
|
+
.iocard-open { cursor: pointer; transition: background .15s, border-color .15s; }
|
|
1076
|
+
.iocard-open:hover { border-color: var(--border-strong); background: color-mix(in srgb, var(--surface) 92%, transparent); }
|
|
1077
|
+
.iocard-open:focus-visible { outline: 2px solid var(--ink-dim); outline-offset: 1px; }
|
|
1078
|
+
.iocard-open.is-installed { border-color: var(--accent); box-shadow: 0 0 8px color-mix(in srgb, var(--accent) 12%, transparent); }
|
|
1071
1079
|
.featureslot > :not(.sheet) + .sheet,
|
|
1072
1080
|
.featureslot > .sheet + .sheet,
|
|
1073
1081
|
.panelslot > :not(.sheet) + .sheet,
|
|
@@ -1150,7 +1158,7 @@
|
|
|
1150
1158
|
}
|
|
1151
1159
|
.prompt-toolbar .msgline { min-width: 0; overflow-wrap: anywhere; }
|
|
1152
1160
|
.featureslot-prompts > .prompt-library,
|
|
1153
|
-
.panelslot > .prompt-library { margin-top:
|
|
1161
|
+
.panelslot > .prompt-library { margin-top: 0; }
|
|
1154
1162
|
.prompt-card textarea.field {
|
|
1155
1163
|
width: 100%;
|
|
1156
1164
|
min-height: 300px;
|
|
@@ -1432,7 +1440,7 @@
|
|
|
1432
1440
|
box-shadow: none;
|
|
1433
1441
|
}
|
|
1434
1442
|
.btn:hover { background: var(--hover); color: var(--foreground); border-color: transparent; box-shadow: none; }
|
|
1435
|
-
.btn.primary { background: var(--accent); border-color: var(--accent); color:
|
|
1443
|
+
.btn.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
|
|
1436
1444
|
.btn.primary:hover { background: color-mix(in srgb, var(--accent) 90%, var(--ink)); filter: none; }
|
|
1437
1445
|
:root[data-theme-scheme="mint"] .btn.primary {
|
|
1438
1446
|
background: color-mix(in srgb, var(--accent) 78%, var(--sheet-2));
|
|
@@ -1452,6 +1460,15 @@
|
|
|
1452
1460
|
font-family: var(--sans);
|
|
1453
1461
|
font-size: 13px;
|
|
1454
1462
|
}
|
|
1463
|
+
select.field:not([multiple]):not([size]) {
|
|
1464
|
+
appearance: none;
|
|
1465
|
+
padding-right: 36px;
|
|
1466
|
+
background-image: linear-gradient(45deg, transparent 50%, var(--muted-foreground) 50%),
|
|
1467
|
+
linear-gradient(135deg, var(--muted-foreground) 50%, transparent 50%);
|
|
1468
|
+
background-position: right 18px center, right 14px center;
|
|
1469
|
+
background-size: 4px 4px;
|
|
1470
|
+
background-repeat: no-repeat;
|
|
1471
|
+
}
|
|
1455
1472
|
input.field:focus, select.field:focus, textarea.field:focus { border-color: var(--border-strong); }
|
|
1456
1473
|
.fieldrow .fieldlabel { margin-bottom: 6px; color: var(--muted-foreground); font-size: 11px; letter-spacing: 0; text-transform: none; }
|
|
1457
1474
|
.segwrap { gap: 2px; padding: 2px; background: var(--surface-hover); border: 0; border-radius: var(--radius-md); }
|
|
@@ -1590,7 +1607,7 @@
|
|
|
1590
1607
|
.providerhub .panelslot { display: block; flex: none; padding: 0; overflow: visible; container: none; }
|
|
1591
1608
|
.providerhub .panelslot { margin-top: 22px; }
|
|
1592
1609
|
.providerhub .providerchrome > *,
|
|
1593
|
-
.providerhub .panelslot > :not(.viewport-overlay) { max-width: none; }
|
|
1610
|
+
.providerhub .panelslot > :where(:not(.viewport-overlay)) { max-width: none; }
|
|
1594
1611
|
.providerhub .providerintro .pagetitle { margin: 0; font-size: 18px; }
|
|
1595
1612
|
.providerhub .providerintro .pagedesc { margin-top: 4px; }
|
|
1596
1613
|
.providerhub .providerintro .rowbar { margin-top: 10px; }
|
|
@@ -1621,7 +1638,7 @@
|
|
|
1621
1638
|
|
|
1622
1639
|
@media (max-width: 900px) {
|
|
1623
1640
|
#rail { width: 232px; }
|
|
1624
|
-
|
|
1641
|
+
:root { --page-gutter: 20px; }
|
|
1625
1642
|
.settings-layout { grid-template-columns: minmax(0, 1fr); gap: 20px; }
|
|
1626
1643
|
.settings-index { position: static; flex-direction: row; overflow-x: auto; }
|
|
1627
1644
|
.settings-jump { width: auto; white-space: nowrap; }
|
|
@@ -1724,5 +1741,92 @@
|
|
|
1724
1741
|
.ob-btn:hover:not(:disabled) { background: var(--hover); }
|
|
1725
1742
|
.ob-btn .icon { width: 14px; height: 14px; }
|
|
1726
1743
|
.ob-btn:disabled { opacity: .55; cursor: not-allowed; }
|
|
1727
|
-
.ob-btn.ob-go { background: var(--accent); color:
|
|
1744
|
+
.ob-btn.ob-go { background: var(--accent); color: #fff; }
|
|
1728
1745
|
.ob-btn.ob-go:hover:not(:disabled) { filter: brightness(1.06); }
|
|
1746
|
+
.connection-hub{display:grid;grid-template-columns:minmax(210px,280px) minmax(0,1fr);gap:24px;align-items:start}
|
|
1747
|
+
.connection-index{position:sticky;top:16px;min-width:0;max-height:calc(100vh - 140px);overflow:auto;padding:4px}
|
|
1748
|
+
.connection-cards{display:grid;gap:12px;padding:3px}
|
|
1749
|
+
.connection-card{min-width:0;border:1px solid var(--line);border-radius:12px;padding:14px;background:var(--paper);cursor:pointer;transition:background .15s,border-color .15s}
|
|
1750
|
+
.connection-card.is-active{border-color:var(--accent);box-shadow:0 0 8px color-mix(in srgb,var(--accent) 12%,transparent)}
|
|
1751
|
+
.connection-card.is-selected{background:color-mix(in srgb,var(--ink) 5%,var(--paper));outline:2px solid var(--ink-dim);outline-offset:1px}
|
|
1752
|
+
.connection-name,.connection-kind,.connection-model,.connection-url,.connection-status,.connection-secondary{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
1753
|
+
.connection-name{font:700 17px/1.25 var(--sans)}.connection-kind{margin-top:4px;font:600 11.5px/1.3 var(--sans);color:var(--muted-foreground)}.connection-model{margin-top:9px;font-size:13px}.connection-url{font-size:11px;color:var(--ink-dim);margin-top:3px}
|
|
1754
|
+
.connection-status{font-size:12px;margin-top:14px}.connection-secondary{font-size:11px;color:var(--ink-dim)}
|
|
1755
|
+
.connection-card .rowbar{margin-top:12px;justify-content:space-between;gap:4px}
|
|
1756
|
+
.connection-detail{min-width:0}.connection-detail .sheet{margin-bottom:16px}
|
|
1757
|
+
.connection-detail .connection-field{margin-bottom:15px}.connection-detail input:not([type=checkbox]),.connection-detail select,.connection-detail textarea{max-width:100%;width:100%}
|
|
1758
|
+
.connection-detail .field-error{color:var(--danger,#b43c38);font-size:12px;min-height:0}.connection-shared{color:var(--ink-dim);font-size:12px;line-height:1.7;margin:20px 0 12px}
|
|
1759
|
+
.connection-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.connection-actions .grow{flex:1}
|
|
1760
|
+
@media(max-width:760px){.connection-hub{grid-template-columns:1fr}.connection-index{position:static;max-height:320px}.connection-cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}}
|
|
1761
|
+
.connection-guard{border:1px solid var(--line);border-radius:16px;padding:24px;background:var(--paper);color:var(--ink);max-width:560px;box-shadow:0 12px 60px #0003}
|
|
1762
|
+
.connection-guard::backdrop{background:#0005}.connection-guard h3{margin-bottom:20px}
|
|
1763
|
+
|
|
1764
|
+
.live-summary { flex-wrap:wrap; }
|
|
1765
|
+
.live-connection { display:inline-flex; align-items:center; gap:7px; min-width:0; max-width:48%; background:none; border:0; color:var(--ink-soft); cursor:pointer; padding:0; font:11.5px/1 var(--sans); }
|
|
1766
|
+
.live-connection-label { flex-shrink:0; }
|
|
1767
|
+
.live-connection-value { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:4px 8px; border-radius:7px; background:var(--hover); border:1px solid var(--border); color:var(--ink-blue); font-weight:600; }
|
|
1768
|
+
.live-connection:hover .live-connection-value { border-color:var(--accent); }
|
|
1769
|
+
.live-connection:focus-visible { outline:2px solid var(--accent); outline-offset:3px; border-radius:7px; }
|
|
1770
|
+
@media(max-width:760px) { .live-connection { max-width:100%; margin-left:auto; } }
|
|
1771
|
+
|
|
1772
|
+
.connection-detail .msgline:not(.bad) { color:var(--ink-soft); }
|
|
1773
|
+
.connection-detail .tdesc { margin:6px 0 12px; }
|
|
1774
|
+
|
|
1775
|
+
/* Page headings stay above the shared content origin while each page scrolls. */
|
|
1776
|
+
.featureslot:has(> .featureintro) { padding-top:0; }
|
|
1777
|
+
.featureintro { padding-bottom:16px; border-bottom:1px solid var(--border); }
|
|
1778
|
+
.featureslot > .featureintro { position:sticky; top:0; z-index:20; padding-top:30px; margin-bottom:24px; background:var(--background); }
|
|
1779
|
+
.featureslot > .featureintro + * { margin-top:0; }
|
|
1780
|
+
.featureslot > .featureintro + .sheet { margin-top:0; }
|
|
1781
|
+
.providerchrome { padding-bottom:0; }
|
|
1782
|
+
.providerchrome + .panelslot { padding-top:24px; }
|
|
1783
|
+
.coreview > .pagehead { padding-bottom:16px; }
|
|
1784
|
+
.connection-index { padding-top:0; top:100px; }
|
|
1785
|
+
.connection-detail > div > div:first-child > .sheet:first-child { padding-top:0; }
|
|
1786
|
+
.connection-hub .btn { border:1px solid var(--border-strong); }
|
|
1787
|
+
.connection-hub .btn:hover { border-color:var(--ink-soft); }
|
|
1788
|
+
.connection-hub .btn.danger { border-color:currentColor; }
|
|
1789
|
+
.connection-hub .btn.primary, .connection-hub .btn.primary:hover { color:#fff; border-color:var(--accent); }
|
|
1790
|
+
.connection-module-readonly:disabled { opacity:1; background-color:var(--surface); color:var(--foreground); cursor:default; }
|
|
1791
|
+
.field-note, .tdesc, .trow .tdesc, .sheet .sh-desc, .pagedesc, p.muted, small.muted,
|
|
1792
|
+
.connection-detail .msgline:not(.bad), .connection-shared {
|
|
1793
|
+
font:var(--text-detail)/1.55 var(--sans); color:var(--muted-foreground);
|
|
1794
|
+
}
|
|
1795
|
+
.field-note { margin:10px 0; }
|
|
1796
|
+
.field-note:empty { display:none; }
|
|
1797
|
+
.pricing-rules, .pricing-snapshot { margin-top:16px; }
|
|
1798
|
+
.pricing-rules > textarea, .pricing-snapshot > pre { margin-top:10px; }
|
|
1799
|
+
|
|
1800
|
+
.coreview > .pagehead { position:relative; border-bottom:0; }
|
|
1801
|
+
.coreview > .pagehead::after { content:''; position:absolute; bottom:0; left:var(--page-gutter); right:var(--page-gutter); height:1px; background:var(--border); }
|
|
1802
|
+
.coreview > .subtabs { margin-top:24px; }
|
|
1803
|
+
|
|
1804
|
+
.providerchrome > .featureintro + * { margin-top: 24px; }
|
|
1805
|
+
.providerchrome > .pagedesc { margin-bottom: 10px; }
|
|
1806
|
+
.providerchrome > .rowbar { margin-bottom: 10px; }
|
|
1807
|
+
.coreview > .scroll { scrollbar-gutter: auto; }
|
|
1808
|
+
.panelslot > :first-child > .sheet:first-child { padding-top: 0; }
|
|
1809
|
+
|
|
1810
|
+
/* 卡片上的删除与探活。 */
|
|
1811
|
+
.connection-create { margin-bottom:16px; }
|
|
1812
|
+
.connection-create-hint { margin:7px 2px 0; font:var(--text-detail)/1.5 var(--sans); color:var(--muted-foreground); }
|
|
1813
|
+
.connection-create > .btn { width:100%; }
|
|
1814
|
+
.connection-card { position:relative; }
|
|
1815
|
+
.connection-erase { position:absolute; top:10px; right:10px; display:flex; align-items:center; gap:0; height:26px; padding:0 6px; border:1px solid transparent; border-radius:8px; background:none; color:var(--ink-dim); cursor:pointer; transition:color .14s ease, background .14s ease, border-color .14s ease, gap .18s ease; }
|
|
1816
|
+
.connection-erase .icon { width:14px; height:14px; flex:none; }
|
|
1817
|
+
.connection-erase:hover { color:var(--danger,#b43c38); background:var(--hover); }
|
|
1818
|
+
.connection-erase-text { display:grid; grid-template-columns:0fr; overflow:hidden; font:600 12px/1 var(--sans); white-space:nowrap; transition:grid-template-columns .18s ease; }
|
|
1819
|
+
.connection-erase-text > span { overflow:hidden; }
|
|
1820
|
+
.connection-erase.is-armed { gap:6px; color:var(--danger,#b43c38); border-color:currentColor; background:var(--paper); }
|
|
1821
|
+
.connection-erase.is-armed .connection-erase-text { grid-template-columns:1fr; }
|
|
1822
|
+
.connection-name { padding-right:34px; }
|
|
1823
|
+
.connection-probe-btn .connection-spin { display:none; width:12px; height:12px; margin-left:6px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:connection-spin .7s linear infinite; }
|
|
1824
|
+
.connection-probe-btn.is-busy .connection-spin { display:inline-block; }
|
|
1825
|
+
@keyframes connection-spin { to { transform:rotate(360deg); } }
|
|
1826
|
+
.connection-probe { display:grid; grid-template-rows:0fr; margin-top:0; transition:grid-template-rows .2s ease, margin-top .2s ease, opacity .2s ease; opacity:0; }
|
|
1827
|
+
.connection-probe.is-open { grid-template-rows:1fr; margin-top:12px; opacity:1; }
|
|
1828
|
+
.connection-probe-body { overflow:hidden; }
|
|
1829
|
+
.connection-probe .sheet { margin:0; padding:10px 12px; border:1px solid var(--border); border-radius:10px; background:var(--surface); }
|
|
1830
|
+
.connection-probe .kvtable td { padding:3px 0; font-size:11.5px; word-break:break-word; }
|
|
1831
|
+
.connection-probe .kvtable td:first-child { padding-right:8px; color:var(--muted-foreground); white-space:nowrap; }
|
|
1832
|
+
.connection-probe > .connection-probe-body > .btn { margin-top:8px; }
|