dsh-task-ledger 0.0.120 → 0.0.121

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/client.js CHANGED
@@ -54364,6 +54364,11 @@ body[data-ds-dark-theme]{
54364
54364
  label: "statStale"
54365
54365
  }
54366
54366
  ];
54367
+ /** 错误原文只留第一行并截断:脚本报错常把整段用法提示塞在一行里,toast 装不下。 */
54368
+ function firstLine(message) {
54369
+ const line = (message.split("\n")[0] ?? "").trim();
54370
+ return line.length > 80 ? `${line.slice(0, 80)}…` : line;
54371
+ }
54367
54372
  function BoardHome(props) {
54368
54373
  const { t, onBack } = props;
54369
54374
  ensureUiBase();
@@ -54394,6 +54399,24 @@ body[data-ds-dark-theme]{
54394
54399
  const board = state.board;
54395
54400
  const view = (0, react$1.useMemo)(() => selectView(state), [state]);
54396
54401
  const degraded = board?.degraded ?? [];
54402
+ const degradedSig = degraded.map((item) => `${item.workspaceId}|${item.op}|${item.message}`).join("\n");
54403
+ const shownDegraded = (0, react$1.useRef)("");
54404
+ (0, react$1.useEffect)(() => {
54405
+ if (degradedSig === "" || degradedSig === shownDegraded.current) return;
54406
+ shownDegraded.current = degradedSig;
54407
+ notify(t("degradedToastTitle", { n: degraded.length }), {
54408
+ variant: "error",
54409
+ durationMs: 8e3,
54410
+ description: degraded.slice(0, 2).map((item) => t("degradedItem", {
54411
+ title: item.workspaceTitle,
54412
+ message: firstLine(item.message)
54413
+ })).join(";")
54414
+ });
54415
+ }, [
54416
+ degradedSig,
54417
+ degraded,
54418
+ t
54419
+ ]);
54397
54420
  /** 工作区下拉候选:宿主里所有含台账的工作区(不是从任务里反推,空工作区也要能选)。 */
54398
54421
  const workspaceOptions = (0, react$1.useMemo)(() => [{
54399
54422
  value: "",
@@ -54536,8 +54559,8 @@ body[data-ds-dark-theme]{
54536
54559
  onClick: onBack
54537
54560
  }, `← ${t("backToConversation")}`), (0, react$1.createElement)("div", { style: titleStyle }, t("panelTitle"), (0, react$1.createElement)("span", {
54538
54561
  style: buildTagStyle,
54539
- title: `v0.0.120 · 261029-151853-101`
54540
- }, `v0.0.120 261029-151853-101`))), (0, react$1.createElement)(Button, {
54562
+ title: `v0.0.121 · 261029-153112-306`
54563
+ }, `v0.0.121 261029-153112-306`))), (0, react$1.createElement)(Button, {
54541
54564
  variant: "outline",
54542
54565
  size: "lg",
54543
54566
  icon: (0, react$1.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconRefreshOutlineRegular, { size: 16 }),
@@ -54559,26 +54582,7 @@ body[data-ds-dark-theme]{
54559
54582
  onClick: () => {
54560
54583
  refresh();
54561
54584
  }
54562
- }, t("retry"))) : null, board === null ? null : statsGrid(board), degraded.length === 0 ? null : (0, react$1.createElement)("div", { style: {
54563
- display: "flex",
54564
- alignItems: "flex-start",
54565
- gap: "var(--dtl-space-2)",
54566
- padding: "var(--dtl-space-2) var(--dtl-space-3)",
54567
- marginTop: "var(--dtl-space-3)",
54568
- border: "1px solid var(--dtl-danger)",
54569
- borderRadius: "var(--dtl-radius-md)",
54570
- background: "var(--dtl-danger-soft)",
54571
- color: "var(--dtl-fg)",
54572
- fontSize: "var(--dtl-font-sm)",
54573
- lineHeight: "var(--dtl-line-sm)"
54574
- } }, (0, react$1.createElement)("span", { style: {
54575
- color: "var(--dtl-danger)",
54576
- flex: "none",
54577
- fontWeight: 600
54578
- } }, t("degradedTitle")), (0, react$1.createElement)("span", null, degraded.map((item) => t("degradedItem", {
54579
- title: item.workspaceTitle,
54580
- message: item.message
54581
- })).join(";"))), regionHead, board === null ? null : view.rows.length === 0 ? (0, react$1.createElement)(EmptyState, {
54585
+ }, t("retry"))) : null, board === null ? null : statsGrid(board), regionHead, board === null ? null : view.rows.length === 0 ? (0, react$1.createElement)(EmptyState, {
54582
54586
  title: t("listEmpty"),
54583
54587
  hint: t("listEmptyHint")
54584
54588
  }) : (0, react$1.createElement)("div", null, view.rows.slice(0, LIST_LIMIT).map((row) => (0, react$1.createElement)(TaskRowView, {
@@ -54599,7 +54603,7 @@ body[data-ds-dark-theme]{
54599
54603
  loading: "读取中…",
54600
54604
  retry: "重试",
54601
54605
  loadFailed: "读取失败",
54602
- degradedTitle: "部分工作区读取失败",
54606
+ degradedToastTitle: "部分工作区读取失败({n} 个)",
54603
54607
  degradedItem: "{title}:{message}",
54604
54608
  statMyActive: "我的待办",
54605
54609
  statMyOverdueHint: "逾期 {n}",
@@ -54687,7 +54691,7 @@ body[data-ds-dark-theme]{
54687
54691
  loading: "Loading…",
54688
54692
  retry: "Retry",
54689
54693
  loadFailed: "Load failed",
54690
- degradedTitle: "Some workspaces failed to load",
54694
+ degradedToastTitle: "{n} workspace(s) failed to load",
54691
54695
  degradedItem: "{title}: {message}",
54692
54696
  statMyActive: "My todos",
54693
54697
  statMyOverdueHint: "overdue {n}",