taskchef 7.23.2 → 7.23.4

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.23.2",
3
+ "version": "7.23.4",
4
4
  "description": "Dispatch work from a data-only workspace to visible Codex project tasks.",
5
5
  "author": {
6
6
  "name": "Favo Yang",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "taskchef",
3
- "version": "7.23.2",
3
+ "version": "7.23.4",
4
4
  "description": "A non-blocking interactive dispatcher for visible Codex tasks.",
5
5
  "license": "MIT",
6
6
  "author": "Favo Yang",
@@ -440,15 +440,20 @@ function usageBreakdownText(usage) {
440
440
  ].join(" · ");
441
441
  }
442
442
 
443
+ export function renderTextShimmer(element, value) {
444
+ element.textContent = String(value ?? "");
445
+ return element;
446
+ }
447
+
443
448
  export function usagePresentation(usage, { wholeTask = false } = {}) {
444
449
  const container = document.createElement("div");
445
450
  container.className = `usage-summary usage-${usage?.status ?? "unavailable"}`;
446
451
  if (usage?.status === "pending" || usage?.status === "calculating") {
447
452
  const text = document.createElement("span");
448
453
  text.className = "text-shimmer";
449
- text.textContent = usage.status === "pending"
454
+ renderTextShimmer(text, usage.status === "pending"
450
455
  ? "Tokens pending · available when turn finishes"
451
- : "Calculating token usage…";
456
+ : "Calculating token usage…");
452
457
  container.replaceChildren(text);
453
458
  return container;
454
459
  }
@@ -537,7 +542,8 @@ function turnTimeline(task, { highlightTurnRef = null } = {}) {
537
542
  resultLabel.textContent = "Result";
538
543
  const result = document.createElement("p");
539
544
  result.className = `preserve-lines${turnStatus === "working" ? " text-shimmer" : ""}`;
540
- appendLinkedText(result, presentation.summary, task);
545
+ if (turnStatus === "working") renderTextShimmer(result, presentation.summary);
546
+ else appendLinkedText(result, presentation.summary, task);
541
547
  const turnMetadata = document.createElement("p");
542
548
  turnMetadata.className = "result-history-turn";
543
549
  turnMetadata.textContent = `Turn ref ${turn.turnRef ?? "not recorded"}; Codex turn ${turn.turnId ?? "unavailable"}`;
@@ -954,7 +960,8 @@ function taskCard(task) {
954
960
  resultLabel.textContent = "Result";
955
961
  const result = document.createElement("span");
956
962
  result.className = `preserve-lines${latest.resultStatus === "working" ? " text-shimmer" : ""}`;
957
- appendLinkedText(result, latest.resultSummary, task);
963
+ if (latest.resultStatus === "working") renderTextShimmer(result, latest.resultSummary);
964
+ else appendLinkedText(result, latest.resultSummary, task);
958
965
  summary.replaceChildren(requestLabel, request, resultLabel, result);
959
966
  const relatedLinks = relatedGitHubLinks(task, { compact: true });
960
967
  const time = timestampControl(
@@ -185,15 +185,20 @@ dialog section + section { margin-top: 24px; }
185
185
  .usage-pending, .usage-calculating { display: flex; align-items: center; }
186
186
  .text-shimmer {
187
187
  color: var(--muted);
188
- background: linear-gradient(100deg, var(--muted) 46%, var(--text) 50%, var(--muted) 54%);
188
+ display: inline-block;
189
+ width: fit-content;
190
+ max-width: 100%;
191
+ justify-self: start;
192
+ vertical-align: top;
193
+ background: linear-gradient(100deg, var(--muted) 48%, var(--text) 50%, var(--muted) 52%);
189
194
  background-size: 250% 100%;
190
195
  background-position: 100% 0;
191
196
  background-clip: text;
192
197
  -webkit-background-clip: text;
193
198
  -webkit-text-fill-color: transparent;
194
- animation: text-shimmer 6.4s ease-in-out infinite;
199
+ animation: text-shimmer-sweep 6.4s linear infinite;
195
200
  }
196
- @keyframes text-shimmer {
201
+ @keyframes text-shimmer-sweep {
197
202
  0% { background-position: 100% 0; }
198
203
  72%, 100% { background-position: -100% 0; }
199
204
  }