typebulb 0.19.6 → 0.20.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1153,29 +1153,25 @@ a.server-port:hover { text-decoration: underline; }
1153
1153
  .tool {
1154
1154
  font-size: .85rem;
1155
1155
  }
1156
- /* Clickable caret row, shared by tool heads and the collapsed-turn summary: a flex
1157
- row that's an unselectable click target. align-items:center centers the caret
1158
- against the label box (verb↔summary alignment is handled inside .tool-label). */
1156
+ /* Row shape shared by tool heads and the collapsed-turn summary; only the latter is a click
1157
+ target (a tool's toggle is its digest row). */
1159
1158
  .tool-head, .turn-summary {
1160
1159
  display: flex;
1161
1160
  align-items: center;
1162
1161
  gap: .5rem;
1163
1162
  padding: .15rem 0;
1163
+ }
1164
+ .turn-summary {
1164
1165
  cursor: pointer;
1165
1166
  user-select: none;
1166
1167
  }
1167
- .tool.open {
1168
- margin-top: .55rem;
1169
- background: var(--veil);
1170
- border: 1px solid var(--border);
1171
- border-radius: 8px;
1172
- }
1173
- .tool.open .tool-head {
1174
- padding: .4rem .6rem;
1175
- }
1176
- /* line-height: 1 keeps the oversized caret's box from inflating the row height. */
1177
- .tool-caret { color: var(--muted); font-size: 1.4rem; line-height: 1; width: 1ch; }
1178
- .tool-name { font-weight: 600; color: var(--accent); }
1168
+ /* The shared disclosure triangle (caret() in messageList.ts). flex:none so a squeezed row can't
1169
+ crush it; the digest row has no flex gap, so its spacing rides the marker. */
1170
+ .caret-tri { flex: none; transition: transform .15s ease; }
1171
+ .caret-tri.open { transform: rotate(90deg); }
1172
+ .tool-digest .caret-tri { margin-right: .5rem; }
1173
+ /* Plain bold — an accent verb reads as a hyperlink; accent is reserved for the file-path link. */
1174
+ .tool-name { font-weight: 600; }
1179
1175
  /* Errors here are routine (a first-read miss the retry fixes), so a failed tool
1180
1176
  recolors just its verb rather than boxing the whole row — a quiet signal. */
1181
1177
  .tool.err .tool-name { color: var(--err); }
@@ -1184,6 +1180,7 @@ a.server-port:hover { text-decoration: underline; }
1184
1180
  answer). Same caret/row shape as a tool head, italic muted label. */
1185
1181
  .turn-summary { color: var(--muted); font-size: .85rem; }
1186
1182
  .turn-summary-text { font-style: italic; }
1183
+ .fork-icon { vertical-align: -1px; margin-right: .15rem; }
1187
1184
  .turn-summary:hover .turn-summary-text { color: var(--fg); }
1188
1185
 
1189
1186
  /* An expanded abandoned-branch (fork) stub renders its orphan messages here — set apart from the live
@@ -1227,12 +1224,13 @@ a.server-port:hover { text-decoration: underline; }
1227
1224
  (equal specificity, later in source) and the stub actually gets its breathing room. */
1228
1225
  .md .bulb-fold { margin: .7rem 0; }
1229
1226
  .bulb-fold:hover { background: color-mix(in srgb, var(--fg) 8%, var(--panel)); }
1230
- .bulb-fold .tool-caret { color: inherit; } /* follow the accent row color */
1231
1227
  /* Verb + summary are inline siblings sharing one line box and font, so they sit
1232
1228
  on a common baseline. Ellipsis truncation lives on the wrapper, not the
1233
1229
  children — overflow:hidden on the summary itself skews its baseline. */
1230
+ /* flex: 0 1 auto (not 1) so the pending '…' sits right after the label instead of at the row's
1231
+ far edge; the label shrinks with ellipsis when the row is tight. */
1234
1232
  .tool-label {
1235
- flex: 1;
1233
+ flex: 0 1 auto;
1236
1234
  min-width: 0;
1237
1235
  white-space: nowrap;
1238
1236
  overflow: hidden;
@@ -1241,13 +1239,42 @@ a.server-port:hover { text-decoration: underline; }
1241
1239
  .tool-sum {
1242
1240
  margin-left: .5rem;
1243
1241
  color: var(--muted);
1244
- /* Re-enable selection the .tool-head blankets off: the verb/caret stay an
1245
- unselectable click target, but the summary is real data (path, pattern,
1246
- command) worth copying. A drag selects; a plain click still toggles. */
1247
- user-select: text;
1248
1242
  }
1249
1243
  .tool-run { color: var(--muted); }
1250
1244
 
1245
+ /* The OUT line ("463 lines", the first stdout line): a tool's second row and its only toggle.
1246
+ Text stays selectable — a drag copies, a plain click toggles. */
1247
+ .tool-digest {
1248
+ padding: 0 0 .15rem .6rem;
1249
+ color: var(--muted);
1250
+ white-space: nowrap;
1251
+ overflow: hidden;
1252
+ text-overflow: ellipsis;
1253
+ cursor: pointer;
1254
+ user-select: text;
1255
+ }
1256
+ .tool-digest:hover { color: var(--fg); }
1257
+
1258
+ /* Expanded input/output card beneath the digest row — additive only, the rows above keep their
1259
+ collapsed look. First child sheds its top divider (nothing above it inside the card). */
1260
+ .tool-card {
1261
+ margin: .15rem 0 .55rem .6rem;
1262
+ background: var(--veil);
1263
+ border: 1px solid var(--border);
1264
+ border-radius: 8px;
1265
+ overflow: hidden;
1266
+ }
1267
+ .tool-card > :first-child, .tool-card > .diff:first-child > :first-child { border-top: none; }
1268
+
1269
+ /* TodoWrite checklist (CC's treatment: struck-through done, bold in-progress, plain pending). */
1270
+ .todo-list { padding: .45rem .7rem; display: grid; gap: .25rem; font-size: .85rem; }
1271
+ .todo { display: flex; gap: .5rem; align-items: baseline; }
1272
+ .todo-icon { flex: none; }
1273
+ .todo.completed .todo-icon { color: var(--diff-add); }
1274
+ .todo.completed .todo-text { text-decoration: line-through; color: var(--muted); }
1275
+ .todo.in_progress .todo-text { font-weight: 600; }
1276
+ .todo.in_progress .todo-icon { color: var(--accent); }
1277
+
1251
1278
  /* Code-display panels inside an open tool card: raw input/output (.tool-in,
1252
1279
  .tool-out) and per-hunk diff halves (.diff-old, .diff-new). All four share
1253
1280
  the same monospace block geometry — padding, max-height with scroll,
@@ -1266,6 +1293,19 @@ a.server-port:hover { text-decoration: underline; }
1266
1293
  overflow: auto;
1267
1294
  }
1268
1295
  .tool-out { color: var(--muted); }
1296
+ /* Structured input fields inside an open tool card (one row per input key), replacing the old raw
1297
+ JSON dump. The key is a muted inline label; the value keeps the shared mono geometry, flowing on
1298
+ the same line and wrapping/multi-lining as pre-wrap dictates. */
1299
+ .tool-field + .tool-field { margin-top: .5rem; }
1300
+ .tool-key { color: var(--muted); margin-right: .6rem; user-select: text; }
1301
+ .tool-val { display: inline; margin: 0; font: inherit; white-space: pre-wrap; word-break: break-word; }
1302
+ /* Line-banded unified-diff view (± lines only): the same add/remove band colors as
1303
+ .diff-new/.diff-old; a muted ⋯ row separates hunks. */
1304
+ .udiff { white-space: pre-wrap; word-break: break-word; }
1305
+ .udiff-line { padding: 0 .2rem; }
1306
+ .udiff-add { background: color-mix(in srgb, var(--diff-add) 24%, transparent); }
1307
+ .udiff-del { background: color-mix(in srgb, var(--err) 24%, transparent); }
1308
+ .udiff-gap { color: var(--muted); user-select: none; }
1269
1309
  /* The band carries the add/remove signal; text stays --fg so it's readable. Colouring the text the same
1270
1310
  hue as its fill (red-on-red) is what washes a diff out — the band alone is the convention. */
1271
1311
  .diff-old {