@linxin666/dsh-ssh 0.1.9 → 0.1.11

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@linxin666/dsh-ssh",
3
3
  "description": "Remote SSH operations for the dsh web GUI: host config store (~/.dsh/dsh-ssh.json, import from ~/.ssh/config), a persistent ssh2 connection pool with jump-host support, exec / PTY web terminal / SFTP transfer / local port-forward tunnels / cluster execution, plus agent tools (ssh_list, ssh_exec, ssh_upload, ssh_download, ssh_tunnel, ssh_cluster). Hot-pluggable — mounted via ~/.dsh/cordis.patch.yml + a profile node_modules symlink, no dsh source changes.",
4
- "version": "0.1.9",
4
+ "version": "0.1.11",
5
5
  "type": "module",
6
6
  "engines": {
7
7
  "node": "^22.19.0 || >=24.0.0"
@@ -18,7 +18,10 @@
18
18
  position: absolute;
19
19
  inset: 0;
20
20
  display: none;
21
- z-index: 5;
21
+ /* Above the conversation composer (z-index 7 in the 0.1.0-rc.6 shell) so the
22
+ panel and its modals paint over the input card, mirroring the task board
23
+ (issue #87). */
24
+ z-index: 60;
22
25
  }
23
26
 
24
27
  /* The center column is single-occupant; the :not() guards keep the two
@@ -31,7 +34,7 @@ html[data-dsh-ssh-active]:not([data-dsh-taskboard-active]) [data-dsh-ssh-view] {
31
34
  /* While the panel is active, the conversation content underneath is hidden
32
35
  (it stays mounted and stateful). */
33
36
  html[data-dsh-ssh-active]:not([data-dsh-taskboard-active]) [data-pane='conversation'] > :not([data-dsh-ssh-view]) {
34
- display: none;
37
+ display: none !important;
35
38
  }
36
39
 
37
40
  /* --- sidebar entry row ------------------------------------------------------- */
@@ -139,11 +139,15 @@ export function mountSidebarEntry(controller: PanelController): () => void {
139
139
  }
140
140
  })
141
141
 
142
- // Reflect the panel's open state on the row (active highlight).
143
- const unsubscribe = controller.subscribe(() => {
144
- entry.dataset.active = controller.getSnapshot().panelOpen ? 'true' : undefined
145
- })
146
- entry.dataset.active = controller.getSnapshot().panelOpen ? 'true' : undefined
142
+ // Reflect the panel's open state on the row (active highlight). Note: assigning
143
+ // undefined to dataset.active materializes data-active="undefined" and keeps the
144
+ // row permanently highlighted — delete the attribute instead.
145
+ const syncActive = () => {
146
+ if (controller.getSnapshot().panelOpen) entry.dataset.active = 'true'
147
+ else delete entry.dataset.active
148
+ }
149
+ const unsubscribe = controller.subscribe(syncActive)
150
+ syncActive()
147
151
 
148
152
  tryPlace()
149
153