dsh-workplan 1.5.0 → 1.5.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 CHANGED
@@ -1,3 +1,33 @@
1
+ ## 1.5.1 — 2026-10-28
2
+
3
+ **「先看这三句」与「分步进度」位置对换的补丁版**。用户以截图圈出展开态计划卡里的这两个板块,
4
+ 要求把它们的布局位置互换。本次只调整渲染顺序,**数据、接口、样式与既有测试断言零改动**。
5
+
6
+ ### 改动
7
+
8
+ - **展开态面板顺序对换**(`src/client.ts`):原来的「先看这三句(`Guide`)→ 降级横幅 →
9
+ 分步进度(`PlanOverview`)」改为「分步进度(`PlanOverview`)→ 降级横幅 → 先看这三句(`Guide`)」。
10
+ 两个面板组件本身及其内部逻辑不变;`PlanOverview` 仍然只在计划卡展开时(`open === true`)挂载,
11
+ 折叠态依旧不挂载。
12
+ - **版本**:`1.5.0 → 1.5.1`(patch,仅布局顺序对换,不新增能力、不改对外载荷);`package.json`、
13
+ `package-lock.json` 两处、`src/host.ts` 的 `meta.version` 同步;`lib/host.js`、`dist/host.js`、
14
+ `client.js` 由 `npm run build` 重新生成。
15
+
16
+ ### 验证
17
+
18
+ - `npm run build` → exit 0;`npm run check` → exit 0。
19
+ - `npm test` → **99/99 通过**(0 fail)。
20
+ - 7 处版本一致性检查 → `[PASS] 7 处版本均为 1.5.1`(`package.json`、`package-lock.json` 两处、
21
+ `src/host.ts`、`lib/host.js`、`dist/host.js`、`CHANGELOG.md` 顶部)。
22
+ - 本次**未打 tag、未发布、未重启服务**;需要在运行实例里看到换序,须由主 Agent 重启 DSH
23
+ (或重新加载 web profile)后再刷新页面。
24
+
25
+ ### 回滚
26
+
27
+ - 升级前四个文件的副本:`.backups/pre-1.5.1-20261028-221343/`
28
+ (`package.json`、`package-lock.json`、`CHANGELOG.md`、`src/host.ts`)。
29
+ - 回滚后必须重新 `npm run build`;运行中的进程不会自动重载 `lib/host.js`。
30
+
1
31
  ## 1.5.0 — 2026-10-28
2
32
 
3
33
  **「进度必须一眼看得见」的图表化版本**。1.4.3 把数字收敛成单一来源,但计划卡折叠后仍然只有一行
package/client.js CHANGED
@@ -1535,7 +1535,7 @@ window.__ModuleLoader__.load({
1535
1535
  badge: h(Pill, { tone }, t(`phase.${phase}`)),
1536
1536
  }, session.updatedAt
1537
1537
  ? h('div', { className: 'dsh-wp-meta dsh-wp-session-updated' }, `${t('updatedAt')} ${formatTime(session.updatedAt)}`)
1538
- : null, h(Guide, { session, t }), session.degraded ? h('div', { className: 'dsh-wp-banner dsh-wp-banner--degraded' }, h('strong', null, t('degraded')), h('div', null, plainError(session.error || '')), h('div', { className: 'dsh-wp-muted' }, t('degradedHint'))) : null, open === true ? h(PlanOverview, { t, stats, counts, rows: stageRows }) : null, departments.length ? h('div', { className: 'dsh-wp-section' }, h('div', { className: 'dsh-wp-section-title' }, t('who')), h('div', { className: 'dsh-wp-departments' }, departments.map((dept) => h(Pill, { key: dept.id, tone: dept.blocked > 0 ? 'blocked' : dept.done === dept.total ? 'done' : 'active' }, `${deptName(t, dept.id)} ${dept.done}/${dept.total} ${t('stats.done')}`)))) : null, h('div', { className: 'dsh-wp-section' }, h('div', { className: 'dsh-wp-section-title' }, t('steps')), (session.stages || []).map((stage, index) => h(StageCard, {
1538
+ : null, open === true ? h(PlanOverview, { t, stats, counts, rows: stageRows }) : null, session.degraded ? h('div', { className: 'dsh-wp-banner dsh-wp-banner--degraded' }, h('strong', null, t('degraded')), h('div', null, plainError(session.error || '')), h('div', { className: 'dsh-wp-muted' }, t('degradedHint'))) : null, h(Guide, { session, t }), departments.length ? h('div', { className: 'dsh-wp-section' }, h('div', { className: 'dsh-wp-section-title' }, t('who')), h('div', { className: 'dsh-wp-departments' }, departments.map((dept) => h(Pill, { key: dept.id, tone: dept.blocked > 0 ? 'blocked' : dept.done === dept.total ? 'done' : 'active' }, `${deptName(t, dept.id)} ${dept.done}/${dept.total} ${t('stats.done')}`)))) : null, h('div', { className: 'dsh-wp-section' }, h('div', { className: 'dsh-wp-section-title' }, t('steps')), (session.stages || []).map((stage, index) => h(StageCard, {
1539
1539
  key: stage.id,
1540
1540
  stage,
1541
1541
  statuses: session.statuses || [],
package/lib/host.js CHANGED
@@ -294,7 +294,7 @@ export function apply(ctx, config = {}) {
294
294
  }
295
295
  export const meta = {
296
296
  name,
297
- version: '1.5.0',
297
+ version: '1.5.1',
298
298
  promptOrder: PROMPT_ORDER,
299
299
  routes: ['/dsh-workplan/plans', '/dsh-workplan/vendor/chart.umd.js'],
300
300
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-workplan",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
4
4
  "description": "Automatic task decomposition, real department subagents, and a responsive workplan dashboard for DeepSeek Harness.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/client.ts CHANGED
@@ -1766,13 +1766,13 @@ window.__ModuleLoader__.load({
1766
1766
  session.updatedAt
1767
1767
  ? h('div', { className: 'dsh-wp-meta dsh-wp-session-updated' }, `${t('updatedAt')} ${formatTime(session.updatedAt)}`)
1768
1768
  : null,
1769
- h(Guide, { session, t }),
1769
+ open === true ? h(PlanOverview, { t, stats, counts, rows: stageRows }) : null,
1770
1770
  session.degraded ? h('div', { className: 'dsh-wp-banner dsh-wp-banner--degraded' },
1771
1771
  h('strong', null, t('degraded')),
1772
1772
  h('div', null, plainError(session.error || '')),
1773
1773
  h('div', { className: 'dsh-wp-muted' }, t('degradedHint')),
1774
1774
  ) : null,
1775
- open === true ? h(PlanOverview, { t, stats, counts, rows: stageRows }) : null,
1775
+ h(Guide, { session, t }),
1776
1776
  departments.length ? h('div', { className: 'dsh-wp-section' },
1777
1777
  h('div', { className: 'dsh-wp-section-title' }, t('who')),
1778
1778
  h('div', { className: 'dsh-wp-departments' },
package/src/host.ts CHANGED
@@ -325,7 +325,7 @@ export function apply(ctx: any, config: WorkplanConfig = {}) {
325
325
 
326
326
  export const meta = {
327
327
  name,
328
- version: '1.5.0',
328
+ version: '1.5.1',
329
329
  promptOrder: PROMPT_ORDER,
330
330
  routes: ['/dsh-workplan/plans', '/dsh-workplan/vendor/chart.umd.js'],
331
331
  }