dsh-gitbash-shell 0.31.1 → 0.32.1
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 +18 -0
- package/dsh.plugin.json +3 -3
- package/package.json +3 -4
- package/src/client.js +12 -44
- package/src/index.js +22 -766
- package/src/shell.js +4 -7
- package/assets/code-gitbash/agent.cordis.ptc.ps.yml +0 -282
- package/assets/code-gitbash/agent.cordis.ptc.yml +0 -276
- package/assets/code-gitbash/agent.cordis.yml +0 -268
- package/assets/code-gitbash/preset.yml +0 -3
- package/assets/cordis-gitbash/agent.cordis.ptc.ps.yml +0 -283
- package/assets/cordis-gitbash/agent.cordis.ptc.yml +0 -267
- package/assets/cordis-gitbash/agent.cordis.yml +0 -267
- package/assets/cordis-gitbash/preset.yml +0 -3
- package/assets/minimal-gitbash/agent.cordis.ps.yml +0 -79
- package/assets/minimal-gitbash/agent.cordis.yml +0 -74
- package/assets/minimal-gitbash/preset.yml +0 -3
- package/assets/standard-gitbash/agent.cordis.ptc.ps.yml +0 -262
- package/assets/standard-gitbash/agent.cordis.ptc.yml +0 -256
- package/assets/standard-gitbash/agent.cordis.yml +0 -256
- package/assets/standard-gitbash/preset.yml +0 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,24 @@
|
|
|
3
3
|
> 倒序排列,新版本条目在最上面。条目格式:`## vX.Y.Z — YYYY-MM-DD` + 类型(feat / fix / docs / chore)+ 要点 + 相关链接。
|
|
4
4
|
> 纪律见 AGENTS.md「变更记录纪律」:发版前先更新本文件并随版本提交;事故复盘、复现与真机验证记录也记在这里。
|
|
5
5
|
|
|
6
|
+
## v0.32.1 — 2026-09-28
|
|
7
|
+
|
|
8
|
+
**类型**:chore(清掉 v0.32.0 遗留的 legacy settings 死代码)+ fix(冒烟里 mac 平台误判的 toolchain 路径用例)
|
|
9
|
+
|
|
10
|
+
- **legacy settings 面整体删除**(v0.32.0 识别的死代码,当时保守留了一手):宿主 settings 服务自 0.1.7 起只有 describe()/update()(packages/settings/settings/src/index.ts 方法面核对),没有 register(SettingsScope)也没有 get(ns) ⇒ 全部探测分支不可达。删除:① host 半的 legacy settings namespace 注册块(legacySettings 探测 + ctx.inject(['settings']) 注册 schema + scope.watch 接线);② makeLiveReader 的 era 探测(legacy 恒 false,"legacy || !hasConfig" 收敛为 !hasConfig 的等价 fallback);③ 四个 settings.get(ns) 读取器(readPosixPaths / readDialectSettings / readAdoptSidebar / readSuppressPeerCordis,生产调用全在死分支里)与 SETTINGS_NAMESPACE 常量;④ sidebarScope(唯一赋值点在死代码里)及其 polling watch 挂钩;⑤ adoptSidebarShell.readShell 的 get(ns) 死分支(describe 分支保留,0.1.7 上在用);⑥ shell.js dialectSettings() 的同款 get(ns) 分支;⑦ client 半的 settingsScope 注入段与 settings.plugin.item 旧座位(设置卡只剩 plugins.bundle.config 详情页座位)。行数:src/index.js 2549 → 约 2470 行。
|
|
11
|
+
- **行为不变**:所有被删分支在 >=0.1.7-rc 宿主上均不可达;每个消费点的现役路径(describe() 读取 / 行 Config volatile 读取)逐字未动。冒烟 96 项全绿,新增防复活守卫(源码不得再出现 settings.register / SETTINGS_NAMESPACE)。
|
|
12
|
+
- **fix(tests):toolchain PATH 扫描用例在非 Windows 平台误判**——实现永远以 Windows 反斜杠拼接(该扫描只在 win32 跑,行为正确),期望却用 process.platform 的 sep 构造,mac/Linux 上必挂。期望改为字面量反斜杠;该用例从 v0.32.0 起的既有的平台失败就此消除。
|
|
13
|
+
- 同步:AGENTS.md 条目 0(死代码段改为「已整体删除」)、4b(SERVICE READ RULE 更新为 makeLiveReader)、§4e/§4g/§4i 的双时代措辞收敛;验证清单与发布 checklist 更新(含 minimumReleaseAge 冷却提示)。
|
|
14
|
+
|
|
15
|
+
## v0.32.0 — 2026-09-28
|
|
16
|
+
|
|
17
|
+
**类型**:chore(宿主下限提高到 >= 0.1.7-rc:删除 0.1.6 以前的全部兼容路径,插件瘦身六分之一)
|
|
18
|
+
|
|
19
|
+
- **删除物化路径**:dsh 0.1.7 移除目录预设机制后,声明式注册(registerVariant + src/compositions.js)是唯一生效路径,物化分支在所有受支持宿主上都是死代码。整体删除:era 探测(detectBuiltInEra / baseForRoster / eraSuffix,0.1.1→0.1.2 code→ptc 改名)、persona text/split 双形态(0.1.3-alpha.2)、present 探测注入(0.1.5-alpha.2)、行形态对齐(0.1.6-alpha.1)、materialize / pickComposition / syncDecision / firstUserRoot / detectPeerCoverage(仅旧 era 调用;声明式路径的 peer 信号走 PEER_CAPABILITY inject 链)与 apply 的物化分支。src/index.js 3099 → 2549 行。
|
|
20
|
+
- **资产目录删除**:assets/<variant>/ 是物化专用源(声明式数据在 src/compositions.js),随路径一并删除;package.json 的 files 同步去掉 assets。
|
|
21
|
+
- **保留**:声明式四变体注册与 volatile 重注册、PEER_CAPABILITY 去重链(preset id 永不变,含 code-gitbash 历史名)、路径方言(POSIX 翻译/虚拟挂载/run_code 内路径)、终端工具清单、inspect-registry shim、marker 守卫的旧物化残留清理(升级路径)。
|
|
22
|
+
- **宿主下限**:engines.dsh 与 peer @deepseek-ai/dsh → >=0.1.7-rc。smoke 123 项 → 98 项(物化 / era / persona / present / rows 断言随实现删除);已知无关失败保留:toolchain 的 PATH 顺序用例在 macOS 上因分隔符断言失败(HEAD 既有,Windows 专用)。
|
|
23
|
+
|
|
6
24
|
## v0.31.1 — 2026-09-27
|
|
7
25
|
|
|
8
26
|
**类型**:fix(issue #12:0.29.1 在 DSH 0.1.7-rc.2 上仍解析到 profile 里的 schemastery 3.18.2,每次 shell 调用报
|
package/dsh.plugin.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-external/dsh-gitbash-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
|
-
"description": "Windows 全模式 Git Bash:用 Git for Windows bash 替换 PowerShell
|
|
5
|
+
"description": "Windows 全模式 Git Bash:用 Git for Windows bash 替换 PowerShell 执行器,声明式注册 standard/minimal/code/cordis 的 Git Bash 变体 preset(preset id 永不变)。联动:dsh-ptc-cordis-preset(两者同装时 PTC 创造模式带 Git Bash 行且可去重)+ dsh-better-sidebar(终端 UI 标签与模型 terminal_* 工具自动切到 Git Bash)。",
|
|
6
6
|
"engines": {
|
|
7
|
-
"dsh": ">=0.
|
|
7
|
+
"dsh": ">=0.1.7-rc"
|
|
8
8
|
},
|
|
9
9
|
"contributes": {
|
|
10
10
|
"tools": [],
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-gitbash-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.32.1",
|
|
4
4
|
"description": "Windows 上让 agent 的每条 shell 命令改经 Git for Windows bash 执行;物化四个内置预设的 Git Bash 变体,统一 MSYS 盘根路径方言,侧栏终端接管可开关。· Run every agent shell command through Git for Windows bash on Windows; materialize Git Bash variants of the built-in presets, unify the MSYS drive-root path dialect, and adopt the sidebar terminal behind a switch.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"engines": {
|
|
19
19
|
"node": ">=18",
|
|
20
|
-
"dsh": ">=0.1.
|
|
20
|
+
"dsh": ">=0.1.7-rc"
|
|
21
21
|
},
|
|
22
22
|
"dsh": {
|
|
23
23
|
"bundle": {
|
|
@@ -35,7 +35,6 @@
|
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
|
37
37
|
"src",
|
|
38
|
-
"assets",
|
|
39
38
|
"cordis.patch.yml",
|
|
40
39
|
"dsh.plugin.json",
|
|
41
40
|
"CHANGELOG.md",
|
|
@@ -60,7 +59,7 @@
|
|
|
60
59
|
"license": "MIT",
|
|
61
60
|
"peerDependencies": {
|
|
62
61
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
63
|
-
"@deepseek-ai/dsh": ">=0.1.
|
|
62
|
+
"@deepseek-ai/dsh": ">=0.1.7-rc",
|
|
64
63
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
65
64
|
},
|
|
66
65
|
"peerDependenciesMeta": {
|
package/src/client.js
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
* dsh-gitbash-shell — browser half (hand-written ModuleLoader bundle).
|
|
3
3
|
*
|
|
4
4
|
* ONE job: the Settings → Plugins card that gates the unified POSIX path
|
|
5
|
-
* dialect. The
|
|
6
|
-
*
|
|
7
|
-
* half (src/index.js) has registered the 'gitbash-shell' settings namespace.
|
|
5
|
+
* dialect. The card lives on the plugin's detail page (the
|
|
6
|
+
* plugins.bundle.config seat, keyed by the package name).
|
|
8
7
|
*
|
|
9
|
-
* The card flips one boolean — posixPaths — through
|
|
8
|
+
* The card flips one boolean — posixPaths — through this plugin's row Config form:
|
|
10
9
|
* on → the host injects the order-126 directive (every tool takes MSYS
|
|
11
10
|
* drive roots /c/...) and the tools/execute wrapper translates
|
|
12
11
|
* path-argument fields (/x/ → X:/) for the Node-backed file tools;
|
|
@@ -21,7 +20,7 @@
|
|
|
21
20
|
* (react and @deepseek-ai/dsh-client-ui-primitives only, smoke-enforced);
|
|
22
21
|
* - plain React.createElement, no JSX/TS; components at module level;
|
|
23
22
|
* - dsh.client.inject in package.json lists the packages that must load
|
|
24
|
-
* first so locale /
|
|
23
|
+
* first so locale / configForms / slots exist when this applies;
|
|
25
24
|
* - copy ships in three layers: zh/en inline, one LOCALES entry per third
|
|
26
25
|
* language (each preceded by a locale marker line), every dictionary
|
|
27
26
|
* key-aligned with zh (smoke-enforced) and read through a live lookup —
|
|
@@ -1872,7 +1871,7 @@ window.__ModuleLoader__.load({
|
|
|
1872
1871
|
|
|
1873
1872
|
// dsh 0.1.6-alpha.2: the Plugins page renders this card through the
|
|
1874
1873
|
// `plugins.bundle.config` slot with view="page" — the page draws the
|
|
1875
|
-
// title itself
|
|
1874
|
+
// title itself; the collapsible shell only shows on the popup seat.
|
|
1876
1875
|
var pageView = props.view === "page";
|
|
1877
1876
|
|
|
1878
1877
|
var mounts = snap.value.virtualMounts !== false;
|
|
@@ -2637,32 +2636,16 @@ window.__ModuleLoader__.load({
|
|
|
2637
2636
|
|
|
2638
2637
|
/**
|
|
2639
2638
|
* Required client services: only era-guaranteed ones are hard-injected;
|
|
2640
|
-
* the settings face is acquired OPTIONALLY (
|
|
2641
|
-
*
|
|
2642
|
-
* forever, taking the card down with it).
|
|
2639
|
+
* the settings face is acquired OPTIONALLY (a missing configForms on a
|
|
2640
|
+
* stripped-down host must not take the card down with it).
|
|
2643
2641
|
*/
|
|
2644
2642
|
exports.inject = ["locale", "slots"];
|
|
2645
2643
|
|
|
2646
2644
|
exports.apply = function (ctx) {
|
|
2647
|
-
//
|
|
2645
|
+
// The settings face: one ConfigForm per live profile entry; the form
|
|
2646
|
+
// key is the row id "gitbash-shell" (contract: getSnapshot/set/unset).
|
|
2648
2647
|
var scope = null;
|
|
2649
2648
|
|
|
2650
|
-
// OLD era (dsh <= 0.1.6): bound settings scope.
|
|
2651
|
-
try {
|
|
2652
|
-
ctx.inject(["settingsScope"], function (sctx) {
|
|
2653
|
-
try {
|
|
2654
|
-
var svc = sctx && sctx.settingsScope;
|
|
2655
|
-
if (svc && typeof svc.bind === "function") scope = svc.bind({ namespace: SETTINGS_NAMESPACE });
|
|
2656
|
-
} catch (error) {
|
|
2657
|
-
console.warn(TAG + " settingsScope acquisition failed:", error && error.message ? error.message : error);
|
|
2658
|
-
}
|
|
2659
|
-
});
|
|
2660
|
-
} catch (error) {
|
|
2661
|
-
console.warn(TAG + " settingsScope wiring failed:", error && error.message ? error.message : error);
|
|
2662
|
-
}
|
|
2663
|
-
|
|
2664
|
-
// NEW era (dsh >= 0.1.7): one ConfigForm per live profile entry; the form
|
|
2665
|
-
// key is the row id "gitbash-shell" (same string as the old namespace).
|
|
2666
2649
|
try {
|
|
2667
2650
|
ctx.inject(["configForms"], function (fctx) {
|
|
2668
2651
|
try {
|
|
@@ -2714,23 +2697,8 @@ window.__ModuleLoader__.load({
|
|
|
2714
2697
|
// members (top-level options fields do NOT reach the component).
|
|
2715
2698
|
return { scope: scope, ctx: ctx };
|
|
2716
2699
|
};
|
|
2717
|
-
//
|
|
2718
|
-
|
|
2719
|
-
return slots.register({
|
|
2720
|
-
name: "settings.plugin.item",
|
|
2721
|
-
key: SETTINGS_NAMESPACE,
|
|
2722
|
-
locale: NS,
|
|
2723
|
-
inject: injected,
|
|
2724
|
-
}, function CardWithLocale(props) {
|
|
2725
|
-
/* The registration's locale field also hands out the framework's own
|
|
2726
|
-
t seat; the plugin's lookup wins (21 locale tags against the catalog's
|
|
2727
|
-
zh/en), passed last so no prop merge order can override it. */
|
|
2728
|
-
return E(LocaleLive, { ctx: ctx, t: t, cardProps: props });
|
|
2729
|
-
});
|
|
2730
|
-
});
|
|
2731
|
-
// dsh 0.1.6-alpha.2+: the Plugins page's bundle configuration seat,
|
|
2732
|
-
// keyed by the PACKAGE name. Each inject waits for its own slot
|
|
2733
|
-
// declaration, so exactly one seat is live on any host version.
|
|
2700
|
+
// The Plugins page's bundle configuration seat, keyed by the PACKAGE
|
|
2701
|
+
// name. Each inject waits for its own slot declaration.
|
|
2734
2702
|
/* Root-level popup seat: rendered regardless of which page is open,
|
|
2735
2703
|
which is the point — the user may never open settings. */
|
|
2736
2704
|
slots.inject("shell.overlay", function () {
|
|
@@ -2750,7 +2718,7 @@ window.__ModuleLoader__.load({
|
|
|
2750
2718
|
locale: NS,
|
|
2751
2719
|
inject: injected,
|
|
2752
2720
|
}, function BundleConfigWithBoundary(props) {
|
|
2753
|
-
/* Same LocaleLive wrap
|
|
2721
|
+
/* Same LocaleLive wrap: the plugin's 21-tag
|
|
2754
2722
|
dictionary wins over the catalog's zh/en t seat. */
|
|
2755
2723
|
return E(LocaleLive, { ctx: ctx, t: t, cardProps: props });
|
|
2756
2724
|
});
|