dsh-sql 0.5.10 → 0.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # 更新记录
2
2
 
3
+ ## 0.5.12 (2026-11-14)
4
+
5
+ - 适配 DSH 0.2.2-rc.3:最低 Harness 版本声明提升至 0.2.2-rc.3,运行时代码未变。
6
+ - Support DSH 0.2.2-rc.3: raise the minimum Harness declaration to 0.2.2-rc.3; runtime code is unchanged.
7
+
8
+ ## 0.5.11 (2026-11-04)
9
+
10
+ - 同步共享界面:嵌入设置时继承宿主底色,输入框跟随主题,空状态保持可读宽度;新版 DSH 可显示插件设置图标。
11
+ - Align embedded surfaces, themed inputs, readable empty states and optional native settings icons.
12
+
13
+
3
14
  ## 0.5.10 (2026-11-03)
4
15
 
5
16
  - 连接与模式查询失败保留原文并追加下一步;sql_list 补端口;空态给指引。
package/README.en.md CHANGED
@@ -29,7 +29,7 @@ Open **Plugins** in the DSH desktop app and install `dsh-sql`. If the CLI is ava
29
29
  dsh plugin --profile desktop add dsh-sql
30
30
  ```
31
31
 
32
- For the web profile, replace `desktop` with `web`. Restart that DSH profile after installation. The package’s DSH requirement is `>=0.2.1-rc.3`.
32
+ For the web profile, replace `desktop` with `web`. Restart that DSH profile after installation. The package’s DSH requirement is `>=0.2.2-rc.3`.
33
33
 
34
34
  ## Start using it
35
35
 
package/README.md CHANGED
@@ -29,7 +29,7 @@
29
29
  dsh plugin --profile desktop add dsh-sql
30
30
  ```
31
31
 
32
- 网页版把 `desktop` 改为 `web`;安装后重启对应的 DSH。宿主要求以包声明 `>=0.2.1-rc.3` 为准。
32
+ 网页版把 `desktop` 改为 `web`;安装后重启对应的 DSH。宿主要求以包声明 `>=0.2.2-rc.3` 为准。
33
33
 
34
34
  ## 开始使用
35
35
 
@@ -52,7 +52,7 @@ Detailed configuration, tool arguments and troubleshooting are in the [usage gui
52
52
 
53
53
  ## Plugin updates
54
54
 
55
- Requires DSH 0.2.1-rc.3 or newer. Update controls sit at the bottom of the existing workbench, or native plugin details for plugins without a workbench. Checks, release notes and preferences expand in place, with no separate update page or settings menu. Automatic checks are on by default; **automatic installation is off by default**. Only explicit opt-in permits compatible stable patches while idle with no unsaved changes. Preferences are independent, with per-plugin disable, deferral and ignore controls. No forced DSH restart or upgrade, and local-source installations stay unchanged. Suite components explain and operate on the whole Suite in the same footer.
55
+ Requires DSH 0.2.2-rc.3 or newer. Update controls sit at the bottom of the existing workbench, or native plugin details for plugins without a workbench. Checks, release notes and preferences expand in place, with no separate update page or settings menu. Automatic checks are on by default; **automatic installation is off by default**. Only explicit opt-in permits compatible stable patches while idle with no unsaved changes. Preferences are independent, with per-plugin disable, deferral and ignore controls. No forced DSH restart or upgrade, and local-source installations stay unchanged. Suite components explain and operate on the whole Suite in the same footer.
56
56
 
57
57
  Older releases need one manual update in native plugin management to acquire these controls. Publishing to npm does not replace an existing user installation.
58
58
 
@@ -52,7 +52,7 @@ SQLite 需可访问的数据库文件;MySQL / PostgreSQL 需对应服务与登
52
52
 
53
53
  ## 插件更新
54
54
 
55
- 需要 DSH 0.2.1-rc.3 或更新版本。更新控件直接位于原有工作台内容末尾;没有工作台的插件,位于原生插件详情页底部。检查、更新记录和偏好在原地展开,不增加独立更新页面或设置菜单。自动检查默认开启;**自动安装默认关闭**,明确授权后才会在空闲且没有未保存修改时安装兼容的稳定补丁。开关按插件独立保存,可关闭、推迟或忽略提醒;不会强制重启 DSH、升级 DSH 本体或替换本地源码安装。Suite 组件在当前页面底部明确说明并操作 Suite 整包更新。
55
+ 需要 DSH 0.2.2-rc.3 或更新版本。更新控件直接位于原有工作台内容末尾;没有工作台的插件,位于原生插件详情页底部。检查、更新记录和偏好在原地展开,不增加独立更新页面或设置菜单。自动检查默认开启;**自动安装默认关闭**,明确授权后才会在空闲且没有未保存修改时安装兼容的稳定补丁。开关按插件独立保存,可关闭、推迟或忽略提醒;不会强制重启 DSH、升级 DSH 本体或替换本地源码安装。Suite 组件在当前页面底部明确说明并操作 Suite 整包更新。
56
56
 
57
57
  旧版用户先在官方插件管理中手动更新一次,之后才会获得此入口。发布到 npm 不会直接替换用户已经安装的版本。
58
58
 
@@ -55,7 +55,7 @@ function createWorkbenchUI(React) {
55
55
  }
56
56
  function Page({ title, subtitle, actions, children, workbench = false, className, rootRef, ...props }) {
57
57
  return h('section', { ...props, ref: rootRef, className: cx('dshw', 'w-page', className), 'data-main': workbench ? 'true' : 'false' },
58
- h('style', null, styles),
58
+ h(Styles, { key: 'styles' }),
59
59
  h('header', { className: 'w-page-header' }, h('div', { className: 'w-heading' }, h('h1', null, title), subtitle ? h('p', { className: 'w-subtitle' }, subtitle) : null), actions ? h('div', { className: 'w-header-actions' }, actions) : null),
60
60
  h('div', { className: 'w-body' }, children));
61
61
  }
@@ -78,10 +78,10 @@ function createWorkbenchUI(React) {
78
78
  }
79
79
  function Status({ children, tone = 'info', className }) {
80
80
  if (!children) return null;
81
- return h('div', { className: cx('w-status', 'w-status-' + tone, className), role: tone === 'error' ? 'alert' : 'status', 'aria-live': tone === 'error' ? 'assertive' : 'polite' }, h(Icon, { name: tone === 'success' ? 'check' : 'info', size: 18 }), h('div', null, children));
81
+ return h('div', { className: cx('dshw', 'w-status', 'w-status-' + tone, className), role: tone === 'error' ? 'alert' : 'status', 'aria-live': tone === 'error' ? 'assertive' : 'polite' }, h(Icon, { name: tone === 'success' ? 'check' : 'info', size: 18 }), h('div', null, children));
82
82
  }
83
83
  function Empty({ title, children, action, icon = 'file' }) {
84
- return h('div', { className: 'w-empty' }, h(Icon, { name: icon, size: 32 }), h('h2', null, title), children ? h('div', { className: 'w-muted' }, children) : null, action ? h('div', { className: 'w-toolbar' }, action) : null);
84
+ return h('div', { className: 'dshw w-empty' }, h(Styles, { key: 'styles' }), h(Icon, { name: icon, size: 32 }), h('h2', null, title), children ? h('div', { className: 'w-muted' }, children) : null, action ? h('div', { className: 'w-toolbar' }, action) : null);
85
85
  }
86
86
  function Split({ list, detail, selected, onBack, backLabel, className, listWidth = 360 }) {
87
87
  const ref = useRef(null);
@@ -125,7 +125,8 @@ function createWorkbenchUI(React) {
125
125
  else if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }
126
126
  else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }
127
127
  }
128
- return h('div', { className: 'w-overlay', onClick: event => { if (!busy && event.target === event.currentTarget) onClose(); } },
128
+ return h('div', { className: 'dshw w-overlay', onClick: event => { if (!busy && event.target === event.currentTarget) onClose(); } },
129
+ h(Styles, { key: 'styles' }),
129
130
  h('section', { ref: panel, className: cx('w-dialog', className), role: 'dialog', 'aria-modal': true, 'aria-labelledby': id, tabIndex: -1, onKeyDown: keydown },
130
131
  h('header', { className: 'w-dialog-header' }, h('h2', { id }, title), h(IconButton, { icon: 'close', label: closeLabel, disabled: busy, onClick: onClose })), h('div', { className: 'w-dialog-body' }, children)));
131
132
  }
@@ -136,10 +137,10 @@ function createWorkbenchUI(React) {
136
137
  ctx.slots.inject('sidebar.panellist', () => ctx.slots.register({ name: 'sidebar.panellist', id, order, label }, function WorkbenchIcon({ size }) { return h(Icon, { name: icon, size }); }));
137
138
  }
138
139
  const styles = `
139
- .dshw{--w-bg:var(--dsw-alias-bg-layer-1,#fff);--w-soft:var(--dsw-alias-bg-layer-2,#f7f8fa);--w-text:var(--dsw-alias-label-primary,#18202c);--w-muted:var(--dsw-alias-label-secondary,#667085);--w-border:var(--dsw-alias-border-l3,#e7e9ef);--w-accent:var(--dsh-plugin-workbench-accent,#4f6bdb);--w-selected:color-mix(in srgb,var(--w-accent) 10%,var(--w-bg));--w-primary:var(--w-text);--w-on-primary:var(--w-bg);container-type:inline-size;container-name:dsh-workbench;color:var(--w-text);background:var(--w-bg);font:14px/1.65 var(--dsh-font-family-content,system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif);min-width:0;max-width:100%;box-sizing:border-box;text-align:start;color-scheme:inherit}
140
- .dshw *,.dshw *:before,.dshw *:after{box-sizing:border-box}.dshw h1,.dshw h2,.dshw h3,.dshw h4,.dshw p{margin:0}.dshw h1{font-size:30px;line-height:1.25;letter-spacing:-.025em;font-weight:650}.dshw h2{font-size:24px;line-height:1.35;font-weight:650;letter-spacing:-.015em;overflow-wrap:anywhere}.dshw h3,.dshw h4{font-size:16px;line-height:1.4;font-weight:600}.dshw a{color:var(--w-accent);text-underline-offset:3px;overflow-wrap:anywhere}.dshw button,.dshw input,.dshw select,.dshw textarea{font:inherit;color:inherit;max-width:100%}.dshw input:not([type=checkbox]):not([type=radio]):not([type=file]),.dshw select,.dshw textarea{background:var(--w-bg);border:1px solid var(--w-border);border-radius:8px;padding:8px 11px;min-width:0;line-height:1.5}.dshw input:not([type=checkbox]):not([type=radio]):not([type=file]),.dshw select{min-height:38px}.dshw textarea{resize:vertical}.dshw input[type=checkbox],.dshw input[type=radio]{width:16px;height:16px;flex-shrink:0;accent-color:var(--w-accent)}.dshw :focus-visible{outline:2px solid var(--w-accent);outline-offset:3px}.dshw button:disabled,.dshw input:disabled,.dshw select:disabled,.dshw textarea:disabled{opacity:.5;cursor:not-allowed}.dshw label{font-size:13px}.dshw fieldset{min-width:0;border:1px solid var(--w-border);border-radius:8px}.dshw summary{cursor:pointer;font-weight:550;list-style:none;display:flex;align-items:center;gap:8px}.dshw summary::-webkit-details-marker{display:none}.dshw summary:after{content:'';display:block;margin-inline-start:auto;width:7px;height:7px;border-inline-end:1.75px solid currentColor;border-bottom:1.75px solid currentColor;transform:rotate(45deg);flex-shrink:0}.dshw details[open]>summary:after{transform:rotate(225deg)}.dshw details>summary+*{margin-top:12px}.dshw pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;max-width:100%;background:var(--w-soft);border-radius:6px;padding:14px}.dshw img,.dshw video,.dshw iframe{max-width:100%}
141
- .w-page{display:flex;flex-direction:column;position:relative;padding:0;min-height:540px;gap:0}.w-page[data-main=true]{height:100%;min-height:0;padding:calc(24px + var(--dsh-frame-top-clearance,0px)) 28px 0 max(28px,var(--dsh-frame-leading-clearance,0px));overflow:auto}.w-page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding-bottom:22px;flex-shrink:0}.w-heading{min-width:0}.w-subtitle{margin-top:8px!important;font-size:14px;color:var(--w-muted);line-height:1.6}.w-header-actions,.w-toolbar,.w-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.w-header-actions{justify-content:flex-end}.w-body,.w-tabs-layout{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.w-body{overflow:auto}.w-tab-panel{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:auto}.w-tabs{display:flex;align-items:stretch;gap:20px;border-bottom:1px solid var(--w-border);flex-shrink:0;overflow-x:auto;scrollbar-width:thin}.dshw .w-tabs>button{border:0;border-bottom:2px solid transparent;background:transparent;padding:11px 8px 13px;white-space:nowrap;font-size:14px;font-weight:550;cursor:pointer;color:var(--w-muted);display:flex;align-items:center;gap:7px}.dshw .w-tabs>button[aria-selected=true]{border-bottom-color:var(--w-accent);color:var(--w-accent)}.w-count,.w-tag{font-size:12px;line-height:1.5;display:inline-flex;align-items:center;flex-shrink:0;background:var(--w-soft);border-radius:5px;padding:1px 6px;color:var(--w-muted)}.w-tabs [aria-selected=true] .w-count,.w-selected .w-tag{color:var(--w-accent);background:var(--w-selected)}
142
- .dshw .w-button{display:inline-flex;justify-content:center;align-items:center;gap:7px;background:var(--w-bg);border:1px solid var(--w-border);border-radius:8px;padding:8px 12px;min-height:36px;line-height:1.4;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;white-space:normal}.dshw .w-button:not(:disabled):hover{background:var(--w-soft)}.dshw .w-primary{background:var(--w-primary);border-color:var(--w-primary);color:var(--w-on-primary)}.dshw .w-primary:not(:disabled):hover{background:var(--w-primary);opacity:.9}.dshw .w-ghost{background:transparent;border-color:transparent}.dshw .w-danger{color:var(--dsw-alias-state-error-primary,#b43c3c)}.dshw .w-icon-button{width:36px;min-width:36px;padding:8px}.dshw .w-button svg{flex-shrink:0}.w-muted{color:var(--w-muted);font-size:12px;line-height:1.6}.w-section{padding:24px 0;border-bottom:1px solid var(--w-border);min-width:0}.w-section>h3{margin-bottom:12px}.w-section>p+p{margin-top:8px}.w-fields{display:grid;gap:16px;min-width:0}.w-field{display:grid;gap:6px;min-width:0}.w-field>input,.w-field>select,.w-field>textarea{width:100%}.w-status{display:flex;align-items:flex-start;gap:8px;padding:11px 13px;margin:12px 0;border:1px solid var(--w-border);border-radius:8px;background:var(--w-soft);font-size:13px;overflow-wrap:anywhere;flex-shrink:0}.w-status>svg{flex-shrink:0;margin-top:2px}.w-status-error{color:var(--dsw-alias-state-error-primary,#ad3636)}.w-status-success{color:var(--dsw-alias-state-success-primary,#24794a)}.w-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;max-width:580px;padding:48px 24px;margin:auto;min-height:280px;overflow-wrap:anywhere}.w-empty>svg{color:var(--w-muted)}.w-empty h2{font-size:20px}.w-empty .w-muted{font-size:14px}.w-empty .w-toolbar{justify-content:center}
140
+ .dshw{--w-bg:var(--dsw-alias-bg-layer-1,#fff);--w-soft:var(--dsw-alias-bg-layer-2,#f7f8fa);--w-text:var(--dsw-alias-label-primary,#18202c);--w-muted:var(--dsw-alias-label-secondary,#667085);--w-border:var(--dsw-alias-border-l3,#e7e9ef);--w-accent:var(--dsh-plugin-workbench-accent,#4f6bdb);--w-selected:color-mix(in srgb,var(--w-accent) 10%,var(--w-bg));--w-primary:var(--w-text);--w-on-primary:var(--w-bg);container-type:inline-size;container-name:dsh-workbench;color:var(--w-text);font:14px/1.65 var(--dsh-font-family-content,system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif);min-width:0;max-width:100%;box-sizing:border-box;text-align:start;color-scheme:inherit}
141
+ .dshw *,.dshw *:before,.dshw *:after{box-sizing:border-box}.dshw h1,.dshw h2,.dshw h3,.dshw h4,.dshw p{margin:0}.dshw h1{font-size:30px;line-height:1.25;letter-spacing:-.025em;font-weight:650}.dshw h2{font-size:24px;line-height:1.35;font-weight:650;letter-spacing:-.015em;overflow-wrap:anywhere}.dshw h3,.dshw h4{font-size:16px;line-height:1.4;font-weight:600}.dshw a{color:var(--w-accent);text-underline-offset:3px;overflow-wrap:anywhere}.dshw button,.dshw input,.dshw select,.dshw textarea{font:inherit;color:inherit;max-width:100%}.dshw input:not([type=checkbox]):not([type=radio]):not([type=file]),.dshw select,.dshw textarea{background:var(--dsw-specific-input-major,var(--w-bg));border:1px solid var(--w-border);border-radius:8px;padding:8px 11px;min-width:0;line-height:1.5}.dshw input:not([type=checkbox]):not([type=radio]):not([type=file]),.dshw select{min-height:38px}.dshw textarea{resize:vertical}.dshw input[type=checkbox],.dshw input[type=radio]{width:16px;height:16px;flex-shrink:0;accent-color:var(--w-accent)}.dshw :focus-visible{outline:2px solid var(--w-accent);outline-offset:3px}.dshw button:disabled,.dshw input:disabled,.dshw select:disabled,.dshw textarea:disabled{opacity:.5;cursor:not-allowed}.dshw label{font-size:13px}.dshw fieldset{min-width:0;border:1px solid var(--w-border);border-radius:8px}.dshw summary{cursor:pointer;font-weight:550;list-style:none;display:flex;align-items:center;gap:8px}.dshw summary::-webkit-details-marker{display:none}.dshw summary:after{content:'';display:block;margin-inline-start:auto;width:7px;height:7px;border-inline-end:1.75px solid currentColor;border-bottom:1.75px solid currentColor;transform:rotate(45deg);flex-shrink:0}.dshw details[open]>summary:after{transform:rotate(225deg)}.dshw details>summary+*{margin-top:12px}.dshw pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;max-width:100%;background:var(--w-soft);border-radius:6px;padding:14px}.dshw img,.dshw video,.dshw iframe{max-width:100%}
142
+ .w-page{display:flex;flex-direction:column;position:relative;padding:0;min-height:540px;gap:0}.w-page[data-main=true]{height:100%;min-height:0;padding:calc(24px + var(--dsh-frame-top-clearance,0px)) 28px 0 max(28px,var(--dsh-frame-leading-clearance,0px));overflow:auto}.dshw[data-main=true]{background:var(--w-bg)}.dshw.w-page,.dshw .w-body,.dshw .w-tab-panel{overflow-x:clip}.w-page-header{display:flex;justify-content:space-between;gap:24px;align-items:flex-start;padding-bottom:22px;flex-shrink:0}.w-heading{min-width:0}.w-subtitle{margin-top:8px!important;font-size:14px;color:var(--w-muted);line-height:1.6}.w-header-actions,.w-toolbar,.w-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.w-header-actions{justify-content:flex-end}.w-body,.w-tabs-layout{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0}.w-body{overflow:auto}.w-tab-panel{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:auto}.w-tabs{display:flex;align-items:stretch;gap:20px;border-bottom:1px solid var(--w-border);flex-shrink:0;overflow-x:auto;scrollbar-width:thin}.dshw .w-tabs>button{border:0;border-bottom:2px solid transparent;background:transparent;padding:11px 8px 13px;white-space:nowrap;font-size:14px;font-weight:550;cursor:pointer;color:var(--w-muted);display:flex;align-items:center;gap:7px}.dshw .w-tabs>button[aria-selected=true]{border-bottom-color:var(--w-accent);color:var(--w-accent)}.w-count,.w-tag{font-size:12px;line-height:1.5;display:inline-flex;align-items:center;flex-shrink:0;background:var(--w-soft);border-radius:5px;padding:1px 6px;color:var(--w-muted)}.w-tabs [aria-selected=true] .w-count,.w-selected .w-tag{color:var(--w-accent);background:var(--w-selected)}
143
+ .dshw .w-button{display:inline-flex;justify-content:center;align-items:center;gap:7px;background:var(--w-bg);border:1px solid var(--w-border);border-radius:8px;padding:8px 12px;min-height:36px;line-height:1.4;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;white-space:normal}.dshw .w-button:not(:disabled):hover{background:var(--w-soft)}.dshw .w-primary{background:var(--w-primary);border-color:var(--w-primary);color:var(--w-on-primary)}.dshw .w-primary:not(:disabled):hover{background:var(--w-primary);opacity:.9}.dshw .w-ghost{background:transparent;border-color:transparent}.dshw .w-danger{color:var(--dsw-alias-state-error-primary,#b43c3c)}.dshw .w-icon-button{width:36px;min-width:36px;padding:8px}.dshw .w-button svg{flex-shrink:0}.w-muted{color:var(--w-muted);font-size:12px;line-height:1.6}.w-section{padding:24px 0;border-bottom:1px solid var(--w-border);min-width:0}.w-section>h3{margin-bottom:12px}.w-section>p+p{margin-top:8px}.w-fields{display:grid;gap:16px;min-width:0}.w-field{display:grid;gap:6px;min-width:0}.w-field>input,.w-field>select,.w-field>textarea{width:100%}.w-status{display:flex;align-items:flex-start;gap:8px;padding:11px 13px;margin:12px 0;border:1px solid var(--w-border);border-radius:8px;background:var(--w-soft);font-size:13px;overflow-wrap:anywhere;flex-shrink:0}.w-status>svg{flex-shrink:0;margin-top:2px}.w-status-error{color:var(--dsw-alias-state-error-primary,#ad3636)}.w-status-success{color:var(--dsw-alias-state-success-primary,#24794a)}.w-status-warn{color:var(--dsw-alias-state-warning-primary,#8a5a00)}.w-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;width:100%;max-width:580px;padding:48px 24px;margin:auto;min-height:280px;overflow-wrap:anywhere}.w-empty>svg{color:var(--w-muted)}.w-empty h2{font-size:20px}.w-empty .w-muted{font-size:14px}.w-empty .w-toolbar{justify-content:center}
143
144
  .w-split{display:grid;grid-template-columns:minmax(240px,var(--w-list-width)) minmax(0,1fr);min-height:460px;flex:1;min-width:0}.w-master{min-width:0;border-inline-end:1px solid var(--w-border);overflow:auto;padding-bottom:24px}.w-detail{min-width:0;padding:26px 28px;overflow:auto;overflow-wrap:anywhere;display:flex;flex-direction:column}.w-master-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:20px 16px}.w-search{display:flex;align-items:center;gap:8px;border:1px solid var(--w-border);border-radius:8px;padding:0 10px;min-width:0;flex:1;background:var(--w-bg)}.w-search>svg{color:var(--w-muted);flex-shrink:0}.dshw .w-search>input{border:0!important;background:transparent!important;padding:8px 0!important;width:100%;outline-offset:0}.w-row{display:flex;gap:0;min-width:0;position:relative;border-bottom:1px solid var(--w-border);border-inline-start:3px solid transparent}.w-row-select{display:flex;align-items:flex-start;padding:21px 0 0 14px}.dshw .w-row-button{display:flex;flex-direction:column;align-items:stretch;gap:7px;text-align:start;width:100%;padding:18px 18px 18px 16px;border:0;background:transparent;color:inherit;min-width:0;cursor:pointer;line-height:1.5}.dshw .w-row-button:hover{background:var(--w-soft)}.w-row-head{display:flex;align-items:flex-start;gap:10px;justify-content:space-between;min-width:0}.w-row-head>strong{font-size:14px;line-height:1.5;font-weight:600;overflow-wrap:anywhere}.w-row-meta,.w-row-description{color:var(--w-muted);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.w-row-description{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.w-selected{background:var(--w-selected);border-inline-start-color:var(--w-accent)}.w-back{display:none!important}.w-detail-title{margin-bottom:12px!important}.w-detail-meta{color:var(--w-muted);font-size:13px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.w-detail-footer{padding:24px 0;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:auto;border-top:1px solid var(--w-border)}.w-detail-footer .w-muted{flex:1;min-width:160px}.w-definition{display:grid;grid-template-columns:minmax(80px,120px) minmax(0,1fr);gap:8px 16px;font-size:14px;margin:20px 0}.w-definition dt{color:var(--w-muted)}.w-definition dd{margin:0;min-width:0;overflow-wrap:anywhere}
144
145
  .w-switch-label{display:inline-flex;align-items:center;gap:8px;font-size:13px;position:relative;cursor:pointer}.w-switch-label>input{position:absolute;opacity:0;inset-inline-end:0;width:36px!important;height:22px!important;margin:0;cursor:pointer}.w-switch-track{width:36px;height:22px;border-radius:12px;display:block;background:var(--w-border);border:1px solid var(--w-border);pointer-events:none;padding:2px;transition:background .15s}.w-switch-track:before{content:'';display:block;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0002;transition:transform .15s}.w-switch-label>input:checked+.w-switch-track{background:var(--w-accent);border-color:var(--w-accent)}.w-switch-label>input:checked+.w-switch-track:before{transform:translateX(14px)}.w-switch-label>input:focus-visible+.w-switch-track{outline:2px solid var(--w-accent);outline-offset:3px}.w-switch-label:has(>input:disabled){opacity:.5;cursor:not-allowed}
145
146
  .w-overlay{position:fixed;inset:0;background:#0005;display:flex;justify-content:flex-end;z-index:1000;padding:12px;overflow:auto}.w-dialog{width:min(620px,100%);max-height:100%;display:flex;flex-direction:column;min-height:0;background:var(--w-bg);color:var(--w-text);border:1px solid var(--w-border);border-radius:12px;box-shadow:0 18px 70px #0003}.w-dialog-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 24px;border-bottom:1px solid var(--w-border);flex-shrink:0}.w-dialog-header>h2{font-size:20px}.w-dialog-body{overflow:auto;padding:20px 24px;min-height:0}.w-editor-grid{display:grid;grid-template-columns:210px minmax(0,1fr) 300px;min-height:500px;flex:1}.w-editor-list{padding:20px 12px;border-inline-end:1px solid var(--w-border);min-width:0}.w-editor-canvas{background:var(--w-soft);padding:20px;min-width:0;display:flex;flex-direction:column;gap:14px}.w-editor-inspector{padding:24px;border-inline-start:1px solid var(--w-border);min-width:0;overflow:auto}.w-editor-inspector h3{margin-bottom:18px}.w-preview-empty{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:12px;aspect-ratio:16/9;min-height:180px;background:var(--w-soft);border:1px solid var(--w-border);border-radius:8px;padding:24px;color:var(--w-muted)}.w-content-pad{padding:24px 0}.w-stack{display:flex;flex-direction:column;gap:16px;min-width:0}.w-scroll-x{overflow:auto;max-width:100%}
@@ -148,7 +149,8 @@ function createWorkbenchUI(React) {
148
149
  @media(max-width:700px){.w-page[data-main=true]{padding:calc(16px + var(--dsh-frame-top-clearance,0px)) 16px 0 max(16px,var(--dsh-frame-leading-clearance,0px))}.w-overlay{padding:8px}.w-dialog{width:100%}}
149
150
  @media(prefers-reduced-motion:reduce){.dshw *,.dshw *:before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
150
151
  `;
151
- return { Icon, Button, IconButton, Page, Tabs, Status, Empty, Split, Row, Search, Switch, Dialog, register, styles };
152
+ function Styles() { return h('style', null, styles); }
153
+ return { Icon, Button, IconButton, Page, Tabs, Status, Empty, Split, Row, Search, Switch, Dialog, Styles, register, styles };
152
154
  }
153
155
 
154
156
  /* One update control per plugin. Only transport, idle guards and installation
@@ -228,6 +230,13 @@ function __stardustUpdatesWrap(definition, participant) {
228
230
  const React = require('react');
229
231
  return { ...original, apply(ctx, ...args) {
230
232
  const result = original.apply?.call(this, ctx, ...args);
233
+ // The optional alpha.3 slot stays dormant in older hosts; its scoped
234
+ // injection unregisters naturally when the plugin is unloaded.
235
+ if (participant.iconData && participant.sectionIds?.length && typeof ctx.inject === 'function') ctx.inject(['slots'], host => {
236
+ for (const id of new Set(participant.sectionIds)) host.slots.inject('settings.section.icon', () => host.slots.register({ name: 'settings.section.icon', id }, function PluginSettingsIcon({ size = 20 }) {
237
+ return React.createElement('img', { src: participant.iconData, alt: '', 'aria-hidden': true, width: size, height: size, style: { objectFit: 'contain', display: 'block', flexShrink: 0 } });
238
+ }));
239
+ });
231
240
  if (typeof ctx.inject === 'function') ctx.inject(['slots', 'locale', 'remote', 'remote.pluginManager'], host => __stardustUpdatesJoin(host, React, require, participant));
232
241
  return result;
233
242
  } };
@@ -333,6 +342,16 @@ function __stardustUpdatesClient(ctx, React, require, shared) {
333
342
  'owner-required': t('只有 profile 拥有者能管理更新。', 'Only the profile owner can manage updates.'),
334
343
  })[code] || t('操作未完成,请刷新后重试。DSH 不会因此自动重启。', 'The operation could not be completed. Refresh and retry. DSH will not restart automatically.');
335
344
  }
345
+ // releaseOf() keeps the failing engine/peer range check as a stable code; say which
346
+ // environment has to change instead of only reporting that the release is incompatible.
347
+ function requirement(release) {
348
+ return ({
349
+ 'dsh-version': t('需要换成与该版本匹配的 DSH 本体', 'it needs a different DSH version'),
350
+ 'node-version': t('需要换成与该版本匹配的 Node.js', 'it needs a different Node.js version'),
351
+ deprecated: t('作者已把这个版本标记为弃用', 'the author marked this release as deprecated'),
352
+ 'not-bundle': t('这个版本不是可加载的 DSH 插件包', 'this release is not a loadable DSH plugin bundle'),
353
+ })[release?.reason] || t('发布元数据的兼容范围与当前环境不符', 'its published compatibility range does not match this environment');
354
+ }
336
355
  function jobLabel(job) {
337
356
  return ({ verifying: t('正在核对版本', 'Verifying release'), installing: t('正在安装', 'Installing'), cancelling: t('正在请求取消', 'Requesting cancellation'), complete: t('已更新', 'Updated'), 'restart-required': t('已安装,等待你手动重启', 'Installed; manual restart needed'), restored: t('更新未成功,已恢复原版本', 'Update failed; previous version restored'), 'restore-failed': t('恢复未成功,请检查官方插件管理', 'Recovery failed; check native plugin management'), unknown: t('结果未确认,请检查官方插件管理', 'Result unconfirmed; check native plugin management'), cancelled: t('已取消', 'Cancelled'), failed: t('更新未成功', 'Update failed') })[job.state] || job.state;
338
357
  }
@@ -371,7 +390,7 @@ function __stardustUpdatesClient(ctx, React, require, shared) {
371
390
  const title = language() === 'en' ? original.labelEn : original.label;
372
391
  const ownPage = pageState(true), unconfirmed = ['unknown', 'restore-failed'].includes(snapshot.job?.state), pageBusy = ownPage.busy || (snapshot.pages.clients || []).some(client => client.id !== id && client.busy), installLocked = working || activeJob() || unconfirmed || snapshot.updaterRestart || snapshot.preferenceError || !snapshot.activity.known || snapshot.activity.busy || snapshot.pages.dirty || ownPage.dirty || pageBusy || !snapshot.pages.known;
373
392
  const checkingThis = checking || snapshot.checkingNames?.includes(target);
374
- const status = row.sourceKind !== 'registry' ? t('本地 / 外部来源,保留原安装方式', 'Local / external source; keep original install method') : row.loadError ? t('加载异常,请先检查官方插件管理', 'Loading error; check native plugin management') : row.error ? t('检查失败,可以重试', 'Check failed; retry available') : row.release && !row.release.compatible ? t('新版本暂不兼容当前环境', 'Latest release is incompatible with this environment') : row.available ? (prefs.ignoredVersion === row.release.version ? t('已忽略提醒,仍可手动更新', 'Reminder ignored; manual update available') : t('有新版本', 'Update available')) : row.checkedAt ? t('当前已是最新稳定版', 'Latest stable version') : t('尚未检查', 'Not checked yet');
393
+ const status = row.sourceKind !== 'registry' ? t('本地 / 外部来源,保留原安装方式', 'Local / external source; keep original install method') : row.loadError ? t('加载异常,请先检查官方插件管理', 'Loading error; check native plugin management') : row.error ? t('检查失败,可以重试', 'Check failed; retry available') : row.release && !row.release.compatible ? t('新版本暂不兼容当前环境:', 'Latest release is incompatible with this environment: ') + requirement(row.release) : row.available ? (prefs.ignoredVersion === row.release.version ? t('已忽略提醒,仍可手动更新', 'Reminder ignored; manual update available') : t('有新版本', 'Update available')) : row.checkedAt ? t('当前已是最新稳定版', 'Latest stable version') : t('尚未检查', 'Not checked yet');
375
394
  return h(FooterFrame, { name, label: title, subtitle: original.name + ' · ' + original.version, actions: h(W.Button, { icon: 'refresh', disabled: checkingThis || row.sourceKind !== 'registry', onClick: check }, checkingThis ? t('正在检查…', 'Checking…') : target === '@stardustlc/dsh-suite' ? t('检查整包更新', 'Check Suite updates') : t('检查更新', 'Check for updates')) },
376
395
  original.bundledBy && h(W.Status, null, t('此插件随 Suite 安装。以下设置与安装作用于 Suite 整包,以保持组件版本一致。单独安装的插件可以独立更新。', 'This plugin was installed through Suite. These controls update Suite as a package so its components stay consistent. Independently installed plugins update individually.')),
377
396
  h('section', { className: 'w-section' }, (original.bundledBy || row.available) && h('p', { className: 'updates-version' }, target + ' · ' + row.version, row.release?.version && row.release.version !== row.version ? ' → ' + row.release.version : ''), h('p', { className: 'w-muted updates-note' }, status), !row.enabled && h('p', { className: 'w-muted' }, t('当前已停用,更新后仍保持停用。', 'Currently disabled; it will remain disabled after updating.')), row.checkedAt && h('p', { className: 'w-muted updates-note' }, t('上次检查:', 'Last checked: ') + new Date(row.checkedAt).toLocaleString(language() === 'en' ? 'en-US' : 'zh-CN')),
@@ -437,7 +456,7 @@ function __stardustUpdatesClient(ctx, React, require, shared) {
437
456
  }
438
457
 
439
458
  /* STARDUSTLC_UPDATE_CLIENT_BODY_START */
440
- window.__ModuleLoader__.load(__stardustUpdatesWrap({id:"dsh-sql",factory:require=>({apply(){}})},{"name":"dsh-sql","version":"0.1.0","hasWorkbench":false,"packageVersion":"0.5.10","label":"数据库","labelEn":"SQL","suiteComponent":true}));
459
+ window.__ModuleLoader__.load(__stardustUpdatesWrap({id:"dsh-sql",factory:require=>({apply(){}})},{"name":"dsh-sql","version":"0.1.0","hasWorkbench":false,"packageVersion":"0.5.12","label":"数据库","labelEn":"SQL","suiteComponent":true,"sectionIds":[],"iconData":"data:image/webp;base64,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"}));
441
460
 
442
461
  /* STARDUSTLC_UPDATE_CLIENT_BODY_END */
443
462
  })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-sql",
3
- "version": "0.5.10",
3
+ "version": "0.5.12",
4
4
  "description": "DSH 数据库工具:SQLite / MySQL / PostgreSQL 查询、结构与统计、只读保护和写操作确认。欢迎提交 issues 和 PR。",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -56,12 +56,12 @@
56
56
  "license": "MIT",
57
57
  "engines": {
58
58
  "node": "^22.19.0 || >=24.0.0",
59
- "dsh": ">=0.2.1-rc.3"
59
+ "dsh": ">=0.2.2-rc.3"
60
60
  },
61
61
  "dependencies": {
62
62
  "mysql2": "^3.11.0",
63
63
  "pg": "^8.23.0",
64
- "@stardustlc/dsh-updates": "0.1.3"
64
+ "@stardustlc/dsh-updates": "0.1.4"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@types/node": "^24.0.0",