@yolk_vat-y/dsh-project-memory 0.5.0 → 0.5.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.
- package/CHANGELOG.md +17 -0
- package/client/client.js +162 -94
- package/client/client.js.map +1 -1
- package/package.json +1 -1
- package/src/auto-inject.js +19 -13
- package/src/client/TaskComponents.tsx +123 -20
- package/src/client/TaskPanel.module.css +29 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.1 (unreleased)
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **Silent injection could crash every agent step (`next is not a function`)** — the `agent/pre-step` listener registered with the host waterfall arguments reversed (it consumed the event payload as the continuation, then called it). Signature corrected to the host contract `(payload, next)`; project root and session id now come from `payload.agent.session` (`header.cwd` / `id`).
|
|
8
|
+
- **Silent injection crashed with `Cannot read properties of undefined (reading 'kind')`** — injected `[Memory Inject]` messages were bare `{ role, content }` objects, but the host reads `message.source.kind` while assembling requests. Injection now builds full host messages via `createUserMessage` with a plugin `source` (`form: notice`, the same pattern as the host's own plan-mode narration).
|
|
9
|
+
- Both paths stay inert on any error or missing session cwd: they return the host's default decision and never break the request.
|
|
10
|
+
|
|
11
|
+
### Changed (task panel editing)
|
|
12
|
+
|
|
13
|
+
- **Click vs. double-click discrimination on card heads**: single-click expand/collapse waits ~250 ms to rule out a double-click, so double-click-to-rename no longer fights layout shifts (the first click no longer toggles before the second click lands, and a double-click no longer toggles twice).
|
|
14
|
+
- **Auto-growing inline editors**: step and task-title editing switched from single-line inputs to content-sized textareas (capped, then internal scroll); Enter commits, Shift+Enter inserts a newline, Esc cancels.
|
|
15
|
+
- Step content renders with `white-space: pre-wrap`, so committed multi-line text stays readable.
|
|
16
|
+
|
|
17
|
+
### Files
|
|
18
|
+
- src/auto-inject.js, src/client/TaskComponents.tsx, src/client/TaskPanel.module.css, client/client.js (+ map), package.json
|
|
19
|
+
|
|
3
20
|
## 0.5.0 (unreleased)
|
|
4
21
|
|
|
5
22
|
### Added — v0.5 tiered insight memory (lessons / decisions / procedures)
|
package/client/client.js
CHANGED
|
@@ -561,7 +561,7 @@ window.__ModuleLoader__.load({
|
|
|
561
561
|
}
|
|
562
562
|
//#endregion
|
|
563
563
|
//#region \0dsh-css:/home/sxt/project/dsh-project-memory/src/client/TaskPanel.module.css.mjs
|
|
564
|
-
const css$1 = ".vZSZnG_panel{pointer-events:auto;background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));border:1px solid var(--dsw-alias-border-l2,#7f7f7f4d);border-radius:14px;flex-direction:column;width:380px;max-width:calc(100vw - 24px);max-height:min(70vh,640px);font-family:inherit;animation:.18s ease-out vZSZnG_panelIn;display:flex;position:fixed;overflow:hidden;box-shadow:0 12px 32px #00000029,0 2px 8px #00000014}@keyframes vZSZnG_panelIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.vZSZnG_dragHandle{cursor:grab;z-index:1;justify-content:center;align-items:center;height:12px;display:flex;position:absolute;top:0;left:0;right:0}.vZSZnG_dragHandle:active{cursor:grabbing}.vZSZnG_handleGrip{background:var(--dsw-alias-separator-primary,#7f7f7f59);opacity:.8;border-radius:2px;width:32px;height:3px}.vZSZnG_header{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f2e);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 10px 8px 14px;display:flex}.vZSZnG_headerLeft{align-items:center;gap:6px;min-width:0;display:flex}.vZSZnG_headerIcon{color:var(--dsw-alias-label-secondary);flex:none}.vZSZnG_headerTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:13px;font-weight:600;line-height:20px}.vZSZnG_headerRight{align-items:center;gap:2px;margin-left:auto;display:flex}.vZSZnG_counts{color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-right:4px;font-size:11px;line-height:16px}.vZSZnG_boundBadge{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,#3a6ef5);white-space:nowrap;border-radius:7px;flex:none;padding:0 6px;font-size:10px;line-height:14px}.vZSZnG_notice{color:var(--dsw-alias-state-warn-label,#b7791f);background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1a);word-break:break-all;border-radius:8px;margin:8px 12px 0;padding:6px 10px;font-size:12px;line-height:18px}.vZSZnG_taskList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-scrollbar-bg-l2,transparent) transparent;flex-direction:column;gap:6px;padding:8px;display:flex;overflow-y:auto}.vZSZnG_emptyState{text-align:center;color:var(--dsw-alias-label-secondary);padding:36px 24px 30px}.vZSZnG_emptyTitle{color:var(--dsw-alias-label-primary);margin:0 0 6px;font-size:13px;font-weight:600}.vZSZnG_emptyDesc{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:20px}.vZSZnG_syncHint{color:var(--dsw-alias-label-dimmed);justify-content:center;align-items:center;gap:6px;margin:10px 0 0;font-size:11px;display:flex}.vZSZnG_card{border:1px solid var(--dsw-alias-border-l1,#7f7f7f29);background:var(--dsw-alias-bg-base,transparent);border-radius:10px;transition:border-color .15s;overflow:hidden}.vZSZnG_cardBound{border-color:var(--dsw-alias-border-l3,#7f7f7f59);box-shadow:inset 0 0 0 .5px var(--dsw-alias-border-l3,transparent)}.vZSZnG_cardHead{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:8px 10px 7px;display:flex}.vZSZnG_cardHead:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_cardTitleRow{align-items:center;gap:6px;min-width:0;display:flex}.vZSZnG_cardTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.vZSZnG_cardMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;display:flex}.vZSZnG_progressText{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);font-size:11px;line-height:16px}.vZSZnG_updated{color:var(--dsw-alias-label-dimmed);font-size:10px;line-height:14px}.vZSZnG_chevron{color:var(--dsw-alias-label-tertiary);display:inline-flex}.vZSZnG_track{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f);border-radius:1px;height:2px;margin:0 10px 6px;overflow:hidden}.vZSZnG_trackFill{background:var(--dsw-alias-label-primary-bluish,var(--dsw-alias-button-primary-fill,#3a6ef5));border-radius:1px;height:100%;transition:width .2s}.vZSZnG_cardBody{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f24);overscroll-behavior:contain;max-height:300px;padding:8px 10px 10px;overflow-y:auto}.vZSZnG_section{margin-bottom:8px}.vZSZnG_section:last-child{margin-bottom:0}.vZSZnG_sectionLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;margin-bottom:4px;font-size:11px;line-height:16px;display:flex}.vZSZnG_sectionCount{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1a);color:var(--dsw-alias-label-tertiary);border-radius:6px;padding:0 5px;font-size:10px;line-height:14px}.vZSZnG_stepsList{flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.vZSZnG_stepRow{align-items:flex-start;gap:7px;padding:3px 2px;display:flex}.vZSZnG_stepRow>svg{flex:none;margin-top:2px}.vZSZnG_stepDone{color:var(--dsw-alias-label-dimmed)}.vZSZnG_stepRun{color:var(--dsw-alias-label-primary-bluish,#3a6ef5)}.vZSZnG_stepPending{background:var(--dsw-alias-border-l3,#7f7f7f80);border-radius:50%;flex:none;width:8px;height:8px;margin:5px 3px}.vZSZnG_stepContent{color:var(--dsw-alias-label-secondary);word-break:break-word;font-size:12px;line-height:20px}.vZSZnG_stepContentDone{color:var(--dsw-alias-label-dimmed);text-decoration:line-through}.vZSZnG_stepContentRun{color:var(--dsw-alias-label-primary)}.vZSZnG_muted{color:var(--dsw-alias-label-dimmed);font-size:11px;line-height:18px}.vZSZnG_filesList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vZSZnG_fileRow{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;width:100%;padding:3px 4px;display:flex}.vZSZnG_fileRow:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_fileDot{background:var(--dsw-alias-border-l3,#7f7f7f80);border-radius:50%;flex:none;width:5px;height:5px}.vZSZnG_filePath{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;text-align:left;direction:rtl;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:18px;overflow:hidden}.vZSZnG_fileLine{color:var(--dsw-alias-label-dimmed);flex:none;font-size:10px;line-height:18px}.vZSZnG_cardFooter{gap:6px;margin-top:8px;display:flex}@media (prefers-reduced-motion:reduce){.vZSZnG_panel{animation:none}.vZSZnG_trackFill,.vZSZnG_card{transition:none}}.vZSZnG_miniBar{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));max-width:min(46vw,340px);height:34px;color:var(--dsw-alias-label-primary);cursor:grab;-webkit-user-select:none;user-select:none;pointer-events:auto;border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:12px;line-height:18px;transition:background .15s,border-color .15s;display:inline-flex;position:fixed;box-shadow:0 6px 20px #00000024,0 1px 4px #00000014}.vZSZnG_miniBar:active{cursor:grabbing}.vZSZnG_miniBar:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_miniIcon{color:var(--dsw-alias-label-secondary);flex:none}.vZSZnG_miniText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vZSZnG_miniChevron{color:var(--dsw-alias-label-tertiary);flex:none}.vZSZnG_taskList{flex:auto;min-height:0}.vZSZnG_card{flex-direction:column;display:flex}.vZSZnG_boundaryFallback{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);background:var(--dsw-alias-bg-layer-2,#fff);color:var(--dsw-alias-label-secondary);cursor:pointer;pointer-events:auto;border-radius:999px;padding:4px 10px;font-size:12px;line-height:18px;position:fixed;top:64px;right:16px}.vZSZnG_stepToggle{cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;align-items:center;margin-top:2px;padding:0;display:inline-flex}.vZSZnG_stepToggle:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.vZSZnG_stepToggle:disabled{cursor:default;opacity:.5}.vZSZnG_stepEditable{cursor:text;border-radius:3px}.vZSZnG_stepEditable:hover{outline:1px dashed var(--dsw-alias-border-l3,#7f7f7f66);outline-offset:1px}.vZSZnG_stepInput{box-sizing:border-box;width:auto;min-width:0;font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base,transparent);border:1px solid var(--dsw-alias-border-l3,#7f7f7f73);border-radius:5px;flex:auto;padding:0 5px;font-size:12px;line-height:20px}.vZSZnG_stepDragging{opacity:.3;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_cardTitleEditable{cursor:text;border-radius:3px}.vZSZnG_cardTitleEditable:hover{outline:1px dashed var(--dsw-alias-border-l3,#7f7f7f66);outline-offset:1px}.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-2,#fff) 90%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.2);border:1px solid color-mix(in srgb, var(--dsw-alias-border-l2,#7f7f7f4d) 80%, transparent)}.vZSZnG_panel[data-theme=glass] .vZSZnG_card{background:color-mix(in srgb, var(--dsw-alias-bg-base,transparent) 84%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-border-l1,#7f7f7f29) 60%, transparent)}.vZSZnG_panel[data-theme=glass] .vZSZnG_cardBody{border-top-color:color-mix(in srgb, var(--dsw-alias-border-l1,#7f7f7f24) 60%, transparent)}@media (prefers-reduced-transparency:reduce){.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:var(--dsw-alias-bg-layer-2,#fff);-webkit-backdrop-filter:none;backdrop-filter:none}.vZSZnG_panel[data-theme=glass] .vZSZnG_card{background:var(--dsw-alias-bg-base,transparent)}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:var(--dsw-alias-bg-layer-2,#fff)}}.vZSZnG_panel[data-theme=brutal]{box-shadow:none;border-width:1px;border-radius:6px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_card{border:1px solid var(--dsw-alias-border-l3,#7f7f7f6b);background:var(--dsw-alias-bg-base,transparent);box-shadow:none;border-radius:3px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardHead{padding:7px 10px 6px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardTitle{letter-spacing:.01em;font-weight:650}.vZSZnG_panel[data-theme=brutal] .vZSZnG_headerTitle{letter-spacing:.03em}.vZSZnG_panel[data-theme=brutal] .vZSZnG_boundBadge{border-radius:2px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_track{border-radius:0;height:3px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_trackFill{border-radius:0}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardBody{border-top:1px solid var(--dsw-alias-border-l2,#7f7f7f3d)}.vZSZnG_panel[data-theme=mono] .vZSZnG_headerTitle,.vZSZnG_panel[data-theme=mono] .vZSZnG_counts,.vZSZnG_panel[data-theme=mono] .vZSZnG_cardTitle,.vZSZnG_panel[data-theme=mono] .vZSZnG_progressText,.vZSZnG_panel[data-theme=mono] .vZSZnG_stepContent,.vZSZnG_panel[data-theme=mono] .vZSZnG_filePath{font-family:ui-monospace,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.vZSZnG_panel[data-theme=mono] .vZSZnG_cardTitle{font-size:12px}.vZSZnG_panel[data-theme=mono] .vZSZnG_stepContent{font-size:11.5px}.vZSZnG_panel[data-theme=mono] .vZSZnG_card{border-radius:5px}.vZSZnG_panel[data-theme=mono] .vZSZnG_trackFill{border-radius:0}.vZSZnG_panel[data-theme=mono] .vZSZnG_stepPending{border-radius:1px}.vZSZnG_panel[data-theme=mono] .vZSZnG_updated{letter-spacing:.02em}.vZSZnG_headerIconBtn{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.vZSZnG_headerIcon{color:var(--dsw-alias-label-secondary);flex:none;display:block}.vZSZnG_headerLeft{min-width:0}.vZSZnG_headerTitle{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.vZSZnG_headerRight{min-width:0}.vZSZnG_counts{text-overflow:ellipsis;flex:none;max-width:45%;margin-left:auto;overflow:hidden}.vZSZnG_dragGhost{pointer-events:none;z-index:9999;transition:left 50ms,top 50ms;position:fixed;transform:translate(-50%,-50%)}.vZSZnG_dragGhostCard{background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));border:1px solid var(--dsw-alias-border-l3,#7f7f7f59);color:var(--dsw-alias-label-primary);white-space:nowrap;border-radius:8px;align-items:center;gap:8px;max-width:280px;padding:8px 12px;font-size:12px;line-height:20px;display:inline-flex;transform:scale(.9);box-shadow:0 8px 24px #0000002e,0 2px 8px #0000001a}.vZSZnG_dragGhostContent{text-overflow:ellipsis;word-break:break-word;flex:1;min-width:0;overflow:hidden}.vZSZnG_dragGhostClose{width:20px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;margin-left:8px;font-size:16px;line-height:1;transition:opacity .15s,background .15s,color .15s;display:inline-flex}.vZSZnG_dragGhostClose:hover{opacity:1;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.vZSZnG_dropTargetBefore{position:relative}.vZSZnG_dropTargetBefore:before{content:\"\";background:var(--dsw-alias-button-primary-fill,#3a6ef5);height:2px;box-shadow:0 0 4px var(--dsw-alias-button-primary-fill,#3a6ef5);border-radius:1px;animation:.8s ease-in-out infinite vZSZnG_dropPulse;position:absolute;top:-1px;left:0;right:0}.vZSZnG_dropTargetAfter{position:relative}.vZSZnG_dropTargetAfter:after{content:\"\";background:var(--dsw-alias-button-primary-fill,#3a6ef5);height:2px;box-shadow:0 0 4px var(--dsw-alias-button-primary-fill,#3a6ef5);border-radius:1px;animation:.8s ease-in-out infinite vZSZnG_dropPulse;position:absolute;bottom:-1px;left:0;right:0}@keyframes vZSZnG_dropPulse{0%,to{opacity:.6}50%{opacity:1}}.vZSZnG_memoryPane{flex-direction:column;gap:6px;max-height:480px;padding:8px 10px 10px;display:flex;overflow:auto}.vZSZnG_memToolbar{justify-content:space-between;align-items:center;gap:8px;display:flex}.vZSZnG_memCount{opacity:.75;font-size:12px;font-weight:600}.vZSZnG_memList{flex-direction:column;gap:6px;display:flex}.vZSZnG_memRow{border:1px solid var(--dsw-border-weak,#80808040);background:color-mix(in srgb, var(--dsw-bg-secondary,#f5f5f5) 45%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.vZSZnG_memRowArchived{opacity:.55}.vZSZnG_memRowMain{flex-direction:column;gap:2px;display:flex}.vZSZnG_memTitle{word-break:break-word;align-items:flex-start;gap:6px;font-size:13px;line-height:1.35;display:flex}.vZSZnG_kindBadge{background:var(--dsw-accent-soft,#5078ff26);color:var(--dsw-accent,#4d6bfe);border-radius:4px;flex:none;padding:0 5px;font-size:11px;line-height:1.5}.vZSZnG_memMeta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.vZSZnG_badge{background:color-mix(in srgb, var(--dsw-fg,#222) 8%, transparent);border-radius:4px;padding:0 5px;font-size:11px;line-height:1.5}.vZSZnG_badgeDraft{color:#b26a00;background:#ffb40029}.vZSZnG_badgeArchived{opacity:.8}.vZSZnG_memBody{opacity:.8;word-break:break-word;font-size:12px}.vZSZnG_memActs{flex-wrap:wrap;gap:4px;display:flex}.vZSZnG_memToolbarActs{align-items:center;gap:6px;display:flex}.vZSZnG_memNew{border:1px solid var(--dsw-border-weak,#80808040);border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.vZSZnG_memNewRow{align-items:center;gap:8px;display:flex}.vZSZnG_memLabel{opacity:.8;align-items:center;gap:6px;font-size:12px;display:inline-flex}.vZSZnG_memNew select,.vZSZnG_memNew textarea{box-sizing:border-box;width:100%}";
|
|
564
|
+
const css$1 = ".vZSZnG_panel{pointer-events:auto;background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));border:1px solid var(--dsw-alias-border-l2,#7f7f7f4d);border-radius:14px;flex-direction:column;width:380px;max-width:calc(100vw - 24px);max-height:min(70vh,640px);font-family:inherit;animation:.18s ease-out vZSZnG_panelIn;display:flex;position:fixed;overflow:hidden;box-shadow:0 12px 32px #00000029,0 2px 8px #00000014}@keyframes vZSZnG_panelIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.vZSZnG_dragHandle{cursor:grab;z-index:1;justify-content:center;align-items:center;height:12px;display:flex;position:absolute;top:0;left:0;right:0}.vZSZnG_dragHandle:active{cursor:grabbing}.vZSZnG_handleGrip{background:var(--dsw-alias-separator-primary,#7f7f7f59);opacity:.8;border-radius:2px;width:32px;height:3px}.vZSZnG_header{border-bottom:1px solid var(--dsw-alias-border-l1,#7f7f7f2e);-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:8px;padding:10px 10px 8px 14px;display:flex}.vZSZnG_headerLeft{align-items:center;gap:6px;min-width:0;display:flex}.vZSZnG_headerIcon{color:var(--dsw-alias-label-secondary);flex:none}.vZSZnG_headerTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:13px;font-weight:600;line-height:20px}.vZSZnG_headerRight{align-items:center;gap:2px;margin-left:auto;display:flex}.vZSZnG_counts{color:var(--dsw-alias-label-tertiary);white-space:nowrap;margin-right:4px;font-size:11px;line-height:16px}.vZSZnG_boundBadge{color:var(--dsw-alias-label-primary-foreground,#fff);background:var(--dsw-alias-button-primary-fill,#3a6ef5);white-space:nowrap;border-radius:7px;flex:none;padding:0 6px;font-size:10px;line-height:14px}.vZSZnG_notice{color:var(--dsw-alias-state-warn-label,#b7791f);background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1a);word-break:break-all;border-radius:8px;margin:8px 12px 0;padding:6px 10px;font-size:12px;line-height:18px}.vZSZnG_taskList{scrollbar-width:thin;scrollbar-color:var(--dsw-alias-scrollbar-bg-l2,transparent) transparent;flex-direction:column;gap:6px;padding:8px;display:flex;overflow-y:auto}.vZSZnG_emptyState{text-align:center;color:var(--dsw-alias-label-secondary);padding:36px 24px 30px}.vZSZnG_emptyTitle{color:var(--dsw-alias-label-primary);margin:0 0 6px;font-size:13px;font-weight:600}.vZSZnG_emptyDesc{color:var(--dsw-alias-label-tertiary);margin:0;font-size:12px;line-height:20px}.vZSZnG_syncHint{color:var(--dsw-alias-label-dimmed);justify-content:center;align-items:center;gap:6px;margin:10px 0 0;font-size:11px;display:flex}.vZSZnG_card{border:1px solid var(--dsw-alias-border-l1,#7f7f7f29);background:var(--dsw-alias-bg-base,transparent);border-radius:10px;transition:border-color .15s;overflow:hidden}.vZSZnG_cardBound{border-color:var(--dsw-alias-border-l3,#7f7f7f59);box-shadow:inset 0 0 0 .5px var(--dsw-alias-border-l3,transparent)}.vZSZnG_cardHead{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;width:100%;padding:8px 10px 7px;display:flex}.vZSZnG_cardHead:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_cardTitleRow{align-items:center;gap:6px;min-width:0;display:flex}.vZSZnG_cardTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.vZSZnG_cardMeta{color:var(--dsw-alias-label-tertiary);flex:none;align-items:center;gap:8px;display:flex}.vZSZnG_progressText{font-variant-numeric:tabular-nums;color:var(--dsw-alias-label-secondary);font-size:11px;line-height:16px}.vZSZnG_updated{color:var(--dsw-alias-label-dimmed);font-size:10px;line-height:14px}.vZSZnG_chevron{color:var(--dsw-alias-label-tertiary);display:inline-flex}.vZSZnG_track{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f);border-radius:1px;height:2px;margin:0 10px 6px;overflow:hidden}.vZSZnG_trackFill{background:var(--dsw-alias-label-primary-bluish,var(--dsw-alias-button-primary-fill,#3a6ef5));border-radius:1px;height:100%;transition:width .2s}.vZSZnG_cardBody{border-top:1px solid var(--dsw-alias-border-l1,#7f7f7f24);overscroll-behavior:contain;max-height:300px;padding:8px 10px 10px;overflow-y:auto}.vZSZnG_section{margin-bottom:8px}.vZSZnG_section:last-child{margin-bottom:0}.vZSZnG_sectionLabel{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;margin-bottom:4px;font-size:11px;line-height:16px;display:flex}.vZSZnG_sectionCount{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1a);color:var(--dsw-alias-label-tertiary);border-radius:6px;padding:0 5px;font-size:10px;line-height:14px}.vZSZnG_stepsList{flex-direction:column;gap:1px;margin:0;padding:0;list-style:none;display:flex}.vZSZnG_stepRow{align-items:flex-start;gap:7px;padding:3px 2px;display:flex}.vZSZnG_stepRow>svg{flex:none;margin-top:2px}.vZSZnG_stepDone{color:var(--dsw-alias-label-dimmed)}.vZSZnG_stepRun{color:var(--dsw-alias-label-primary-bluish,#3a6ef5)}.vZSZnG_stepPending{background:var(--dsw-alias-border-l3,#7f7f7f80);border-radius:50%;flex:none;width:8px;height:8px;margin:5px 3px}.vZSZnG_stepContent{color:var(--dsw-alias-label-secondary);word-break:break-word;white-space:pre-wrap;font-size:12px;line-height:20px}.vZSZnG_stepContentDone{color:var(--dsw-alias-label-dimmed);text-decoration:line-through}.vZSZnG_stepContentRun{color:var(--dsw-alias-label-primary)}.vZSZnG_muted{color:var(--dsw-alias-label-dimmed);font-size:11px;line-height:18px}.vZSZnG_filesList{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.vZSZnG_fileRow{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;width:100%;padding:3px 4px;display:flex}.vZSZnG_fileRow:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_fileDot{background:var(--dsw-alias-border-l3,#7f7f7f80);border-radius:50%;flex:none;width:5px;height:5px}.vZSZnG_filePath{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;text-align:left;direction:rtl;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:11px;line-height:18px;overflow:hidden}.vZSZnG_fileLine{color:var(--dsw-alias-label-dimmed);flex:none;font-size:10px;line-height:18px}.vZSZnG_cardFooter{gap:6px;margin-top:8px;display:flex}@media (prefers-reduced-motion:reduce){.vZSZnG_panel{animation:none}.vZSZnG_trackFill,.vZSZnG_card{transition:none}}.vZSZnG_miniBar{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));max-width:min(46vw,340px);height:34px;color:var(--dsw-alias-label-primary);cursor:grab;-webkit-user-select:none;user-select:none;pointer-events:auto;border-radius:999px;align-items:center;gap:7px;padding:0 12px;font-size:12px;line-height:18px;transition:background .15s,border-color .15s;display:inline-flex;position:fixed;box-shadow:0 6px 20px #00000024,0 1px 4px #00000014}.vZSZnG_miniBar:active{cursor:grabbing}.vZSZnG_miniBar:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_miniIcon{color:var(--dsw-alias-label-secondary);flex:none}.vZSZnG_miniText{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.vZSZnG_miniChevron{color:var(--dsw-alias-label-tertiary);flex:none}.vZSZnG_taskList{flex:auto;min-height:0}.vZSZnG_card{flex-direction:column;display:flex}.vZSZnG_boundaryFallback{border:1px solid var(--dsw-alias-border-l3,#7f7f7f4d);background:var(--dsw-alias-bg-layer-2,#fff);color:var(--dsw-alias-label-secondary);cursor:pointer;pointer-events:auto;border-radius:999px;padding:4px 10px;font-size:12px;line-height:18px;position:fixed;top:64px;right:16px}.vZSZnG_stepToggle{cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;align-items:center;margin-top:2px;padding:0;display:inline-flex}.vZSZnG_stepToggle:hover{background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.vZSZnG_stepToggle:disabled{cursor:default;opacity:.5}.vZSZnG_stepEditable{cursor:text;border-radius:3px}.vZSZnG_stepEditable:hover{outline:1px dashed var(--dsw-alias-border-l3,#7f7f7f66);outline-offset:1px}.vZSZnG_stepInput{box-sizing:border-box;width:auto;min-width:0;font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base,transparent);border:1px solid var(--dsw-alias-border-l3,#7f7f7f73);border-radius:5px;flex:auto;padding:0 5px;font-size:12px;line-height:20px}.vZSZnG_editorArea{box-sizing:border-box;min-width:0;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-base,transparent);border:1px solid var(--dsw-alias-border-l3,#7f7f7f73);resize:none;vertical-align:middle;cursor:text;white-space:pre-wrap;word-break:break-word;border-radius:5px;flex:1;margin:0;padding:2px 5px;font-family:inherit;font-size:12px;line-height:20px;overflow:hidden}.vZSZnG_editorArea:focus{border-color:var(--dsw-alias-border-l3,#7f7f7f99);outline:none}.vZSZnG_stepDragging{opacity:.3;background:var(--dsw-alias-interactive-bg-hover,#7f7f7f14)}.vZSZnG_cardTitleEditable{cursor:text;border-radius:3px}.vZSZnG_cardTitleEditable:hover{outline:1px dashed var(--dsw-alias-border-l3,#7f7f7f66);outline-offset:1px}.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:color-mix(in srgb, var(--dsw-alias-bg-layer-2,#fff) 90%, transparent);-webkit-backdrop-filter:blur(18px)saturate(1.2);border:1px solid color-mix(in srgb, var(--dsw-alias-border-l2,#7f7f7f4d) 80%, transparent)}.vZSZnG_panel[data-theme=glass] .vZSZnG_card{background:color-mix(in srgb, var(--dsw-alias-bg-base,transparent) 84%, transparent);border-color:color-mix(in srgb, var(--dsw-alias-border-l1,#7f7f7f29) 60%, transparent)}.vZSZnG_panel[data-theme=glass] .vZSZnG_cardBody{border-top-color:color-mix(in srgb, var(--dsw-alias-border-l1,#7f7f7f24) 60%, transparent)}@media (prefers-reduced-transparency:reduce){.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:var(--dsw-alias-bg-layer-2,#fff);-webkit-backdrop-filter:none;backdrop-filter:none}.vZSZnG_panel[data-theme=glass] .vZSZnG_card{background:var(--dsw-alias-bg-base,transparent)}}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.vZSZnG_panel[data-theme=glass],.vZSZnG_miniBar[data-theme=glass]{background:var(--dsw-alias-bg-layer-2,#fff)}}.vZSZnG_panel[data-theme=brutal]{box-shadow:none;border-width:1px;border-radius:6px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_card{border:1px solid var(--dsw-alias-border-l3,#7f7f7f6b);background:var(--dsw-alias-bg-base,transparent);box-shadow:none;border-radius:3px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardHead{padding:7px 10px 6px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardTitle{letter-spacing:.01em;font-weight:650}.vZSZnG_panel[data-theme=brutal] .vZSZnG_headerTitle{letter-spacing:.03em}.vZSZnG_panel[data-theme=brutal] .vZSZnG_boundBadge{border-radius:2px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_track{border-radius:0;height:3px}.vZSZnG_panel[data-theme=brutal] .vZSZnG_trackFill{border-radius:0}.vZSZnG_panel[data-theme=brutal] .vZSZnG_cardBody{border-top:1px solid var(--dsw-alias-border-l2,#7f7f7f3d)}.vZSZnG_panel[data-theme=mono] .vZSZnG_headerTitle,.vZSZnG_panel[data-theme=mono] .vZSZnG_counts,.vZSZnG_panel[data-theme=mono] .vZSZnG_cardTitle,.vZSZnG_panel[data-theme=mono] .vZSZnG_progressText,.vZSZnG_panel[data-theme=mono] .vZSZnG_stepContent,.vZSZnG_panel[data-theme=mono] .vZSZnG_filePath{font-family:ui-monospace,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.vZSZnG_panel[data-theme=mono] .vZSZnG_cardTitle{font-size:12px}.vZSZnG_panel[data-theme=mono] .vZSZnG_stepContent{font-size:11.5px}.vZSZnG_panel[data-theme=mono] .vZSZnG_card{border-radius:5px}.vZSZnG_panel[data-theme=mono] .vZSZnG_trackFill{border-radius:0}.vZSZnG_panel[data-theme=mono] .vZSZnG_stepPending{border-radius:1px}.vZSZnG_panel[data-theme=mono] .vZSZnG_updated{letter-spacing:.02em}.vZSZnG_headerIconBtn{color:inherit;cursor:pointer;background:0 0;border:none;border-radius:0;flex:none;justify-content:center;align-items:center;margin:0;padding:0;display:inline-flex}.vZSZnG_headerIcon{color:var(--dsw-alias-label-secondary);flex:none;display:block}.vZSZnG_headerLeft{min-width:0}.vZSZnG_headerTitle{text-overflow:ellipsis;flex:0 auto;min-width:0;overflow:hidden}.vZSZnG_headerRight{min-width:0}.vZSZnG_counts{text-overflow:ellipsis;flex:none;max-width:45%;margin-left:auto;overflow:hidden}.vZSZnG_dragGhost{pointer-events:none;z-index:9999;transition:left 50ms,top 50ms;position:fixed;transform:translate(-50%,-50%)}.vZSZnG_dragGhostCard{background:var(--dsw-alias-bg-layer-2,var(--dsw-alias-bg-base,#fff));border:1px solid var(--dsw-alias-border-l3,#7f7f7f59);color:var(--dsw-alias-label-primary);white-space:nowrap;border-radius:8px;align-items:center;gap:8px;max-width:280px;padding:8px 12px;font-size:12px;line-height:20px;display:inline-flex;transform:scale(.9);box-shadow:0 8px 24px #0000002e,0 2px 8px #0000001a}.vZSZnG_dragGhostContent{text-overflow:ellipsis;word-break:break-word;flex:1;min-width:0;overflow:hidden}.vZSZnG_dragGhostClose{width:20px;height:20px;color:var(--dsw-alias-label-tertiary);cursor:pointer;opacity:.6;background:0 0;border:none;border-radius:4px;flex:none;justify-content:center;align-items:center;margin-left:8px;font-size:16px;line-height:1;transition:opacity .15s,background .15s,color .15s;display:inline-flex}.vZSZnG_dragGhostClose:hover{opacity:1;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover,#7f7f7f1f)}.vZSZnG_dropTargetBefore{position:relative}.vZSZnG_dropTargetBefore:before{content:\"\";background:var(--dsw-alias-button-primary-fill,#3a6ef5);height:2px;box-shadow:0 0 4px var(--dsw-alias-button-primary-fill,#3a6ef5);border-radius:1px;animation:.8s ease-in-out infinite vZSZnG_dropPulse;position:absolute;top:-1px;left:0;right:0}.vZSZnG_dropTargetAfter{position:relative}.vZSZnG_dropTargetAfter:after{content:\"\";background:var(--dsw-alias-button-primary-fill,#3a6ef5);height:2px;box-shadow:0 0 4px var(--dsw-alias-button-primary-fill,#3a6ef5);border-radius:1px;animation:.8s ease-in-out infinite vZSZnG_dropPulse;position:absolute;bottom:-1px;left:0;right:0}@keyframes vZSZnG_dropPulse{0%,to{opacity:.6}50%{opacity:1}}.vZSZnG_memoryPane{flex-direction:column;gap:6px;max-height:480px;padding:8px 10px 10px;display:flex;overflow:auto}.vZSZnG_memToolbar{justify-content:space-between;align-items:center;gap:8px;display:flex}.vZSZnG_memCount{opacity:.75;font-size:12px;font-weight:600}.vZSZnG_memList{flex-direction:column;gap:6px;display:flex}.vZSZnG_memRow{border:1px solid var(--dsw-border-weak,#80808040);background:color-mix(in srgb, var(--dsw-bg-secondary,#f5f5f5) 45%, transparent);border-radius:6px;flex-direction:column;gap:4px;padding:6px 8px;display:flex}.vZSZnG_memRowArchived{opacity:.55}.vZSZnG_memRowMain{flex-direction:column;gap:2px;display:flex}.vZSZnG_memTitle{word-break:break-word;align-items:flex-start;gap:6px;font-size:13px;line-height:1.35;display:flex}.vZSZnG_kindBadge{background:var(--dsw-accent-soft,#5078ff26);color:var(--dsw-accent,#4d6bfe);border-radius:4px;flex:none;padding:0 5px;font-size:11px;line-height:1.5}.vZSZnG_memMeta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.vZSZnG_badge{background:color-mix(in srgb, var(--dsw-fg,#222) 8%, transparent);border-radius:4px;padding:0 5px;font-size:11px;line-height:1.5}.vZSZnG_badgeDraft{color:#b26a00;background:#ffb40029}.vZSZnG_badgeArchived{opacity:.8}.vZSZnG_memBody{opacity:.8;word-break:break-word;font-size:12px}.vZSZnG_memActs{flex-wrap:wrap;gap:4px;display:flex}.vZSZnG_memToolbarActs{align-items:center;gap:6px;display:flex}.vZSZnG_memNew{border:1px solid var(--dsw-border-weak,#80808040);border-radius:6px;flex-direction:column;gap:6px;padding:8px;display:flex}.vZSZnG_memNewRow{align-items:center;gap:8px;display:flex}.vZSZnG_memLabel{opacity:.8;align-items:center;gap:6px;font-size:12px;display:inline-flex}.vZSZnG_memNew select,.vZSZnG_memNew textarea{box-sizing:border-box;width:100%}";
|
|
565
565
|
const tagId$1 = "@yolk_vat-y/dsh-project-memory/TaskPanel.module.css";
|
|
566
566
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
567
567
|
const tag = document.createElement("style");
|
|
@@ -571,90 +571,91 @@ window.__ModuleLoader__.load({
|
|
|
571
571
|
document.head.appendChild(tag);
|
|
572
572
|
}
|
|
573
573
|
var TaskPanel_module_css_default = {
|
|
574
|
-
"
|
|
575
|
-
"
|
|
574
|
+
"stepToggle": "vZSZnG_stepToggle",
|
|
575
|
+
"stepDone": "vZSZnG_stepDone",
|
|
576
|
+
"miniIcon": "vZSZnG_miniIcon",
|
|
577
|
+
"headerIconBtn": "vZSZnG_headerIconBtn",
|
|
578
|
+
"cardBody": "vZSZnG_cardBody",
|
|
579
|
+
"sectionCount": "vZSZnG_sectionCount",
|
|
580
|
+
"progressText": "vZSZnG_progressText",
|
|
581
|
+
"cardBound": "vZSZnG_cardBound",
|
|
582
|
+
"chevron": "vZSZnG_chevron",
|
|
583
|
+
"memList": "vZSZnG_memList",
|
|
584
|
+
"kindBadge": "vZSZnG_kindBadge",
|
|
585
|
+
"cardFooter": "vZSZnG_cardFooter",
|
|
586
|
+
"trackFill": "vZSZnG_trackFill",
|
|
576
587
|
"cardTitle": "vZSZnG_cardTitle",
|
|
577
|
-
"
|
|
578
|
-
"
|
|
579
|
-
"updated": "vZSZnG_updated",
|
|
588
|
+
"stepEditable": "vZSZnG_stepEditable",
|
|
589
|
+
"counts": "vZSZnG_counts",
|
|
580
590
|
"section": "vZSZnG_section",
|
|
591
|
+
"stepInput": "vZSZnG_stepInput",
|
|
592
|
+
"handleGrip": "vZSZnG_handleGrip",
|
|
593
|
+
"cardTitleEditable": "vZSZnG_cardTitleEditable",
|
|
594
|
+
"dragGhostContent": "vZSZnG_dragGhostContent",
|
|
595
|
+
"dragGhostClose": "vZSZnG_dragGhostClose",
|
|
596
|
+
"dropTargetBefore": "vZSZnG_dropTargetBefore",
|
|
597
|
+
"stepDragging": "vZSZnG_stepDragging",
|
|
598
|
+
"cardMeta": "vZSZnG_cardMeta",
|
|
599
|
+
"panel": "vZSZnG_panel",
|
|
600
|
+
"dragGhost": "vZSZnG_dragGhost",
|
|
601
|
+
"dropTargetAfter": "vZSZnG_dropTargetAfter",
|
|
602
|
+
"stepPending": "vZSZnG_stepPending",
|
|
603
|
+
"fileDot": "vZSZnG_fileDot",
|
|
604
|
+
"memTitle": "vZSZnG_memTitle",
|
|
605
|
+
"badge": "vZSZnG_badge",
|
|
581
606
|
"emptyTitle": "vZSZnG_emptyTitle",
|
|
582
|
-
"
|
|
583
|
-
"
|
|
584
|
-
"emptyDesc": "vZSZnG_emptyDesc",
|
|
607
|
+
"stepContentRun": "vZSZnG_stepContentRun",
|
|
608
|
+
"stepRun": "vZSZnG_stepRun",
|
|
585
609
|
"fileLine": "vZSZnG_fileLine",
|
|
586
|
-
"
|
|
587
|
-
"fileDot": "vZSZnG_fileDot",
|
|
610
|
+
"dropPulse": "vZSZnG_dropPulse",
|
|
588
611
|
"memRow": "vZSZnG_memRow",
|
|
589
|
-
"
|
|
590
|
-
"
|
|
612
|
+
"filesList": "vZSZnG_filesList",
|
|
613
|
+
"sectionLabel": "vZSZnG_sectionLabel",
|
|
591
614
|
"cardHead": "vZSZnG_cardHead",
|
|
592
|
-
"
|
|
593
|
-
"
|
|
594
|
-
"
|
|
615
|
+
"fileRow": "vZSZnG_fileRow",
|
|
616
|
+
"notice": "vZSZnG_notice",
|
|
617
|
+
"emptyDesc": "vZSZnG_emptyDesc",
|
|
618
|
+
"panelIn": "vZSZnG_panelIn",
|
|
619
|
+
"headerLeft": "vZSZnG_headerLeft",
|
|
620
|
+
"headerIcon": "vZSZnG_headerIcon",
|
|
595
621
|
"memNew": "vZSZnG_memNew",
|
|
596
|
-
"taskList": "vZSZnG_taskList",
|
|
597
|
-
"memCount": "vZSZnG_memCount",
|
|
598
|
-
"stepToggle": "vZSZnG_stepToggle",
|
|
599
|
-
"trackFill": "vZSZnG_trackFill",
|
|
600
622
|
"memToolbar": "vZSZnG_memToolbar",
|
|
601
|
-
"
|
|
623
|
+
"memActs": "vZSZnG_memActs",
|
|
624
|
+
"badgeDraft": "vZSZnG_badgeDraft",
|
|
625
|
+
"headerRight": "vZSZnG_headerRight",
|
|
626
|
+
"card": "vZSZnG_card",
|
|
627
|
+
"syncHint": "vZSZnG_syncHint",
|
|
628
|
+
"updated": "vZSZnG_updated",
|
|
602
629
|
"memBody": "vZSZnG_memBody",
|
|
603
|
-
"
|
|
630
|
+
"memLabel": "vZSZnG_memLabel",
|
|
631
|
+
"dragHandle": "vZSZnG_dragHandle",
|
|
632
|
+
"track": "vZSZnG_track",
|
|
633
|
+
"memoryPane": "vZSZnG_memoryPane",
|
|
604
634
|
"badgeArchived": "vZSZnG_badgeArchived",
|
|
605
|
-
"
|
|
606
|
-
"
|
|
607
|
-
"
|
|
608
|
-
"cardTitleEditable": "vZSZnG_cardTitleEditable",
|
|
609
|
-
"panelIn": "vZSZnG_panelIn",
|
|
610
|
-
"headerRight": "vZSZnG_headerRight",
|
|
611
|
-
"emptyState": "vZSZnG_emptyState",
|
|
612
|
-
"headerIconBtn": "vZSZnG_headerIconBtn",
|
|
613
|
-
"progressText": "vZSZnG_progressText",
|
|
635
|
+
"muted": "vZSZnG_muted",
|
|
636
|
+
"editorArea": "vZSZnG_editorArea",
|
|
637
|
+
"memMeta": "vZSZnG_memMeta",
|
|
614
638
|
"boundBadge": "vZSZnG_boundBadge",
|
|
615
|
-
"
|
|
616
|
-
"
|
|
617
|
-
"
|
|
618
|
-
"kindBadge": "vZSZnG_kindBadge",
|
|
619
|
-
"memLabel": "vZSZnG_memLabel",
|
|
620
|
-
"cardBound": "vZSZnG_cardBound",
|
|
621
|
-
"stepsList": "vZSZnG_stepsList",
|
|
622
|
-
"dragGhostContent": "vZSZnG_dragGhostContent",
|
|
623
|
-
"miniIcon": "vZSZnG_miniIcon",
|
|
624
|
-
"stepEditable": "vZSZnG_stepEditable",
|
|
625
|
-
"memNewRow": "vZSZnG_memNewRow",
|
|
626
|
-
"panel": "vZSZnG_panel",
|
|
639
|
+
"stepRow": "vZSZnG_stepRow",
|
|
640
|
+
"miniBar": "vZSZnG_miniBar",
|
|
641
|
+
"stepContent": "vZSZnG_stepContent",
|
|
627
642
|
"filePath": "vZSZnG_filePath",
|
|
628
|
-
"
|
|
629
|
-
"
|
|
630
|
-
"
|
|
631
|
-
"
|
|
632
|
-
"notice": "vZSZnG_notice",
|
|
643
|
+
"memNewRow": "vZSZnG_memNewRow",
|
|
644
|
+
"emptyState": "vZSZnG_emptyState",
|
|
645
|
+
"memCount": "vZSZnG_memCount",
|
|
646
|
+
"memToolbarActs": "vZSZnG_memToolbarActs",
|
|
633
647
|
"headerTitle": "vZSZnG_headerTitle",
|
|
634
|
-
"
|
|
635
|
-
"
|
|
636
|
-
"stepContentRun": "vZSZnG_stepContentRun",
|
|
637
|
-
"cardBody": "vZSZnG_cardBody",
|
|
638
|
-
"filesList": "vZSZnG_filesList",
|
|
639
|
-
"handleGrip": "vZSZnG_handleGrip",
|
|
640
|
-
"memoryPane": "vZSZnG_memoryPane",
|
|
641
|
-
"memRowArchived": "vZSZnG_memRowArchived",
|
|
642
|
-
"dragHandle": "vZSZnG_dragHandle",
|
|
648
|
+
"memRowMain": "vZSZnG_memRowMain",
|
|
649
|
+
"stepContentDone": "vZSZnG_stepContentDone",
|
|
643
650
|
"miniChevron": "vZSZnG_miniChevron",
|
|
644
|
-
"
|
|
645
|
-
"
|
|
646
|
-
"memActs": "vZSZnG_memActs",
|
|
647
|
-
"memToolbarActs": "vZSZnG_memToolbarActs",
|
|
648
|
-
"cardMeta": "vZSZnG_cardMeta",
|
|
649
|
-
"stepRun": "vZSZnG_stepRun",
|
|
650
|
-
"stepInput": "vZSZnG_stepInput",
|
|
651
|
+
"taskList": "vZSZnG_taskList",
|
|
652
|
+
"boundaryFallback": "vZSZnG_boundaryFallback",
|
|
651
653
|
"dragGhostCard": "vZSZnG_dragGhostCard",
|
|
652
|
-
"
|
|
653
|
-
"
|
|
654
|
-
"
|
|
655
|
-
"
|
|
656
|
-
"
|
|
657
|
-
"miniText": "vZSZnG_miniText"
|
|
654
|
+
"header": "vZSZnG_header",
|
|
655
|
+
"cardTitleRow": "vZSZnG_cardTitleRow",
|
|
656
|
+
"memRowArchived": "vZSZnG_memRowArchived",
|
|
657
|
+
"miniText": "vZSZnG_miniText",
|
|
658
|
+
"stepsList": "vZSZnG_stepsList"
|
|
658
659
|
};
|
|
659
660
|
//#endregion
|
|
660
661
|
//#region src/client/TaskComponents.tsx
|
|
@@ -685,6 +686,52 @@ window.__ModuleLoader__.load({
|
|
|
685
686
|
if (status === "in_progress") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlayOutline16, { className: TaskPanel_module_css_default.stepRun });
|
|
686
687
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: TaskPanel_module_css_default.stepPending });
|
|
687
688
|
}
|
|
689
|
+
/**
|
|
690
|
+
* 双击判定窗口(ms)。
|
|
691
|
+
* 单击(如卡片展开/收起)会延迟该时长执行:若期间收到第二次点击则按“双击”处理并取消单击,
|
|
692
|
+
* 从而避免“第一下先展开/收起、布局位移后第二下点不到目标”的问题。
|
|
693
|
+
* 数值是可感知与可靠性的折中:太小慢速双击会失效,太大单击会显“肉”。
|
|
694
|
+
*/
|
|
695
|
+
const CLICK_SINGLE_DELAY_MS = 250;
|
|
696
|
+
function InlineEditor({ value, className, maxRows = 8, onValueChange, onCommit, onCancel }) {
|
|
697
|
+
const ref = (0, react.useRef)(null);
|
|
698
|
+
(0, react.useLayoutEffect)(() => {
|
|
699
|
+
const el = ref.current;
|
|
700
|
+
if (!el) return;
|
|
701
|
+
el.style.height = "auto";
|
|
702
|
+
const cs = getComputedStyle(el);
|
|
703
|
+
const lineHeight = parseFloat(cs.lineHeight) || 20;
|
|
704
|
+
const padV = (parseFloat(cs.paddingTop) || 0) + (parseFloat(cs.paddingBottom) || 0);
|
|
705
|
+
const borderV = (parseFloat(cs.borderTopWidth) || 0) + (parseFloat(cs.borderBottomWidth) || 0);
|
|
706
|
+
const cap = maxRows * lineHeight + padV + borderV;
|
|
707
|
+
const height = Math.min(el.scrollHeight, cap);
|
|
708
|
+
el.style.height = `${height}px`;
|
|
709
|
+
el.style.overflowY = el.scrollHeight > cap ? "auto" : "hidden";
|
|
710
|
+
}, [value, maxRows]);
|
|
711
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("textarea", {
|
|
712
|
+
ref,
|
|
713
|
+
className,
|
|
714
|
+
rows: 1,
|
|
715
|
+
value,
|
|
716
|
+
autoFocus: true,
|
|
717
|
+
spellCheck: false,
|
|
718
|
+
onChange: (e) => onValueChange(e.target.value),
|
|
719
|
+
onFocus: (e) => {
|
|
720
|
+
const len = e.target.value.length;
|
|
721
|
+
e.target.setSelectionRange(len, len);
|
|
722
|
+
},
|
|
723
|
+
onBlur: onCommit,
|
|
724
|
+
onKeyDown: (e) => {
|
|
725
|
+
if (e.key === "Enter" && !e.shiftKey) {
|
|
726
|
+
e.preventDefault();
|
|
727
|
+
onCommit();
|
|
728
|
+
} else if (e.key === "Escape") {
|
|
729
|
+
e.preventDefault();
|
|
730
|
+
onCancel();
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
});
|
|
734
|
+
}
|
|
688
735
|
function MiniBar({ label, hint, position, theme, onMove, open }) {
|
|
689
736
|
const barRef = (0, react.useRef)(null);
|
|
690
737
|
const down = (0, react.useRef)(null);
|
|
@@ -763,33 +810,57 @@ window.__ModuleLoader__.load({
|
|
|
763
810
|
setTitleEdit(null);
|
|
764
811
|
onRename(value);
|
|
765
812
|
};
|
|
813
|
+
const headClickTimer = (0, react.useRef)(null);
|
|
814
|
+
const suppressHeadClick = (0, react.useRef)(false);
|
|
815
|
+
(0, react.useEffect)(() => () => {
|
|
816
|
+
if (headClickTimer.current !== null) window.clearTimeout(headClickTimer.current);
|
|
817
|
+
}, []);
|
|
818
|
+
const handleHeadClick = (e) => {
|
|
819
|
+
if (suppressHeadClick.current) {
|
|
820
|
+
suppressHeadClick.current = false;
|
|
821
|
+
return;
|
|
822
|
+
}
|
|
823
|
+
if (titleEdit !== null) return;
|
|
824
|
+
const target = e.target;
|
|
825
|
+
const onTitle = isBound && target.closest("[data-card-title]") !== null;
|
|
826
|
+
if (headClickTimer.current !== null) {
|
|
827
|
+
window.clearTimeout(headClickTimer.current);
|
|
828
|
+
headClickTimer.current = null;
|
|
829
|
+
if (onTitle) setTitleEdit({ value: String(task.title ?? "") });
|
|
830
|
+
else onToggleExpand();
|
|
831
|
+
return;
|
|
832
|
+
}
|
|
833
|
+
headClickTimer.current = window.setTimeout(() => {
|
|
834
|
+
headClickTimer.current = null;
|
|
835
|
+
onToggleExpand();
|
|
836
|
+
}, CLICK_SINGLE_DELAY_MS);
|
|
837
|
+
};
|
|
766
838
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("article", {
|
|
767
839
|
"data-task-id": task.id,
|
|
768
840
|
className: `${TaskPanel_module_css_default.card}${isBound ? ` ${TaskPanel_module_css_default.cardBound}` : ""}`,
|
|
769
841
|
children: [
|
|
770
842
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
771
843
|
className: TaskPanel_module_css_default.cardHead,
|
|
772
|
-
onClick:
|
|
773
|
-
|
|
774
|
-
|
|
844
|
+
onClick: handleHeadClick,
|
|
845
|
+
onMouseDownCapture: () => {
|
|
846
|
+
if (titleEdit !== null) suppressHeadClick.current = true;
|
|
775
847
|
},
|
|
848
|
+
onDoubleClick: (e) => e.preventDefault(),
|
|
776
849
|
"aria-expanded": expanded,
|
|
777
850
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
778
851
|
className: TaskPanel_module_css_default.cardTitleRow,
|
|
779
852
|
children: [isBound && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
780
853
|
className: TaskPanel_module_css_default.boundBadge,
|
|
781
854
|
children: t("task.current")
|
|
782
|
-
}), isBound && titleEdit !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
783
|
-
className: TaskPanel_module_css_default.
|
|
855
|
+
}), isBound && titleEdit !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InlineEditor, {
|
|
856
|
+
className: TaskPanel_module_css_default.editorArea,
|
|
784
857
|
value: titleEdit.value,
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
if (e.key === "Enter") commitTitleEdit();
|
|
790
|
-
else if (e.key === "Escape") setTitleEdit(null);
|
|
791
|
-
}
|
|
858
|
+
maxRows: 4,
|
|
859
|
+
onValueChange: (value) => setTitleEdit({ value }),
|
|
860
|
+
onCommit: commitTitleEdit,
|
|
861
|
+
onCancel: () => setTitleEdit(null)
|
|
792
862
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
863
|
+
"data-card-title": true,
|
|
793
864
|
className: `${TaskPanel_module_css_default.cardTitle}${isBound ? ` ${TaskPanel_module_css_default.cardTitleEditable}` : ""}`,
|
|
794
865
|
title: isBound ? t("task.title-edit") : void 0,
|
|
795
866
|
onDoubleClick: (e) => {
|
|
@@ -865,19 +936,16 @@ window.__ModuleLoader__.load({
|
|
|
865
936
|
},
|
|
866
937
|
title: `${t("step.completed")}/${t("step.in-progress")}/${t("step.pending")}`,
|
|
867
938
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepIcon, { status: step.status })
|
|
868
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepIcon, { status: step.status }), stepIsEditing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
869
|
-
className: TaskPanel_module_css_default.
|
|
939
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(StepIcon, { status: step.status }), stepIsEditing ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(InlineEditor, {
|
|
940
|
+
className: TaskPanel_module_css_default.editorArea,
|
|
870
941
|
value: stepEdit.value,
|
|
871
|
-
|
|
872
|
-
|
|
942
|
+
maxRows: 10,
|
|
943
|
+
onValueChange: (value) => setStepEdit({
|
|
873
944
|
index: i,
|
|
874
|
-
value
|
|
945
|
+
value
|
|
875
946
|
}),
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
if (e.key === "Enter") commitStepEdit(i);
|
|
879
|
-
else if (e.key === "Escape") setStepEdit(null);
|
|
880
|
-
}
|
|
947
|
+
onCommit: () => commitStepEdit(i),
|
|
948
|
+
onCancel: () => setStepEdit(null)
|
|
881
949
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
882
950
|
className: `${TaskPanel_module_css_default.stepContent}${step.status === "completed" ? ` ${TaskPanel_module_css_default.stepContentDone}` : ""}${step.status === "in_progress" ? ` ${TaskPanel_module_css_default.stepContentRun}` : ""}${isBound ? ` ${TaskPanel_module_css_default.stepEditable}` : ""}`,
|
|
883
951
|
title: isBound && showHints ? t("step.edit-hint") : void 0,
|
|
@@ -1948,8 +2016,8 @@ window.__ModuleLoader__.load({
|
|
|
1948
2016
|
document.head.appendChild(tag);
|
|
1949
2017
|
}
|
|
1950
2018
|
var TaskCommandNode_module_css_default = {
|
|
1951
|
-
"
|
|
1952
|
-
"
|
|
2019
|
+
"icon": "TPe-xa_icon",
|
|
2020
|
+
"row": "TPe-xa_row"
|
|
1953
2021
|
};
|
|
1954
2022
|
//#endregion
|
|
1955
2023
|
//#region src/client/TaskCommandNode.tsx
|