dsh-gitbash-shell 0.5.1 → 0.5.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
@@ -118,7 +118,7 @@ preset 会被插件自动清理;宿主 shell 回退为 PowerShell。
118
118
 
119
119
  ## 与 dsh-better-sidebar 联动
120
120
 
121
- 装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar)(v0.15.2+) 时,Windows 上本插件会通过**它的官方设置补丁口**(运行时 `terminalShell` 设置,对方文档明示"settings-page overrides win for terminals opened afterwards")把它打开的终端 shell 指向 Git Bash——**UI 终端标签与模型侧 `terminal_*` 工具统一生效**,不改对方一行代码、新开的终端即生效。规则:
121
+ 装了 [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar)(v0.15.2+) 时,Windows 上本插件会通过**它的官方设置补丁口**(运行时 `terminalShell` 设置,对方文档明示"settings-page overrides win for terminals opened afterwards")把它打开的终端 shell 指向 Git Bash——**UI 终端标签与模型侧 `terminal_*` 工具统一生效**,不改对方一行代码、新开的终端即生效。此外,**本插件的 bundle patch 还会给对方的行补上 `config.shell`**(启动期解析,连 **tab 标题也会显示 bash**;对方未安装时该行无害跳过)。规则:
122
122
 
123
123
  - **插件全权接管**:Windows 上每次启动都无条件把它的 `terminalShell` 设为 Git Bash——即使你在设置页/别处改过,下次插件启动也会改回来;
124
124
  - 卸载本插件 → 自动还原为你改之前的原值(回到它的默认解析:pwsh / powershell);
package/README_EN.md CHANGED
@@ -51,7 +51,7 @@ preset stays as its own plugin manages it.
51
51
 
52
52
  ## Cooperation with dsh-better-sidebar
53
53
 
54
- When [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) (v0.15.2+) is installed, on Windows this plugin adopts its official runtime settings seam (`terminalShell` — by the sidebar's own contract, "settings-page overrides win for terminals opened afterwards"), so both the sidebar's UI terminal tabs and the model-facing `terminal_*` tools open Git Bash — no upstream change, new terminals pick it up immediately. Rules:
54
+ When [dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar) (v0.15.2+) is installed, on Windows this plugin adopts its official runtime settings seam (`terminalShell` — by the sidebar's own contract, "settings-page overrides win for terminals opened afterwards"), so both the sidebar's UI terminal tabs and the model-facing `terminal_*` tools open Git Bash — no upstream change, new terminals pick it up immediately. In addition, this bundle's patch also sets `config.shell` on the sidebar's row (boot-time resolution, so the **tab label reads `bash` too**; the row edit is harmless-skipped when the sidebar is not installed). Rules:
55
55
 
56
56
  - **The plugin owns the pref while installed**: on every Windows boot it unconditionally sets `terminalShell` to Git Bash — a value you set elsewhere is overwritten again on the next boot;
57
57
  - Removing this plugin restores the previous value (the sidebar returns to what it had before, e.g. its default pwsh / powershell resolution);
package/cordis.patch.yml CHANGED
@@ -35,4 +35,17 @@
35
35
  bashPath: "C:/Program Files/Git/bin/bash.exe"
36
36
 
37
37
  - id: gitbash-presets
38
- name: dsh-gitbash-shell
38
+ name: dsh-gitbash-shell
39
+
40
+ # Edit the dsh-better-sidebar row when it is mounted (their own bundle
41
+ # inserted it; our bundle is later in the stack, so this edit lands on the
42
+ # existing row — empty-config rows absorb it, missing rows warn and skip, so
43
+ # profiles without the sidebar are unaffected). The boot-time shell
44
+ # resolution drives BOTH the spawn chain and the client tab title
45
+ # ('shell.get' name), so pointing config.shell at Git Bash on Windows makes
46
+ # the sidebar terminal open bash AND display a 'bash' tab label; per-open
47
+ # settings overrides (which this plugin also fills) then agree with it.
48
+ - id: better-sidebar
49
+ name: dsh-better-sidebar
50
+ config:
51
+ shell: !!js process.platform === 'win32' ? 'C:/Program Files/Git/bin/bash.exe' : ''
package/dsh.plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "dsh-external/dsh-gitbash-shell",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "main": "./src/index.js",
5
5
  "description": "Windows 全模式 Git Bash:用 Git for Windows bash 替换 PowerShell 执行器,并物化 standard/minimal/code/cordis 的 Git Bash 变体 preset。联动 dsh-ptc-cordis-preset:两者同装时 PTC 创造模式自动物化为 Git Bash 版。",
6
6
  "engines": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-gitbash-shell",
3
- "version": "0.5.1",
3
+ "version": "0.5.3",
4
4
  "description": "DSH plugin: run every agent shell command through Git for Windows bash on Windows instead of PowerShell. Replaces the pwsh executor with a Git Bash ctx.shell provider and materializes Git Bash variants of the standard/minimal/code/cordis agent presets into your user preset root at startup.",
5
5
  "type": "module",
6
6
  "repository": {
package/src/index.js CHANGED
@@ -246,18 +246,32 @@ export function installRegisterShim(reg) {
246
246
  // this plugin returns the sidebar to what it was before.
247
247
 
248
248
  const SIDEBAR_NS = 'dsh-better-sidebar'
249
+ const SIDEBAR_TRIES = 12
250
+ const SIDEBAR_RETRY_MS = 1500
249
251
 
250
252
  /**
251
- * Fill the sidebar's `terminalShell` pref through the settings service.
252
- * One-shot; retries once after a short delay in case the sidebar's
253
- * namespace registration lands a beat after our row ran. Never throws.
253
+ * Write the sidebar's `terminalShell` pref through the settings service.
254
+ * Polls until the settings service (and the sidebar's namespace) are ready:
255
+ * at boot the service may not be provided yet when this row's apply runs, so
256
+ * the first attempt can silently see nothing — every attempt after the first
257
+ * catches the service once it exists. Never throws; always logs the outcome.
254
258
  */
255
259
  function adoptSidebarShell(ctx, bashPath) {
256
260
  let tried = 0
261
+ let timer = null
262
+ ctx.effect(() => () => { if (timer) clearTimeout(timer) }, 'dsh-gitbash-shell: sidebar adoption polling')
257
263
  const run = async () => {
258
264
  tried += 1
259
265
  const settings = ctx.get('settings')
260
- if (!settings || typeof settings.update !== 'function') return
266
+ const ready = settings && typeof settings.update === 'function' && typeof settings.get === 'function'
267
+ if (!ready) {
268
+ if (tried < SIDEBAR_TRIES) {
269
+ timer = setTimeout(run, SIDEBAR_RETRY_MS)
270
+ return
271
+ }
272
+ console.log(`${TAG} better-sidebar shell adoption skipped: settings service unavailable after ${tried} tries`)
273
+ return
274
+ }
261
275
  let current
262
276
  try {
263
277
  current = settings.get(SIDEBAR_NS)
@@ -269,9 +283,8 @@ function adoptSidebarShell(ctx, bashPath) {
269
283
  try {
270
284
  await settings.update(SIDEBAR_NS, { terminalShell: bashPath })
271
285
  } catch (error) {
272
- if (tried < 2) {
273
- const timer = setTimeout(run, 1500)
274
- ctx.effect(() => () => clearTimeout(timer), 'dsh-gitbash-shell: sidebar adoption retry')
286
+ if (tried < SIDEBAR_TRIES) {
287
+ timer = setTimeout(run, SIDEBAR_RETRY_MS)
275
288
  return
276
289
  }
277
290
  console.log(`${TAG} better-sidebar shell adoption unavailable: ${error?.message ?? error}`)
@@ -291,7 +304,7 @@ function adoptSidebarShell(ctx, bashPath) {
291
304
  return
292
305
  }
293
306
  if (String(now?.terminalShell ?? '') === bashPath) {
294
- s.update(SIDEBAR_NS, { terminalShell: '' }).catch(() => {})
307
+ s.update(SIDEBAR_NS, { terminalShell: previous }).catch(() => {})
295
308
  }
296
309
  },
297
310
  'dsh-gitbash-shell: sidebar shell revert',