@linxin666/dsh-ssh 0.1.1 → 0.1.3

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/README.md CHANGED
@@ -37,7 +37,10 @@ DeepSeek Harness(DSH)定制的远程 SSH 插件:Host 进程内的持久连
37
37
  推荐直接安装全家桶聚合包 `@linxin666/dsh-web-ui-all`(一个包装齐全部功能插件与皮肤),或单独安装本插件:
38
38
 
39
39
  ```sh
40
- # 当前(插件尚未发布到 npm):克隆全家桶仓库后安装
40
+ # 推荐:直接从 npm 安装
41
+ dsh plugin --profile web add @linxin666/dsh-ssh
42
+
43
+ # 或从仓库安装(开发调试)
41
44
  git clone https://github.com/zhu1090093659/dsh-web-ui.git
42
45
  cd dsh-web-ui
43
46
  pnpm install && pnpm -r build
package/lib/client.js CHANGED
@@ -595,7 +595,7 @@ window.__ModuleLoader__.load({
595
595
  }
596
596
  //#endregion
597
597
  //#region \0dsh-css:/Users/zcl/code/dsh-web-ui/packages/dsh-ssh/src/client/panel/panel.module.css.mjs
598
- const css = "[data-pane=conversation]{position:relative}[data-dsh-ssh-view]{z-index:5;display:none;position:absolute;inset:0}html[data-dsh-ssh-active] [data-dsh-ssh-view]{display:block}html[data-dsh-ssh-active] [data-pane=conversation]>:not([data-dsh-ssh-view]){display:none}.HIRDBW_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.HIRDBW_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.HIRDBW_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.HIRDBW_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.HIRDBW_entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] .HIRDBW_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .HIRDBW_entryLabel{display:none}.HIRDBW_view{overflow:hidden}.HIRDBW_panel{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:10px;padding:14px 16px 16px;display:flex}.HIRDBW_panelHeader{flex:none;align-items:center;gap:10px;display:flex}.HIRDBW_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;flex:1;margin:0;font-size:16px;font-weight:700}.HIRDBW_tabBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:2px;display:flex}.HIRDBW_tab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:7px 14px;font-size:13px}.HIRDBW_tab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_tab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}.HIRDBW_panelContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.HIRDBW_tabBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.HIRDBW_fillBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow:hidden}.HIRDBW_toolbar,.HIRDBW_controls{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.HIRDBW_controls .HIRDBW_input{flex:0 260px;min-width:150px}.HIRDBW_toolbarSpacer{flex:1}.HIRDBW_search{min-width:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:0 260px;padding:6px 10px;font-size:13px}.HIRDBW_search::placeholder{color:var(--dsw-alias-label-tertiary)}.HIRDBW_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex:1;min-height:0;overflow:auto}.HIRDBW_table{border-collapse:collapse;width:100%;font-size:12.5px}.HIRDBW_table th{z-index:1;text-align:left;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap;padding:8px 10px;font-weight:600;position:sticky;top:0}.HIRDBW_table td{border-bottom:1px solid var(--dsw-alias-separator-primary);vertical-align:top;padding:7px 10px}.HIRDBW_table tbody tr:last-child td{border-bottom:none}.HIRDBW_table tbody tr:hover td{background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.HIRDBW_cellMuted{color:var(--dsw-alias-label-tertiary)}.HIRDBW_actions{white-space:nowrap;align-items:center;gap:8px;display:flex}.HIRDBW_inlineTest{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.HIRDBW_inlineTest[data-status=ok]{color:var(--dsw-alias-state-success-primary)}.HIRDBW_inlineTest[data-status=fail]{color:var(--dsw-alias-state-error-primary)}.HIRDBW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;line-height:1.6;display:inline-block}.HIRDBW_badge[data-kind=key]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_badge[data-kind=password]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_badge[data-status=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_badge[data-status=fail]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_badge[data-status=timeout]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.HIRDBW_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.HIRDBW_primaryButton:disabled{opacity:.5;cursor:default}.HIRDBW_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}.HIRDBW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_ghostButton:disabled{opacity:.45;cursor:default}.HIRDBW_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.HIRDBW_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.HIRDBW_linkButton{color:var(--dsw-alias-state-business-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-size:12px}.HIRDBW_linkButton:hover:not(:disabled){text-decoration:underline}.HIRDBW_linkButton:disabled{opacity:.45;cursor:default}.HIRDBW_linkButton[data-danger]{color:var(--dsw-alias-state-error-primary)}.HIRDBW_spinner{border:2px solid var(--dsw-alias-state-business-primary);vertical-align:-1px;border-top-color:#0000;border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite HIRDBW_dshSshSpin;display:inline-block}@keyframes HIRDBW_dshSshSpin{to{transform:rotate(360deg)}}.HIRDBW_banner{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:8px;padding:8px 12px;font-size:12.5px;line-height:1.5}.HIRDBW_banner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_banner[data-kind=error]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_banner[data-kind=info]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_empty,.HIRDBW_loading{text-align:center;color:var(--dsw-alias-label-tertiary);padding:28px 12px;font-size:12.5px}.HIRDBW_modalBackdrop{z-index:40;background:var(--dsw-alias-bg-mask-1);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.HIRDBW_modal{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(560px,100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.HIRDBW_modalTitle{margin:0;font-size:15px;font-weight:700}.HIRDBW_modalFooter{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.HIRDBW_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.HIRDBW_hint{color:var(--dsw-alias-label-tertiary);font-size:11.5px}.HIRDBW_field{flex-direction:column;gap:5px;display:flex}.HIRDBW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.HIRDBW_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}.HIRDBW_input:focus{border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_input::placeholder{color:var(--dsw-alias-label-tertiary)}.HIRDBW_input:disabled{opacity:.55}.HIRDBW_formRow{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;display:grid}.HIRDBW_radioRow{align-items:center;gap:16px;display:flex}.HIRDBW_radioLabel{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.HIRDBW_termBody{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:hidden}.HIRDBW_termWrap{border:1px solid var(--dsw-alias-border-l1);background:#0b0e14;border-radius:10px;flex:1;min-height:0;position:relative;overflow:hidden}.HIRDBW_termContainer{padding:8px 10px;position:absolute;inset:0}.HIRDBW_termPlaceholder{z-index:2;text-align:center;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);justify-content:center;align-items:center;padding:0 24px;font-size:12.5px;display:flex;position:absolute;inset:0}.HIRDBW_hiddenFile{display:none}.HIRDBW_browsePanel{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;display:flex;overflow:hidden}.HIRDBW_browseHeader{background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:8px;padding:8px 10px;display:flex}.HIRDBW_browsePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;overflow:hidden}.HIRDBW_browseList{max-height:240px;overflow-y:auto}.HIRDBW_dirRow{text-align:left;width:100%;font:inherit;color:var(--dsw-alias-label-primary);border:none;border-bottom:1px solid var(--dsw-alias-separator-primary);cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;padding:5px 10px;font-size:12.5px;display:grid}.HIRDBW_dirRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_dirRow[data-type=dir] .HIRDBW_dirName{color:var(--dsw-alias-state-business-primary)}.HIRDBW_dirRow[data-up]{color:var(--dsw-alias-label-secondary)}.HIRDBW_dirName{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.HIRDBW_dirType{color:var(--dsw-alias-label-tertiary);white-space:nowrap}.HIRDBW_dirSize{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-align:right}.HIRDBW_transferBlock{flex-direction:column;flex:none;gap:6px;display:flex}.HIRDBW_progressMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.HIRDBW_progressTrack{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;height:8px;overflow:hidden}.HIRDBW_progressBar{background:var(--dsw-alias-state-business-primary);border-radius:999px;height:100%;transition:width .12s linear}.HIRDBW_tunnelList{flex-direction:column;flex:none;gap:8px;display:flex}.HIRDBW_tunnelRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.HIRDBW_tunnelRow[data-state=forwarding]{border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_tunnelRow[data-state=connecting]{border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_tunnelRow[data-state=failed]{border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_tunnelLabel{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;overflow:hidden}.HIRDBW_formCard{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.HIRDBW_clusterForm{flex-direction:column;flex:none;gap:8px;display:flex}.HIRDBW_clusterFilters{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.HIRDBW_commandInput{min-height:96px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.HIRDBW_cellDetails summary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-size:12px}.HIRDBW_cellPre{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:180px;margin:4px 0 0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow:auto}";
598
+ const css = "[data-pane=conversation]{position:relative}[data-dsh-ssh-view]{z-index:5;display:none;position:absolute;inset:0}html[data-dsh-ssh-active]:not([data-dsh-taskboard-active]) [data-dsh-ssh-view]{display:block}html[data-dsh-ssh-active]:not([data-dsh-taskboard-active]) [data-pane=conversation]>:not([data-dsh-ssh-view]){display:none}.HIRDBW_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.HIRDBW_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.HIRDBW_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.HIRDBW_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.HIRDBW_entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] .HIRDBW_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .HIRDBW_entryLabel{display:none}.HIRDBW_view{overflow:hidden}.HIRDBW_panel{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:10px;padding:14px 16px 16px;display:flex}.HIRDBW_panelHeader{flex:none;align-items:center;gap:10px;display:flex}.HIRDBW_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;flex:1;margin:0;font-size:16px;font-weight:700}.HIRDBW_tabBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:2px;display:flex}.HIRDBW_tab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:7px 14px;font-size:13px}.HIRDBW_tab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_tab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}.HIRDBW_panelContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.HIRDBW_tabBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.HIRDBW_fillBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow:hidden}.HIRDBW_toolbar,.HIRDBW_controls{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.HIRDBW_controls .HIRDBW_input{flex:0 260px;min-width:150px}.HIRDBW_toolbarSpacer{flex:1}.HIRDBW_search{min-width:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:0 260px;padding:6px 10px;font-size:13px}.HIRDBW_search::placeholder{color:var(--dsw-alias-label-tertiary)}.HIRDBW_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex:1;min-height:0;overflow:auto}.HIRDBW_table{border-collapse:collapse;width:100%;font-size:12.5px}.HIRDBW_table th{z-index:1;text-align:left;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap;padding:8px 10px;font-weight:600;position:sticky;top:0}.HIRDBW_table td{border-bottom:1px solid var(--dsw-alias-separator-primary);vertical-align:top;padding:7px 10px}.HIRDBW_table tbody tr:last-child td{border-bottom:none}.HIRDBW_table tbody tr:hover td{background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.HIRDBW_cellMuted{color:var(--dsw-alias-label-tertiary)}.HIRDBW_actions{white-space:nowrap;align-items:center;gap:8px;display:flex}.HIRDBW_inlineTest{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.HIRDBW_inlineTest[data-status=ok]{color:var(--dsw-alias-state-success-primary)}.HIRDBW_inlineTest[data-status=fail]{color:var(--dsw-alias-state-error-primary)}.HIRDBW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;line-height:1.6;display:inline-block}.HIRDBW_badge[data-kind=key]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_badge[data-kind=password]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_badge[data-status=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_badge[data-status=fail]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_badge[data-status=timeout]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.HIRDBW_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.HIRDBW_primaryButton:disabled{opacity:.5;cursor:default}.HIRDBW_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}.HIRDBW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_ghostButton:disabled{opacity:.45;cursor:default}.HIRDBW_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.HIRDBW_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.HIRDBW_linkButton{color:var(--dsw-alias-state-business-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-size:12px}.HIRDBW_linkButton:hover:not(:disabled){text-decoration:underline}.HIRDBW_linkButton:disabled{opacity:.45;cursor:default}.HIRDBW_linkButton[data-danger]{color:var(--dsw-alias-state-error-primary)}.HIRDBW_spinner{border:2px solid var(--dsw-alias-state-business-primary);vertical-align:-1px;border-top-color:#0000;border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite HIRDBW_dshSshSpin;display:inline-block}@keyframes HIRDBW_dshSshSpin{to{transform:rotate(360deg)}}.HIRDBW_banner{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:8px;padding:8px 12px;font-size:12.5px;line-height:1.5}.HIRDBW_banner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_banner[data-kind=error]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_banner[data-kind=info]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_empty,.HIRDBW_loading{text-align:center;color:var(--dsw-alias-label-tertiary);padding:28px 12px;font-size:12.5px}.HIRDBW_modalBackdrop{z-index:40;background:var(--dsw-alias-bg-mask-1);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.HIRDBW_modal{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(560px,100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.HIRDBW_modalTitle{margin:0;font-size:15px;font-weight:700}.HIRDBW_modalFooter{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.HIRDBW_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.HIRDBW_hint{color:var(--dsw-alias-label-tertiary);font-size:11.5px}.HIRDBW_field{flex-direction:column;gap:5px;display:flex}.HIRDBW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.HIRDBW_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}.HIRDBW_input:focus{border-color:var(--dsw-alias-state-business-primary)}.HIRDBW_input::placeholder{color:var(--dsw-alias-label-tertiary)}.HIRDBW_input:disabled{opacity:.55}.HIRDBW_formRow{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;display:grid}.HIRDBW_radioRow{align-items:center;gap:16px;display:flex}.HIRDBW_radioLabel{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.HIRDBW_termBody{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:hidden}.HIRDBW_termWrap{border:1px solid var(--dsw-alias-border-l1);background:#0b0e14;border-radius:10px;flex:1;min-height:0;position:relative;overflow:hidden}.HIRDBW_termContainer{padding:8px 10px;position:absolute;inset:0}.HIRDBW_termPlaceholder{z-index:2;text-align:center;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);justify-content:center;align-items:center;padding:0 24px;font-size:12.5px;display:flex;position:absolute;inset:0}.HIRDBW_hiddenFile{display:none}.HIRDBW_browsePanel{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;display:flex;overflow:hidden}.HIRDBW_browseHeader{background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:8px;padding:8px 10px;display:flex}.HIRDBW_browsePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;overflow:hidden}.HIRDBW_browseList{max-height:240px;overflow-y:auto}.HIRDBW_dirRow{text-align:left;width:100%;font:inherit;color:var(--dsw-alias-label-primary);border:none;border-bottom:1px solid var(--dsw-alias-separator-primary);cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;padding:5px 10px;font-size:12.5px;display:grid}.HIRDBW_dirRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.HIRDBW_dirRow[data-type=dir] .HIRDBW_dirName{color:var(--dsw-alias-state-business-primary)}.HIRDBW_dirRow[data-up]{color:var(--dsw-alias-label-secondary)}.HIRDBW_dirName{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.HIRDBW_dirType{color:var(--dsw-alias-label-tertiary);white-space:nowrap}.HIRDBW_dirSize{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-align:right}.HIRDBW_transferBlock{flex-direction:column;flex:none;gap:6px;display:flex}.HIRDBW_progressMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.HIRDBW_progressTrack{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;height:8px;overflow:hidden}.HIRDBW_progressBar{background:var(--dsw-alias-state-business-primary);border-radius:999px;height:100%;transition:width .12s linear}.HIRDBW_tunnelList{flex-direction:column;flex:none;gap:8px;display:flex}.HIRDBW_tunnelRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.HIRDBW_tunnelRow[data-state=forwarding]{border-color:var(--dsw-alias-state-success-primary)}.HIRDBW_tunnelRow[data-state=connecting]{border-color:var(--dsw-alias-state-warn-primary)}.HIRDBW_tunnelRow[data-state=failed]{border-color:var(--dsw-alias-state-error-primary)}.HIRDBW_tunnelLabel{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;overflow:hidden}.HIRDBW_formCard{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.HIRDBW_clusterForm{flex-direction:column;flex:none;gap:8px;display:flex}.HIRDBW_clusterFilters{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.HIRDBW_commandInput{min-height:96px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.HIRDBW_cellDetails summary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-size:12px}.HIRDBW_cellPre{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:180px;margin:4px 0 0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow:auto}";
599
599
  const tagId = "@linxin666/dsh-ssh/panel.module.css";
600
600
  if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
601
601
  const tag = document.createElement("style");
@@ -15425,6 +15425,11 @@ window.__ModuleLoader__.load({
15425
15425
  */
15426
15426
  const CONVERSATION_COLUMN_SELECTOR = "[data-pane=\"conversation\"]";
15427
15427
  const ACTIVE_ATTR = "data-dsh-ssh-active";
15428
+ /** The sibling panel's activation attribute (task board), removed when this panel opens. */
15429
+ const OTHER_ACTIVE_ATTR = "data-dsh-taskboard-active";
15430
+ /** Cross-plugin activation event; detail is the activating panel name. */
15431
+ const ACTIVATE_EVENT = "dsh-panel-activate";
15432
+ const PANEL_NAME = "ssh";
15428
15433
  /** Find the center column, or undefined while the frame is not mounted. */
15429
15434
  function conversationColumn() {
15430
15435
  return document.querySelector(CONVERSATION_COLUMN_SELECTOR) ?? void 0;
@@ -15467,13 +15472,30 @@ window.__ModuleLoader__.load({
15467
15472
  subtree: true
15468
15473
  });
15469
15474
  const applyActive = () => {
15470
- if (controller.getSnapshot().panelOpen) document.documentElement.setAttribute(ACTIVE_ATTR, "");
15471
- else document.documentElement.removeAttribute(ACTIVE_ATTR);
15475
+ if (controller.getSnapshot().panelOpen) {
15476
+ document.documentElement.removeAttribute(OTHER_ACTIVE_ATTR);
15477
+ document.documentElement.setAttribute(ACTIVE_ATTR, "");
15478
+ document.dispatchEvent(new CustomEvent(ACTIVATE_EVENT, { detail: PANEL_NAME }));
15479
+ } else document.documentElement.removeAttribute(ACTIVE_ATTR);
15472
15480
  };
15481
+ const onOtherActivate = (event) => {
15482
+ if (event.detail === "taskboard" && controller.getSnapshot().panelOpen) controller.close();
15483
+ };
15484
+ const SIDEBAR_ROW_SELECTOR = "[class*=\"sessionRow\"], [class*=\"projectRow\"], [class*=\"searchResultRow\"], [class*=\"searchResultWorkspace\"], [class*=\"newSession\"]";
15485
+ const onClickSidebarRow = (event) => {
15486
+ if (!controller.getSnapshot().panelOpen) return;
15487
+ const target = event.target;
15488
+ if (target === null) return;
15489
+ if (target.closest(SIDEBAR_ROW_SELECTOR) !== null) controller.close();
15490
+ };
15491
+ document.addEventListener("click", onClickSidebarRow, true);
15492
+ document.addEventListener(ACTIVATE_EVENT, onOtherActivate);
15473
15493
  const unsubscribe = controller.subscribe(applyActive);
15474
15494
  applyActive();
15475
15495
  ensure();
15476
15496
  return () => {
15497
+ document.removeEventListener("click", onClickSidebarRow, true);
15498
+ document.removeEventListener(ACTIVATE_EVENT, onOtherActivate);
15477
15499
  waitObserver.disconnect();
15478
15500
  unsubscribe();
15479
15501
  document.documentElement.removeAttribute(ACTIVE_ATTR);
@@ -15518,14 +15540,16 @@ window.__ModuleLoader__.load({
15518
15540
  };
15519
15541
  //#endregion
15520
15542
  //#region src/client/sidebar-entry.ts
15521
- /** The sidebar column is the grid item AppFrame renders with this pane marker. */
15522
- const SIDEBAR_COLUMN_SELECTOR = "[data-pane=\"sidebar\"]";
15523
15543
  /** Find the sidebar shell root element, or undefined while not yet mounted. */
15524
15544
  function sidebarRoot() {
15525
- return document.querySelector(SIDEBAR_COLUMN_SELECTOR)?.firstElementChild ?? void 0;
15545
+ const column = document.querySelector("[data-pane=\"sidebar\"], [class*=\"sidebarCol\"]");
15546
+ if (column === null) return void 0;
15547
+ return column.querySelector("[class*=\"logoRow\"]")?.parentElement ?? column.firstElementChild;
15526
15548
  }
15527
- /** The New Session button: the shell's only direct-child button of the root. */
15549
+ /** The New Session button: nested in the logo row on current shells, a direct child on legacy shells. */
15528
15550
  function newSessionButton(root) {
15551
+ const nested = root.querySelector("button[class*=\"newSession\"]");
15552
+ if (nested !== null) return nested;
15529
15553
  for (const child of root.children) if (child.tagName === "BUTTON") return child;
15530
15554
  }
15531
15555
  /** Build the entry row (a detached button; insert once the shell is up). */
@@ -15542,11 +15566,17 @@ window.__ModuleLoader__.load({
15542
15566
  });
15543
15567
  return entry;
15544
15568
  }
15545
- /** Re-insert the entry after the New Session button (before the browser region). */
15569
+ /** Re-insert the entry after the New Session row (before the browser region). */
15546
15570
  function placeEntry(root, entry) {
15547
15571
  const button = newSessionButton(root);
15548
15572
  if (button === void 0) return false;
15549
- if (entry.parentElement !== root) root.insertBefore(entry, button.nextElementSibling);
15573
+ if (entry.parentElement !== root) {
15574
+ const row = button.closest("[class*=\"logoRow\"]");
15575
+ const base = row !== null && row.parentElement === root ? row : button;
15576
+ const family = Array.from(root.children).filter((el) => el instanceof HTMLElement && el.matches("[data-dsh-taskboard-entry], [data-dsh-ssh-entry]"));
15577
+ const anchor = family.length > 0 ? family[family.length - 1].nextElementSibling : base.nextElementSibling;
15578
+ root.insertBefore(entry, anchor);
15579
+ }
15550
15580
  return true;
15551
15581
  }
15552
15582
  /**
@@ -15568,10 +15598,13 @@ window.__ModuleLoader__.load({
15568
15598
  root ??= sidebarRoot();
15569
15599
  if (root === void 0) return;
15570
15600
  placed = placeEntry(root, entry);
15571
- if (placed) rootObserver.observe(root, {
15572
- childList: true,
15573
- subtree: true
15574
- });
15601
+ if (placed) {
15602
+ rootObserver.observe(root, {
15603
+ childList: true,
15604
+ subtree: true
15605
+ });
15606
+ waitObserver.disconnect();
15607
+ }
15575
15608
  };
15576
15609
  const waitObserver = new MutationObserver(() => {
15577
15610
  tryPlace();