@linxin666/dsh-client-ui-task-board 0.1.11 → 0.1.13

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/lib/client.js CHANGED
@@ -290,6 +290,11 @@ window.__ModuleLoader__.load({
290
290
  start() {
291
291
  this.tasks = this.deps.store.load();
292
292
  this.reconcileRunningTasks();
293
+ const unsubscribeExternal = this.deps.store.subscribeExternal?.(() => {
294
+ this.tasks = this.deps.store.load();
295
+ this.notify();
296
+ });
297
+ if (unsubscribeExternal !== void 0) this.disposers.push(unsubscribeExternal);
293
298
  this.disposers.push(this.deps.sessions.list.subscribe(() => {
294
299
  this.onSessionsChanged();
295
300
  }));
@@ -487,16 +492,18 @@ window.__ModuleLoader__.load({
487
492
  if (execution !== void 0 && this.activeExecutionIds.has(execution.id)) continue;
488
493
  const event = await this.deps.exec.reconcile(task);
489
494
  if (event !== void 0 && event.kind === "settled") events.push({
490
- task,
495
+ taskId: task.id,
491
496
  event
492
497
  });
493
498
  }
494
499
  if (events.length === 0) return;
495
500
  let changed = false;
496
- for (const { task, event } of events) {
501
+ for (const { taskId, event } of events) {
502
+ const task = this.tasks.find((candidate) => candidate.id === taskId);
503
+ if (task === void 0) continue;
497
504
  const next = settleExecution(task, event.executionId, event.outcome, this.now(), event.error);
498
505
  if (next === task) continue;
499
- this.tasks = this.tasks.map((candidate) => candidate.id === task.id ? next : candidate);
506
+ this.tasks = this.tasks.map((candidate) => candidate.id === taskId ? next : candidate);
500
507
  changed = true;
501
508
  }
502
509
  if (changed) this.persistAndNotify();
@@ -889,13 +896,18 @@ window.__ModuleLoader__.load({
889
896
  var LocalStorageTaskStore = class {
890
897
  key;
891
898
  storage;
899
+ events;
892
900
  /**
893
901
  * @param key - storage key for the ledger document.
894
902
  * @param storage - storage backend (defaults to the global localStorage; tests inject fakes).
903
+ * @param events - storage-event target for cross-tab notifications (defaults
904
+ * to the browser global; undefined in non-browser runtimes, where the
905
+ * subscription becomes a no-op).
895
906
  */
896
- constructor(key = DEFAULT_STORAGE_KEY, storage = globalThis.localStorage) {
907
+ constructor(key = DEFAULT_STORAGE_KEY, storage = globalThis.localStorage, events = typeof globalThis.addEventListener === "function" ? globalThis : void 0) {
897
908
  this.key = key;
898
909
  this.storage = storage;
910
+ this.events = events;
899
911
  }
900
912
  load() {
901
913
  if (this.storage === void 0) return [];
@@ -922,6 +934,23 @@ window.__ModuleLoader__.load({
922
934
  console.error("[dsh-task-board] task ledger clear failed", error);
923
935
  }
924
936
  }
937
+ /**
938
+ * Cross-tab change subscription (see {@link TaskStore.subscribeExternal}).
939
+ * The browser fires the storage event in every OTHER tab of the same origin
940
+ * when one tab writes; a null key means the whole storage was cleared. Both
941
+ * cases reload the ledger here; unrelated keys are ignored.
942
+ */
943
+ subscribeExternal(listener) {
944
+ if (this.events === void 0) return () => {};
945
+ const onStorage = (event) => {
946
+ if (event.key !== null && event.key !== this.key) return;
947
+ listener();
948
+ };
949
+ this.events.addEventListener("storage", onStorage);
950
+ return () => {
951
+ this.events?.removeEventListener("storage", onStorage);
952
+ };
953
+ }
925
954
  };
926
955
  //#endregion
927
956
  //#region src/client/locales.ts
@@ -1122,8 +1151,8 @@ window.__ModuleLoader__.load({
1122
1151
  return text;
1123
1152
  }
1124
1153
  //#endregion
1125
- //#region \0dsh-css:/home/runner/work/dsh-web-ui/dsh-web-ui/packages/dsh-task-board/src/client/board.module.css.mjs
1126
- const css$1 = "[data-pane=conversation]{position:relative}[data-dsh-taskboard-view]{z-index:60;display:none;position:absolute;inset:0}html[data-dsh-taskboard-active]:not([data-dsh-ssh-active]) [data-dsh-taskboard-view]{display:block}html[data-dsh-taskboard-active]:not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-taskboard-view]){display:none!important}.tHOVBW_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.tHOVBW_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.tHOVBW_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.tHOVBW_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.tHOVBW_entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] .tHOVBW_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .tHOVBW_entryLabel{display:none}.tHOVBW_board{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex}.tHOVBW_boardHeader{flex:none;align-items:center;gap:10px;display:flex}.tHOVBW_boardTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}.tHOVBW_search{min-width:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:0 260px;padding:6px 10px;font-size:13px}.tHOVBW_search::placeholder{color:var(--dsw-alias-label-tertiary)}.tHOVBW_columns{flex:1;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;min-height:0;display:grid}.tHOVBW_column{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;min-height:0;display:flex;overflow:hidden}.tHOVBW_columnHeader{flex:none;align-items:center;gap:6px;padding:10px 12px;display:flex}.tHOVBW_columnTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:13px;font-weight:700;overflow:hidden}.tHOVBW_columnCount{min-width:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;flex:none;padding:1px 8px;font-size:12px}.tHOVBW_statusDot{border-radius:50%;flex:none;width:8px;height:8px}.tHOVBW_statusDot[data-status=backlog]{background:var(--dsw-alias-label-tertiary)}.tHOVBW_statusDot[data-status=todo]{background:var(--dsw-alias-state-business-primary)}.tHOVBW_statusDot[data-status=running]{background:var(--dsw-alias-state-warn-primary)}.tHOVBW_statusDot[data-status=done]{background:var(--dsw-alias-state-success-primary)}.tHOVBW_statusDot[data-status=failed]{background:var(--dsw-alias-state-error-primary)}.tHOVBW_cards{flex-direction:column;flex:1;gap:8px;min-height:0;padding:2px 8px 10px;display:flex;overflow-y:auto}.tHOVBW_columnEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:24px 8px;font-size:12px}.tHOVBW_card{text-align:left;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;color:var(--dsw-alias-label-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;font-family:inherit;transition:box-shadow .12s,border-color .12s,transform .12s;display:flex}.tHOVBW_card:hover{box-shadow:var(--dsw-shadow-lv2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}.tHOVBW_card[data-status=running]{border-color:var(--dsw-alias-state-warn-primary)}.tHOVBW_cardTitle{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.tHOVBW_cardExcerpt{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}.tHOVBW_cardMeta{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;font-size:11px;display:flex}.tHOVBW_cardTime{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tHOVBW_cardSchedule{white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;line-height:1}.tHOVBW_cardRun{flex:none}.tHOVBW_cardRun[data-result=failed]{color:var(--dsw-alias-state-error-primary)}.tHOVBW_cardRun[data-result=succeeded]{color:var(--dsw-alias-state-success-primary)}.tHOVBW_cardSession{color:var(--dsw-alias-state-business-primary);flex:none}.tHOVBW_cardRunningLabel{color:var(--dsw-alias-state-warn-primary);font-size:11px}.tHOVBW_cardSpinner{border:2px solid var(--dsw-alias-state-warn-primary);border-top-color:#0000;border-radius:50%;flex:none;width:10px;height:10px;animation:.8s linear infinite tHOVBW_dshTbSpin}@keyframes tHOVBW_dshTbSpin{to{transform:rotate(360deg)}}.tHOVBW_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.tHOVBW_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.tHOVBW_primaryButton:disabled{opacity:.5;cursor:default}.tHOVBW_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}.tHOVBW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.tHOVBW_ghostButton:disabled{opacity:.45;cursor:default}.tHOVBW_dangerButton{color:#fff;background:var(--dsw-alias-state-error-primary);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.tHOVBW_dangerButton:hover:not(:disabled){filter:brightness(1.08)}.tHOVBW_dangerButton:active:not(:disabled){filter:brightness(.94)}.tHOVBW_dangerButton:disabled{opacity:.5;cursor:default}.tHOVBW_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.tHOVBW_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.tHOVBW_linkButton{color:var(--dsw-alias-state-business-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-size:12px}.tHOVBW_linkButton:hover{text-decoration:underline}.tHOVBW_modalBackdrop{z-index:1300;background:var(--dsw-alias-bg-mask-1);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.tHOVBW_modal{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(520px,100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.tHOVBW_modalTitle{margin:0;font-size:15px;font-weight:700}.tHOVBW_confirmMessage{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.5}.tHOVBW_modalFooter{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.tHOVBW_field{flex-direction:column;gap:5px;display:flex}.tHOVBW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.tHOVBW_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}.tHOVBW_input:focus{border-color:var(--dsw-alias-state-business-primary)}.tHOVBW_input::placeholder{color:var(--dsw-alias-label-tertiary)}.tHOVBW_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.tHOVBW_detail{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(640px,100vw - 48px);max-height:calc(100vh - 80px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.tHOVBW_detailHeader{border-bottom:1px solid var(--dsw-alias-separator-primary);flex:none;align-items:center;gap:10px;padding:14px 18px;display:flex}.tHOVBW_detailTitle{overflow-wrap:anywhere;flex:1;margin:0;font-size:15px;font-weight:700}.tHOVBW_statusBadge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:2px 10px;font-size:12px}.tHOVBW_statusBadge[data-status=running]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.tHOVBW_statusBadge[data-status=done]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.tHOVBW_statusBadge[data-status=failed]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.tHOVBW_detailBody{flex-direction:column;flex:1;gap:16px;padding:14px 18px;display:flex;overflow-y:auto}.tHOVBW_detailSection{flex-direction:column;gap:6px;display:flex}.tHOVBW_detailSection h4{color:var(--dsw-alias-label-tertiary);text-transform:none;margin:0;font-size:12px;font-weight:700}.tHOVBW_detailText{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.55}.tHOVBW_scheduleToggle{color:var(--dsw-alias-label-primary);cursor:pointer;user-select:none;align-items:center;gap:8px;font-size:13px;display:flex}.tHOVBW_scheduleToggle input{accent-color:var(--dsw-alias-state-business-primary)}.tHOVBW_scheduleRow{align-items:center;gap:8px;display:flex}.tHOVBW_scheduleInput{min-width:0;font-family:var(--dsw-font-markdown-code-block-small);flex:1;font-size:12.5px}.tHOVBW_scheduleInputInvalid,.tHOVBW_scheduleInputInvalid:focus{border-color:var(--dsw-alias-state-error-primary)}.tHOVBW_schedulePreset{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:none;padding:7px 8px;font-size:12.5px}.tHOVBW_scheduleMeta{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px}.tHOVBW_promptBlock{font-size:12.5px;line-height:1.5;font-family:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border:1px solid var(--dsw-alias-border-l1);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:240px;margin:0;padding:10px 12px;overflow-y:auto}.tHOVBW_executionList{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tHOVBW_executionRow{border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}.tHOVBW_executionBadge{color:var(--dsw-alias-state-warn-primary);background:var(--dsw-alias-state-warn-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:600}.tHOVBW_executionBadge[data-result=succeeded]{color:var(--dsw-alias-state-success-primary);background:0 0}.tHOVBW_executionBadge[data-result=failed]{color:var(--dsw-alias-state-error-primary);background:0 0}.tHOVBW_executionBadge[data-result=cancelled]{color:var(--dsw-alias-label-tertiary);background:0 0}.tHOVBW_executionTimes{color:var(--dsw-alias-label-secondary);font-size:12px}.tHOVBW_executionError{width:100%;color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;font-size:12px}.tHOVBW_moveRow{flex-wrap:wrap;gap:8px;display:flex}.tHOVBW_detailFooter{border-top:1px solid var(--dsw-alias-separator-primary);flex:none;align-items:center;gap:10px;padding:12px 18px;display:flex}.tHOVBW_detailMeta{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:11px}.tHOVBW_entry:focus-visible,.tHOVBW_card:focus-visible,.tHOVBW_primaryButton:focus-visible,.tHOVBW_ghostButton:focus-visible,.tHOVBW_dangerButton:focus-visible,.tHOVBW_iconButton:focus-visible,.tHOVBW_linkButton:focus-visible,.tHOVBW_search:focus-visible,.tHOVBW_input:focus-visible,.tHOVBW_schedulePreset:focus-visible,.tHOVBW_scheduleToggle input:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}.tHOVBW_entry,.tHOVBW_primaryButton,.tHOVBW_ghostButton,.tHOVBW_dangerButton,.tHOVBW_iconButton,.tHOVBW_linkButton,.tHOVBW_search,.tHOVBW_input,.tHOVBW_schedulePreset,.tHOVBW_scheduleToggle input{transition:background-color .12s,color .12s,border-color .12s,outline-color .12s,box-shadow .12s,transform .12s}.tHOVBW_card:active{box-shadow:var(--dsw-shadow-lv1);transform:translateY(0)}.tHOVBW_entry:active,.tHOVBW_primaryButton:active:not(:disabled),.tHOVBW_ghostButton:active:not(:disabled),.tHOVBW_dangerButton:active:not(:disabled),.tHOVBW_iconButton:active:not(:disabled),.tHOVBW_linkButton:active:not(:disabled){transform:translateY(1px)}.tHOVBW_entry[data-active]:hover{background:var(--dsw-specific-sidebar-nav-item-active)}.tHOVBW_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.tHOVBW_linkButton:hover:not(:disabled){text-decoration:underline}.tHOVBW_iconButton:disabled,.tHOVBW_linkButton:disabled{opacity:.45;cursor:default}.tHOVBW_search:focus,.tHOVBW_schedulePreset:focus{border-color:var(--dsw-alias-state-business-primary)}.tHOVBW_scheduleToggle input{margin:0}@media (prefers-reduced-motion:reduce){.tHOVBW_entry,.tHOVBW_card,.tHOVBW_primaryButton,.tHOVBW_ghostButton,.tHOVBW_dangerButton,.tHOVBW_iconButton,.tHOVBW_linkButton,.tHOVBW_search,.tHOVBW_input,.tHOVBW_schedulePreset,.tHOVBW_scheduleToggle input{transition:none}.tHOVBW_cardSpinner{animation:none}}";
1154
+ //#region \0dsh-css:packages/dsh-task-board/src/client/board.module.css.mjs
1155
+ const css$1 = "[data-pane=conversation],[class*=centerCol]{position:relative}[data-dsh-taskboard-view]{z-index:60;background:var(--dsw-alias-bg-base);display:none;position:absolute;inset:0}html[data-dsh-taskboard-active]:not([data-dsh-ssh-active]) [data-dsh-taskboard-view]{display:block}html[data-dsh-taskboard-active]:not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-taskboard-view]),html[data-dsh-taskboard-active]:not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-taskboard-view]){display:none!important}._7D6uKa_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}._7D6uKa_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}._7D6uKa_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}._7D6uKa_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}._7D6uKa_entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] ._7D6uKa_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] ._7D6uKa_entryLabel{display:none}._7D6uKa_board{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:12px;padding:14px 16px 16px;display:flex}._7D6uKa_boardHeader{flex:none;align-items:center;gap:10px;display:flex}._7D6uKa_boardTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700}._7D6uKa_search{min-width:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:0 260px;padding:6px 10px;font-size:13px}._7D6uKa_search::placeholder{color:var(--dsw-alias-label-tertiary)}._7D6uKa_columns{flex:1;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;min-height:0;display:grid}._7D6uKa_column{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;min-height:0;display:flex;overflow:hidden}._7D6uKa_columnHeader{flex:none;align-items:center;gap:6px;padding:10px 12px;display:flex}._7D6uKa_columnTitle{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:13px;font-weight:700;overflow:hidden}._7D6uKa_columnCount{min-width:0;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;flex:none;padding:1px 8px;font-size:12px}._7D6uKa_statusDot{border-radius:50%;flex:none;width:8px;height:8px}._7D6uKa_statusDot[data-status=backlog]{background:var(--dsw-alias-label-tertiary)}._7D6uKa_statusDot[data-status=todo]{background:var(--dsw-alias-state-business-primary)}._7D6uKa_statusDot[data-status=running]{background:var(--dsw-alias-state-warn-primary)}._7D6uKa_statusDot[data-status=done]{background:var(--dsw-alias-state-success-primary)}._7D6uKa_statusDot[data-status=failed]{background:var(--dsw-alias-state-error-primary)}._7D6uKa_cards{flex-direction:column;flex:1;gap:8px;min-height:0;padding:2px 8px 10px;display:flex;overflow-y:auto}._7D6uKa_columnEmpty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:24px 8px;font-size:12px}._7D6uKa_card{text-align:left;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;color:var(--dsw-alias-label-primary);border-radius:10px;flex-direction:column;gap:6px;padding:10px 12px;font-family:inherit;transition:box-shadow .12s,border-color .12s,transform .12s;display:flex}._7D6uKa_card:hover{box-shadow:var(--dsw-shadow-lv2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}._7D6uKa_card[data-status=running]{border-color:var(--dsw-alias-state-warn-primary)}._7D6uKa_cardTitle{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}._7D6uKa_cardExcerpt{color:var(--dsw-alias-label-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:12px;line-height:1.4;display:-webkit-box;overflow:hidden}._7D6uKa_cardMeta{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;font-size:11px;display:flex}._7D6uKa_cardTime{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}._7D6uKa_cardSchedule{white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;flex:none;padding:2px 6px;font-size:12px;line-height:1}._7D6uKa_cardRun{flex:none}._7D6uKa_cardRun[data-result=failed]{color:var(--dsw-alias-state-error-primary)}._7D6uKa_cardRun[data-result=succeeded]{color:var(--dsw-alias-state-success-primary)}._7D6uKa_cardSession{color:var(--dsw-alias-state-business-primary);flex:none}._7D6uKa_cardRunningLabel{color:var(--dsw-alias-state-warn-primary);font-size:11px}._7D6uKa_cardSpinner{border:2px solid var(--dsw-alias-state-warn-primary);border-top-color:#0000;border-radius:50%;flex:none;width:10px;height:10px;animation:.8s linear infinite _7D6uKa_dshTbSpin}@keyframes _7D6uKa_dshTbSpin{to{transform:rotate(360deg)}}._7D6uKa_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}._7D6uKa_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}._7D6uKa_primaryButton:disabled{opacity:.5;cursor:default}._7D6uKa_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}._7D6uKa_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._7D6uKa_ghostButton:disabled{opacity:.45;cursor:default}._7D6uKa_dangerButton{color:#fff;background:var(--dsw-alias-state-error-primary);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}._7D6uKa_dangerButton:hover:not(:disabled){filter:brightness(1.08)}._7D6uKa_dangerButton:active:not(:disabled){filter:brightness(.94)}._7D6uKa_dangerButton:disabled{opacity:.5;cursor:default}._7D6uKa_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}._7D6uKa_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._7D6uKa_linkButton{color:var(--dsw-alias-state-business-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-size:12px}._7D6uKa_linkButton:hover{text-decoration:underline}._7D6uKa_modalBackdrop{z-index:1300;background:var(--dsw-alias-bg-mask-1);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}._7D6uKa_modal{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(520px,100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}._7D6uKa_modalTitle{margin:0;font-size:15px;font-weight:700}._7D6uKa_confirmMessage{color:var(--dsw-alias-label-secondary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.5}._7D6uKa_modalFooter{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}._7D6uKa_field{flex-direction:column;gap:5px;display:flex}._7D6uKa_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}._7D6uKa_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}._7D6uKa_input:focus{border-color:var(--dsw-alias-state-business-primary)}._7D6uKa_input::placeholder{color:var(--dsw-alias-label-tertiary)}._7D6uKa_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}._7D6uKa_detail{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(640px,100vw - 48px);max-height:calc(100vh - 80px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;display:flex;overflow:hidden}._7D6uKa_detailHeader{border-bottom:1px solid var(--dsw-alias-separator-primary);flex:none;align-items:center;gap:10px;padding:14px 18px;display:flex}._7D6uKa_detailTitle{overflow-wrap:anywhere;flex:1;margin:0;font-size:15px;font-weight:700}._7D6uKa_statusBadge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:2px 10px;font-size:12px}._7D6uKa_statusBadge[data-status=running]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}._7D6uKa_statusBadge[data-status=done]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}._7D6uKa_statusBadge[data-status=failed]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}._7D6uKa_detailBody{flex-direction:column;flex:1;gap:16px;padding:14px 18px;display:flex;overflow-y:auto}._7D6uKa_detailSection{flex-direction:column;gap:6px;display:flex}._7D6uKa_detailSection h4{color:var(--dsw-alias-label-tertiary);text-transform:none;margin:0;font-size:12px;font-weight:700}._7D6uKa_detailText{color:var(--dsw-alias-label-primary);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:13px;line-height:1.55}._7D6uKa_scheduleToggle{color:var(--dsw-alias-label-primary);cursor:pointer;user-select:none;align-items:center;gap:8px;font-size:13px;display:flex}._7D6uKa_scheduleToggle input{accent-color:var(--dsw-alias-state-business-primary)}._7D6uKa_scheduleRow{align-items:center;gap:8px;display:flex}._7D6uKa_scheduleInput{min-width:0;font-family:var(--dsw-font-markdown-code-block-small);flex:1;font-size:12.5px}._7D6uKa_scheduleInputInvalid,._7D6uKa_scheduleInputInvalid:focus{border-color:var(--dsw-alias-state-error-primary)}._7D6uKa_schedulePreset{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:none;padding:7px 8px;font-size:12.5px}._7D6uKa_scheduleMeta{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px}._7D6uKa_promptBlock{font-size:12.5px;line-height:1.5;font-family:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-markdown-code-block);border:1px solid var(--dsw-alias-border-l1);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:8px;max-height:240px;margin:0;padding:10px 12px;overflow-y:auto}._7D6uKa_executionList{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}._7D6uKa_executionRow{border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 10px;display:flex}._7D6uKa_executionBadge{color:var(--dsw-alias-state-warn-primary);background:var(--dsw-alias-state-warn-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:600}._7D6uKa_executionBadge[data-result=succeeded]{color:var(--dsw-alias-state-success-primary);background:0 0}._7D6uKa_executionBadge[data-result=failed]{color:var(--dsw-alias-state-error-primary);background:0 0}._7D6uKa_executionBadge[data-result=cancelled]{color:var(--dsw-alias-label-tertiary);background:0 0}._7D6uKa_executionTimes{color:var(--dsw-alias-label-secondary);font-size:12px}._7D6uKa_executionError{width:100%;color:var(--dsw-alias-state-error-primary);overflow-wrap:anywhere;font-size:12px}._7D6uKa_moveRow{flex-wrap:wrap;gap:8px;display:flex}._7D6uKa_detailFooter{border-top:1px solid var(--dsw-alias-separator-primary);flex:none;align-items:center;gap:10px;padding:12px 18px;display:flex}._7D6uKa_detailMeta{color:var(--dsw-alias-label-tertiary);margin-left:auto;font-size:11px}._7D6uKa_entry:focus-visible,._7D6uKa_card:focus-visible,._7D6uKa_primaryButton:focus-visible,._7D6uKa_ghostButton:focus-visible,._7D6uKa_dangerButton:focus-visible,._7D6uKa_iconButton:focus-visible,._7D6uKa_linkButton:focus-visible,._7D6uKa_search:focus-visible,._7D6uKa_input:focus-visible,._7D6uKa_schedulePreset:focus-visible,._7D6uKa_scheduleToggle input:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}._7D6uKa_entry,._7D6uKa_primaryButton,._7D6uKa_ghostButton,._7D6uKa_dangerButton,._7D6uKa_iconButton,._7D6uKa_linkButton,._7D6uKa_search,._7D6uKa_input,._7D6uKa_schedulePreset,._7D6uKa_scheduleToggle input{transition:background-color .12s,color .12s,border-color .12s,outline-color .12s,box-shadow .12s,transform .12s}._7D6uKa_card:active{box-shadow:var(--dsw-shadow-lv1);transform:translateY(0)}._7D6uKa_entry:active,._7D6uKa_primaryButton:active:not(:disabled),._7D6uKa_ghostButton:active:not(:disabled),._7D6uKa_dangerButton:active:not(:disabled),._7D6uKa_iconButton:active:not(:disabled),._7D6uKa_linkButton:active:not(:disabled){transform:translateY(1px)}._7D6uKa_entry[data-active]:hover{background:var(--dsw-specific-sidebar-nav-item-active)}._7D6uKa_iconButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._7D6uKa_linkButton:hover:not(:disabled){text-decoration:underline}._7D6uKa_iconButton:disabled,._7D6uKa_linkButton:disabled{opacity:.45;cursor:default}._7D6uKa_search:focus,._7D6uKa_schedulePreset:focus{border-color:var(--dsw-alias-state-business-primary)}._7D6uKa_scheduleToggle input{margin:0}@media (prefers-reduced-motion:reduce){._7D6uKa_entry,._7D6uKa_card,._7D6uKa_primaryButton,._7D6uKa_ghostButton,._7D6uKa_dangerButton,._7D6uKa_iconButton,._7D6uKa_linkButton,._7D6uKa_search,._7D6uKa_input,._7D6uKa_schedulePreset,._7D6uKa_scheduleToggle input{transition:none}._7D6uKa_cardSpinner{animation:none}}";
1127
1156
  const tagId$1 = "@linxin666/dsh-client-ui-task-board/board.module.css";
1128
1157
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
1129
1158
  const tag = document.createElement("style");
@@ -1133,68 +1162,68 @@ window.__ModuleLoader__.load({
1133
1162
  document.head.appendChild(tag);
1134
1163
  }
1135
1164
  var board_module_css_default = {
1136
- "board": "tHOVBW_board",
1137
- "boardHeader": "tHOVBW_boardHeader",
1138
- "boardTitle": "tHOVBW_boardTitle",
1139
- "card": "tHOVBW_card",
1140
- "cardExcerpt": "tHOVBW_cardExcerpt",
1141
- "cardMeta": "tHOVBW_cardMeta",
1142
- "cardRun": "tHOVBW_cardRun",
1143
- "cardRunningLabel": "tHOVBW_cardRunningLabel",
1144
- "cardSchedule": "tHOVBW_cardSchedule",
1145
- "cardSession": "tHOVBW_cardSession",
1146
- "cardSpinner": "tHOVBW_cardSpinner",
1147
- "cardTime": "tHOVBW_cardTime",
1148
- "cardTitle": "tHOVBW_cardTitle",
1149
- "cards": "tHOVBW_cards",
1150
- "column": "tHOVBW_column",
1151
- "columnCount": "tHOVBW_columnCount",
1152
- "columnEmpty": "tHOVBW_columnEmpty",
1153
- "columnHeader": "tHOVBW_columnHeader",
1154
- "columnTitle": "tHOVBW_columnTitle",
1155
- "columns": "tHOVBW_columns",
1156
- "confirmMessage": "tHOVBW_confirmMessage",
1157
- "dangerButton": "tHOVBW_dangerButton",
1158
- "detail": "tHOVBW_detail",
1159
- "detailBody": "tHOVBW_detailBody",
1160
- "detailFooter": "tHOVBW_detailFooter",
1161
- "detailHeader": "tHOVBW_detailHeader",
1162
- "detailMeta": "tHOVBW_detailMeta",
1163
- "detailSection": "tHOVBW_detailSection",
1164
- "detailText": "tHOVBW_detailText",
1165
- "detailTitle": "tHOVBW_detailTitle",
1166
- "dshTbSpin": "tHOVBW_dshTbSpin",
1167
- "entry": "tHOVBW_entry",
1168
- "entryIcon": "tHOVBW_entryIcon",
1169
- "entryLabel": "tHOVBW_entryLabel",
1170
- "executionBadge": "tHOVBW_executionBadge",
1171
- "executionError": "tHOVBW_executionError",
1172
- "executionList": "tHOVBW_executionList",
1173
- "executionRow": "tHOVBW_executionRow",
1174
- "executionTimes": "tHOVBW_executionTimes",
1175
- "field": "tHOVBW_field",
1176
- "fieldLabel": "tHOVBW_fieldLabel",
1177
- "formError": "tHOVBW_formError",
1178
- "ghostButton": "tHOVBW_ghostButton",
1179
- "iconButton": "tHOVBW_iconButton",
1180
- "input": "tHOVBW_input",
1181
- "linkButton": "tHOVBW_linkButton",
1182
- "modal": "tHOVBW_modal",
1183
- "modalBackdrop": "tHOVBW_modalBackdrop",
1184
- "modalFooter": "tHOVBW_modalFooter",
1185
- "modalTitle": "tHOVBW_modalTitle",
1186
- "moveRow": "tHOVBW_moveRow",
1187
- "primaryButton": "tHOVBW_primaryButton",
1188
- "promptBlock": "tHOVBW_promptBlock",
1189
- "scheduleInput": "tHOVBW_scheduleInput",
1190
- "scheduleInputInvalid": "tHOVBW_scheduleInputInvalid",
1191
- "scheduleMeta": "tHOVBW_scheduleMeta",
1192
- "schedulePreset": "tHOVBW_schedulePreset",
1193
- "scheduleRow": "tHOVBW_scheduleRow",
1194
- "scheduleToggle": "tHOVBW_scheduleToggle",
1195
- "search": "tHOVBW_search",
1196
- "statusBadge": "tHOVBW_statusBadge",
1197
- "statusDot": "tHOVBW_statusDot"
1165
+ "board": "_7D6uKa_board",
1166
+ "boardHeader": "_7D6uKa_boardHeader",
1167
+ "boardTitle": "_7D6uKa_boardTitle",
1168
+ "card": "_7D6uKa_card",
1169
+ "cardExcerpt": "_7D6uKa_cardExcerpt",
1170
+ "cardMeta": "_7D6uKa_cardMeta",
1171
+ "cardRun": "_7D6uKa_cardRun",
1172
+ "cardRunningLabel": "_7D6uKa_cardRunningLabel",
1173
+ "cardSchedule": "_7D6uKa_cardSchedule",
1174
+ "cardSession": "_7D6uKa_cardSession",
1175
+ "cardSpinner": "_7D6uKa_cardSpinner",
1176
+ "cardTime": "_7D6uKa_cardTime",
1177
+ "cardTitle": "_7D6uKa_cardTitle",
1178
+ "cards": "_7D6uKa_cards",
1179
+ "column": "_7D6uKa_column",
1180
+ "columnCount": "_7D6uKa_columnCount",
1181
+ "columnEmpty": "_7D6uKa_columnEmpty",
1182
+ "columnHeader": "_7D6uKa_columnHeader",
1183
+ "columnTitle": "_7D6uKa_columnTitle",
1184
+ "columns": "_7D6uKa_columns",
1185
+ "confirmMessage": "_7D6uKa_confirmMessage",
1186
+ "dangerButton": "_7D6uKa_dangerButton",
1187
+ "detail": "_7D6uKa_detail",
1188
+ "detailBody": "_7D6uKa_detailBody",
1189
+ "detailFooter": "_7D6uKa_detailFooter",
1190
+ "detailHeader": "_7D6uKa_detailHeader",
1191
+ "detailMeta": "_7D6uKa_detailMeta",
1192
+ "detailSection": "_7D6uKa_detailSection",
1193
+ "detailText": "_7D6uKa_detailText",
1194
+ "detailTitle": "_7D6uKa_detailTitle",
1195
+ "dshTbSpin": "_7D6uKa_dshTbSpin",
1196
+ "entry": "_7D6uKa_entry",
1197
+ "entryIcon": "_7D6uKa_entryIcon",
1198
+ "entryLabel": "_7D6uKa_entryLabel",
1199
+ "executionBadge": "_7D6uKa_executionBadge",
1200
+ "executionError": "_7D6uKa_executionError",
1201
+ "executionList": "_7D6uKa_executionList",
1202
+ "executionRow": "_7D6uKa_executionRow",
1203
+ "executionTimes": "_7D6uKa_executionTimes",
1204
+ "field": "_7D6uKa_field",
1205
+ "fieldLabel": "_7D6uKa_fieldLabel",
1206
+ "formError": "_7D6uKa_formError",
1207
+ "ghostButton": "_7D6uKa_ghostButton",
1208
+ "iconButton": "_7D6uKa_iconButton",
1209
+ "input": "_7D6uKa_input",
1210
+ "linkButton": "_7D6uKa_linkButton",
1211
+ "modal": "_7D6uKa_modal",
1212
+ "modalBackdrop": "_7D6uKa_modalBackdrop",
1213
+ "modalFooter": "_7D6uKa_modalFooter",
1214
+ "modalTitle": "_7D6uKa_modalTitle",
1215
+ "moveRow": "_7D6uKa_moveRow",
1216
+ "primaryButton": "_7D6uKa_primaryButton",
1217
+ "promptBlock": "_7D6uKa_promptBlock",
1218
+ "scheduleInput": "_7D6uKa_scheduleInput",
1219
+ "scheduleInputInvalid": "_7D6uKa_scheduleInputInvalid",
1220
+ "scheduleMeta": "_7D6uKa_scheduleMeta",
1221
+ "schedulePreset": "_7D6uKa_schedulePreset",
1222
+ "scheduleRow": "_7D6uKa_scheduleRow",
1223
+ "scheduleToggle": "_7D6uKa_scheduleToggle",
1224
+ "search": "_7D6uKa_search",
1225
+ "statusBadge": "_7D6uKa_statusBadge",
1226
+ "statusDot": "_7D6uKa_statusDot"
1198
1227
  };
1199
1228
  //#endregion
1200
1229
  //#region src/client/board/NewTaskModal.tsx
@@ -1886,13 +1915,16 @@ window.__ModuleLoader__.load({
1886
1915
  *
1887
1916
  * The `conversation` slot is single-occupant (ui-conversation) and external
1888
1917
  * plugins cannot declare slots, so the board takes over the center column at
1889
- * the DOM level: a container is appended inside the `[data-pane="conversation"]`
1890
- * grid item (an extra trailing child React never manages), and a stylesheet
1918
+ * the DOM level: a container is appended inside the center column
1919
+ * (`[class*="centerCol"]`, the dsh 0.1.0-rc.6 AppFrame layout; previously
1920
+ * `[data-pane="conversation"]` on older shells — the mount selector keeps both)
1921
+ * as an extra trailing child
1922
+ * React never manages, and a stylesheet
1891
1923
  * rule hides the conversation content while the board is active. Toggling is
1892
1924
  * a data attribute on <html> — no React involvement, so the conversation
1893
1925
  * subtree underneath stays mounted and stateful.
1894
1926
  */
1895
- const CONVERSATION_COLUMN_SELECTOR = "[data-pane=\"conversation\"]";
1927
+ const CONVERSATION_COLUMN_SELECTOR = "[data-pane=\"conversation\"], [class*=\"centerCol\"]";
1896
1928
  const ACTIVE_ATTR = "data-dsh-taskboard-active";
1897
1929
  /** The sibling panel's activation attribute (ssh), removed when this panel opens. */
1898
1930
  const OTHER_ACTIVE_ATTR = "data-dsh-ssh-active";
@@ -2066,8 +2098,8 @@ window.__ModuleLoader__.load({
2066
2098
  };
2067
2099
  }
2068
2100
  //#endregion
2069
- //#region \0dsh-css:/home/runner/work/dsh-web-ui/dsh-web-ui/packages/dsh-task-board/src/client/settings-card.module.css.mjs
2070
- const css = ".aWNI2q_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;list-style:none;transition:border-color .16s,background .16s;overflow:hidden}.aWNI2q_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.aWNI2q_header{cursor:pointer;text-align:left;width:100%;font:inherit;background:0 0;border:0;align-items:center;gap:8px;padding:10px 14px;display:flex}.aWNI2q_header:hover{background:var(--dsw-alias-interactive-bg-hover)}.aWNI2q_headText{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.aWNI2q_name{color:var(--dsw-alias-label-primary);font-weight:600}.aWNI2q_description{color:var(--dsw-alias-label-tertiary);font-size:12px}.aWNI2q_pending{color:var(--dsw-alias-state-warn-primary);font-size:12px}.aWNI2q_chevron{color:var(--dsw-alias-label-tertiary);transition:transform .12s}.aWNI2q_chevronOpen{transform:rotate(180deg)}.aWNI2q_body{flex-direction:column;gap:14px;padding:0 14px 14px;display:flex}.aWNI2q_readOnly{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px}.aWNI2q_notExposed{color:var(--dsw-alias-state-warn-primary);margin:0;font-size:12px;line-height:1.5}.aWNI2q_footer{justify-content:flex-end;align-items:center;gap:8px;display:flex}.aWNI2q_failed{color:var(--dsw-alias-state-error-primary);margin:0 auto 0 0;font-size:12px}.aWNI2q_discard,.aWNI2q_save{font:inherit;cursor:pointer;border-radius:6px;padding:5px 12px;font-size:13px}.aWNI2q_discard{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}.aWNI2q_discard:hover:not(:disabled){color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.aWNI2q_save{border:1px solid var(--dsw-alias-button-info-fill);background:var(--dsw-alias-button-info-fill);color:var(--dsw-alias-label-primary-foreground)}.aWNI2q_save:hover:not(:disabled){border-color:var(--dsw-alias-button-info-hover);background:var(--dsw-alias-button-info-hover)}.aWNI2q_discard:active:not(:disabled),.aWNI2q_save:active:not(:disabled){transform:translateY(1px)}.aWNI2q_discard:focus-visible:not(:disabled),.aWNI2q_save:focus-visible:not(:disabled){outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.aWNI2q_discard:disabled,.aWNI2q_save:disabled{opacity:.5;cursor:default}.aWNI2q_field{flex-direction:column;gap:4px;display:flex}.aWNI2q_head{align-items:center;gap:8px;display:flex}.aWNI2q_label{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500}.aWNI2q_badges{align-items:center;gap:6px;display:flex}.aWNI2q_badge{background:var(--dsw-alias-interactive-bg-hover-accent);color:var(--dsw-alias-state-business-primary);border-radius:999px;padding:1px 6px;font-size:11px}.aWNI2q_reset{color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px}.aWNI2q_reset:hover:not(:disabled){text-decoration:underline}.aWNI2q_reset:active:not(:disabled){opacity:.8;text-decoration:underline}.aWNI2q_reset:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.aWNI2q_reset:disabled{opacity:.5;cursor:default}.aWNI2q_input,.aWNI2q_select{border:1px solid var(--dsw-alias-border-l2);font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border-radius:6px;padding:6px 8px;font-size:13px}.aWNI2q_inputInvalid{border:1px solid var(--dsw-alias-state-error-primary);font:inherit;color:var(--dsw-alias-label-primary);border-radius:6px;padding:6px 8px;font-size:13px}.aWNI2q_input:disabled,.aWNI2q_select:disabled{opacity:.6}.aWNI2q_hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px}.aWNI2q_invalid{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.aWNI2q_header:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:-2px}.aWNI2q_header:active{background:var(--dsw-alias-interactive-bg-hover)}.aWNI2q_header,.aWNI2q_discard,.aWNI2q_save,.aWNI2q_reset{transition:background-color .12s,color .12s,border-color .12s,transform .12s}@media (prefers-reduced-motion:reduce){.aWNI2q_card,.aWNI2q_header,.aWNI2q_chevron,.aWNI2q_discard,.aWNI2q_save,.aWNI2q_reset{transition:none}}";
2101
+ //#region \0dsh-css:packages/dsh-task-board/src/client/settings-card.module.css.mjs
2102
+ const css = ".Jh0q7G_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.Jh0q7G_card:hover{border-color:var(--dsw-alias-label-dimmed)}.Jh0q7G_cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.Jh0q7G_header{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.Jh0q7G_header:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.Jh0q7G_headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.Jh0q7G_name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.Jh0q7G_description{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.Jh0q7G_pending{white-space:nowrap;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.Jh0q7G_chevron{color:var(--dsw-alias-label-tertiary);flex:none;transition:transform .16s}.Jh0q7G_chevronOpen{transform:rotate(180deg)}.Jh0q7G_body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}.Jh0q7G_readOnly{color:var(--dsw-alias-label-tertiary);margin:12px 0 0;font-size:12px;line-height:1.5}.Jh0q7G_notExposed{color:var(--dsw-alias-state-warn-primary);margin:12px 0 0;font-size:12px;line-height:1.5}.Jh0q7G_footer{border-top:1px solid var(--dsw-alias-border-l2);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}.Jh0q7G_failed{min-width:0;color:var(--dsw-alias-label-error);flex:1;margin:0;font-size:12px;line-height:1.5}.Jh0q7G_discard,.Jh0q7G_save{appearance:none;font:inherit;cursor:pointer;border:1px solid #0000;border-radius:8px;padding:5px 14px;font-size:13px;line-height:1.5}.Jh0q7G_discard{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}.Jh0q7G_discard:hover:not(:disabled){color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-dimmed)}.Jh0q7G_save{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}.Jh0q7G_discard:disabled,.Jh0q7G_save:disabled{opacity:.4;cursor:default}.Jh0q7G_discard:focus-visible,.Jh0q7G_save:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.Jh0q7G_field{flex-direction:column;gap:6px;padding:12px 0;display:flex}.Jh0q7G_field+.Jh0q7G_field{border-top:1px solid var(--dsw-alias-border-l2)}.Jh0q7G_head{align-items:center;gap:8px;display:flex}.Jh0q7G_label{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:500;line-height:1.5}.Jh0q7G_badges{align-items:center;gap:8px;display:inline-flex}.Jh0q7G_badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform);color:var(--dsw-alias-label-secondary);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.Jh0q7G_reset{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1.5}.Jh0q7G_reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}.Jh0q7G_reset:disabled{cursor:default}.Jh0q7G_reset:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:2px}.Jh0q7G_input,.Jh0q7G_select{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);height:34px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px;line-height:1.5}.Jh0q7G_input:focus-visible,.Jh0q7G_select:focus-visible{border-color:var(--dsw-alias-brand-primary);outline:none}.Jh0q7G_input:disabled,.Jh0q7G_select:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}.Jh0q7G_inputInvalid{border:1px solid var(--dsw-alias-label-error);background:var(--dsw-alias-bg-layer-3);height:34px;font:inherit;color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px;line-height:1.5}.Jh0q7G_inputInvalid:focus-visible{outline:2px solid var(--dsw-alias-label-error);outline-offset:1px;border-color:var(--dsw-alias-label-error)}.Jh0q7G_invalid{color:var(--dsw-alias-label-error);margin:0;font-size:12px;line-height:1.5}.Jh0q7G_hint{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:1.5}@media (prefers-reduced-motion:reduce){.Jh0q7G_card,.Jh0q7G_header,.Jh0q7G_chevron,.Jh0q7G_chevronOpen,.Jh0q7G_discard,.Jh0q7G_save{transition:none}}";
2071
2103
  const tagId = "@linxin666/dsh-client-ui-task-board/settings-card.module.css";
2072
2104
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
2073
2105
  const tag = document.createElement("style");
@@ -2077,33 +2109,33 @@ window.__ModuleLoader__.load({
2077
2109
  document.head.appendChild(tag);
2078
2110
  }
2079
2111
  var settings_card_module_css_default = {
2080
- "badge": "aWNI2q_badge",
2081
- "badges": "aWNI2q_badges",
2082
- "body": "aWNI2q_body",
2083
- "card": "aWNI2q_card",
2084
- "cardOpen": "aWNI2q_cardOpen",
2085
- "chevron": "aWNI2q_chevron",
2086
- "chevronOpen": "aWNI2q_chevronOpen",
2087
- "description": "aWNI2q_description",
2088
- "discard": "aWNI2q_discard",
2089
- "failed": "aWNI2q_failed",
2090
- "field": "aWNI2q_field",
2091
- "footer": "aWNI2q_footer",
2092
- "head": "aWNI2q_head",
2093
- "headText": "aWNI2q_headText",
2094
- "header": "aWNI2q_header",
2095
- "hint": "aWNI2q_hint",
2096
- "input": "aWNI2q_input",
2097
- "inputInvalid": "aWNI2q_inputInvalid",
2098
- "invalid": "aWNI2q_invalid",
2099
- "label": "aWNI2q_label",
2100
- "name": "aWNI2q_name",
2101
- "notExposed": "aWNI2q_notExposed",
2102
- "pending": "aWNI2q_pending",
2103
- "readOnly": "aWNI2q_readOnly",
2104
- "reset": "aWNI2q_reset",
2105
- "save": "aWNI2q_save",
2106
- "select": "aWNI2q_select"
2112
+ "badge": "Jh0q7G_badge",
2113
+ "badges": "Jh0q7G_badges",
2114
+ "body": "Jh0q7G_body",
2115
+ "card": "Jh0q7G_card",
2116
+ "cardOpen": "Jh0q7G_cardOpen",
2117
+ "chevron": "Jh0q7G_chevron",
2118
+ "chevronOpen": "Jh0q7G_chevronOpen",
2119
+ "description": "Jh0q7G_description",
2120
+ "discard": "Jh0q7G_discard",
2121
+ "failed": "Jh0q7G_failed",
2122
+ "field": "Jh0q7G_field",
2123
+ "footer": "Jh0q7G_footer",
2124
+ "head": "Jh0q7G_head",
2125
+ "headText": "Jh0q7G_headText",
2126
+ "header": "Jh0q7G_header",
2127
+ "hint": "Jh0q7G_hint",
2128
+ "input": "Jh0q7G_input",
2129
+ "inputInvalid": "Jh0q7G_inputInvalid",
2130
+ "invalid": "Jh0q7G_invalid",
2131
+ "label": "Jh0q7G_label",
2132
+ "name": "Jh0q7G_name",
2133
+ "notExposed": "Jh0q7G_notExposed",
2134
+ "pending": "Jh0q7G_pending",
2135
+ "readOnly": "Jh0q7G_readOnly",
2136
+ "reset": "Jh0q7G_reset",
2137
+ "save": "Jh0q7G_save",
2138
+ "select": "Jh0q7G_select"
2107
2139
  };
2108
2140
  //#endregion
2109
2141
  //#region src/client/PluginSettingsCard.tsx
@@ -2126,8 +2158,9 @@ window.__ModuleLoader__.load({
2126
2158
  if (!state.available) return null;
2127
2159
  const title = props.t(props.titleKey);
2128
2160
  const blocked = !state.dirty || state.invalid || state.saving;
2161
+ const cardClass = open ? `${settings_card_module_css_default.cardOpen} ${settings_card_module_css_default.card}` : settings_card_module_css_default.card;
2129
2162
  if (!state.exposed) return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
2130
- className: settings_card_module_css_default.card,
2163
+ className: cardClass,
2131
2164
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2132
2165
  type: "button",
2133
2166
  className: settings_card_module_css_default.header,
@@ -2145,9 +2178,17 @@ window.__ModuleLoader__.load({
2145
2178
  className: settings_card_module_css_default.description,
2146
2179
  children: props.t(props.descriptionKey)
2147
2180
  })]
2148
- }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2149
- className: open ? settings_card_module_css_default.chevronOpen : settings_card_module_css_default.chevron,
2150
- children: "▾"
2181
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
2182
+ width: "14",
2183
+ height: "14",
2184
+ viewBox: "0 0 14 14",
2185
+ fill: "none",
2186
+ xmlns: "http://www.w3.org/2000/svg",
2187
+ className: open ? `${settings_card_module_css_default.chevron} ${settings_card_module_css_default.chevronOpen}` : settings_card_module_css_default.chevron,
2188
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
2189
+ d: "M11.8486 5.5L11.4238 5.92383L8.69727 8.65137C8.44157 8.90706 8.21562 9.13382 8.01172 9.29785C7.79912 9.46883 7.55595 9.61756 7.25 9.66602C7.08435 9.69222 6.91565 9.69222 6.75 9.66602C6.44405 9.61756 6.20088 9.46883 5.98828 9.29785C5.78438 9.13382 5.55843 8.90706 5.30273 8.65137L2.57617 5.92383L2.15137 5.5L3 4.65137L3.42383 5.07617L6.15137 7.80273C6.42595 8.07732 6.59876 8.24849 6.74023 8.3623C6.87291 8.46904 6.92272 8.47813 6.9375 8.48047C6.97895 8.48703 7.02105 8.48703 7.0625 8.48047C7.07728 8.47813 7.12709 8.46904 7.25977 8.3623C7.40124 8.24849 7.57405 8.07732 7.84863 7.80273L10.5762 5.07617L11 4.65137L11.8486 5.5Z",
2190
+ fill: "currentColor"
2191
+ })
2151
2192
  })]
2152
2193
  }), open ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
2153
2194
  className: settings_card_module_css_default.body,
@@ -2159,7 +2200,7 @@ window.__ModuleLoader__.load({
2159
2200
  }) : null]
2160
2201
  });
2161
2202
  return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("li", {
2162
- className: settings_card_module_css_default.card,
2203
+ className: cardClass,
2163
2204
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
2164
2205
  type: "button",
2165
2206
  className: settings_card_module_css_default.header,
@@ -2183,9 +2224,17 @@ window.__ModuleLoader__.load({
2183
2224
  className: settings_card_module_css_default.pending,
2184
2225
  children: props.t("settings.unsaved")
2185
2226
  }) : null,
2186
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
2187
- className: open ? settings_card_module_css_default.chevronOpen : settings_card_module_css_default.chevron,
2188
- children: "▾"
2227
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
2228
+ width: "14",
2229
+ height: "14",
2230
+ viewBox: "0 0 14 14",
2231
+ fill: "none",
2232
+ xmlns: "http://www.w3.org/2000/svg",
2233
+ className: open ? `${settings_card_module_css_default.chevron} ${settings_card_module_css_default.chevronOpen}` : settings_card_module_css_default.chevron,
2234
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
2235
+ d: "M11.8486 5.5L11.4238 5.92383L8.69727 8.65137C8.44157 8.90706 8.21562 9.13382 8.01172 9.29785C7.79912 9.46883 7.55595 9.61756 7.25 9.66602C7.08435 9.69222 6.91565 9.69222 6.75 9.66602C6.44405 9.61756 6.20088 9.46883 5.98828 9.29785C5.78438 9.13382 5.55843 8.90706 5.30273 8.65137L2.57617 5.92383L2.15137 5.5L3 4.65137L3.42383 5.07617L6.15137 7.80273C6.42595 8.07732 6.59876 8.24849 6.74023 8.3623C6.87291 8.46904 6.92272 8.47813 6.9375 8.48047C6.97895 8.48703 7.02105 8.48703 7.0625 8.48047C7.07728 8.47813 7.12709 8.46904 7.25977 8.3623C7.40124 8.24849 7.57405 8.07732 7.84863 7.80273L10.5762 5.07617L11 4.65137L11.8486 5.5Z",
2236
+ fill: "currentColor"
2237
+ })
2189
2238
  })
2190
2239
  ]
2191
2240
  }), open ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
@@ -2586,7 +2635,7 @@ window.__ModuleLoader__.load({
2586
2635
  zh,
2587
2636
  en
2588
2637
  }), "task-board: dictionaries");
2589
- const settingsScope = ctx.settingsScope.bind({ namespace: TASK_BOARD_NS });
2638
+ const settingsScope = (ctx.get("webUiSettings") ?? ctx.settingsScope).bind({ namespace: TASK_BOARD_NS });
2590
2639
  const settingsCard = new TaskBoardSettingsCardController(settingsScope);
2591
2640
  ctx.slots.inject("web-ui.plugin.item", () => ctx.slots.register({
2592
2641
  name: "web-ui.plugin.item",