@adhdev/daemon-standalone 0.9.82-rc.294 → 0.9.82-rc.295

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -29983,10 +29983,10 @@ var require_dist3 = __commonJS({
29983
29983
  }
29984
29984
  function getDaemonBuildInfo() {
29985
29985
  if (cached2) return cached2;
29986
- const commit = readInjected(true ? "6ee0e52b0b7347870577ebe598054d87127078fe" : void 0) ?? "unknown";
29987
- const commitShort = readInjected(true ? "6ee0e52b" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
29988
- const version2 = readInjected(true ? "0.9.82-rc.294" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
29989
- const builtAt = readInjected(true ? "2026-06-16T12:16:10.838Z" : void 0);
29986
+ const commit = readInjected(true ? "dc26917ced80beb84689897738b6edb82208c146" : void 0) ?? "unknown";
29987
+ const commitShort = readInjected(true ? "dc26917c" : void 0) ?? (commit !== "unknown" ? commit.slice(0, 7) : "unknown");
29988
+ const version2 = readInjected(true ? "0.9.82-rc.295" : void 0) ?? readInjected(typeof process !== "undefined" ? process.env?.ADHDEV_PKG_VERSION : void 0) ?? "unknown";
29989
+ const builtAt = readInjected(true ? "2026-06-16T13:44:55.274Z" : void 0);
29990
29990
  cached2 = builtAt ? { commit, commitShort, version: version2, builtAt } : { commit, commitShort, version: version2 };
29991
29991
  return cached2;
29992
29992
  }
@@ -45411,10 +45411,12 @@ ${lastSnapshot}`;
45411
45411
  if (/Space to (?:select|toggle)|toggle selection|select multiple|select all that apply/i.test(screenText)) {
45412
45412
  return true;
45413
45413
  }
45414
- const optionCheckbox = /^\s*(?:[❯›>]\s*)?(?:\[[ xX]\]|[☐☒◻◼])\s*\d+\.\s+\S/;
45414
+ const optionCheckbox = `(?:\\[[ xX]\\]|[\u2610\u2612\u25FB\u25FC])`;
45415
+ const beforeNumber = new RegExp(`^\\s*(?:[\u276F\u203A>]\\s*)?${optionCheckbox}\\s*\\d+\\.\\s+\\S`);
45416
+ const afterNumber = new RegExp(`^\\s*(?:[\u276F\u203A>]\\s*)?\\d+\\.\\s*${optionCheckbox}\\s+\\S`);
45415
45417
  for (const line of screenText.split(/\r?\n/)) {
45416
45418
  if (line.includes("\u2714 Submit")) continue;
45417
- if (optionCheckbox.test(line)) return true;
45419
+ if (beforeNumber.test(line) || afterNumber.test(line)) return true;
45418
45420
  }
45419
45421
  return false;
45420
45422
  }
@@ -45554,6 +45556,16 @@ ${lastSnapshot}`;
45554
45556
  ...allowFreeform ? { allowFreeform: true } : {}
45555
45557
  };
45556
45558
  }
45559
+ function readFocusedClaudeTuiQuestion(screenText) {
45560
+ if (!screenText.includes("Enter to select")) return null;
45561
+ const parsed = parseClaudeInteractiveTuiQuestion({ screenText }, 0);
45562
+ if (!parsed) return null;
45563
+ return {
45564
+ question: parsed.question,
45565
+ ...parsed.header ? { header: parsed.header } : {},
45566
+ multiSelect: parsed.multiSelect
45567
+ };
45568
+ }
45557
45569
  function detectClaudeAskUserQuestionPromptFromTuiPages(pages, options) {
45558
45570
  if (pages.length === 0) return null;
45559
45571
  const headers = claudeTuiQuestionHeaders(pages[0].screenText);
@@ -61803,12 +61815,20 @@ ${formatManifestValidationIssues2(validation.issues)}`,
61803
61815
  * question to multi-select and re-emit status. Promotion is one-way
61804
61816
  * (false→true only) — once a question is known multi-select we never demote
61805
61817
  * it, since the glyph column can scroll out of view on later frames.
61818
+ *
61819
+ * For MULTI-question prompts the per-page Tab capture is the actual source
61820
+ * of the bug: pages 2..N are snapshotted ~120ms after the Tab keypress,
61821
+ * before their option-row glyph column has redrawn, so those questions
61822
+ * freeze as single-select while page 1 (already settled) is correct. We
61823
+ * cannot upgrade blindly — the live snapshot shows only ONE focused page —
61824
+ * but we CAN read that page's question text/header and upgrade the matching
61825
+ * question. As the user navigates the picker (or it settles), each page is
61826
+ * eventually re-read and repaired.
61806
61827
  */
61807
61828
  maybeUpgradeClaudeTuiMultiSelect() {
61808
61829
  if (this.cliType !== "claude-cli" || this.interactivePromptTransport !== "tui" || !this.activeInteractivePrompt) return;
61809
61830
  const questions = this.activeInteractivePrompt.questions;
61810
- if (questions.length !== 1) return;
61811
- if (questions[0].multiSelect) return;
61831
+ if (questions.every((q) => q.multiSelect)) return;
61812
61832
  let screenText = "";
61813
61833
  try {
61814
61834
  screenText = this.driver.snapshot();
@@ -61816,8 +61836,18 @@ ${formatManifestValidationIssues2(validation.issues)}`,
61816
61836
  return;
61817
61837
  }
61818
61838
  if (!screenText.includes("Enter to select")) return;
61819
- if (!detectClaudeTuiMultiSelect(screenText)) return;
61820
- questions[0].multiSelect = true;
61839
+ if (questions.length === 1) {
61840
+ if (questions[0].multiSelect) return;
61841
+ if (!detectClaudeTuiMultiSelect(screenText)) return;
61842
+ questions[0].multiSelect = true;
61843
+ this.statusCallback?.();
61844
+ return;
61845
+ }
61846
+ const focused = readFocusedClaudeTuiQuestion(screenText);
61847
+ if (!focused || !focused.multiSelect) return;
61848
+ const match = questions.find((q) => focused.header && q.header && q.header === focused.header || q.question === focused.question);
61849
+ if (!match || match.multiSelect) return;
61850
+ match.multiSelect = true;
61821
61851
  this.statusCallback?.();
61822
61852
  }
61823
61853
  readClaudeTuiHeaders(screenText) {