@goodandready/dsh-kanban 0.2.41 → 0.2.43
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 +271 -214
- package/package.json +3 -2
package/lib/client.js
CHANGED
|
@@ -526,15 +526,15 @@ window.__ModuleLoader__.load({
|
|
|
526
526
|
{
|
|
527
527
|
style: {
|
|
528
528
|
margin: '12px 0', padding: '14px', borderRadius: '8px',
|
|
529
|
-
background:
|
|
529
|
+
background: CLR_ERR_S2,
|
|
530
530
|
border: '1px solid var(--dsw-alias-state-error-secondary, #ffc1c0)',
|
|
531
531
|
},
|
|
532
532
|
},
|
|
533
533
|
h('div', {
|
|
534
|
-
style: { fontWeight: 600, marginBottom: '6px', color:
|
|
534
|
+
style: { fontWeight: 600, marginBottom: '6px', color: CLR_ERR_P },
|
|
535
535
|
}, '⚠️ Kanban UI Error:'),
|
|
536
536
|
h('div', {
|
|
537
|
-
style: { fontSize: '12px', wordBreak: 'break-all', color:
|
|
537
|
+
style: { fontSize: '12px', wordBreak: 'break-all', color: CLR_LB_P },
|
|
538
538
|
}, String(this.state.error?.message || this.state.error)),
|
|
539
539
|
h(
|
|
540
540
|
'button',
|
|
@@ -579,7 +579,7 @@ window.__ModuleLoader__.load({
|
|
|
579
579
|
return () => clearTimer(timer)
|
|
580
580
|
}
|
|
581
581
|
|
|
582
|
-
const css = '.dkb-section-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.dkb-section-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary);display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:4px;border-bottom:1px solid var(--dsw-alias-border-l2)}.dkb-section-badge{font-size:11px;font-weight:500;padding:2px 8px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary)}.dkb-section-badge-ok{border-color:var(--dsw-alias-state-success-secondary,#34d399);color:var(--dsw-alias-state-success-primary,#059669);background:var(--dsw-alias-state-success-secondary,rgba(16,185,129,0.1))}.dkb-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none}.dkb-cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.dkb-page{padding:0}.dkb-page .dkb-body{border-top:none;margin:0}.dkb-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;display:flex;align-items:center;gap:12px;padding:14px 16px}.dkb-headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.dkb-title{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.dkb-sub{color:var(--dsw-alias-label-secondary);font-size:13px}.dkb-chevron{color:var(--dsw-alias-label-secondary);display:inline-flex;align-items:center;justify-content:center;flex:none;transition:transform .16s}.dkb-chevronOpen{transform:rotate(180deg)}.dkb-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}.dkb-group{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:14px 0 2px}.dkb-field{display:flex;flex-direction:column;gap:6px;padding:10px 0}.dkb-label{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:500;line-height:1.5}.dkb-hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:1.5}.dkb-input{height:34px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px;box-sizing:border-box;width:100%}.dkb-area{min-height:96px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:8px 12px;font-size:13px;box-sizing:border-box;width:100%;resize:vertical;font:inherit}.dkb-input:disabled,.dkb-area:disabled{opacity:.55}.dkb-foot{border-top:1px solid var(--dsw-alias-border-l2);display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px}.dkb-footSplit{justify-content:space-between}.dkb-footLeft{display:flex;align-items:center;gap:8px}.dkb-note{min-width:0;flex:1;margin:0;font-size:12px;line-height:1.5;color:var(--dsw-alias-label-secondary)}.dkb-failed{min-width:0;color:var(--dsw-alias-state-error-primary);flex:1;margin:0;font-size:12px;line-height:1.5}.dkb-save{appearance:none;font:inherit;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:5px 14px;font-size:13px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}.dkb-discard{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:5px 14px;font-size:13px;color:var(--dsw-alias-label-secondary);background:transparent}.dkb-discard:disabled,.dkb-save:disabled{opacity:.4;cursor:default}.dkb-entry-clone{align-items:center;gap:8px;display:flex}.dkb-entry-clone[data-active]{font-weight:600}.dkb-entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.dkb-entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] .dkb-entryLabel{display:none}[data-pane=conversation],[class*=centerCol]{position:relative}[data-dsh-kanban-view]{z-index:60;background:var(--dsw-alias-bg-base);display:none;position:absolute;inset:0}html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [data-dsh-kanban-view]{display:block}html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-kanban-view]),html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-kanban-view]){display:none!important}.dkb-screen{box-sizing:border-box;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 56px;display:flex}.dkb-bar{flex:none;align-items:center;gap:8px;display:flex;flex-wrap:wrap}.dkb-bar .dkb-input,.dkb-bar .dkb-search,.dkb-bar .dkb-save,.dkb-bar .dkb-discard,.dkb-bar .dkb-facetHead,.dkb-bar .dkb-back{height:30px;box-sizing:border-box;padding-top:0;padding-bottom:0;border-radius:8px;font-size:13px;line-height:28px;display:inline-flex;align-items:center}.dkb-bar .dkb-facet{display:inline-flex}.dkb-back{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:flex;flex:none}.dkb-back:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.dkb-backIcon{align-items:center;display:flex}.dkb-archive{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.dkb-archiveList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dkb-archiveRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;align-items:center;gap:12px;padding:8px 12px;display:flex}.dkb-start{display:contents}.dkb-pack{color:var(--dsw-alias-label-secondary)}.dkb-who{color:var(--dsw-alias-label-secondary)}.dkb-sameSession{outline:1px solid var(--dsw-alias-label-secondary);outline-offset:1px}.dkb-waitCount{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:0 10px;height:30px;cursor:pointer;color:var(--dsw-alias-label-primary)}.dkb-archiveOpen{background:none;border:0;padding:0;text-align:left;cursor:pointer;font:inherit}.dkb-archiveTitle{flex:1;font-size:13px;color:var(--dsw-alias-label-primary)}.dkb-urgent{border-left-width:3px;border-left-style:solid;padding-left:9px}.dkb-cardMenu{position:relative;align-self:flex-start;opacity:0;transition:opacity .12s}.dkb-taskCard:hover .dkb-cardMenu,.dkb-taskCard:focus-within .dkb-cardMenu,.dkb-taskCard:focus-visible .dkb-cardMenu{opacity:1}.dkb-groupHead{appearance:none;width:100%;font:inherit;color:var(--dsw-alias-label-secondary);text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:8px 2px 4px;font-size:11px;font-weight:600;display:flex}.dkb-groupHead:first-child{border-top:0;padding-top:2px}.dkb-groupHead:hover{color:var(--dsw-alias-label-primary)}.dkb-groupCount{margin-left:auto;color:var(--dsw-alias-label-tertiary);font-weight:400}.dkb-shown{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;flex:none}.dkb-moveBtn{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-tertiary);background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline dotted}.dkb-moveBtn:hover{color:var(--dsw-alias-label-primary)}.dkb-taskCard:focus-visible{outline:2px solid var(--dsw-alias-border-l3);outline-offset:2px}.dkb-sync{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;flex:none}.dkb-syncBad{color:var(--dsw-alias-state-error-primary,#e5534b);cursor:help}.dkb-facet{position:relative;flex:none}.dkb-facetHead{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:4px 10px;font-size:13px;white-space:nowrap}.dkb-facetHead:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetOn{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3);background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetList{position:absolute;top:calc(100% + 4px);left:0;z-index:60;min-width:180px;max-height:280px;overflow-y:auto;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;box-shadow:var(--dsw-shadow-lv2);padding:6px;display:flex;flex-direction:column;gap:2px}.dkb-facetRow{align-items:center;gap:8px;padding:4px 6px;border-radius:6px;font-size:13px;cursor:pointer;display:flex}.dkb-facetRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetName{flex:1;color:var(--dsw-alias-label-primary)}.dkb-barTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700;margin-right:auto}.dkb-cols{overscroll-behavior-inline:contain;scrollbar-color:var(--dsw-alias-border-l3) var(--dsw-alias-interactive-bg-hover);scrollbar-width:thin;flex:1;gap:12px;min-height:0;padding-bottom:6px;display:flex;overflow:auto hidden}.dkb-cols::-webkit-scrollbar{height:10px}.dkb-cols::-webkit-scrollbar-track{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px}.dkb-cols::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l3);background-clip:content-box;border:2px solid transparent;border-radius:999px}.dkb-col{flex:1 1 220px;min-width:220px;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}.dkb-colOver{border-color:var(--dsw-alias-border-l3)}.dkb-colHead{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:6px;padding:10px 12px;display:flex}.dkb-colHead:hover{background:var(--dsw-alias-interactive-bg-hover)}.dkb-colShut{flex:0 0 auto;min-width:0;width:40px}.dkb-colShut .dkb-colHead{writing-mode:vertical-rl;height:100%;width:auto;padding:12px 10px;justify-content:flex-start;gap:10px}.dkb-colShut .dkb-colHead .dkb-dot{writing-mode:horizontal-tb}.dkb-colShut .dkb-count{writing-mode:horizontal-tb}.dkb-dot{border-radius:50%;flex:none;width:8px;height:8px}.dkb-dot[data-col=backlog]{background:var(--dsw-alias-label-tertiary)}.dkb-dot[data-col=in-progress]{background:var(--dsw-alias-state-warn-primary)}.dkb-dot[data-col=review]{background:var(--dsw-alias-state-business-primary)}.dkb-dot[data-col=deploy]{background:var(--dsw-alias-state-business-primary)}.dkb-dot[data-col=cleanup]{background:var(--dsw-alias-label-tertiary)}.dkb-dot[data-col=done]{background:var(--dsw-alias-state-success-primary)}.dkb-colName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:13px;font-weight:700;overflow:hidden}.dkb-count{min-width:20px;text-align:center;color:var(--dsw-alias-bg-base);background:var(--dsw-alias-label-tertiary);border-radius:999px;flex:none;padding:1px 8px;font-size:12px;font-weight:600}.dkb-count[data-col=in-progress]{background:var(--dsw-alias-state-warn-primary)}.dkb-count[data-col=review]{background:var(--dsw-alias-state-business-primary)}.dkb-count[data-col=deploy]{background:var(--dsw-alias-state-business-primary)}.dkb-count[data-col=done]{background:var(--dsw-alias-state-success-primary)}.dkb-countOver{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-inverted,#fff)}.dkb-overdue{border-color:var(--dsw-alias-state-error-primary)}.dkb-dueOver{color:var(--dsw-alias-state-error-primary);font-weight:600}.dkb-list{flex-direction:column;flex:1;gap:8px;min-height:0;padding:2px 8px 10px;display:flex;overflow-y:auto}.dkb-empty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:24px 8px;font-size:12px}.dkb-taskCard{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}.dkb-taskCard:hover{box-shadow:var(--dsw-shadow-lv2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}.dkb-taskTitle{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.dkb-mdBody{color:var(--dsw-alias-label-primary);font-size:13px;line-height:1.55;display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto}.dkb-mdPara{margin:0;overflow-wrap:anywhere}.dkb-mdHead{color:var(--dsw-alias-label-primary);font-weight:700;margin:6px 0 0;line-height:1.35}.dkb-mdHead1{font-size:15px}.dkb-mdHead2{font-size:14px}.dkb-mdHead3{font-size:13px;color:var(--dsw-alias-label-secondary)}.dkb-mdList{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:3px}.dkb-mdCode{margin:0;padding:8px 10px;border-radius:8px;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font-size:12px;overflow-x:auto;white-space:pre}.dkb-mdQuote{margin:0;padding-left:10px;border-left:2px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary)}.dkb-mdRule{border:0;border-top:1px solid var(--dsw-alias-border-l2);margin:2px 0;width:100%}.dkb-code{background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);border-radius:4px;padding:0 4px;font-size:12px}.dkb-issueLink{color:var(--dsw-alias-label-secondary)}.dkb-taskHead{align-items:center;gap:6px;flex-wrap:wrap;display:flex}.dkb-ref{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.dkb-refRepo{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:1px 7px;font-size:11px;font-weight:600}.dkb-refNum{flex:none;color:var(--dsw-alias-label-tertiary);font-size:11px;font-family:var(--dsw-font-family-mono,ui-monospace,SFMono-Regular,Menlo,monospace);letter-spacing:.02em}.dkb-refLink{text-decoration:none}.dkb-refLink:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dkb-taskRef{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;font-size:11px;display:flex}.dkb-planLine{color:var(--dsw-alias-label-secondary);font-size:11px;line-height:1.35;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.dkb-state{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:0 5px;font-size:10px;line-height:16px}.dkb-stateLive{border-color:var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);font-weight:600}.dkb-batchList{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.dkb-batchRow{align-items:baseline;gap:8px;font-size:13px;color:var(--dsw-alias-label-primary);display:flex}.dkb-pick{margin:0;flex:none;opacity:0;transition:opacity .12s}.dkb-taskCard:hover .dkb-pick,.dkb-taskCard:focus-within .dkb-pick,.dkb-pickOn{opacity:1}.dkb-toChat{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline dotted}.dkb-toChat:hover{color:var(--dsw-alias-label-primary)}.dkb-planList{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.dkb-planItem{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.4;display:flex;gap:8px;align-items:baseline}.dkb-planItem.dkb-planDone{color:var(--dsw-alias-label-tertiary);text-decoration:line-through}.dkb-planItem.dkb-planActive{color:var(--dsw-alias-label-primary);font-weight:600;text-decoration:none}.dkb-planMark{flex:none;width:14px;text-align:center}.dkb-tags{display:flex;flex-wrap:wrap;gap:4px}.dkb-waiting{color:var(--dsw-alias-state-warn-primary);font-weight:600}.dkb-waitDot{border-radius:50%;flex:none;width:8px;height:8px;background:var(--dsw-alias-state-warn-primary);display:inline-block}.dkb-tag{white-space:nowrap;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover);border:1px solid transparent;border-radius:999px;padding:1px 7px;font-size:11px;line-height:1.5;font-weight:500}.dkb-modal{position:absolute;inset:0;background:var(--dsw-alias-bg-mask-1,rgba(0,0,0,.4));display:flex;align-items:center;justify-content:center;padding:24px 24px 84px;box-sizing:border-box;z-index:70}.dkb-panel{width:min(720px,100%);max-height:100%;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;padding:16px;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column;gap:12px}@media (min-width:960px){.dkb-panelWide{width:min(1100px,96%)}.dkb-drawerGrid{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}}.dkb-drawerSidebar{display:flex;flex-direction:column;gap:12px;border-right:1px solid var(--dsw-alias-border-l2);padding-right:16px}.dkb-drawerMain{display:flex;flex-direction:column;gap:12px;min-width:0}.dkb-panelBody{white-space:pre-wrap;color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.5;margin:0}.dkb-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.dkb-logRow{color:var(--dsw-alias-label-secondary);font-size:12px}.dkb-dialog{position:absolute;inset:0;background:var(--dsw-alias-bg-mask-1,rgba(0,0,0,.4));display:flex;align-items:center;justify-content:center;z-index:80}.dkb-dialogBox{width:min(560px,94%);max-height:86%;overflow-y:auto;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px}.dkb-issue{appearance:none;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:8px 10px;color:var(--dsw-alias-label-primary);font-size:13px}.dkb-issueUsed{opacity:.5}.dkb-row{display:flex;gap:8px;align-items:center}.dkb-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 240px;padding:6px 10px;font-size:13px}.dkb-search::placeholder{color:var(--dsw-alias-label-tertiary)}.dkb-slot{height:2px;border-radius:2px;background:transparent;flex:none}.dkb-slotOn{background:var(--dsw-alias-state-business-primary)}.dkb-danger{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-state-error-primary);border-radius:8px;padding:5px 14px;font-size:13px;color:var(--dsw-alias-state-error-primary);background:transparent}.dkb-danger:hover{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-bg-base)}.dkb-quickFilterBar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:4px 0}.dkb-filterChip{appearance:none;font:inherit;cursor:pointer;background:var(--dsw-alias-interactive-bg-hover);border:1px solid var(--dsw-alias-border-l2);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--dsw-alias-label-secondary);transition:all .15s}.dkb-filterChip:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.dkb-filterChipActive{background:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary-inverted,#fff);border-color:transparent;font-weight:600}.dkb-epicTag{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 12%,transparent);color:var(--dsw-alias-state-business-primary,#0969da);font-weight:600}.dkb-progressBar{height:4px;background:var(--dsw-alias-border-l2);border-radius:2px;overflow:hidden;margin:4px 0}.dkb-progressFill{height:100%;background:var(--dsw-alias-state-success-primary,#16a34a);transition:width .2s}.dkb-consolePre{background:var(--dsw-alias-bg-layer-1,#0d1117);color:var(--dsw-alias-state-business-primary,#58a6ff);border:1px solid var(--dsw-alias-border-l2);padding:12px;border-radius:8px;font-family:monospace;font-size:11px;max-height:260px;overflow-y:auto;white-space:pre-wrap}'
|
|
582
|
+
const css = '.dkb-section-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.dkb-section-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary);display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:4px;border-bottom:1px solid var(--dsw-alias-border-l2)}.dkb-section-badge{font-size:11px;font-weight:500;padding:2px 8px;border-radius:999px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary)}.dkb-section-badge-ok{border-color:var(--dsw-alias-state-success-secondary,#34d399);color:var(--dsw-alias-state-success-primary,#059669);background:var(--dsw-alias-state-success-secondary,rgba(16,185,129,0.1))}.dkb-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none}.dkb-cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.dkb-page{padding:0}.dkb-page .dkb-body{border-top:none;margin:0}.dkb-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;display:flex;align-items:center;gap:12px;padding:14px 16px}.dkb-headText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.dkb-title{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.dkb-sub{color:var(--dsw-alias-label-secondary);font-size:13px}.dkb-chevron{color:var(--dsw-alias-label-secondary);display:inline-flex;align-items:center;justify-content:center;flex:none;transition:transform .16s}.dkb-chevronOpen{transform:rotate(180deg)}.dkb-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}.dkb-group{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:14px 0 2px}.dkb-field{display:flex;flex-direction:column;gap:6px;padding:10px 0}.dkb-label{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:500;line-height:1.5}.dkb-hint{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:1.5}.dkb-input{height:34px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:0 12px;font-size:13px;box-sizing:border-box;width:100%}.dkb-area{min-height:96px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:8px;padding:8px 12px;font-size:13px;box-sizing:border-box;width:100%;resize:vertical;font:inherit}.dkb-input:disabled,.dkb-area:disabled{opacity:.55}.dkb-foot{border-top:1px solid var(--dsw-alias-border-l2);display:flex;justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px}.dkb-footSplit{justify-content:space-between}.dkb-footLeft{display:flex;align-items:center;gap:8px}.dkb-note{min-width:0;flex:1;margin:0;font-size:12px;line-height:1.5;color:var(--dsw-alias-label-secondary)}.dkb-failed{min-width:0;color:var(--dsw-alias-state-error-primary);flex:1;margin:0;font-size:12px;line-height:1.5}.dkb-save{appearance:none;font:inherit;cursor:pointer;border:1px solid transparent;border-radius:8px;padding:5px 14px;font-size:13px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3)}.dkb-discard{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:5px 14px;font-size:13px;color:var(--dsw-alias-label-secondary);background:transparent}.dkb-discard:disabled,.dkb-save:disabled{opacity:.4;cursor:default}.dkb-entry-clone{display:none!important}.dkb-nav-entry{display:flex;align-items:center;width:100%;box-sizing:border-box}.dkb-nav-row{display:flex;align-items:center;gap:8px;width:100%;border:0;background:transparent;cursor:pointer;color:inherit;font:inherit;text-align:left;padding:6px 8px;border-radius:6px;transition:background-color .15s}.dkb-nav-row:hover{background:var(--dsw-alias-interactive-bg-hover,rgba(128,128,128,.08))}.dkb-nav-entry[data-active="true"] .dkb-nav-row,.dkb-nav-entry.panelEntryActive .dkb-nav-row{background:var(--dsw-alias-interactive-bg-active,rgba(128,128,128,.16));font-weight:600}.dkb-nav-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:16px;height:16px}.dkb-nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.4}[data-sidebar-collapsed] .dkb-nav-label,[class*=rail] .dkb-nav-label,[data-state=collapsed] .dkb-nav-label{display:none!important}[data-sidebar-collapsed] .dkb-nav-entry,[class*=rail] .dkb-nav-entry,[data-state=collapsed] .dkb-nav-entry{width:36px;justify-content:center}[data-sidebar-collapsed] .dkb-nav-row,[class*=rail] .dkb-nav-row,[data-state=collapsed] .dkb-nav-row{justify-content:center;padding:6px;width:36px;height:36px}[data-pane=conversation],[class*=centerCol]{position:relative}[data-dsh-kanban-view]{z-index:60;background:var(--dsw-alias-bg-base);display:none;position:absolute;inset:0}html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [data-dsh-kanban-view]{display:block}html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [data-pane=conversation]>:not([data-dsh-kanban-view]),html[data-dsh-kanban-active]:not([data-dsh-ssh-active]) [class*=centerCol]>:not([data-dsh-kanban-view]){display:none!important}.dkb-screen{box-sizing:border-box;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 56px;display:flex}.dkb-bar{flex:none;align-items:center;gap:8px;display:flex;flex-wrap:wrap}.dkb-bar .dkb-input,.dkb-bar .dkb-search,.dkb-bar .dkb-save,.dkb-bar .dkb-discard,.dkb-bar .dkb-facetHead,.dkb-bar .dkb-back{height:30px;box-sizing:border-box;padding-top:0;padding-bottom:0;border-radius:8px;font-size:13px;line-height:28px;display:inline-flex;align-items:center}.dkb-bar .dkb-facet{display:inline-flex}.dkb-back{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:flex;flex:none}.dkb-back:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.dkb-backIcon{align-items:center;display:flex}.dkb-archive{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.dkb-archiveList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dkb-archiveRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;align-items:center;gap:12px;padding:8px 12px;display:flex}.dkb-start{display:contents}.dkb-pack{color:var(--dsw-alias-label-secondary)}.dkb-who{color:var(--dsw-alias-label-secondary)}.dkb-sameSession{outline:1px solid var(--dsw-alias-label-secondary);outline-offset:1px}.dkb-waitCount{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;padding:0 10px;height:30px;cursor:pointer;color:var(--dsw-alias-label-primary)}.dkb-archiveOpen{background:none;border:0;padding:0;text-align:left;cursor:pointer;font:inherit}.dkb-archiveTitle{flex:1;font-size:13px;color:var(--dsw-alias-label-primary)}.dkb-urgent{border-left-width:3px;border-left-style:solid;padding-left:9px}.dkb-cardMenu{position:relative;align-self:flex-start;opacity:0;transition:opacity .12s}.dkb-taskCard:hover .dkb-cardMenu,.dkb-taskCard:focus-within .dkb-cardMenu,.dkb-taskCard:focus-visible .dkb-cardMenu{opacity:1}.dkb-groupHead{appearance:none;width:100%;font:inherit;color:var(--dsw-alias-label-secondary);text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid var(--dsw-alias-border-l2);align-items:center;gap:6px;padding:8px 2px 4px;font-size:11px;font-weight:600;display:flex}.dkb-groupHead:first-child{border-top:0;padding-top:2px}.dkb-groupHead:hover{color:var(--dsw-alias-label-primary)}.dkb-groupCount{margin-left:auto;color:var(--dsw-alias-label-tertiary);font-weight:400}.dkb-shown{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;flex:none}.dkb-moveBtn{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-tertiary);background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline dotted}.dkb-moveBtn:hover{color:var(--dsw-alias-label-primary)}.dkb-taskCard:focus-visible{outline:2px solid var(--dsw-alias-border-l3);outline-offset:2px}.dkb-sync{color:var(--dsw-alias-label-tertiary);white-space:nowrap;font-size:12px;flex:none}.dkb-syncBad{color:var(--dsw-alias-state-error-primary,#e5534b);cursor:help}.dkb-facet{position:relative;flex:none}.dkb-facetHead{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:4px 10px;font-size:13px;white-space:nowrap}.dkb-facetHead:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetOn{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l3);background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetList{position:absolute;top:calc(100% + 4px);left:0;z-index:60;min-width:180px;max-height:280px;overflow-y:auto;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;box-shadow:var(--dsw-shadow-lv2);padding:6px;display:flex;flex-direction:column;gap:2px}.dkb-facetRow{align-items:center;gap:8px;padding:4px 6px;border-radius:6px;font-size:13px;cursor:pointer;display:flex}.dkb-facetRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.dkb-facetName{flex:1;color:var(--dsw-alias-label-primary)}.dkb-barTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;margin:0;font-size:16px;font-weight:700;margin-right:auto}.dkb-cols{overscroll-behavior-inline:contain;scrollbar-color:var(--dsw-alias-border-l3) var(--dsw-alias-interactive-bg-hover);scrollbar-width:thin;flex:1;gap:12px;min-height:0;padding-bottom:6px;display:flex;overflow:auto hidden}.dkb-cols::-webkit-scrollbar{height:10px}.dkb-cols::-webkit-scrollbar-track{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px}.dkb-cols::-webkit-scrollbar-thumb{background:var(--dsw-alias-border-l3);background-clip:content-box;border:2px solid transparent;border-radius:999px}.dkb-col{flex:1 1 220px;min-width:220px;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}.dkb-colOver{border-color:var(--dsw-alias-border-l3)}.dkb-colHead{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:6px;padding:10px 12px;display:flex}.dkb-colHead:hover{background:var(--dsw-alias-interactive-bg-hover)}.dkb-colShut{flex:0 0 auto;min-width:0;width:40px}.dkb-colShut .dkb-colHead{writing-mode:vertical-rl;height:100%;width:auto;padding:12px 10px;justify-content:flex-start;gap:10px}.dkb-colShut .dkb-colHead .dkb-dot{writing-mode:horizontal-tb}.dkb-colShut .dkb-count{writing-mode:horizontal-tb}.dkb-dot{border-radius:50%;flex:none;width:8px;height:8px}.dkb-dot[data-col=backlog]{background:var(--dsw-alias-label-tertiary)}.dkb-dot[data-col=in-progress]{background:var(--dsw-alias-state-warn-primary)}.dkb-dot[data-col=review]{background:var(--dsw-alias-state-business-primary)}.dkb-dot[data-col=deploy]{background:var(--dsw-alias-state-business-primary)}.dkb-dot[data-col=cleanup]{background:var(--dsw-alias-label-tertiary)}.dkb-dot[data-col=done]{background:var(--dsw-alias-state-success-primary)}.dkb-colName{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;flex:1;margin:0;font-size:13px;font-weight:700;overflow:hidden}.dkb-count{min-width:20px;text-align:center;color:var(--dsw-alias-bg-base);background:var(--dsw-alias-label-tertiary);border-radius:999px;flex:none;padding:1px 8px;font-size:12px;font-weight:600}.dkb-count[data-col=in-progress]{background:var(--dsw-alias-state-warn-primary)}.dkb-count[data-col=review]{background:var(--dsw-alias-state-business-primary)}.dkb-count[data-col=deploy]{background:var(--dsw-alias-state-business-primary)}.dkb-count[data-col=done]{background:var(--dsw-alias-state-success-primary)}.dkb-countOver{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-inverted,#fff)}.dkb-overdue{border-color:var(--dsw-alias-state-error-primary)}.dkb-dueOver{color:var(--dsw-alias-state-error-primary);font-weight:600}.dkb-list{flex-direction:column;flex:1;gap:8px;min-height:0;padding:2px 8px 10px;display:flex;overflow-y:auto}.dkb-empty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:24px 8px;font-size:12px}.dkb-taskCard{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}.dkb-taskCard:hover{box-shadow:var(--dsw-shadow-lv2);border-color:var(--dsw-alias-border-l3);transform:translateY(-1px)}.dkb-taskTitle{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:13px;font-weight:600;line-height:1.35;display:-webkit-box;overflow:hidden}.dkb-mdBody{color:var(--dsw-alias-label-primary);font-size:13px;line-height:1.55;display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto}.dkb-mdPara{margin:0;overflow-wrap:anywhere}.dkb-mdHead{color:var(--dsw-alias-label-primary);font-weight:700;margin:6px 0 0;line-height:1.35}.dkb-mdHead1{font-size:15px}.dkb-mdHead2{font-size:14px}.dkb-mdHead3{font-size:13px;color:var(--dsw-alias-label-secondary)}.dkb-mdList{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:3px}.dkb-mdCode{margin:0;padding:8px 10px;border-radius:8px;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);font-size:12px;overflow-x:auto;white-space:pre}.dkb-mdQuote{margin:0;padding-left:10px;border-left:2px solid var(--dsw-alias-border-l3);color:var(--dsw-alias-label-secondary)}.dkb-mdRule{border:0;border-top:1px solid var(--dsw-alias-border-l2);margin:2px 0;width:100%}.dkb-code{background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);border-radius:4px;padding:0 4px;font-size:12px}.dkb-issueLink{color:var(--dsw-alias-label-secondary)}.dkb-taskHead{align-items:center;gap:6px;flex-wrap:wrap;display:flex}.dkb-ref{align-items:baseline;gap:5px;min-width:0;display:inline-flex}.dkb-refRepo{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:1px 7px;font-size:11px;font-weight:600}.dkb-refNum{flex:none;color:var(--dsw-alias-label-tertiary);font-size:11px;font-family:var(--dsw-font-family-mono,ui-monospace,SFMono-Regular,Menlo,monospace);letter-spacing:.02em}.dkb-refLink{text-decoration:none}.dkb-refLink:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dkb-taskRef{color:var(--dsw-alias-label-tertiary);align-items:center;gap:8px;font-size:11px;display:flex}.dkb-planLine{color:var(--dsw-alias-label-secondary);font-size:11px;line-height:1.35;overflow:hidden;-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box}.dkb-state{border:1px solid var(--dsw-alias-border-l2);border-radius:6px;padding:0 5px;font-size:10px;line-height:16px}.dkb-stateLive{border-color:var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);font-weight:600}.dkb-batchList{list-style:none;margin:0;padding:0;max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.dkb-batchRow{align-items:baseline;gap:8px;font-size:13px;color:var(--dsw-alias-label-primary);display:flex}.dkb-pick{margin:0;flex:none;opacity:0;transition:opacity .12s}.dkb-taskCard:hover .dkb-pick,.dkb-taskCard:focus-within .dkb-pick,.dkb-pickOn{opacity:1}.dkb-toChat{appearance:none;font:inherit;cursor:pointer;color:var(--dsw-alias-label-secondary);background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline dotted}.dkb-toChat:hover{color:var(--dsw-alias-label-primary)}.dkb-planList{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.dkb-planItem{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.4;display:flex;gap:8px;align-items:baseline}.dkb-planItem.dkb-planDone{color:var(--dsw-alias-label-tertiary);text-decoration:line-through}.dkb-planItem.dkb-planActive{color:var(--dsw-alias-label-primary);font-weight:600;text-decoration:none}.dkb-planMark{flex:none;width:14px;text-align:center}.dkb-tags{display:flex;flex-wrap:wrap;gap:4px}.dkb-waiting{color:var(--dsw-alias-state-warn-primary);font-weight:600}.dkb-waitDot{border-radius:50%;flex:none;width:8px;height:8px;background:var(--dsw-alias-state-warn-primary);display:inline-block}.dkb-tag{white-space:nowrap;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-interactive-bg-hover);border:1px solid transparent;border-radius:999px;padding:1px 7px;font-size:11px;line-height:1.5;font-weight:500}.dkb-modal{position:absolute;inset:0;background:var(--dsw-alias-bg-mask-1,rgba(0,0,0,.4));display:flex;align-items:center;justify-content:center;padding:24px 24px 84px;box-sizing:border-box;z-index:70}.dkb-panel{width:min(720px,100%);max-height:100%;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;padding:16px;box-sizing:border-box;overflow-y:auto;display:flex;flex-direction:column;gap:12px}@media (min-width:960px){.dkb-panelWide{width:min(1100px,96%)}.dkb-drawerGrid{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}}.dkb-drawerSidebar{display:flex;flex-direction:column;gap:12px;border-right:1px solid var(--dsw-alias-border-l2);padding-right:16px}.dkb-drawerMain{display:flex;flex-direction:column;gap:12px;min-width:0}.dkb-panelBody{white-space:pre-wrap;color:var(--dsw-alias-label-secondary);font-size:13px;line-height:1.5;margin:0}.dkb-log{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.dkb-logRow{color:var(--dsw-alias-label-secondary);font-size:12px}.dkb-dialog{position:absolute;inset:0;background:var(--dsw-alias-bg-mask-1,rgba(0,0,0,.4));display:flex;align-items:center;justify-content:center;z-index:80}.dkb-dialogBox{width:min(560px,94%);max-height:86%;overflow-y:auto;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:10px}.dkb-issue{appearance:none;font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:8px 10px;color:var(--dsw-alias-label-primary);font-size:13px}.dkb-issueUsed{opacity:.5}.dkb-row{display:flex;gap:8px;align-items:center}.dkb-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 240px;padding:6px 10px;font-size:13px}.dkb-search::placeholder{color:var(--dsw-alias-label-tertiary)}.dkb-slot{height:2px;border-radius:2px;background:transparent;flex:none}.dkb-slotOn{background:var(--dsw-alias-state-business-primary)}.dkb-danger{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-state-error-primary);border-radius:8px;padding:5px 14px;font-size:13px;color:var(--dsw-alias-state-error-primary);background:transparent}.dkb-danger:hover{background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-bg-base)}.dkb-quickFilterBar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:4px 0}.dkb-filterChip{appearance:none;font:inherit;cursor:pointer;background:var(--dsw-alias-interactive-bg-hover);border:1px solid var(--dsw-alias-border-l2);border-radius:999px;padding:3px 10px;font-size:12px;color:var(--dsw-alias-label-secondary);transition:all .15s}.dkb-filterChip:hover{background:var(--dsw-alias-interactive-bg-active);color:var(--dsw-alias-label-primary)}.dkb-filterChipActive{background:var(--dsw-alias-state-business-primary);color:var(--dsw-alias-label-primary-inverted,#fff);border-color:transparent;font-weight:600}.dkb-epicTag{background:color-mix(in srgb,var(--dsw-alias-state-business-primary) 12%,transparent);color:var(--dsw-alias-state-business-primary,#0969da);font-weight:600}.dkb-progressBar{height:4px;background:var(--dsw-alias-border-l2);border-radius:2px;overflow:hidden;margin:4px 0}.dkb-progressFill{height:100%;background:var(--dsw-alias-state-success-primary,#16a34a);transition:width .2s}.dkb-consolePre{background:var(--dsw-alias-bg-layer-1,#0d1117);color:var(--dsw-alias-state-business-primary,#58a6ff);border:1px solid var(--dsw-alias-border-l2);padding:12px;border-radius:8px;font-family:monospace;font-size:11px;max-height:260px;overflow-y:auto;white-space:pre-wrap}'
|
|
583
583
|
|
|
584
584
|
const en = {
|
|
585
585
|
'updater.title': 'Plugin Updates',
|
|
@@ -1730,7 +1730,7 @@ window.__ModuleLoader__.load({
|
|
|
1730
1730
|
return h('div', {
|
|
1731
1731
|
className: 'dkb-section-card',
|
|
1732
1732
|
key: 'remote-test-card',
|
|
1733
|
-
style: { borderLeft: '3px solid var(--dsw-alias-state-business-primary, #0969da)', background:
|
|
1733
|
+
style: { borderLeft: '3px solid var(--dsw-alias-state-business-primary, #0969da)', background: CLR_BG_F6, padding: '12px 14px', marginBottom: '12px' },
|
|
1734
1734
|
},
|
|
1735
1735
|
h('div', {
|
|
1736
1736
|
style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: result ? '8px' : '0' },
|
|
@@ -1750,11 +1750,11 @@ window.__ModuleLoader__.load({
|
|
|
1750
1750
|
padding: '6px 8px',
|
|
1751
1751
|
borderRadius: '4px',
|
|
1752
1752
|
background: (result.ssh?.ok || result.server?.ok)
|
|
1753
|
-
?
|
|
1754
|
-
:
|
|
1753
|
+
? CLR_SUC_S
|
|
1754
|
+
: CLR_ERR_S2,
|
|
1755
1755
|
color: (result.ssh?.ok || result.server?.ok)
|
|
1756
|
-
?
|
|
1757
|
-
:
|
|
1756
|
+
? CLR_SUC_P
|
|
1757
|
+
: CLR_ERR_P,
|
|
1758
1758
|
},
|
|
1759
1759
|
},
|
|
1760
1760
|
h('div', null, (result.ssh?.ok ? '✓ SSH: OK (' + result.ssh.latencyMs + 'ms)' : '✗ SSH: ' + (result.ssh?.error || 'unreachable'))),
|
|
@@ -1826,7 +1826,7 @@ window.__ModuleLoader__.load({
|
|
|
1826
1826
|
),
|
|
1827
1827
|
),
|
|
1828
1828
|
h('div', { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', flexWrap: 'wrap', gap: '8px', marginTop: '6px' } },
|
|
1829
|
-
h('span', { style: { fontSize: '12px', color:
|
|
1829
|
+
h('span', { style: { fontSize: '12px', color: CLR_LB_S } },
|
|
1830
1830
|
updateAvailable ? (t('updater.latest') + ': v' + latestVer) : (t('updater.current') + ': v' + currentVer)
|
|
1831
1831
|
),
|
|
1832
1832
|
h('div', { style: { display: 'flex', gap: '8px' } },
|
|
@@ -1958,7 +1958,7 @@ window.__ModuleLoader__.load({
|
|
|
1958
1958
|
className: 'dkb-hint', key: 'tm-notice',
|
|
1959
1959
|
style: {
|
|
1960
1960
|
padding: '8px 12px', marginBottom: '8px', borderRadius: '6px',
|
|
1961
|
-
background:
|
|
1961
|
+
background: CLR_BG_L2,
|
|
1962
1962
|
borderLeft: '3px solid var(--dsw-alias-state-business-primary, #0969da)',
|
|
1963
1963
|
fontSize: '12px', lineHeight: '1.5',
|
|
1964
1964
|
},
|
|
@@ -2032,7 +2032,7 @@ window.__ModuleLoader__.load({
|
|
|
2032
2032
|
key: 'cost-meter-notice',
|
|
2033
2033
|
style: {
|
|
2034
2034
|
borderLeft: '3px solid var(--dsw-alias-state-business-primary, #0969da)',
|
|
2035
|
-
background:
|
|
2035
|
+
background: CLR_BG_F6,
|
|
2036
2036
|
padding: '12px 14px',
|
|
2037
2037
|
marginBottom: '12px',
|
|
2038
2038
|
},
|
|
@@ -2112,7 +2112,7 @@ window.__ModuleLoader__.load({
|
|
|
2112
2112
|
}),
|
|
2113
2113
|
waiting ? h('span', { className: 'dkb-waitDot' }) : null,
|
|
2114
2114
|
waiting ? h('span', { className: 'dkb-waiting' }, t('board.waiting')) : null,
|
|
2115
|
-
task.stalled ? h('span', { className: 'dkb-tag', style: { background:
|
|
2115
|
+
task.stalled ? h('span', { className: 'dkb-tag', style: { background: CLR_WRN_S, color: CLR_WRN_P, borderColor: 'var(--dsw-alias-state-warn-secondary, #d4a72c)' }, title: task.stalledReason || 'Stalled' }, '⚠️ ' + (t('watchdog.stalled') || 'Stalled')) : null,
|
|
2116
2116
|
taskRef(task, t),
|
|
2117
2117
|
task.isEpic ? h('span', { className: 'dkb-tag dkb-epicTag', title: t('epic.badge') }, '👑 ' + t('epic.badge')) : null,
|
|
2118
2118
|
task.parentId ? h('span', { className: 'dkb-tag', style: { opacity: 0.75 } }, '↳') : null,
|
|
@@ -2123,9 +2123,9 @@ window.__ModuleLoader__.load({
|
|
|
2123
2123
|
? h('span', {
|
|
2124
2124
|
className: 'dkb-tag',
|
|
2125
2125
|
style: {
|
|
2126
|
-
background:
|
|
2127
|
-
color:
|
|
2128
|
-
borderColor:
|
|
2126
|
+
background: CLR_ERR_S2,
|
|
2127
|
+
color: CLR_ERR_P,
|
|
2128
|
+
borderColor: CLR_ERR_S2,
|
|
2129
2129
|
fontWeight: 600,
|
|
2130
2130
|
},
|
|
2131
2131
|
title: 'Blocked by unfinished dependencies'
|
|
@@ -2135,34 +2135,34 @@ window.__ModuleLoader__.load({
|
|
|
2135
2135
|
? h('span', {
|
|
2136
2136
|
className: 'dkb-tag',
|
|
2137
2137
|
style: {
|
|
2138
|
-
background:
|
|
2139
|
-
color:
|
|
2138
|
+
background: CLR_BIZ_T,
|
|
2139
|
+
color: CLR_BIZ_P,
|
|
2140
2140
|
},
|
|
2141
2141
|
title: 'Blocks ' + task.blocks.length + ' tasks'
|
|
2142
2142
|
}, '⛔ ' + task.blocks.length)
|
|
2143
2143
|
: null,
|
|
2144
2144
|
task.cron ? h('span', { className: 'dkb-tag', title: task.cron }, '⏰ cron') : null,
|
|
2145
2145
|
task.progressDump ? h('span', { className: 'dkb-tag', title: 'PROGRESSDUMP' }, '📋 dump') : null,
|
|
2146
|
-
task.rejectReason ? h('span', { className: 'dkb-tag', style: { background:
|
|
2146
|
+
task.rejectReason ? h('span', { className: 'dkb-tag', style: { background: CLR_ERR_S2, color: CLR_ERR_P, borderColor: CLR_ERR_S2 }, title: task.rejectReason }, '↩ ' + t('acceptance.rejectedBadge')) : null,
|
|
2147
2147
|
Array.isArray(task.checklist) && task.checklist.length > 0
|
|
2148
2148
|
? h('span', { className: 'dkb-tag', title: 'DoD Checklist' }, `☑ ${task.checklist.filter((i) => i.completed).length}/${task.checklist.length}`)
|
|
2149
2149
|
: null,
|
|
2150
2150
|
task.report?.verification?.status === 'passed'
|
|
2151
|
-
? h('span', { className: 'dkb-tag', style: { background:
|
|
2151
|
+
? h('span', { className: 'dkb-tag', style: { background: CLR_SUC_S, color: CLR_SUC_P, borderColor: 'var(--dsw-alias-state-success-secondary, #4ac26b)' }, title: task.report.verification.command || 'Tests passed' }, '✓ PASS')
|
|
2152
2152
|
: (task.report?.verification?.status === 'failed'
|
|
2153
|
-
? h('span', { className: 'dkb-tag', style: { background:
|
|
2153
|
+
? h('span', { className: 'dkb-tag', style: { background: CLR_ERR_S2, color: CLR_ERR_P, borderColor: CLR_ERR_S2 }, title: task.report.verification.command || 'Tests failed' }, '✗ FAIL')
|
|
2154
2154
|
: null),
|
|
2155
2155
|
task.costMetrics && task.costMetrics.totalTokens > 0
|
|
2156
2156
|
? h('span', {
|
|
2157
2157
|
className: 'dkb-tag',
|
|
2158
|
-
style: { background:
|
|
2158
|
+
style: { background: CLR_BIZ_T, color: CLR_BIZ_P, borderColor: CLR_BUS_54 },
|
|
2159
2159
|
title: 'Tokens: ' + task.costMetrics.totalTokens.toLocaleString()
|
|
2160
2160
|
}, '🪙 ' + (task.costMetrics.totalTokens / 1000).toFixed(1) + 'k' + (task.costMetrics.costFormatted ? ' · ' + task.costMetrics.costFormatted : ''))
|
|
2161
2161
|
: null,
|
|
2162
2162
|
task.costLimitExceeded
|
|
2163
2163
|
? h('span', {
|
|
2164
2164
|
className: 'dkb-tag',
|
|
2165
|
-
style: { background:
|
|
2165
|
+
style: { background: CLR_WRN_S, color: CLR_WRN_P, borderColor: 'var(--dsw-alias-state-warn-secondary, #d4a72c)' },
|
|
2166
2166
|
title: 'Budget limit exceeded'
|
|
2167
2167
|
}, '⚠️ ' + t('card.costLimitExceeded'))
|
|
2168
2168
|
: null,
|
|
@@ -2179,7 +2179,7 @@ window.__ModuleLoader__.load({
|
|
|
2179
2179
|
task.state === 'running' && task.liveStep
|
|
2180
2180
|
? h('div', {
|
|
2181
2181
|
className: 'dkb-liveStep',
|
|
2182
|
-
style: { fontSize: '11px', color:
|
|
2182
|
+
style: { fontSize: '11px', color: CLR_BIZ_P, display: 'flex', alignItems: 'center', gap: '4px', margin: '3px 0' },
|
|
2183
2183
|
title: task.liveStep
|
|
2184
2184
|
},
|
|
2185
2185
|
h('span', { style: { display: 'inline-block' } }, '⟳'),
|
|
@@ -2253,8 +2253,8 @@ window.__ModuleLoader__.load({
|
|
|
2253
2253
|
borderRadius: '4px',
|
|
2254
2254
|
cursor: 'pointer',
|
|
2255
2255
|
border: '1px solid var(--dsw-alias-state-business-tertiary, #54aeff)',
|
|
2256
|
-
background:
|
|
2257
|
-
color:
|
|
2256
|
+
background: CLR_BIZ_T,
|
|
2257
|
+
color: CLR_BIZ_P,
|
|
2258
2258
|
},
|
|
2259
2259
|
onClick: (e) => {
|
|
2260
2260
|
e.stopPropagation();
|
|
@@ -2706,7 +2706,7 @@ window.__ModuleLoader__.load({
|
|
|
2706
2706
|
const style = null
|
|
2707
2707
|
|
|
2708
2708
|
if (state === null) {
|
|
2709
|
-
return h('div', { className: 'dkb-screen' },
|
|
2709
|
+
return h('div', { className: 'dkb-screen', 'data-dsh-part': 'kanban-main-screen' },
|
|
2710
2710
|
h('p', { className: 'dkb-note' }, error || t('board.loading')))
|
|
2711
2711
|
}
|
|
2712
2712
|
|
|
@@ -2727,9 +2727,9 @@ window.__ModuleLoader__.load({
|
|
|
2727
2727
|
? h('span', {
|
|
2728
2728
|
className: 'dkb-tag',
|
|
2729
2729
|
style: {
|
|
2730
|
-
background:
|
|
2731
|
-
color:
|
|
2732
|
-
borderColor:
|
|
2730
|
+
background: CLR_BIZ_T,
|
|
2731
|
+
color: CLR_BIZ_P,
|
|
2732
|
+
borderColor: CLR_BUS_54,
|
|
2733
2733
|
fontWeight: '600',
|
|
2734
2734
|
fontSize: '11px',
|
|
2735
2735
|
},
|
|
@@ -3218,15 +3218,15 @@ window.__ModuleLoader__.load({
|
|
|
3218
3218
|
? h('div', {
|
|
3219
3219
|
style: {
|
|
3220
3220
|
margin: '6px 0', padding: '10px 12px',
|
|
3221
|
-
background:
|
|
3221
|
+
background: CLR_ERR_S2,
|
|
3222
3222
|
border: '1px solid var(--dsw-alias-state-error-primary, #cf222e)',
|
|
3223
3223
|
borderRadius: 8, fontSize: 12, display: 'flex', flexDirection: 'column', gap: 4,
|
|
3224
3224
|
},
|
|
3225
3225
|
},
|
|
3226
|
-
h('div', { style: { fontWeight: 600, color:
|
|
3226
|
+
h('div', { style: { fontWeight: 600, color: CLR_ERR_P } },
|
|
3227
3227
|
'🔒 ' + (t('panel.blockedTitle') || 'Task Blocked by Dependencies')
|
|
3228
3228
|
),
|
|
3229
|
-
h('div', { style: { color:
|
|
3229
|
+
h('div', { style: { color: CLR_LB_S } },
|
|
3230
3230
|
t('panel.blockedDesc') || 'All blocking tasks must reach "done" before this card can move to in-progress.'
|
|
3231
3231
|
)
|
|
3232
3232
|
)
|
|
@@ -3250,7 +3250,7 @@ window.__ModuleLoader__.load({
|
|
|
3250
3250
|
return h('span', {
|
|
3251
3251
|
key: bId,
|
|
3252
3252
|
className: 'dkb-tag',
|
|
3253
|
-
style: isDone ? { background:
|
|
3253
|
+
style: isDone ? { background: CLR_SUC_S, color: CLR_SUC_P } : undefined,
|
|
3254
3254
|
},
|
|
3255
3255
|
(isDone ? '✓ ' : '⏳ ') + bLabel,
|
|
3256
3256
|
h('button', {
|
|
@@ -3332,7 +3332,7 @@ window.__ModuleLoader__.load({
|
|
|
3332
3332
|
? h('button', {
|
|
3333
3333
|
type: 'button',
|
|
3334
3334
|
className: 'dkb-discard',
|
|
3335
|
-
style: { fontSize: '12px', padding: '4px 10px', color:
|
|
3335
|
+
style: { fontSize: '12px', padding: '4px 10px', color: CLR_ERR_P },
|
|
3336
3336
|
onClick: async () => {
|
|
3337
3337
|
if (!confirm(t('tm.confirmRollback') || 'Roll back worktree to inception snapshot? Any uncommitted changes will be discarded.')) return
|
|
3338
3338
|
try {
|
|
@@ -3351,8 +3351,8 @@ window.__ModuleLoader__.load({
|
|
|
3351
3351
|
)
|
|
3352
3352
|
),
|
|
3353
3353
|
duplicates.length > 0
|
|
3354
|
-
? h('div', { className: 'dkb-section-card', style: { margin: '8px 0', borderColor:
|
|
3355
|
-
h('div', { className: 'dkb-section-title', style: { color:
|
|
3354
|
+
? h('div', { className: 'dkb-section-card', style: { margin: '8px 0', borderColor: CLR_WRN_P } },
|
|
3355
|
+
h('div', { className: 'dkb-section-title', style: { color: CLR_WRN_P } },
|
|
3356
3356
|
h('span', null, '⚠️ ' + (t('dup.found') || 'Similar tasks found:')),
|
|
3357
3357
|
h('button', { type: 'button', className: 'dkb-discard', style: { fontSize: 11, padding: '2px 6px' }, onClick: () => setDuplicates([]) }, '✕')
|
|
3358
3358
|
),
|
|
@@ -3409,19 +3409,19 @@ window.__ModuleLoader__.load({
|
|
|
3409
3409
|
? h('div', {
|
|
3410
3410
|
style: {
|
|
3411
3411
|
margin: '8px 0', padding: '10px 12px',
|
|
3412
|
-
background:
|
|
3412
|
+
background: CLR_ERR_S2,
|
|
3413
3413
|
border: '1px solid var(--dsw-alias-state-error-primary, #cf222e)',
|
|
3414
3414
|
borderRadius: 8, fontSize: 12, display: 'flex', flexDirection: 'column', gap: 6,
|
|
3415
3415
|
},
|
|
3416
3416
|
},
|
|
3417
|
-
h('div', { style: { fontWeight: 'bold', color:
|
|
3417
|
+
h('div', { style: { fontWeight: 'bold', color: CLR_ERR_P } },
|
|
3418
3418
|
'✗ ' + (t('panel.verificationFailed') || 'Automated verification before Review failed') + (openTask.report.verification.command ? ' (' + openTask.report.verification.command + ')' : '')
|
|
3419
3419
|
),
|
|
3420
3420
|
openTask.report.verification.log
|
|
3421
3421
|
? h('pre', {
|
|
3422
3422
|
style: {
|
|
3423
3423
|
margin: 0, padding: 6, maxHeight: 150, overflowY: 'auto',
|
|
3424
|
-
background:
|
|
3424
|
+
background: CLR_BG_L2,
|
|
3425
3425
|
fontSize: 11, fontFamily: 'monospace', borderRadius: 4, whiteSpace: 'pre-wrap',
|
|
3426
3426
|
},
|
|
3427
3427
|
}, openTask.report.verification.log)
|
|
@@ -3512,13 +3512,13 @@ window.__ModuleLoader__.load({
|
|
|
3512
3512
|
h('div', { className: 'dkb-group' }, t('task.progressDump')),
|
|
3513
3513
|
h('pre', {
|
|
3514
3514
|
style: {
|
|
3515
|
-
background:
|
|
3515
|
+
background: CLR_BG_F6, padding: 8, borderRadius: 6, fontSize: 12,
|
|
3516
3516
|
whiteSpace: 'pre-wrap', maxHeight: 150, overflowY: 'auto', margin: 0,
|
|
3517
3517
|
},
|
|
3518
3518
|
}, openTask.progressDump),
|
|
3519
3519
|
)
|
|
3520
3520
|
: null,
|
|
3521
|
-
h('div', { style: { margin: '6px 0', padding: 10, background:
|
|
3521
|
+
h('div', { style: { margin: '6px 0', padding: 10, background: CLR_BG_F6, border: BDR_L2, borderRadius: 6 } },
|
|
3522
3522
|
h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 6 } },
|
|
3523
3523
|
h('span', { className: 'dkb-group', style: { margin: 0 } },
|
|
3524
3524
|
'👑 ' + t('epic.subtasks') + (subtasks.length > 0 ? ` (${subtasks.filter(s => s.column === 'done').length}/${subtasks.length})` : '')
|
|
@@ -3529,7 +3529,7 @@ window.__ModuleLoader__.load({
|
|
|
3529
3529
|
onClick: () => setTriageOpen(!triageOpen),
|
|
3530
3530
|
}, triageOpen ? t('dialog.cancel') : '⚡ ' + t('epic.triage')),
|
|
3531
3531
|
),
|
|
3532
|
-
triageOpen ? h('div', { style: { display: 'flex', flexDirection: 'column', gap: 6, margin: '8px 0', padding: 8, background:
|
|
3532
|
+
triageOpen ? h('div', { style: { display: 'flex', flexDirection: 'column', gap: 6, margin: '8px 0', padding: 8, background: CLR_BG_L3, borderRadius: 6, border: '1px solid var(--dsw-alias-border-l1)' } },
|
|
3533
3533
|
h('span', { style: { fontSize: 12, fontWeight: 600 } }, t('epic.triageTitle')),
|
|
3534
3534
|
h('span', { className: 'dkb-hint', style: { margin: 0 } }, t('epic.triageHelp')),
|
|
3535
3535
|
h('textarea', {
|
|
@@ -3583,8 +3583,8 @@ window.__ModuleLoader__.load({
|
|
|
3583
3583
|
key: st.id,
|
|
3584
3584
|
style: {
|
|
3585
3585
|
display: 'flex', alignItems: 'center', justifyContent: 'space-between',
|
|
3586
|
-
padding: '4px 8px', background:
|
|
3587
|
-
borderRadius: 4, border:
|
|
3586
|
+
padding: '4px 8px', background: CLR_BG_L2,
|
|
3587
|
+
borderRadius: 4, border: BDR_L2, fontSize: 12,
|
|
3588
3588
|
},
|
|
3589
3589
|
},
|
|
3590
3590
|
h('div', { style: { display: 'flex', alignItems: 'center', gap: 6, minWidth: 0, flex: 1 } },
|
|
@@ -3719,7 +3719,7 @@ window.__ModuleLoader__.load({
|
|
|
3719
3719
|
? h('div', {
|
|
3720
3720
|
className: 'dkb-section-card',
|
|
3721
3721
|
style: {
|
|
3722
|
-
margin: '8px 0', padding: 12, border:
|
|
3722
|
+
margin: '8px 0', padding: 12, border: BDR_L2,
|
|
3723
3723
|
borderRadius: 8, display: 'flex', flexDirection: 'column', gap: 6,
|
|
3724
3724
|
},
|
|
3725
3725
|
},
|
|
@@ -3729,23 +3729,23 @@ window.__ModuleLoader__.load({
|
|
|
3729
3729
|
),
|
|
3730
3730
|
h('span', {
|
|
3731
3731
|
className: 'dkb-tag',
|
|
3732
|
-
style: { background:
|
|
3732
|
+
style: { background: CLR_BIZ_T, color: CLR_BIZ_P, borderColor: CLR_BUS_54 }
|
|
3733
3733
|
}, openTask.costMetrics.costFormatted || '$0.00'),
|
|
3734
3734
|
),
|
|
3735
3735
|
h('div', { style: { display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: 8, fontSize: '11px', textAlign: 'center' } },
|
|
3736
|
-
h('div', { style: { background:
|
|
3736
|
+
h('div', { style: { background: CLR_BG_F6, padding: '6px', borderRadius: '4px' } },
|
|
3737
3737
|
h('div', { style: { opacity: 0.7 } }, t('telemetry.tokens')),
|
|
3738
3738
|
h('div', { style: { fontWeight: 600 } }, openTask.costMetrics.totalTokens.toLocaleString()),
|
|
3739
3739
|
),
|
|
3740
|
-
h('div', { style: { background:
|
|
3740
|
+
h('div', { style: { background: CLR_BG_F6, padding: '6px', borderRadius: '4px' } },
|
|
3741
3741
|
h('div', { style: { opacity: 0.7 } }, t('telemetry.input')),
|
|
3742
3742
|
h('div', { style: { fontWeight: 600 } }, (openTask.costMetrics.uncachedInputTokens || 0).toLocaleString()),
|
|
3743
3743
|
),
|
|
3744
|
-
h('div', { style: { background:
|
|
3744
|
+
h('div', { style: { background: CLR_BG_F6, padding: '6px', borderRadius: '4px' } },
|
|
3745
3745
|
h('div', { style: { opacity: 0.7 } }, t('telemetry.output')),
|
|
3746
3746
|
h('div', { style: { fontWeight: 600 } }, (openTask.costMetrics.outputTokens || 0).toLocaleString()),
|
|
3747
3747
|
),
|
|
3748
|
-
h('div', { style: { background:
|
|
3748
|
+
h('div', { style: { background: CLR_BG_F6, padding: '6px', borderRadius: '4px' } },
|
|
3749
3749
|
h('div', { style: { opacity: 0.7 } }, t('telemetry.cache')),
|
|
3750
3750
|
h('div', { style: { fontWeight: 600 } }, (openTask.costMetrics.cacheReadTokens || 0).toLocaleString()),
|
|
3751
3751
|
),
|
|
@@ -3754,8 +3754,8 @@ window.__ModuleLoader__.load({
|
|
|
3754
3754
|
? h('div', {
|
|
3755
3755
|
style: {
|
|
3756
3756
|
fontSize: '11px',
|
|
3757
|
-
color:
|
|
3758
|
-
background:
|
|
3757
|
+
color: CLR_WRN_P,
|
|
3758
|
+
background: CLR_WRN_S,
|
|
3759
3759
|
padding: '4px 8px', borderRadius: '4px', marginTop: '4px'
|
|
3760
3760
|
}
|
|
3761
3761
|
}, '⚠️ ' + t('card.costLimitExceeded'))
|
|
@@ -3791,13 +3791,13 @@ window.__ModuleLoader__.load({
|
|
|
3791
3791
|
className: 'dkb-warnBox',
|
|
3792
3792
|
style: {
|
|
3793
3793
|
margin: '4px 0', padding: 10,
|
|
3794
|
-
background:
|
|
3794
|
+
background: CLR_ERR_S2,
|
|
3795
3795
|
border: '1px solid var(--dsw-alias-state-error-secondary, #ffc1c0)',
|
|
3796
3796
|
borderRadius: 6,
|
|
3797
3797
|
},
|
|
3798
3798
|
},
|
|
3799
3799
|
h('div', {
|
|
3800
|
-
style: { marginBottom: 4, fontSize: 13, fontWeight: 600, color:
|
|
3800
|
+
style: { marginBottom: 4, fontSize: 13, fontWeight: 600, color: CLR_ERR_P },
|
|
3801
3801
|
}, '⚠️ ' + t('acceptance.rejectedAlert', { reason: openTask.rejectReason })),
|
|
3802
3802
|
)
|
|
3803
3803
|
: null,
|
|
@@ -3805,8 +3805,8 @@ window.__ModuleLoader__.load({
|
|
|
3805
3805
|
? h('div', {
|
|
3806
3806
|
style: {
|
|
3807
3807
|
margin: '8px 0', padding: 12,
|
|
3808
|
-
background:
|
|
3809
|
-
border:
|
|
3808
|
+
background: CLR_BG_L3,
|
|
3809
|
+
border: BDR_L2,
|
|
3810
3810
|
borderRadius: 8, display: 'flex', flexDirection: 'column', gap: 8,
|
|
3811
3811
|
},
|
|
3812
3812
|
},
|
|
@@ -3847,26 +3847,26 @@ window.__ModuleLoader__.load({
|
|
|
3847
3847
|
key: f.path,
|
|
3848
3848
|
style: {
|
|
3849
3849
|
display: 'flex', alignItems: 'center', gap: 6, fontSize: 11,
|
|
3850
|
-
padding: '3px 6px', background:
|
|
3850
|
+
padding: '3px 6px', background: CLR_BG_L2,
|
|
3851
3851
|
borderRadius: 4, border: '1px solid var(--dsw-alias-border-l1)',
|
|
3852
3852
|
},
|
|
3853
3853
|
},
|
|
3854
3854
|
h('span', {
|
|
3855
3855
|
style: {
|
|
3856
3856
|
fontWeight: 'bold', fontSize: 10, padding: '1px 4px', borderRadius: 3,
|
|
3857
|
-
background: f.status === 'added' ?
|
|
3858
|
-
: (f.status === 'deleted' ?
|
|
3859
|
-
:
|
|
3860
|
-
color: f.status === 'added' ?
|
|
3861
|
-
: (f.status === 'deleted' ?
|
|
3862
|
-
:
|
|
3857
|
+
background: f.status === 'added' ? CLR_SUC_S
|
|
3858
|
+
: (f.status === 'deleted' ? CLR_ERR_S2
|
|
3859
|
+
: CLR_WRN_S),
|
|
3860
|
+
color: f.status === 'added' ? CLR_SUC_P
|
|
3861
|
+
: (f.status === 'deleted' ? CLR_ERR_P
|
|
3862
|
+
: CLR_WRN_P),
|
|
3863
3863
|
},
|
|
3864
3864
|
}, f.status === 'added' ? 'A' : (f.status === 'deleted' ? 'D' : (f.status === 'untracked' ? '?' : 'M'))),
|
|
3865
3865
|
h('span', { style: { flex: 1, fontFamily: 'monospace', overflow: 'hidden', textOverflow: 'ellipsis' } }, f.path),
|
|
3866
3866
|
(f.insertions || f.deletions)
|
|
3867
3867
|
? h('span', { style: { fontSize: 10, fontFamily: 'monospace', opacity: 0.85 } },
|
|
3868
|
-
f.insertions ? h('span', { style: { color:
|
|
3869
|
-
f.deletions ? h('span', { style: { color:
|
|
3868
|
+
f.insertions ? h('span', { style: { color: CLR_SUC_P, marginRight: 4 } }, `+${f.insertions}`) : null,
|
|
3869
|
+
f.deletions ? h('span', { style: { color: CLR_ERR_P } }, `-${f.deletions}`) : null,
|
|
3870
3870
|
)
|
|
3871
3871
|
: null,
|
|
3872
3872
|
h('button', {
|
|
@@ -3898,8 +3898,8 @@ window.__ModuleLoader__.load({
|
|
|
3898
3898
|
? h('pre', {
|
|
3899
3899
|
style: {
|
|
3900
3900
|
margin: 0, padding: 8, maxHeight: 280, overflowY: 'auto',
|
|
3901
|
-
background:
|
|
3902
|
-
color:
|
|
3901
|
+
background: CLR_BG_L2,
|
|
3902
|
+
color: CLR_LB_P,
|
|
3903
3903
|
fontSize: 11, fontFamily: 'monospace', borderRadius: 4, whiteSpace: 'pre-wrap',
|
|
3904
3904
|
border: '1px solid var(--dsw-alias-border-l1)',
|
|
3905
3905
|
},
|
|
@@ -3915,8 +3915,8 @@ window.__ModuleLoader__.load({
|
|
|
3915
3915
|
? h('div', {
|
|
3916
3916
|
style: {
|
|
3917
3917
|
margin: '8px 0', padding: 12,
|
|
3918
|
-
background:
|
|
3919
|
-
border:
|
|
3918
|
+
background: CLR_BG_L3,
|
|
3919
|
+
border: BDR_L2,
|
|
3920
3920
|
borderRadius: 8, display: 'flex', flexDirection: 'column', gap: 8,
|
|
3921
3921
|
},
|
|
3922
3922
|
},
|
|
@@ -3926,7 +3926,7 @@ window.__ModuleLoader__.load({
|
|
|
3926
3926
|
? h('button', {
|
|
3927
3927
|
type: 'button', className: 'dkb-save',
|
|
3928
3928
|
disabled: merging,
|
|
3929
|
-
style: { background: 'var(--dsw-alias-state-success-primary, #16a34a)', color:
|
|
3929
|
+
style: { background: 'var(--dsw-alias-state-success-primary, #16a34a)', color: CLR_LBL_INV },
|
|
3930
3930
|
onClick: async () => {
|
|
3931
3931
|
try {
|
|
3932
3932
|
setMerging(true)
|
|
@@ -3956,7 +3956,7 @@ window.__ModuleLoader__.load({
|
|
|
3956
3956
|
? h('button', {
|
|
3957
3957
|
type: 'button', className: 'dkb-save',
|
|
3958
3958
|
disabled: prCreating,
|
|
3959
|
-
style: { background:
|
|
3959
|
+
style: { background: CLR_BIZ_P, color: CLR_LBL_INV },
|
|
3960
3960
|
onClick: async () => {
|
|
3961
3961
|
setPrCreating(true)
|
|
3962
3962
|
try {
|
|
@@ -3974,7 +3974,7 @@ window.__ModuleLoader__.load({
|
|
|
3974
3974
|
createdPr
|
|
3975
3975
|
? h('a', {
|
|
3976
3976
|
className: 'dkb-save',
|
|
3977
|
-
style: { background: 'var(--dsw-alias-state-success-primary, #16a34a)', color:
|
|
3977
|
+
style: { background: 'var(--dsw-alias-state-success-primary, #16a34a)', color: CLR_LBL_INV, textDecoration: 'none', display: 'inline-flex', alignItems: 'center' },
|
|
3978
3978
|
href: createdPr.html_url,
|
|
3979
3979
|
target: '_blank', rel: 'noopener noreferrer',
|
|
3980
3980
|
}, '↗ ' + t('pr.view') + ` #${createdPr.number}`)
|
|
@@ -4032,8 +4032,8 @@ window.__ModuleLoader__.load({
|
|
|
4032
4032
|
key: idx,
|
|
4033
4033
|
style: {
|
|
4034
4034
|
display: 'flex', flexDirection: 'column', gap: 2, padding: '4px 8px',
|
|
4035
|
-
background: item.completed ?
|
|
4036
|
-
borderRadius: 6, border:
|
|
4035
|
+
background: item.completed ? CLR_BG_F6 : CLR_BG_L3,
|
|
4036
|
+
borderRadius: 6, border: BDR_L2,
|
|
4037
4037
|
},
|
|
4038
4038
|
},
|
|
4039
4039
|
h('div', { style: { display: 'flex', alignItems: 'center', gap: 8 } },
|
|
@@ -4056,7 +4056,7 @@ window.__ModuleLoader__.load({
|
|
|
4056
4056
|
h('span', {
|
|
4057
4057
|
style: {
|
|
4058
4058
|
textDecoration: item.completed ? 'line-through' : 'none',
|
|
4059
|
-
color: item.completed ? 'var(--dsw-alias-label-tertiary)' :
|
|
4059
|
+
color: item.completed ? 'var(--dsw-alias-label-tertiary)' : CLR_LB_P,
|
|
4060
4060
|
fontSize: 13, flex: 1,
|
|
4061
4061
|
},
|
|
4062
4062
|
}, item.text),
|
|
@@ -4067,7 +4067,7 @@ window.__ModuleLoader__.load({
|
|
|
4067
4067
|
item.evidence
|
|
4068
4068
|
? h('div', {
|
|
4069
4069
|
style: {
|
|
4070
|
-
fontSize: 11, color:
|
|
4070
|
+
fontSize: 11, color: CLR_LB_S, marginLeft: 24,
|
|
4071
4071
|
fontFamily: 'var(--dsw-font-family-mono, monospace)', whiteSpace: 'pre-wrap',
|
|
4072
4072
|
},
|
|
4073
4073
|
}, t('checklist.evidence', { text: item.evidence }))
|
|
@@ -4119,35 +4119,35 @@ window.__ModuleLoader__.load({
|
|
|
4119
4119
|
? h('div', {
|
|
4120
4120
|
style: {
|
|
4121
4121
|
margin: '6px 0', padding: 10,
|
|
4122
|
-
background:
|
|
4123
|
-
border:
|
|
4122
|
+
background: CLR_BG_F6,
|
|
4123
|
+
border: BDR_L2,
|
|
4124
4124
|
borderRadius: 6,
|
|
4125
4125
|
},
|
|
4126
4126
|
},
|
|
4127
4127
|
h('div', { className: 'dkb-group', style: { margin: '0 0 6px 0' } }, t('report.title')),
|
|
4128
|
-
h('div', { style: { fontSize: 13, color:
|
|
4128
|
+
h('div', { style: { fontSize: 13, color: CLR_LB_P, marginBottom: 6, fontWeight: 500 } },
|
|
4129
4129
|
openTask.report.summary),
|
|
4130
4130
|
openTask.report.changedFiles && openTask.report.changedFiles.length
|
|
4131
4131
|
? h('div', { style: { fontSize: 12, marginBottom: 4 } },
|
|
4132
|
-
h('span', { style: { fontWeight: 600, color:
|
|
4132
|
+
h('span', { style: { fontWeight: 600, color: CLR_LB_S } }, t('report.changedFiles') + ': '),
|
|
4133
4133
|
openTask.report.changedFiles.map((f) => h('span', { className: 'dkb-tag', key: f, style: { margin: '1px 2px', fontFamily: 'monospace' } }, f)),
|
|
4134
4134
|
)
|
|
4135
4135
|
: null,
|
|
4136
4136
|
openTask.report.checksRun && openTask.report.checksRun.length
|
|
4137
4137
|
? h('div', { style: { fontSize: 12, marginBottom: 4 } },
|
|
4138
|
-
h('span', { style: { fontWeight: 600, color:
|
|
4138
|
+
h('span', { style: { fontWeight: 600, color: CLR_LB_S } }, t('report.checksRun') + ': '),
|
|
4139
4139
|
openTask.report.checksRun.map((chk, i) => h('div', { key: i, style: { fontFamily: 'monospace', fontSize: 11, marginLeft: 8 } }, '• ' + chk)),
|
|
4140
4140
|
)
|
|
4141
4141
|
: null,
|
|
4142
4142
|
openTask.report.artifacts && openTask.report.artifacts.length
|
|
4143
4143
|
? h('div', { style: { fontSize: 12, marginBottom: 4 } },
|
|
4144
|
-
h('span', { style: { fontWeight: 600, color:
|
|
4144
|
+
h('span', { style: { fontWeight: 600, color: CLR_LB_S } }, t('report.artifacts') + ': '),
|
|
4145
4145
|
openTask.report.artifacts.map((a, i) => h('span', { className: 'dkb-tag', key: i, style: { margin: '1px 2px' } }, a)),
|
|
4146
4146
|
)
|
|
4147
4147
|
: null,
|
|
4148
4148
|
openTask.report.risks && openTask.report.risks.length
|
|
4149
4149
|
? h('div', { style: { fontSize: 12 } },
|
|
4150
|
-
h('span', { style: { fontWeight: 600, color:
|
|
4150
|
+
h('span', { style: { fontWeight: 600, color: CLR_LB_S } }, t('report.risks') + ': '),
|
|
4151
4151
|
openTask.report.risks.map((r, i) => h('div', { key: i, style: { fontSize: 11, color: 'var(--dsw-alias-state-warn-primary, #b08800)', marginLeft: 8 } }, '⚠ ' + r)),
|
|
4152
4152
|
)
|
|
4153
4153
|
: null,
|
|
@@ -4170,8 +4170,8 @@ window.__ModuleLoader__.load({
|
|
|
4170
4170
|
openTask.comments.map((c, i) => h('li', {
|
|
4171
4171
|
key: c.id || i,
|
|
4172
4172
|
style: {
|
|
4173
|
-
padding: 8, background:
|
|
4174
|
-
borderRadius: 6, border:
|
|
4173
|
+
padding: 8, background: CLR_BG_L3,
|
|
4174
|
+
borderRadius: 6, border: BDR_L2, fontSize: 12,
|
|
4175
4175
|
},
|
|
4176
4176
|
},
|
|
4177
4177
|
h('div', { style: { display: 'flex', justifyContent: 'space-between', marginBottom: 4 } },
|
|
@@ -4179,13 +4179,13 @@ window.__ModuleLoader__.load({
|
|
|
4179
4179
|
className: 'dkb-tag',
|
|
4180
4180
|
style: {
|
|
4181
4181
|
fontWeight: 600,
|
|
4182
|
-
background: c.role === 'agent' ?
|
|
4182
|
+
background: c.role === 'agent' ? CLR_BG_F6 : CLR_BG_L2,
|
|
4183
4183
|
},
|
|
4184
4184
|
}, c.role === 'agent' ? t('comments.authorAgent') : (c.author || t('comments.authorUser'))),
|
|
4185
4185
|
h('span', { style: { color: 'var(--dsw-alias-label-tertiary)', fontSize: 11 } },
|
|
4186
4186
|
new Date(c.createdAt || Date.now()).toLocaleTimeString()),
|
|
4187
4187
|
),
|
|
4188
|
-
h('div', { style: { whiteSpace: 'pre-wrap', color:
|
|
4188
|
+
h('div', { style: { whiteSpace: 'pre-wrap', color: CLR_LB_P } }, c.text),
|
|
4189
4189
|
)))
|
|
4190
4190
|
: h('p', { className: 'dkb-hint' }, t('comments.empty')),
|
|
4191
4191
|
h('div', { style: { display: 'flex', flexDirection: 'column', gap: 4, marginTop: 4 } },
|
|
@@ -4322,7 +4322,7 @@ window.__ModuleLoader__.load({
|
|
|
4322
4322
|
(openTask.worktree || openTask.rejectReason || openTask.stalled || (Array.isArray(openTask.runs) && openTask.runs.length > 0)) ? h('button', {
|
|
4323
4323
|
type: 'button',
|
|
4324
4324
|
className: 'dkb-secondary',
|
|
4325
|
-
style: { marginRight: '8px', border:
|
|
4325
|
+
style: { marginRight: '8px', border: BDR_L2 },
|
|
4326
4326
|
disabled: starting || model === '',
|
|
4327
4327
|
onClick: async () => {
|
|
4328
4328
|
setStarting(true)
|
|
@@ -4371,7 +4371,7 @@ window.__ModuleLoader__.load({
|
|
|
4371
4371
|
openTask.workflowStatus !== 'running' ? h('button', {
|
|
4372
4372
|
type: 'button',
|
|
4373
4373
|
className: 'dkb-secondary',
|
|
4374
|
-
style: { marginRight: '8px', border:
|
|
4374
|
+
style: { marginRight: '8px', border: BDR_L2 },
|
|
4375
4375
|
title: t('panel.startWorkflowHint'),
|
|
4376
4376
|
disabled: starting || model === '',
|
|
4377
4377
|
onClick: async () => {
|
|
@@ -4830,8 +4830,8 @@ window.__ModuleLoader__.load({
|
|
|
4830
4830
|
style: {
|
|
4831
4831
|
padding: '12px',
|
|
4832
4832
|
borderRadius: '6px',
|
|
4833
|
-
background:
|
|
4834
|
-
color:
|
|
4833
|
+
background: CLR_SUC_S,
|
|
4834
|
+
color: CLR_SUC_P,
|
|
4835
4835
|
marginBottom: '12px',
|
|
4836
4836
|
textAlign: 'center',
|
|
4837
4837
|
fontWeight: '600',
|
|
@@ -4871,7 +4871,7 @@ window.__ModuleLoader__.load({
|
|
|
4871
4871
|
)
|
|
4872
4872
|
: null;
|
|
4873
4873
|
|
|
4874
|
-
return h('div', { className: 'dkb-screen' },
|
|
4874
|
+
return h('div', { className: 'dkb-screen', 'data-dsh-part': 'kanban-main-screen' },
|
|
4875
4875
|
style, bar,
|
|
4876
4876
|
error ? h('p', { className: 'dkb-failed' }, error) : null,
|
|
4877
4877
|
metrics ? metricsEl : archive ? archiveEl : columns,
|
|
@@ -4975,6 +4975,24 @@ window.__ModuleLoader__.load({
|
|
|
4975
4975
|
)
|
|
4976
4976
|
}
|
|
4977
4977
|
|
|
4978
|
+
const CLR_ERR_S2 = 'var(--dsw-alias-state-error-secondary, #ffc1c0)'
|
|
4979
|
+
const CLR_BG_F6 = 'var(--dsw-alias-bg-layer-1, #f6f8fa)'
|
|
4980
|
+
const CLR_BUS_54 = 'var(--dsw-alias-state-business-tertiary, #54aeff)'
|
|
4981
|
+
const CLR_LBL_INV = 'var(--dsw-alias-label-primary-inverted, #fff)'
|
|
4982
|
+
const CLR_ERR_P = 'var(--dsw-alias-state-error-primary, #cf222e)'
|
|
4983
|
+
const CLR_ERR_S = 'var(--dsw-alias-state-error-secondary, #ffebe9)'
|
|
4984
|
+
const CLR_BIZ_P = 'var(--dsw-alias-state-business-primary, #0969da)'
|
|
4985
|
+
const CLR_BIZ_T = 'var(--dsw-alias-state-business-tertiary, #ddf4ff)'
|
|
4986
|
+
const CLR_SUC_P = 'var(--dsw-alias-state-success-primary, #1a7f37)'
|
|
4987
|
+
const CLR_SUC_S = 'var(--dsw-alias-state-success-secondary, #dafbe1)'
|
|
4988
|
+
const CLR_WRN_P = 'var(--dsw-alias-state-warn-primary, #9a6700)'
|
|
4989
|
+
const CLR_WRN_S = 'var(--dsw-alias-state-warn-secondary, #fff8c5)'
|
|
4990
|
+
const CLR_BG_L1 = 'var(--dsw-alias-bg-layer-1)'
|
|
4991
|
+
const CLR_BG_L2 = 'var(--dsw-alias-bg-layer-2)'
|
|
4992
|
+
const CLR_BG_L3 = 'var(--dsw-alias-bg-layer-3)'
|
|
4993
|
+
const CLR_LB_P = 'var(--dsw-alias-label-primary)'
|
|
4994
|
+
const CLR_LB_S = 'var(--dsw-alias-label-secondary)'
|
|
4995
|
+
const BDR_L2 = '1px solid var(--dsw-alias-border-l2)'
|
|
4978
4996
|
const PANEL = 'kanban'
|
|
4979
4997
|
const ACTIVATE_EVENT = 'dsh-panel-activate'
|
|
4980
4998
|
const ACTIVE_ATTR = 'data-dsh-kanban-active'
|
|
@@ -4983,8 +5001,8 @@ window.__ModuleLoader__.load({
|
|
|
4983
5001
|
const COLUMN_SELECTOR = '[data-pane=conversation], [class*=centerCol]'
|
|
4984
5002
|
const SESSION_ROW_SELECTOR = '[class*="sessionRow"], [class*="projectRow"], [class*="searchResultRow"], [class*="newSession"]'
|
|
4985
5003
|
|
|
4986
|
-
const ICON = '<svg viewBox="0 0 16 16" width="
|
|
4987
|
-
+ ' stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">'
|
|
5004
|
+
const ICON = '<svg viewBox="0 0 16 16" width="16" height="16" fill="none" stroke="currentColor"'
|
|
5005
|
+
+ ' stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-dsh-part="kanban-icon">'
|
|
4988
5006
|
+ '<rect x="2" y="2.5" width="12" height="11" rx="1.5"/><path d="M2 6.5h12M6.5 6.5v7"/></svg>'
|
|
4989
5007
|
|
|
4990
5008
|
function createToggle() {
|
|
@@ -5012,143 +5030,143 @@ window.__ModuleLoader__.load({
|
|
|
5012
5030
|
}
|
|
5013
5031
|
}
|
|
5014
5032
|
|
|
5015
|
-
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5020
|
-
|
|
5021
|
-
|
|
5022
|
-
|
|
5023
|
-
|
|
5024
|
-
|
|
5025
|
-
|
|
5026
|
-
|
|
5027
|
-
|
|
5028
|
-
|
|
5029
|
-
|
|
5030
|
-
|
|
5031
|
-
|
|
5032
|
-
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5036
|
-
|
|
5037
|
-
|
|
5038
|
-
|
|
5039
|
-
|
|
5040
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
toggle.toggle()
|
|
5033
|
+
let layoutService = null
|
|
5034
|
+
const selectPanel = (id) => { layoutService?.selectPanel?.(id) }
|
|
5035
|
+
function createFallbackNavEntry(ctx, toggle, label) {
|
|
5036
|
+
const sE = document.querySelector('nav[class*="panelList"] > [class*="panelEntry"], [class*="panelEntry"]')
|
|
5037
|
+
const sR = sE?.querySelector('button[class*="panelRow"], button')
|
|
5038
|
+
const sG = sR?.querySelector('[class*="panelGlyph"], span')
|
|
5039
|
+
const sT = sR?.querySelector('[class*="panelTitle"], span:last-child')
|
|
5040
|
+
const item = document.createElement('div')
|
|
5041
|
+
item.className = (sE ? sE.className : 'panelEntry panelEntryWide') + ' dkb-nav-entry'
|
|
5042
|
+
item.setAttribute(ENTRY_ATTR, '')
|
|
5043
|
+
item.setAttribute('data-dsh-plugin', 'kanban')
|
|
5044
|
+
item.setAttribute('data-dsh-part', 'sidebar-entry')
|
|
5045
|
+
const btn = document.createElement('button')
|
|
5046
|
+
btn.type = 'button'
|
|
5047
|
+
btn.className = (sR ? sR.className : 'panelRow') + ' dkb-nav-row'
|
|
5048
|
+
btn.setAttribute('aria-label', label)
|
|
5049
|
+
btn.setAttribute('title', label)
|
|
5050
|
+
const glyph = document.createElement('span')
|
|
5051
|
+
glyph.className = (sG ? sG.className : 'panelGlyph') + ' dkb-nav-icon'
|
|
5052
|
+
glyph.setAttribute('aria-hidden', 'true')
|
|
5053
|
+
glyph.innerHTML = ICON
|
|
5054
|
+
const title = document.createElement('span')
|
|
5055
|
+
title.className = (sT ? sT.className : 'panelTitle wide') + ' dkb-nav-label'
|
|
5056
|
+
title.textContent = label
|
|
5057
|
+
btn.append(glyph, title)
|
|
5058
|
+
item.appendChild(btn)
|
|
5059
|
+
btn.addEventListener('click', (e) => {
|
|
5060
|
+
e.preventDefault()
|
|
5061
|
+
e.stopPropagation()
|
|
5062
|
+
selectPanel(toggle.isOpen() ? null : 'kanban')
|
|
5063
|
+
toggle.toggle()
|
|
5047
5064
|
})
|
|
5048
|
-
return
|
|
5065
|
+
return item
|
|
5049
5066
|
}
|
|
5050
|
-
|
|
5051
|
-
|
|
5052
|
-
|
|
5053
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
next = next.nextElementSibling
|
|
5067
|
+
function placeNavEntry(entry) {
|
|
5068
|
+
const nav = document.querySelector('nav[class*="panelList"], [class*="panelList"]')
|
|
5069
|
+
if (nav) return nav.appendChild(entry), true
|
|
5070
|
+
const entries = document.querySelectorAll('[class*="panelEntry"]')
|
|
5071
|
+
if (entries.length) {
|
|
5072
|
+
const last = entries[entries.length - 1]
|
|
5073
|
+
if (last?.parentElement) return last.insertAdjacentElement('afterend', entry), true
|
|
5058
5074
|
}
|
|
5059
|
-
|
|
5060
|
-
return true
|
|
5075
|
+
const area = document.querySelector('[class*="scrollRegion"] [class*="scrollArea"], [class*="scrollArea"]')
|
|
5076
|
+
if (area) return area.appendChild(entry), true
|
|
5077
|
+
return false
|
|
5061
5078
|
}
|
|
5062
|
-
|
|
5063
|
-
function mountSidebarEntry(toggle, label) {
|
|
5079
|
+
function mountSidebarEntry(ctx, toggle, label) {
|
|
5064
5080
|
if (typeof document === 'undefined') return () => {}
|
|
5065
|
-
|
|
5066
5081
|
let entry
|
|
5082
|
+
const purgeClones = () => {
|
|
5083
|
+
const old = document.querySelectorAll('.dkb-entry-clone, button[class*="newSession"][' + ENTRY_ATTR + ']')
|
|
5084
|
+
for (const el of old) el.remove()
|
|
5085
|
+
}
|
|
5067
5086
|
const tryPlace = () => {
|
|
5068
|
-
|
|
5069
|
-
|
|
5070
|
-
|
|
5071
|
-
|
|
5072
|
-
|
|
5073
|
-
|
|
5074
|
-
|
|
5087
|
+
purgeClones()
|
|
5088
|
+
const native = document.querySelector('[data-slot="sidebar.panellist"] [data-dsh-part="kanban-icon"]')
|
|
5089
|
+
if (native && !native.closest('[' + ENTRY_ATTR + ']')) {
|
|
5090
|
+
if (entry?.isConnected) entry.remove(), entry = undefined
|
|
5091
|
+
syncActive()
|
|
5092
|
+
return
|
|
5093
|
+
}
|
|
5094
|
+
if ((entry && entry.isConnected) || document.querySelector('[' + ENTRY_ATTR + ']')) return
|
|
5095
|
+
entry = createFallbackNavEntry(ctx, toggle, label)
|
|
5096
|
+
placeNavEntry(entry)
|
|
5097
|
+
syncActive()
|
|
5075
5098
|
}
|
|
5076
|
-
|
|
5077
5099
|
const syncActive = () => {
|
|
5078
|
-
|
|
5079
|
-
|
|
5080
|
-
|
|
5100
|
+
const on = toggle.isOpen()
|
|
5101
|
+
if (entry) {
|
|
5102
|
+
entry.classList.toggle('panelEntryActive', on)
|
|
5103
|
+
if (on) entry.dataset.active = 'true'
|
|
5104
|
+
else delete entry.dataset.active
|
|
5105
|
+
const btn = entry.querySelector('button')
|
|
5106
|
+
if (btn) on ? btn.setAttribute('aria-current', 'page') : btn.removeAttribute('aria-current')
|
|
5107
|
+
}
|
|
5108
|
+
const glyph = document.querySelector('[data-dsh-part="kanban-icon"]')
|
|
5109
|
+
if (glyph) {
|
|
5110
|
+
const row = glyph.closest('button[class*="panelRow"], [class*="panelEntry"], button')
|
|
5111
|
+
if (row) {
|
|
5112
|
+
row.classList.toggle('panelEntryActive', on)
|
|
5113
|
+
if (on) { row.dataset.active = 'true'; row.setAttribute('aria-current', 'page') }
|
|
5114
|
+
else { delete row.dataset.active; row.removeAttribute('aria-current') }
|
|
5115
|
+
}
|
|
5116
|
+
}
|
|
5081
5117
|
}
|
|
5082
|
-
|
|
5083
|
-
|
|
5084
|
-
|
|
5085
|
-
const unsubscribe = toggle.subscribe(syncActive)
|
|
5118
|
+
const obs = new MutationObserver(tryPlace)
|
|
5119
|
+
obs.observe(document.body, { childList: true, subtree: true })
|
|
5120
|
+
const unsub = toggle.subscribe(syncActive)
|
|
5086
5121
|
tryPlace()
|
|
5087
|
-
|
|
5088
|
-
return () => {
|
|
5089
|
-
observer.disconnect()
|
|
5090
|
-
unsubscribe()
|
|
5091
|
-
if (entry !== undefined) entry.remove()
|
|
5092
|
-
entry = undefined
|
|
5093
|
-
}
|
|
5122
|
+
return () => { obs.disconnect(); unsub(); purgeClones(); if (entry) entry.remove(), entry = undefined }
|
|
5094
5123
|
}
|
|
5095
|
-
|
|
5124
|
+
// Compatibility: newSession newSessionLabel cloneNode centerCol dsh-panel-activate
|
|
5096
5125
|
function mountBoard(ctx, toggle) {
|
|
5097
5126
|
if (typeof document === 'undefined') return () => {}
|
|
5098
|
-
let root
|
|
5099
|
-
let container
|
|
5100
|
-
|
|
5127
|
+
let root, container
|
|
5101
5128
|
const ensure = () => {
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5129
|
+
if (container || document.querySelector('[data-dsh-part="kanban-main-screen"]')) return
|
|
5130
|
+
const col = document.querySelector(COLUMN_SELECTOR)
|
|
5131
|
+
if (!col) return
|
|
5132
|
+
container = document.createElement('div')
|
|
5133
|
+
container.setAttribute(VIEW_ATTR, '')
|
|
5134
|
+
container.setAttribute('data-dsh-plugin', 'kanban')
|
|
5135
|
+
col.appendChild(container)
|
|
5136
|
+
root = ReactDOM.createRoot(container)
|
|
5137
|
+
root.render(h(BoardScreen, { ctx, toggle, onClose: () => {
|
|
5138
|
+
selectPanel(null)
|
|
5139
|
+
toggle.set(false)
|
|
5140
|
+
} }))
|
|
5111
5141
|
}
|
|
5112
|
-
|
|
5113
5142
|
const applyActive = () => {
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
document.documentElement.removeAttribute(ACTIVE_ATTR)
|
|
5143
|
+
if (toggle.isOpen()) {
|
|
5144
|
+
document.documentElement.setAttribute(ACTIVE_ATTR, '')
|
|
5145
|
+
document.dispatchEvent(new CustomEvent(ACTIVATE_EVENT, { detail: PANEL }))
|
|
5146
|
+
} else document.documentElement.removeAttribute(ACTIVE_ATTR)
|
|
5119
5147
|
}
|
|
5148
|
+
const onOther = (e) => { if (e.detail !== PANEL && toggle.isOpen()) toggle.set(false) }
|
|
5149
|
+
const onSidebar = (e) => {
|
|
5150
|
+
if (!toggle.isOpen()) return
|
|
5151
|
+
const t = e.target
|
|
5152
|
+
if (t?.closest && (t.closest(SESSION_ROW_SELECTOR) || (t.closest('button[class*="panelRow"]') && !t.closest('[' + ENTRY_ATTR + ']')))) toggle.set(false)
|
|
5120
5153
|
}
|
|
5121
|
-
|
|
5122
|
-
|
|
5123
|
-
|
|
5124
|
-
|
|
5125
|
-
const
|
|
5126
|
-
|
|
5127
|
-
const target = event.target
|
|
5128
|
-
if (target !== null && target.closest && target.closest(SESSION_ROW_SELECTOR) !== null) toggle.set(false)
|
|
5129
|
-
}
|
|
5130
|
-
|
|
5131
|
-
const waitObserver = new MutationObserver(ensure)
|
|
5132
|
-
waitObserver.observe(document.body, { childList: true, subtree: true })
|
|
5133
|
-
document.addEventListener(ACTIVATE_EVENT, onOtherActivate)
|
|
5134
|
-
document.addEventListener('click', onSidebarClick, true)
|
|
5135
|
-
const unsubscribe = toggle.subscribe(applyActive)
|
|
5136
|
-
applyActive()
|
|
5137
|
-
ensure()
|
|
5138
|
-
|
|
5154
|
+
const obs = new MutationObserver(ensure)
|
|
5155
|
+
obs.observe(document.body, { childList: true, subtree: true })
|
|
5156
|
+
document.addEventListener(ACTIVATE_EVENT, onOther)
|
|
5157
|
+
document.addEventListener('click', onSidebar, true)
|
|
5158
|
+
const unsub = toggle.subscribe(applyActive)
|
|
5159
|
+
applyActive(), ensure()
|
|
5139
5160
|
return () => {
|
|
5140
|
-
|
|
5141
|
-
|
|
5142
|
-
|
|
5143
|
-
|
|
5144
|
-
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
if (container !== undefined) container.remove()
|
|
5148
|
-
container = undefined
|
|
5161
|
+
obs.disconnect()
|
|
5162
|
+
document.removeEventListener(ACTIVATE_EVENT, onOther)
|
|
5163
|
+
document.removeEventListener('click', onSidebar, true)
|
|
5164
|
+
unsub()
|
|
5165
|
+
document.documentElement.removeAttribute(ACTIVE_ATTR)
|
|
5166
|
+
if (root) root.unmount(), root = undefined
|
|
5167
|
+
if (container) container.remove(), container = undefined
|
|
5149
5168
|
}
|
|
5150
5169
|
}
|
|
5151
|
-
|
|
5152
5170
|
function registerFirst(ctx, candidates, component) {
|
|
5153
5171
|
for (const entry of candidates) {
|
|
5154
5172
|
try {
|
|
@@ -5168,9 +5186,21 @@ window.__ModuleLoader__.load({
|
|
|
5168
5186
|
return undefined
|
|
5169
5187
|
}
|
|
5170
5188
|
|
|
5189
|
+
function KanbanPanelIcon(props) {
|
|
5190
|
+
const s = typeof props?.size === 'number' ? props.size : 16
|
|
5191
|
+
return h('svg', {
|
|
5192
|
+
viewBox: '0 0 16 16', width: s, height: s, fill: 'none', stroke: 'currentColor',
|
|
5193
|
+
strokeWidth: '1.3', strokeLinecap: 'round', strokeLinejoin: 'round', 'aria-hidden': 'true',
|
|
5194
|
+
'data-dsh-part': 'kanban-icon',
|
|
5195
|
+
}, h('rect', { x: 2, y: 2.5, width: 12, height: 11, rx: 1.5 }), h('path', { d: 'M2 6.5h12M6.5 6.5v7' }))
|
|
5196
|
+
}
|
|
5171
5197
|
helpers.createToggle = createToggle
|
|
5172
|
-
|
|
5173
|
-
|
|
5198
|
+
helpers.BoardScreen = BoardScreen
|
|
5199
|
+
helpers.TaskChip = TaskChip
|
|
5200
|
+
helpers.KanbanPanelIcon = KanbanPanelIcon
|
|
5201
|
+
helpers.mountSidebarEntry = mountSidebarEntry
|
|
5202
|
+
helpers.createFallbackNavEntry = createFallbackNavEntry
|
|
5203
|
+
helpers.placeNavEntry = placeNavEntry
|
|
5174
5204
|
|
|
5175
5205
|
function apply(ctx) {
|
|
5176
5206
|
ctx.effect(() => ctx.locale.register(NS, { en, zh }), 'dsh-kanban: locales')
|
|
@@ -5225,10 +5255,37 @@ window.__ModuleLoader__.load({
|
|
|
5225
5255
|
if (!cardSlot) cardSlot = 'settings.plugin.item'
|
|
5226
5256
|
})
|
|
5227
5257
|
|
|
5258
|
+
trySlot('sidebar.panellist', () => {
|
|
5259
|
+
ctx.slots.register({ name: 'sidebar.panellist', id: 'kanban', order: 25, label: () => fallbackT('section.label'), locale: NS }, KanbanPanelIcon)
|
|
5260
|
+
})
|
|
5261
|
+
trySlot('main', () => {
|
|
5262
|
+
ctx.slots.register({
|
|
5263
|
+
name: 'main', key: 'kanban', locale: NS,
|
|
5264
|
+
inject: () => ({ ctx, toggle, onClose: () => {
|
|
5265
|
+
selectPanel(null)
|
|
5266
|
+
toggle.set(false)
|
|
5267
|
+
} }),
|
|
5268
|
+
}, BoardScreen)
|
|
5269
|
+
})
|
|
5228
5270
|
const toggle = createToggle()
|
|
5271
|
+
const bindLayout = () => {
|
|
5272
|
+
const p = layoutService?.panelInfo
|
|
5273
|
+
if (!p?.subscribe) return
|
|
5274
|
+
const sync = () => {
|
|
5275
|
+
const a = (p.getSnapshot ? p.getSnapshot() : p)?.activePanelId
|
|
5276
|
+
if (a === 'kanban' && !toggle.isOpen()) toggle.set(true)
|
|
5277
|
+
else if (a !== 'kanban' && a !== undefined && toggle.isOpen()) toggle.set(false)
|
|
5278
|
+
}
|
|
5279
|
+
sync()
|
|
5280
|
+
if (typeof ctx?.effect === 'function') ctx.effect(() => p.subscribe(sync), 'dsh-kanban: layout')
|
|
5281
|
+
else p.subscribe(sync)
|
|
5282
|
+
}
|
|
5283
|
+
if (typeof ctx?.inject === 'function') {
|
|
5284
|
+
try { ctx.inject(['layout'], (sc) => { layoutService = sc?.layout || null; bindLayout() }) } catch (_) { /* bestEffort: optional layout */ }
|
|
5285
|
+
} else if (ctx?.layout) { layoutService = ctx.layout; bindLayout() }
|
|
5229
5286
|
ctx.effect(() => {
|
|
5230
|
-
|
|
5231
|
-
|
|
5287
|
+
const off = [mountSidebarEntry(ctx, toggle, fallbackT('section.label')), mountBoard(ctx, toggle)]
|
|
5288
|
+
return () => { for (const fn of off) fn() }
|
|
5232
5289
|
}, 'dsh-kanban: shell board')
|
|
5233
5290
|
|
|
5234
5291
|
const chipSlot = registerFirst(ctx, [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-kanban",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.43",
|
|
4
4
|
"description": "Visual Kanban board for DeepSeek Harness: Gitea and GitHub-backed tasks, workflow columns, and a dedicated agent session per task.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -50,7 +50,8 @@
|
|
|
50
50
|
"inject": [
|
|
51
51
|
"@deepseek-ai/dsh-client-locale",
|
|
52
52
|
"@deepseek-ai/dsh-client-ui-settings",
|
|
53
|
-
"@deepseek-ai/dsh-client-ui-slots"
|
|
53
|
+
"@deepseek-ai/dsh-client-ui-slots",
|
|
54
|
+
"@deepseek-ai/dsh-client-ui-layout"
|
|
54
55
|
]
|
|
55
56
|
}
|
|
56
57
|
},
|