dsh-mobile 0.3.3 → 0.3.5

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
@@ -2,6 +2,18 @@
2
2
 
3
3
  Notable changes to DSH Mobile are recorded here. GitHub Releases remain the source for downloadable packages and complete generated commit notes.
4
4
 
5
+ ## 0.3.5 - 2026-09-01
6
+
7
+ - Fix [#26](https://github.com/saya-ch/dsh-mobile/issues/26): prevent mobile startup from remaining on “Loading plugins” over LAN or remote access when DSH sends the WebSocket upgrade response and initial snapshot together. The gateway now preserves that snapshot without relaxing its 16 KiB response-header limit. Thanks @oliverwan97 for the detailed report.
8
+
9
+ ## 0.3.4 - 2026-08-31
10
+
11
+ - Support DeepSeek Harness 0.1.2-alpha.2, including its remote-backed settings dependencies. Initialize authenticated mobile trust before the API gateway caches Host facts, while retaining support for earlier declared DSH versions.
12
+ - Reuse the in-page directory picker supplied by Windows DSH Desktop, avoiding duplicate `directoryPicker` registration while retaining mobile workspace selection in the standalone Web profile and on other platforms.
13
+ - Align the Mobile Access sidebar action with the native Settings row, including spacing, theme-aware vector icons, keyboard focus, and expanded-state accessibility.
14
+ - Resolve plugin updates against the active Desktop profile instead of falling back to the Web profile; disable updates when the Desktop profile cannot be identified.
15
+ - Keep the pairing protocol and Android behavior unchanged; existing 0.3.3 apps remain compatible with this plugin update.
16
+
5
17
  ## 0.3.3 - 2026-08-30
6
18
 
7
19
  - Add an advanced self-hosted FRP provider for users who already operate a VPS and public domain, without modifying DeepSeek Harness or expanding the default remote setup.
package/README.en.md CHANGED
@@ -19,15 +19,15 @@
19
19
 
20
20
  > DSH Mobile is a DeepSeek Harness community plugin; the native app supports Android only.
21
21
  >
22
- > **0.3.3 update**: add an advanced self-hosted FRP channel, a one-click plugin update entry, and version-aware Android downloads; reorganize remote setup, fix settings occasionally reverting to desktop layout and dark-mode contrast, and strengthen remote-process cleanup, Android authentication, and download validation.
22
+ > **0.3.5 update**: fix a mobile startup hang when DSH sends a large first WebSocket payload immediately after the upgrade response; the fix applies to both LAN and remote access, and existing 0.3.3/0.3.4 apps do not need re-pairing. [Details and acknowledgements](CHANGELOG.md).
23
23
  >
24
- > **0.3.2 update**: image selection and full-resolution capture move into the composer plus menu with file, size, concurrency, and interaction deadlines; extension and `/mobile` edits notify authenticated phones immediately while Host code, scripts, styles, and assets switch as one generation and retain a usable version on failure; scoped request paths and response limits are tightened, Android Bridge temporary files and grants are fully released, Funnel now follows the DSH lifecycle, native app screens follow the system Chinese/English/Italian locale, and plugin-owned UI follows DSH's locale.
25
- >
26
- > **With DeepSeek Harness 0.1.2-alpha.1, update both the plugin and app to 0.3.2 or later**; older apps use a status-bar strategy that does not fit the new Web UI, and app 0.1.3 or earlier also requires reinstalling and pairing again.
27
- >
28
- > The plugin is evolving rapidly; keep the plugin and app updated together. Self-hosted FRP requires an existing VPS, a domain, and Android app 0.3.3 or later.
24
+ > **Upgrade reminder**: the plugin is evolving rapidly; keep it and the app updated together. DSH 0.1.2-alpha.2 requires Mobile plugin 0.3.4 or later. [Compatibility notes](#compatibility).
29
25
 
30
- <p align="center"><a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.3/dsh-mobile-android-v0.3.3.apk"><strong>Download Android app 0.3.3</strong></a> · <a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.3">Release notes and checksums</a></p>
26
+ <p align="center">
27
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.5/dsh-mobile-android-v0.3.5.apk"><img src="assets/brand/app-icon-rounded.svg" alt="DSH Mobile Android app icon" width="72" height="72"></a><br>
28
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.5/dsh-mobile-android-v0.3.5.apk"><strong>Download Android app 0.3.5</strong></a><br>
29
+ <sub><a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.5">Release notes and checksums</a></sub>
30
+ </p>
31
31
 
32
32
  DSH Mobile is a DeepSeek Harness plugin that lets a mobile browser or the Android app connect over a protected LAN or an optional Tailscale Funnel, cpolar, or self-hosted FRP remote path. Local and remote access keep the same sessions, Workspaces, messages, and tools while using separate switches and paired-device stores without modifying DeepSeek Harness source.
33
33
 
@@ -79,6 +79,8 @@ Restart DSH, then search for **dsh-mobile** under **Settings → Plugin Market**
79
79
 
80
80
  After installation, start DSH and use the connection guide below to choose LAN or remote access.
81
81
 
82
+ Registry-installed plugins check for updates when the desktop UI loads and show “Update plugin” beside the access-panel title when a newer release is available. Restart DSH after installation. The app download entry shows the latest version; local development packages are not overwritten, and Android does not send update notifications.
83
+
82
84
  ## Connection guide
83
85
 
84
86
  LAN and remote access are independent connections. Prefer LAN while the phone is near the computer for the lowest latency, and enable remote access only when leaving that network. Each path keeps its own switch, paired devices, and sign-in state.
@@ -188,8 +190,12 @@ See [SECURITY.md](SECURITY.md).
188
190
 
189
191
  ## Compatibility
190
192
 
193
+ Use Mobile plugin 0.3.4 or later with DSH 0.1.2-alpha.2; plugin and app 0.3.2 or later are recommended for DSH 0.1.2-alpha.1. Plugin 0.3.5 remains compatible with existing 0.3.3/0.3.4 apps without re-pairing; the 0.3.5 Android build changes version metadata only and keeps the same behavior. Earlier apps use a different status-bar strategy, so updating both is recommended. App 0.1.3 or earlier requires reinstalling and pairing again.
194
+
191
195
  | DSH Mobile | Verified DeepSeek Harness releases |
192
196
  | --- | --- |
197
+ | `0.3.5` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1`, `0.1.2-alpha.2` |
198
+ | `0.3.4` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1`, `0.1.2-alpha.2` |
193
199
  | `0.3.3` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1` |
194
200
  | `0.3.2` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1` |
195
201
  | `0.3.1` | `0.1.0-rc.5`, `0.1.0-rc.6`, `0.1.0-rc.7`, `0.1.1-rc.2`, `0.1.2-alpha.1` |
@@ -201,6 +207,8 @@ See [SECURITY.md](SECURITY.md).
201
207
 
202
208
  At startup, the plugin verifies the DSH Host version and the frontend dependencies required by the mobile layout; an unverified release fails with a clear error instead of serving a broken page. CI also tracks the DSH main branch layout contract. If a DSH upgrade reports an incompatibility, update DSH Mobile first.
203
209
 
210
+ 0.3.4 fixes duplicate directory-picker registration in Windows [DSH Desktop](https://github.com/anywhere-labs/dsh-desktop). It reuses the desktop host's in-page directory browser; standalone Web launches still let phones select workspaces on the computer. Mobile access through Desktop requires compatibility mode and browser access enabled, with Mobile's upstream address matching Desktop's listening port.
211
+
204
212
  ## Uninstall
205
213
 
206
214
  ```powershell
package/README.md CHANGED
@@ -26,15 +26,15 @@
26
26
 
27
27
  > DSH Mobile 是 DeepSeek Harness 社区插件,原生 App 仅支持 Android。
28
28
  >
29
- > **0.3.3 更新**:新增自建 FRP 高级远程通道和插件一键更新入口,App 下载显示最新版本;重新整理远程连接页,修复设置弹窗偶发桌面布局与深色模式对比度,并完善远程进程清理、Android 认证和下载校验。
29
+ > **0.3.5 更新**:修复 DSH 在 WebSocket 握手后立即发送较大首批数据时,移动端可能一直停在插件加载界面的问题,局域网与远程连接均适用;现有 0.3.3/0.3.4 App 无需重新配对。[详细记录与致谢](CHANGELOG.md)。
30
30
  >
31
- > **0.3.2 更新**:新增输入栏加号菜单中的图片选择与原图拍照,并限制文件类型、大小、并发和交互超时;扩展及 `/mobile` 修改会主动通知已认证手机刷新,Host、脚本、样式和资源按同一代次原子切换,失败时保留可用版本;同时收紧扩展请求路径与响应限制,完整清理 Android Bridge 的临时文件和授权,修正 Funnel 随 DSH 启停的生命周期,并让 App 原生页面跟随系统中/英/意语言、插件界面跟随 DSH 语言。
32
- >
33
- > **使用 DeepSeek Harness 0.1.2-alpha.1 时,请将插件与 App 同步升级至 0.3.2 或更高版本**;旧 App 的状态栏策略不适配新版 Web,0.1.3 及更早版本还需卸载重装并重新配对。
34
- >
35
- > 插件仍在快速迭代,建议将插件与 App 同步更新。自建 FRP 需要已有 VPS、域名及 Android App 0.3.3 或更高版本。
31
+ > **升级提醒**:插件仍在快速迭代,建议与 App 同步更新;DSH 0.1.2-alpha.2 需使用 Mobile 插件 0.3.4 或更高版本。[兼容说明](#兼容性)。
36
32
 
37
- <p align="center"><a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.3/dsh-mobile-android-v0.3.3.apk"><strong>下载 Android App 0.3.3</strong></a> · <a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.3">版本说明与校验文件</a></p>
33
+ <p align="center">
34
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.5/dsh-mobile-android-v0.3.5.apk"><img src="assets/brand/app-icon-rounded.svg" alt="DSH Mobile 安卓应用图标" width="72" height="72"></a><br>
35
+ <a href="https://github.com/saya-ch/dsh-mobile/releases/download/v0.3.5/dsh-mobile-android-v0.3.5.apk"><strong>下载 Android App 0.3.5</strong></a><br>
36
+ <sub><a href="https://github.com/saya-ch/dsh-mobile/releases/tag/v0.3.5">版本说明与校验文件</a></sub>
37
+ </p>
38
38
 
39
39
  DSH Mobile 是一个 DeepSeek Harness 插件,让手机浏览器或 Android App 通过局域网,或可选的 Tailscale Funnel、cpolar、自建 FRP 远程通道连接电脑,继续使用同一份会话、工作区、消息和工具。局域网与远程访问分别启停、分别管理设备,且都不修改 DeepSeek Harness 源码。
40
40
 
@@ -86,6 +86,8 @@ dsh plugin --profile web add dshmarket
86
86
 
87
87
  安装并启动 DSH 后,按照下一节选择局域网或远程连接。
88
88
 
89
+ 通过 npm 安装的插件会在桌面界面加载时检查新版本,有更新时在访问面板标题右侧显示“更新插件”,安装后需重启 DSH。App 下载入口展示最新版本;本地开发包不会被自动覆盖,Android App 暂无主动更新通知。
90
+
89
91
  ## 连接教程
90
92
 
91
93
  局域网和远程访问是两套相互独立的连接:在电脑附近优先使用局域网,延迟最低;离开当前网络时再启用远程访问。两边分别管理开关、设备和登录状态,互不影响。
@@ -197,9 +199,12 @@ flowchart LR
197
199
 
198
200
  ## 兼容性
199
201
 
202
+ DSH 0.1.2-alpha.2 需搭配 Mobile 插件 0.3.4 或更高版本;DSH 0.1.2-alpha.1 建议搭配插件与 App 0.3.2 或更高版本。0.3.5 插件兼容现有 0.3.3/0.3.4 App,无需重新配对;本次 Android App 仅同步版本号,功能行为不变。更早的 App 使用不同的状态栏策略,建议同步升级;App 0.1.3 及更早版本需卸载重装并重新配对。
200
203
 
201
204
  | DSH Mobile | 已验证的 DeepSeek Harness |
202
205
  | ------------ | ------------------------------------------------------------------------- |
206
+ | `0.3.5` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1`、`0.1.2-alpha.2` |
207
+ | `0.3.4` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1`、`0.1.2-alpha.2` |
203
208
  | `0.3.3` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` |
204
209
  | `0.3.2` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` |
205
210
  | `0.3.1` | `0.1.0-rc.5`、`0.1.0-rc.6`、`0.1.0-rc.7`、`0.1.1-rc.2`、`0.1.2-alpha.1` |
@@ -211,6 +216,8 @@ flowchart LR
211
216
 
212
217
  插件启动时会检查 DSH Host 版本和移动布局所需的前端依赖,遇到未经验证的版本会直接报错而不是带病启动;CI 也会持续跟踪 DSH 主分支的布局契约。升级 DSH 后如遇兼容提示,请先升级 DSH Mobile。
213
218
 
219
+ 0.3.4 修复 Windows [DSH Desktop](https://github.com/anywhere-labs/dsh-desktop) 的目录选择器重复注册问题:复用桌面宿主的页面内目录浏览器,普通 Web 启动仍保留手机选择电脑工作区的能力。Desktop 连接手机时需使用兼容模式并启用浏览器访问,Mobile 的上游地址应与 Desktop 的监听端口一致。
220
+
214
221
  ## 卸载
215
222
 
216
223
  ```powershell
package/cordis.patch.yml CHANGED
@@ -7,9 +7,12 @@
7
7
  - insert:
8
8
  - id: directory-picker-mobile-host
9
9
  name: '@deepseek-ai/dsh-host-directory-picker-browse'
10
+ # Windows DSH Desktop supplies its own browse pair after user patches.
11
+ disabled: !!js ctx.get('desktopRuntime')?.platform === 'win32'
10
12
 
11
13
  - id: directory-picker-mobile-surface
12
14
  name: '@deepseek-ai/dsh-client-ui-directory-picker-browse'
15
+ disabled: !!js ctx.get('desktopRuntime')?.platform === 'win32'
13
16
 
14
17
  - id: mobile-access
15
18
  name: dsh-mobile
package/lib/client.js CHANGED
@@ -1815,6 +1815,7 @@ window.__ModuleLoader__.load({
1815
1815
  const CONTROL_REQUEST_TIMEOUT_MS = 15e3;
1816
1816
  const LONG_CONTROL_REQUEST_TIMEOUT_MS = 13e4;
1817
1817
  const GITHUB_RELEASES_URL = "https://github.com/saya-ch/dsh-mobile/releases";
1818
+ const CONTROL_PANEL_ID = "dsh-mobile-control-panel";
1818
1819
  function releaseVersion(value) {
1819
1820
  return typeof value === "string" && /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/u.test(value) ? value : void 0;
1820
1821
  }
@@ -1891,6 +1892,7 @@ window.__ModuleLoader__.load({
1891
1892
  const root = element("div", "dsh-mobile-control");
1892
1893
  root.lang = locale;
1893
1894
  const panel = element("section", "dsh-mobile-control__panel");
1895
+ panel.id = CONTROL_PANEL_ID;
1894
1896
  panel.hidden = true;
1895
1897
  panel.lang = locale;
1896
1898
  panel.setAttribute("aria-label", t("mobileAccess"));
@@ -3311,7 +3313,8 @@ window.__ModuleLoader__.load({
3311
3313
  },
3312
3314
  toggle: () => {
3313
3315
  setOpen(panel.hidden !== false);
3314
- }
3316
+ },
3317
+ isOpen: () => !panel.hidden
3315
3318
  };
3316
3319
  }
3317
3320
  function mobileRequest(path, init = {}) {
@@ -4499,7 +4502,7 @@ window.__ModuleLoader__.load({
4499
4502
  @keyframes dsh-diagnostic-spin{to{transform:rotate(360deg)}}@keyframes dsh-diagnostic-reveal{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
4500
4503
  .dsh-mobile-control__actions{display:flex;flex-wrap:nowrap;gap:6px}.dsh-mobile-control__actions button{flex:1 1 0;min-width:0;min-height:40px;padding:8px 4px;border-radius:10px;font:12px/1.2 system-ui;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dsh-mobile-control__secondary{border:1px solid var(--dsw-alias-border-normal,#cfd5dd);background:transparent;color:inherit}.dsh-mobile-control__primary{border:1px solid #2563eb;background:#2563eb;color:#fff}.dsh-mobile-control__actions button:disabled{cursor:not-allowed;opacity:.45}
4501
4504
  .dsh-mobile-control button:focus-visible,.dsh-mobile-control a:focus-visible,.dsh-mobile-control input:focus-visible,.dsh-mobile-control summary:focus-visible{outline:3px solid rgb(37 99 235 / 28%);outline-offset:2px}
4502
- .dsh-mobile-control__trigger{box-sizing:border-box;display:flex;align-items:center;gap:8px;width:calc(100% + 8px);height:34px;margin:4px -4px;padding:6px 2px 6px 10px;border:0;border-radius:12px;background:transparent;color:var(--dsw-alias-label-primary,#16181d);font:14px/22px system-ui;cursor:pointer}.dsh-mobile-control__trigger:hover{background:var(--dsw-alias-interactive-bg-hover,#f1f3f6)}.dsh-mobile-control__trigger.is-rail{width:36px;height:36px;margin:8px 0 10px;padding:0;justify-content:center;border-radius:50%}.dsh-mobile-control__trigger-icon{position:relative;box-sizing:border-box;flex:none;width:14px;height:19px;border:1.7px solid currentColor;border-radius:3px}.dsh-mobile-control__trigger-icon::after{position:absolute;right:4px;bottom:2px;width:4px;height:1.5px;border-radius:2px;background:currentColor;content:""}.dsh-mobile-control__trigger-label{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
4505
+ .dsh-mobile-control__trigger{box-sizing:border-box;flex:none;display:flex;align-items:center;gap:8px;width:calc(100% + 4px);height:42px;margin:4px -2px;padding:0 10px 0 8px;border:0;border-radius:12px;background:transparent;color:var(--dsw-alias-label-primary,#16181d);font-family:inherit;font-size:14px;line-height:22px;cursor:pointer;overflow:hidden}.dsh-mobile-control__trigger:hover{background:var(--dsw-alias-interactive-bg-hover,#f1f3f6)}.dsh-mobile-control__trigger:active,.dsh-mobile-control__trigger[aria-expanded="true"]{background:var(--dsw-alias-interactive-bg-active,#e8ebf0)}.dsh-mobile-control__trigger:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary,currentColor);outline-offset:2px}.dsh-mobile-control__trigger.is-rail{width:36px;height:36px;margin:8px 0 10px;padding:0;justify-content:center;gap:0;border-radius:50%}.dsh-mobile-control__trigger-icon{display:block;flex:none}.dsh-mobile-control__trigger-label{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
4503
4506
  .dsh-mobile-control__manage-row{display:flex;justify-content:space-between;gap:8px;margin-top:10px}.dsh-mobile-control__manage{flex:1 1 0;min-width:0;min-height:34px;padding:6px 8px;border:1px solid var(--dsw-alias-border-normal,#cfd5dd);border-radius:10px;background:transparent;color:inherit;font:12px/1.3 system-ui;cursor:pointer}.dsh-mobile-control__devices{margin-top:10px;border:1px solid var(--dsw-alias-border-subtle,#e1e5eb);border-radius:10px;padding:8px;max-height:220px;overflow-y:auto}.dsh-mobile-control__device-empty{color:var(--dsw-alias-label-secondary,#606873);font-size:12px;margin:0}.dsh-mobile-control__device{display:flex;align-items:center;gap:8px;padding:6px 2px}.dsh-mobile-control__device + .dsh-mobile-control__device{border-top:1px solid var(--dsw-alias-border-subtle,#e1e5eb)}.dsh-mobile-control__device-label{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.dsh-mobile-control__device-meta{flex:none;color:var(--dsw-alias-label-secondary,#606873);font-size:11px;white-space:nowrap}.dsh-mobile-control__device-revoke{flex:none;min-height:28px;padding:4px 8px;border:1px solid #dc2626;border-radius:8px;background:transparent;color:#dc2626;font:12px/1.2 system-ui;cursor:pointer}
4504
4507
  @media (max-width:359px){.dsh-mobile-control__provider-choices{grid-template-columns:1fr}.dsh-mobile-control__provider{min-height:68px}}@media (prefers-reduced-motion:reduce){.dsh-mobile-control__provider,.dsh-mobile-control__cpolar-connect{transition:none}.dsh-mobile-control__diagnostic-summary.is-running .dsh-mobile-control__diagnostic-summary-icon::before,.dsh-mobile-control__diagnostic-checks{animation:none}}
4505
4508
  `;
@@ -4532,17 +4535,33 @@ window.__ModuleLoader__.load({
4532
4535
  name: "sidebar.footer.action",
4533
4536
  id: "dsh-mobile"
4534
4537
  }, ({ wide }) => (0, react.createElement)("button", {
4535
- "aria-expanded": false,
4538
+ "aria-expanded": control.isOpen(),
4539
+ "aria-controls": CONTROL_PANEL_ID,
4536
4540
  "aria-label": t("mobileAccess"),
4537
4541
  className: `dsh-mobile-control__trigger${wide ? "" : " is-rail"}`,
4538
4542
  lang: triggerLocale,
4539
4543
  type: "button",
4540
4544
  title: t("mobileAccess"),
4541
4545
  onClick: control.toggle
4542
- }, (0, react.createElement)("span", {
4546
+ }, (0, react.createElement)("svg", {
4543
4547
  "aria-hidden": true,
4544
- className: "dsh-mobile-control__trigger-icon"
4545
- }), wide ? (0, react.createElement)("span", { className: "dsh-mobile-control__trigger-label" }, t("mobileAccess")) : void 0)));
4548
+ className: "dsh-mobile-control__trigger-icon",
4549
+ focusable: false,
4550
+ width: wide ? 16 : 18,
4551
+ height: wide ? 16 : 18,
4552
+ viewBox: "0 0 16 16",
4553
+ fill: "none",
4554
+ stroke: "currentColor",
4555
+ strokeWidth: 1.5,
4556
+ strokeLinecap: "round",
4557
+ strokeLinejoin: "round"
4558
+ }, (0, react.createElement)("rect", {
4559
+ x: 4,
4560
+ y: 1,
4561
+ width: 8,
4562
+ height: 14,
4563
+ rx: 2
4564
+ }), (0, react.createElement)("path", { d: "M7 12h2" })), wide ? (0, react.createElement)("span", { className: "dsh-mobile-control__trigger-label" }, t("mobileAccess")) : void 0)));
4546
4565
  return () => {
4547
4566
  disposeSlot();
4548
4567
  control.remove();