dsh-metaphysics 0.63.0 → 0.64.0
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 +68 -0
- package/client.almanac.js +10 -10
- package/client.chart.js +132 -132
- package/client.chenggu.js +12 -12
- package/client.convert.js +14 -14
- package/client.daliuren.js +43 -43
- package/client.fengshui.js +3 -3
- package/client.js +204 -192
- package/client.liuyao.js +5 -5
- package/client.mbti.js +3 -3
- package/client.name.js +14 -14
- package/client.numerology.js +3 -3
- package/client.qimen.js +5 -5
- package/client.star.js +40 -40
- package/client.tarot.js +38 -38
- package/client.xiaoliuren.js +3 -3
- package/client.zeri.js +14 -14
- package/engine/diff.js +14 -0
- package/engine/index.js +4 -4
- package/engine/interpret.js +4 -3
- package/engine/ziwei.js +114 -19
- package/index.js +22 -2
- package/package.json +1 -1
- package//345/221/275/347/220/206/346/216/222/347/233/230.html +193 -46
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,71 @@
|
|
|
1
|
+
## 0.64.0(2026-11-10,已发布)
|
|
2
|
+
|
|
3
|
+
> 本段主题(2026-11-10):自化从「虚下划线徽章」换成文墨天机式的彩色小箭头,修掉 push-tag / autopublish 的 SSH 兜底在这台机上必崩的问题,并按文墨设置树补上「流年四化取干」「十干四化变体」「命主取法」三档口径。**默认盘逐字节不变**:新增开关的默认值等于旧行为。
|
|
4
|
+
|
|
5
|
+
### SSH 兜底:msys git 起不了 `sh`,只能改走 `GIT_SSH`
|
|
6
|
+
|
|
7
|
+
> 症状:`tools/push-tag.mjs` 的 HTTPS 三次重试全失败时,SSH 兜底也必失败,报 `sh.exe: *** fatal error - couldn't create signal pipe, Win32 error 5`。
|
|
8
|
+
|
|
9
|
+
- **根因:msys 的 `git.exe` 只要需要起 `sh -c` 就崩**。原实现用 `-c core.sshCommand=...` 和 `GIT_SSH_COMMAND` 这两种写法,两者都要求 git 通过 shell 拼命令行,于是无论 key 对不对都先在 `sh` 上死掉。实测三种传参(`tools/ssh-fallback.mjs`):`GIT_SSH_COMMAND` 崩在 `couldn't create signal pipe`;不带覆盖的默认路径同样崩;**只有 `GIT_SSH=<ssh.exe 绝对路径>`(git 直接 exec,不经 shell)能走通**,返回的是干净的 `Permission denied (publickey)`——传输层通了,只差 key。
|
|
10
|
+
- **第二处:Windows OpenSSH 不认环境变量改的 HOME**。原实现想用临时目录里的 `~/.ssh/config` 交代私钥,但 `ssh -G` 探针证明三条路都不通(不覆盖 / `USERPROFILE=` / `HOME=` 全都读不到临时 config,`port` 仍是 22、`identitiesonly` 仍是 no)。改成把一段带标记的 Host 块临时写进**真实** `%USERPROFILE%\.ssh\config`,`finally` 里先还原配置(哪怕删 key 的 API 卡住,用户 ssh 配置也不该长时间被改)、再删 deploy key、最后清临时目录。
|
|
11
|
+
- **第三处:URL 不能再带 `:443`**。`GIT_SSH` 的 simple variant 不允许 git 自己拼 `-p`,端口交给 config 里的 `Port 443`;推送地址改用不带端口的 `ssh://git@ssh.github.com/...`。私钥 ACL 收窄到当前用户(太宽会被 ssh 忽略)。
|
|
12
|
+
- **两处重复实现合并成一份**(新文件 `tools/ssh-fallback.mjs`):`push-tag.mjs` 与 `autopublish.mjs` 原来各抄一份同样的 SSH 兜底、各带同样的 bug,现在都只调 `pushOverSshWithKey()`;两边启动时都会用 `clearStaleBlock()` 清掉上次崩在中途留下的临时 Host 块(含缺结束标记的半截块)。
|
|
13
|
+
- **`push-tag.mjs` 新增 `--ssh-only`**:跳过 HTTPS 直接走兜底,用来单独验证兜底路径。
|
|
14
|
+
- **实测**:`node tools/push-tag.mjs v0.0.0-sshprobe --ssh-only` → 三次都成功推上 `ssh.github.com:443`,deploy key 用完即删,`%USERPROFILE%\.ssh\config` 运行前后都复原成「不存在」。探测 tag 与 deploy key 都已清干净(远端只剩 `v0.63.0`,`GET /repos/.../keys` 为 0)。
|
|
15
|
+
- **测试补了 8 条**(`test/push-tag.test.mjs` 43 PASS、`test/autopublish.test.mjs` 55 PASS):传输层断言改为查共享模块、要求两边都接线到共享模块、要求启动时清残留;并把 `stripManagedBlock` 从源码切出来实跑,覆盖「缺结束标记的半截块」与「多段标记并存」。
|
|
16
|
+
|
|
17
|
+
### 自化改成彩色小箭头:箭头尖顶住星名,才读得出「化回本宫」
|
|
18
|
+
|
|
19
|
+
> 症状:自化原来只是一枚虚下划线的彩色小字(`禄/权/科/忌`),摊在星曜行尾。用户对照文墨天机后指出:那边是从宫缘飞出的彩色小箭头。
|
|
20
|
+
|
|
21
|
+
- **形态**:`zhaMark()` 画一支 22×9 的 SVG 短箭头(`z-shaft` 弧线 + `z-head` 箭头尖),stroke 跟 `currentColor`,颜色由 `.pp-zha.lu/.quan/.ke/.ji` 决定,与四化同色系。
|
|
22
|
+
- **位置定在星名左边**(`src/panel-kit.js` `starsHTML`):先后试过左上角绝对定位、左缘垂直居中——都压住星名(实测压掉「紫微 庙」)。改成 inline 后,**放星名右边箭头朝外,视觉上成了「从本宫飞出去」,语义正好反**;最终放在星名前、箭头尖顶住星名,读成「这笔化飞出去又落回本宫」。宫位详情里的「宫干四化」行也用同一支箭头(`${箭头}${星名}`),盘面靠位置、详情靠文字。
|
|
23
|
+
- **自化徽章与虚下划线一并退场**:`.pp-m.self` 样式与 `cellHTML` 里的 `pp-zh` 徽章已删(`.pp-zh` 的 CSS 与三合隐藏规则同步清掉),自化只剩箭头一种表示,不再出现「同一件事画两遍」。
|
|
24
|
+
- **图例跟着换**:盘心图例文案 `虚下划线=自化` → `箭头=自化`;`.pp-zhlegend` 的符号从 `→禄` 文本换成真箭头(用 `zhaMark` 渲染),图例与盘面同一套图形。
|
|
25
|
+
- **三合视图同时藏箭头**:`#ppm-sc-sanhe:checked~.pp-body .pp-zha{display:none}`,否则三合派会漏出四化信息——浏览器实测三合下 `.pp-zha` 的 `display` 为 `none`。
|
|
26
|
+
- **测试**(`test/layout.test.mjs` 69 PASS):原来的 `pp-zh` / `pp-m self` / `虚下划线=自化` 三条换成四条——箭头类名存在、四化颜色分层 + 图例口径、读屏说明含「宫干化回本宫」、SVG 含 `z-shaft` 与 `z-head` 两条路径。
|
|
27
|
+
|
|
28
|
+
### 新增第十二类流派开关:流年四化取干(文墨「依据流年天干 / 依据流年命宫天干」)
|
|
29
|
+
|
|
30
|
+
> 来源:文墨天机 2.5.26 设置树 `group_other` 里的「流年四化-依据流年天干 / 流年四化-依据流年命宫天干」。此前我们的流年四化固定按流年天干取,这条口径没有出口。
|
|
31
|
+
|
|
32
|
+
- **`liunianSihua`**(`engine/ziwei.js`):`year-stem`(默认,与该年干支的天干一致,与旧盘逐字节相同)/ `life-palace-stem`(改用该年流年命宫那一宫的宫干)。
|
|
33
|
+
- **取干结果随盘回显**:每年新增 `sihuaStem`(实际用的那一干)与 `sihuaStemFrom`(`流年天干` / `流年命宫天干`)。四化是被哪张表定的,不靠猜。
|
|
34
|
+
- **实测**:1990-05-12 男命,2026–2037 十二年**取干十二年全不同**(年干随年份走,命宫宫干由五虎遁从生年干起,本来就是两张表),四颗化星随之全变;本命宫盘 12 宫逐字节不变。这条数据被写进代码注释与参数说明,因为一开始误以为「多数年份同干、只差个别年」,是实测推翻的。
|
|
35
|
+
- **接线五处**:`ZIWEI_SCHOOL_DEFAULTS` / `ZIWEI_SCHOOL_OPTIONS`、`engine/index.js` 的 `ZIWEI_SCHOOL_KEYS` 与摘要 `labels`、根 `index.js` 的 `OPTION_KEYS` / 参数说明 / `SYSTEM_PARAMS.ziwei` / schema、`engine/diff.js` 的 `CALIBER_SWITCHES.ziwei`,以及 `rules.schools` 与 `rules.liunian` 两段规则文字。
|
|
36
|
+
- **测试**(`test/ziwei-schools.test.mjs` 133 PASS,新增 12 条):默认取干等于年干且来源写「流年天干」、另一档等于该宫 `stem`、换口径不动本命宫盘、确实换掉四化、`mutagenHits` 跟着换、两条口径下都是四条、非默认口径进摘要流派行而默认口径不插流派行。
|
|
37
|
+
- **三处计数锁同步**:`ZIWEI_SCHOOL_OPTIONS` 十一类 → 十二类(`ziwei-schools.test.mjs` / `ziwei-zuoyao.test.mjs`)、`CALIBER_SWITCHES.ziwei` 13 组 → 14 组(`caliber-diff.test.mjs` 三条)、`schema-budget.test.mjs` 的 `OLD_KEYS` 88 → 89。
|
|
38
|
+
|
|
39
|
+
### 新增第十三类流派开关:十干四化变体(文墨「十干四化」全表)
|
|
40
|
+
|
|
41
|
+
> 来源:文墨天机 2.5.26 的十干四化设置项。此前我们只有庚干 5 变体(`gengYearSihua`),甲/戊/辛/壬/癸五干的变体没有出口,用户选不到。
|
|
42
|
+
|
|
43
|
+
- **`sihuaVariant`**(`engine/ziwei.js` 的 `SIHUA_VARIANTS`,表里 16 条、开关暴露 11 档):变体名一律取文墨原文四字,按「禄 权 科 忌」顺序念,**名字本身就是那张表**——「廉破曲阳」= 廉贞化禄、破军化权、文曲化科、太阳化忌。可选:廉破曲阳(甲)、贪阴阳机(戊)、阳武同阴/阳武府同/阳武府相/阳武同相(庚)、巨阳武昌(辛)、梁紫府武/梁紫相武(壬)、破巨阳贪(癸);乙丙丁己四干文墨没有变体。表里另六条(廉破武阳/贪阴右机/阳武阴同/巨阳曲昌/梁紫辅武/破巨阴贪)就是各干通行表本身,不必单独选,所以没进枚举。`default`(默认)各干走通行表,与旧盘逐字节相同。
|
|
44
|
+
- **不新增五个参数的取舍**:每干一个开关(`jiaSihua`/`wuSihua`/…)要吃满 2045 字符的 schema 预算余量里的绝大部分,而工具定义每次调用都整份进上下文。变体名自带天干,一个参数足够表达全部十六档。
|
|
45
|
+
- **两把开关的作用范围不同,这一条是实测撞出来的**:「`gengYearSihua` 只换生年四化里庚年那一支」是既有约定(旧盘与存档依赖),而 `sihuaVariant` 换的是**宫干自化、大限宫干、飞星、流年共用的那张表**。第一版把两者塞进同一个 `sihuaTableOf()`,立刻被既有断言 `庚干变体不动宫干自化` 打红——属实是回归,不是测试过时。现在拆成两个入口:`sihuaTableOf()` 只认 `sihuaVariant`(宫干/飞星/流年用),`natalSihuaTableOf()` 先看 `sihuaVariant`、没命中再让 `gengYearSihua` 生效(生年四化用)。
|
|
46
|
+
- **变体与天干不符时不串表**:拿癸干变体套到甲干上,甲干照旧走通行表,不会把别人的表套过来(有断言钉住)。庚干两项同时指定时以 `sihuaVariant` 为准——它说的是「整张表长这样」,比单点覆盖更明确。
|
|
47
|
+
- **八处直取 `MUTAGEN[...]` 全部改走按盘取表**(`engine/ziwei.js` 七处 + `engine/interpret.js` 一处):宫干自化、宫内 `daxian.mutagen`、流年 `mutagen`、`daxianList.mutagenHits`、`flyStarOf`、`enrichLiunian`、`flowOf` 的 `mutagenHits`、以及 `zwNatalSihua` 补齐未上盘四化时查的那张表。`flyStarOf(stem, type)` 增可选第三参 `schools`,不给时沿用通行表,旧调用零漂移。
|
|
48
|
+
- **实测**:十六档逐档验证「在该干为年干的年份上真能改到盘」——五档与本插件通行表完全一致(甲/戊/辛/壬/癸各自的默认档,即 `廉破武阳`/`贪阴右机`/`巨阳曲昌`/`梁紫辅武`/`破巨阴贪`),其余十一档全部改盘;换变体后 12 宫星曜落宫逐字节不变,只有四化相关字段变。
|
|
49
|
+
- **接线五处**:`ZIWEI_SCHOOL_DEFAULTS` / `ZIWEI_SCHOOL_OPTIONS`、`engine/index.js` 的 `ZIWEI_SCHOOL_KEYS` 与摘要 `labels`、根 `index.js` 的 `OPTION_KEYS` / 参数说明 / `SYSTEM_PARAMS.ziwei` / schema、`engine/diff.js` 的 `CALIBER_SWITCHES.ziwei`(口径卡只拿「甲干廉破曲阳」当对照样本,不枚举十六档),以及 `rules.schools` 一段规则文字。
|
|
50
|
+
- **测试**(`test/ziwei-schools.test.mjs` 153 PASS,新增 20 条):默认档等于通行表、变体随盘回显、甲干变体把科从武曲换到文曲而禄权忌不动、宫干四化与飞星跟着换、星曜落宫不变、癸变体套甲干无效、乙丙丁己无变体、庚干优先级、十六档都是完整四条、非默认进摘要流派行。
|
|
51
|
+
- **三处计数锁同步**:`ZIWEI_SCHOOL_OPTIONS` 十二类 → 十三类(`ziwei-schools` / `ziwei-zuoyao`)、`CALIBER_SWITCHES.ziwei` 14 组 → 15 组(`caliber-diff` 四条含口径卡行数与标签列表)、`schema-budget.test.mjs` 的 `OLD_KEYS` 89 → 90。
|
|
52
|
+
|
|
53
|
+
### 新增第十四类流派开关:命主取法(文墨「安命主 - 依据斗数全书 / 依据中州派理论」)
|
|
54
|
+
|
|
55
|
+
> 来源:文墨天机 2.5.26 设置树 `group_other` 里的「安命主 - 依据斗数全书 / 安命主 - 依据中州派理论」。此前我们的命主固定按命宫地支取,中州派这条口径没有出口。
|
|
56
|
+
>
|
|
57
|
+
> 这条一开始以为是硬骨头:先试着从 APK 里挖表值——解 `App.swf`(`CWS` + `inflateSync{Z_SYNC_FLUSH}`,3.2MB DoABC 标签、18162 条字符串常量),`贪狼/巨门/禄存/文曲/廉贞/武曲/破军` 这些星名**在字符串常量表里一条都没有**,581 处星名命中全是「马头带箭」「日月夹财」这类格局断语。判定为「表值编译进字节码,静态挖不出,不猜」。**后来发现根本不用挖**——两派的差别不是两张表,是「拿哪个地支去查同一张表」。
|
|
58
|
+
|
|
59
|
+
- **`mingzhuSchool`**(`engine/ziwei.js`):`soul-branch`(默认,按命宫所在宫位的地支查表,与旧盘逐字节相同)/ `year-branch`(按生年年支查表,即中州派)。
|
|
60
|
+
- **依据**:《紫微斗数全书》卷二「安命主」定的是那张十二支表(子贪狼、丑亥巨门、寅戌禄存、卯酉文曲、辰申廉贞、巳未武曲、午破军),两派的用法不同:通行本拿命宫地支查,中州派拿生年年支查。iztro 的实现就是这个形状——`earthlyBranches[algorithm === 'zhongzhou' ? earthlyBranchOfYear : earthlyBranchOfSoulPalace].soul`,同一张表换索引。所以不必新造表,`MING_ZHU` 一字未动,只换了查表用的地支。
|
|
61
|
+
- **两派差异有多大要看得见**:实测命宫地支恰好等于生年年支的只占约 8%,即九成以上的人两派命主不同——所以换档时盘上不能只悄悄改一个字。新增 `lifeMasterNote`,两派结果不同时把另一派的结果一并写在括号里(「通行本按命宫地支戌取禄存;中州派按生年年支午取破军」),盘心、摘要、解析三处都会显示;两支相同时该字段缺席,不留空括号。同时新增 `lifeMasterSchool` 回显实际用的取法。
|
|
62
|
+
- **换取法不动盘**:命主是「查表得到的一颗标记星」,不是安星结果。断言钉住 12 宫星曜 JSON 逐字节相等、命宫/身宫/五行局不变——只有命主那一格变。
|
|
63
|
+
- **接线五处**:`ZIWEI_SCHOOL_DEFAULTS` / `ZIWEI_SCHOOL_OPTIONS`、`engine/index.js` 的 `ZIWEI_SCHOOL_KEYS` 与摘要 `labels`、根 `index.js` 的 `OPTION_KEYS` / 参数说明 / `SYSTEM_PARAMS.ziwei` / schema、`engine/diff.js` 的 `CALIBER_SWITCHES.ziwei`,以及 `rules.schools` 与 `rules.masters` 两段规则文字。
|
|
64
|
+
- **实测**:1990-05-12T14:30 男命,命宫在戌、生年年支午 → 默认 `禄存`,中州派 `破军`;1990–2001 十二年扫描 9 年不同 3 年相同(相同的是命宫地支恰等于年支那几年),12 宫逐字节不变。
|
|
65
|
+
- **测试**(`test/ziwei-schools.test.mjs` 172 PASS,新增 17 条):默认取法、默认命主等于命宫地支查表、中州派命主等于生年年支查表、两派该盘确实不同、不动宫位与星曜、不动命宫身宫五行局、两派不同时写辨认说明、说明随档位换叙述顺序、两支相同时结果一致且不写说明、十二年扫描大多不同(钉开关生效,不钉具体次数)、十二支表齐全、表就是《全书》那七颗星、非默认进摘要流派行、摘要命主行带辨认说明。
|
|
66
|
+
- **三处计数锁同步**:`ZIWEI_SCHOOL_OPTIONS` 十三类 → 十四类(`ziwei-schools` / `ziwei-zuoyao`)、`CALIBER_SWITCHES.ziwei` 15 组 → 16 组(`caliber-diff` 四条含口径卡行数与标签列表)、`schema-budget.test.mjs` 的 `OLD_KEYS` 90 → 91(工具定义 12786 / 14500 字符)。
|
|
67
|
+
- **还没做的**:文墨中州派与通行本另有四处差异(戊庚壬三干的四化「科」、天使天伤位置、截路空亡有无、岁前十二神大耗改岁破),这四条本版没接,仍按通行本走。
|
|
68
|
+
|
|
1
69
|
## 0.63.0(2026-11-10,已发布)
|
|
2
70
|
|
|
3
71
|
> 本段主题(2026-11-10):修「问进对话」的 chip 挂不上(C3 对话桥)、把命盘类四个 tab 合并成一个分块、补 B15 三项量化字段的输出通道,再按文墨天机的样式重做紫微盘面(三方四正菱形闭环、四化/飞星/三合三视图、自化图示图例)与宿主侧栏宣纸纸纹。**不改任何排盘口径、不新增体系**;文墨 APK 只作只读逆向参照,其安星流派与十干四化变体表只存档、未接入引擎。
|