dsh-metaphysics 0.67.0 → 0.67.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,37 +1,49 @@
1
- ## 0.67.0(2026-11-11,已发布)
2
-
3
- > 本段主题:八字新接三块——天干合化成功四条件判定、财库开闭与三平衡富贵层次,全部按问真口径实读裁决。
4
-
5
- ### 合化成功四条件(`engine/hehua.js`,185 行)
6
- - 问真《基础知识·干支中》四条件:天干紧挨、被化天干无同类帮扶、月令有引化物、引化物不被克;隔合、遥合、争合、妒合一律不化。
7
- - 被化干只算同类(比劫)不算印——问真唯一完整例 `己酉 甲戌 壬戌 丁未` 里己土有丁火为印却仍判化成功,把印计进生扶会与它自己的例子冲突。
8
- - 引化物被克只查月干/日干 + 月支本气;年干/时干出现克化神五行不挡化,但文案会补「被化神隔开,不挡化」。
9
- - 日元即使合化成功仍以原五行论,只表现形式变;五合未必以日元为主。
10
- - `buildRelations` 返回对象新增 `hehua` 键,`stems` 原文案(『化X待定』)一字未改。
11
-
12
- ### 财库(`engine/geju.js` 新增 `caiKuOf`,挂 `frame.caiKu`)
13
- - 问真表:水木日主库在戌、火在丑、土在辰、金在未;「开库才发」——财为喜用且不弱时库被冲开才主发,财为忌时开库反主破财。
14
- - 裁决按「日主所克五行之墓」自推:木辰/火丑/土辰/金未/水戌(与问真表只在木日主不同:辰 vs 戌;其余四格一致,推测问真「水木戌」是传抄把「水戌」误并)。rule 里写明推演与差异。
15
- - 财星入库(财星本气藏库支)≠ 财库,分本气/余气两档标注。
16
- - 八档结论:无财库 / 开库主发 / 开库反主破财 / 开库发而不厚 / 开库吉凶待引动 / 库闭财弱 / 库闭待冲开 / 库闭未开。
17
-
18
- ### 三平衡定富贵层次(`engine/geju.js` 新增 `balanceOf`,挂 `frame.balance`)
19
- - 五行平衡(占比极差/缺项)、阴阳平衡(天干奇偶 + 地支藏干本气,子午论阴、亥巳论阳)、寒暖燥湿平衡(调候之物是否在位)。
20
- - 三者全备=大富大贵、两备=中富中贵、一备=小富小贵;格局法定贵贱十式另立,不混入。
21
- - 阈值为本插件折算口径(非古法原数):五行 spread<=22 且最低>=4;阴阳 3..5;调候权重>=0.3。
22
- - 新增 `branchYinYang(branch)`,不改 `isYangStem`(连带影响十神与十二长生)。
23
-
24
- ### 只读并列与占位
25
- - 三块全部只读并列:不改 `strength.score`/`yongshen.favor`/`yongshen.avoid`/`relations.stems`。
26
- - hourUnknown 分支各自打 placeholder:caiKu 分「库冲已落在年月日三支(robust)」与「可能受时支影响」两档 note;balance 与 hehua 也补说明。
27
- - 断言基线 9117 → 9352(167 → 170 文件)。
28
-
29
- ### 测试
30
- - `test/bazi-hehua.test.mjs`:65 PASS(参考例 + 隔合/遥合/争合/妒合/帮扶/无引/被克 七组反证 + 日元不变 + 只读 + hourUnknown + 解析层 + BAN 扫描)。
31
- - `test/bazi-caiku.test.mjs`:79 PASS(五格映射 + 无库/见冲 + 入库深浅 + 8% 门槛 + 六真实盘 + 中性分支 + 只读 + hourUnknown + 解析层 + brief)。
32
- - `test/bazi-balance.test.mjs`:91 PASS(spread/缺项边界 + 阴阳纯阳纯阴 + 气候权重 + 四档 tier + 五真实盘 + 只读 + hourUnknown + 解析层 + brief)。
33
- - 四次变异验证(改坏 `unrescued`/`CAIKU_WEAK_PCT`/`BRANCH_YINYANG`/`BALANCE_SPREAD_MAX`)全部确认断言真会红。
34
-
1
+ ## 0.67.1(2026-11-11,已发布)
2
+
3
+ > 本段主题:紫微盘「显示设置」三个开关补上勾选方框高亮——日干四化、非节气四柱、太极点转换此前勾了有反应但方框不变色,看起来像「点不上」。
4
+
5
+ ### 修复
6
+ - `src/panel-kit.js`:17 个显示开关的「勾选态方框高亮」CSS 只列了 14 条,漏了 `ppm-d-rigan`(日干四化)、`ppm-d-njq`(非节气四柱)、`ppm-d-tjz`(太极点转换)三条;补上后三个开关勾选时 label 前的小方框从默认卡片色变禄色,与其余开关一致。
7
+ - 注释「12 条」→「17 条」,与实际规则数对齐。
8
+
9
+ ### 测试
10
+ - `test/display-toggles.test.mjs`:新增 17 条回归断言,锁死「每个 checkbox 勾选后必须点亮自己的方框」(71 → 88 PASS);变异验证(删一条高亮规则)确认断言真会红。
11
+ - 断言基线 9370 → 9387(171 文件)。
12
+
13
+ ## 0.67.0(2026-11-11,已发布)
14
+
15
+ > 本段主题:八字新接三块——天干合化成功四条件判定、财库开闭与三平衡富贵层次,全部按问真口径实读裁决。
16
+
17
+ ### 合化成功四条件(`engine/hehua.js`,185 行)
18
+ - 问真《基础知识·干支中》四条件:天干紧挨、被化天干无同类帮扶、月令有引化物、引化物不被克;隔合、遥合、争合、妒合一律不化。
19
+ - 被化干只算同类(比劫)不算印——问真唯一完整例 `己酉 甲戌 壬戌 丁未` 里己土有丁火为印却仍判化成功,把印计进生扶会与它自己的例子冲突。
20
+ - 引化物被克只查月干/日干 + 月支本气;年干/时干出现克化神五行不挡化,但文案会补「被化神隔开,不挡化」。
21
+ - 日元即使合化成功仍以原五行论,只表现形式变;五合未必以日元为主。
22
+ - `buildRelations` 返回对象新增 `hehua` 键,`stems` 原文案(『化X待定』)一字未改。
23
+
24
+ ### 财库(`engine/geju.js` 新增 `caiKuOf`,挂 `frame.caiKu`)
25
+ - 问真表:水木日主库在戌、火在丑、土在辰、金在未;「开库才发」——财为喜用且不弱时库被冲开才主发,财为忌时开库反主破财。
26
+ - 裁决按「日主所克五行之墓」自推:木辰/火丑/土辰/金未/水戌(与问真表只在木日主不同:辰 vs 戌;其余四格一致,推测问真「水木戌」是传抄把「水戌」误并)。rule 里写明推演与差异。
27
+ - 财星入库(财星本气藏库支)≠ 财库,分本气/余气两档标注。
28
+ - 八档结论:无财库 / 开库主发 / 开库反主破财 / 开库发而不厚 / 开库吉凶待引动 / 库闭财弱 / 库闭待冲开 / 库闭未开。
29
+
30
+ ### 三平衡定富贵层次(`engine/geju.js` 新增 `balanceOf`,挂 `frame.balance`)
31
+ - 五行平衡(占比极差/缺项)、阴阳平衡(天干奇偶 + 地支藏干本气,子午论阴、亥巳论阳)、寒暖燥湿平衡(调候之物是否在位)。
32
+ - 三者全备=大富大贵、两备=中富中贵、一备=小富小贵;格局法定贵贱十式另立,不混入。
33
+ - 阈值为本插件折算口径(非古法原数):五行 spread<=22 且最低>=4;阴阳 3..5;调候权重>=0.3。
34
+ - 新增 `branchYinYang(branch)`,不改 `isYangStem`(连带影响十神与十二长生)。
35
+
36
+ ### 只读并列与占位
37
+ - 三块全部只读并列:不改 `strength.score`/`yongshen.favor`/`yongshen.avoid`/`relations.stems`。
38
+ - hourUnknown 分支各自打 placeholder:caiKu 分「库冲已落在年月日三支(robust)」与「可能受时支影响」两档 note;balance 与 hehua 也补说明。
39
+ - 断言基线 9117 → 9352(167 → 170 文件)。
40
+
41
+ ### 测试
42
+ - `test/bazi-hehua.test.mjs`:65 PASS(参考例 + 隔合/遥合/争合/妒合/帮扶/无引/被克 七组反证 + 日元不变 + 只读 + hourUnknown + 解析层 + BAN 扫描)。
43
+ - `test/bazi-caiku.test.mjs`:79 PASS(五格映射 + 无库/见冲 + 入库深浅 + 8% 门槛 + 六真实盘 + 中性分支 + 只读 + hourUnknown + 解析层 + brief)。
44
+ - `test/bazi-balance.test.mjs`:91 PASS(spread/缺项边界 + 阴阳纯阳纯阴 + 气候权重 + 四档 tier + 五真实盘 + 只读 + hourUnknown + 解析层 + brief)。
45
+ - 四次变异验证(改坏 `unrescued`/`CAIKU_WEAK_PCT`/`BRANCH_YINYANG`/`BALANCE_SPREAD_MAX`)全部确认断言真会红。
46
+
35
47
  ## 0.66.0(2026-11-10,已发布)
36
48
 
37
49
  > 本段主题:八字神煞对拍《问真神煞大全》+ **DeepSeek 派口径裁决**——17 条缺失神煞补齐(规则 42 → 59),并对四处历代分歧口径给出取舍与理由,另修一处「学堂/词馆从未生效」的真 bug。
package/client.js CHANGED
@@ -1,4 +1,4 @@
1
- window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.67.0",factory(Qa){const Oa=(function(){try{return Qa("react")}catch{return globalThis.React}})();if(!Oa)return{inject:[],apply(){}};const p=Oa.createElement,Ht={bazi:"client.chart.js",ziwei:"client.chart.js",hepan:"client.chart.js",trend:"client.chart.js",name:"client.name.js",fengshui:"client.fengshui.js",liuyao:"client.liuyao.js",meihua:"client.liuyao.js",qimen:"client.qimen.js",daliuren:"client.daliuren.js",tarot:"client.tarot.js",almanac:"client.almanac.js",convert:"client.convert.js",zeri:"client.zeri.js",chenggu:"client.chenggu.js",xiaoliuren:"client.xiaoliuren.js",star:"client.star.js",numerology:"client.numerology.js",mbti:"client.mbti.js"},Ft=[{key:"general",label:"综合",dim:null,focus:""},{key:"wealth",label:"财运",dim:"work",focus:"钱财进出的落点主要看「工作与职业选择」与「事业发展」这两条。"},{key:"career",label:"事业",dim:"career",focus:"事业发展这条与你的问题最直接。"},{key:"love",label:"感情",dim:"love",focus:"感情这条与你的问题最直接。"},{key:"health",label:"健康",dim:"health",focus:"健康这条与你的问题最直接;下面只作提醒,不作任何诊断。"},{key:"study",label:"学业",dim:"career",focus:"学业与考试更贴近「事业发展」这条,讲的是长期积累与阶段进展。"},{key:"travel",label:"出行",dim:"overall",focus:"出行与迁动更贴近「整体运势」这条,看的是当下这一段的大环境。"}];window.__MP_VER="0.67.0",window.__MPGroups=[{title:"问一件事",hint:"心里有一件具体的事,起一卦再决定",items:[{k:"liuyao",label:"六爻",tip:"摇六次,问一件事"},{k:"meihua",label:"梅花",tip:"见闻起卦,看当下"},{k:"tarot",label:"塔罗",tip:"抽牌,看关系与选择"},{k:"qimen",label:"奇门",tip:"看方位、时机与取舍"},{k:"daliuren",label:"六壬",tip:"占事,断来意与结果"},{k:"xiaoliuren",label:"小六壬",tip:"掐指一算,快速断"}]},{title:"看一个人",hint:"看自己或身边人的性情、格局与运程",items:[{k:"bazi",label:"八字",tip:"四柱看一生格局"},{k:"ziwei",label:"紫微",tip:"十二宫细看"},{k:"hepan",label:"合盘",tip:"两个人合不合"},{k:"mbti",label:"人格",tip:"16 型性格问卷"},{k:"chenggu",label:"称骨",tip:"按生辰称命重"},{k:"numerology",label:"数字",tip:"生日数字看性格"},{k:"trend",label:"人生K",tip:"一生高低走势",wide:!0}]},{title:"查日子",hint:"挑时间、换农历,顺带看看家里和名字",items:[{k:"almanac",label:"黄历",tip:"今天宜忌、时辰吉凶"},{k:"zeri",label:"择日",tip:"挑个办事的好日子"},{k:"convert",label:"农历",tip:"公历农历互转"},{k:"star",label:"星座",tip:"星座性格与今日运"},{k:"fengshui",label:"风水",tip:"房屋朝向与布置"},{k:"name",label:"起名",tip:"按八字选字"}]}],window.__MP_UNRELEASED=[];const U={};U.DIRECTIONS=Ft,U.compute=()=>{throw new Error("命理引擎尚未加载")};const Pt=Object.create(null),$t=Object.create(null);function Hi(s){return Ht[s]||Ht.bazi||"client.chart.js"}const Dt=()=>typeof performance<"u"&&performance.now?performance.now():Date.now();async function Fi(s){const n=Hi(s);let j=Pt[n];const I=!!j,ae=Dt();if(!j){if(!Qa||typeof Qa.async!="function")throw new Error("当前宿主不支持客户端分块加载(require.async 缺失),请升级 DeepSeek Harness");let oe=$t[n];oe||(oe=Qa.async(`./${n}`).then(ce=>{const le=ce&&(ce.Engine||ce.default);if(!le||typeof le.compute!="function")throw new Error(`命理引擎分块 ${n} 未返回 Engine`);return Pt[n]=le,le}),$t[n]=oe,oe.catch(()=>{}).then(()=>{delete $t[n]})),j=await oe}for(const oe of Object.keys(j))j[oe]!==void 0&&(U[oe]=j[oe]);return Array.isArray(U.DIRECTIONS)||(U.DIRECTIONS=Ft),window.Engine=U,window.__MP_ENGINE_READY__=!0,window.__MP_LAST_LOAD={tab:s,chunk:n,cached:I,ms:Math.round((Dt()-ae)*10)/10},U}window.__mpEnsureEngine=Fi,window.Engine=U,(function(){const s={liuyao:!0,meihua:!0,daliuren:!0,tarot:!0},n=G=>!!s[G],j={general:"other",wealth:"business",career:"career",love:"love",health:"other",study:"career",travel:"action"},I=G=>j[G]||"other",ae="#ffffff",oe="#1c1a15";function ce(G){const Y=String(G??"").match(/rgba?\(([^)]+)\)/i);if(!Y)return null;const X=Y[1].split(/[,\s/]+/).filter(Boolean).map(Number);return X.length<3||X.slice(0,3).some(V=>!Number.isFinite(V))||X.length>3&&Number.isFinite(X[3])&&X[3]<.95?null:[X[0],X[1],X[2]]}function le(G){const Y=String(G||"").replace("#",""),X=Y.length===3?Y.split("").map(V=>V+V).join(""):Y;return/^[0-9a-f]{6}$/i.test(X)?[0,2,4].map(V=>parseInt(X.slice(V,V+2),16)):null}function ye(G){const Y=X=>{const V=X/255;return V<=.03928?V/12.92:Math.pow((V+.055)/1.055,2.4)};return .2126*Y(G[0])+.7152*Y(G[1])+.0722*Y(G[2])}function t(G,Y){const X=ye(G),V=ye(Y),se=Math.max(X,V),wa=Math.min(X,V);return(se+.05)/(wa+.05)}function ke(G){const Y=typeof G=="string"?ce(G):G;return Y?t(Y,le(ae))>=t(Y,le(oe))?ae:oe:""}function D(G){const Y=String(G??"").trim();if(!Y)return{lines:null,warning:""};const X=Y.split(/[^0-9]+/).filter(Boolean).map(Number),V=X.filter(se=>![6,7,8,9].includes(se));return X.length===6&&V.length===0?{lines:X,warning:""}:{lines:null,warning:X.length!==6?`爻值需要正好 6 个数字(当前 ${X.length} 个),本次按随机摇卦。`:`爻值只能是 6/7/8/9(收到 ${V.join("/")}),本次按随机摇卦。`}}function xe(G){const Y=String(G??"").trim();if(!Y)return null;const X=Number(Y);return Number.isFinite(X)?X:null}function ve(G){const Y=G instanceof Date?G:new Date,X=V=>String(V).padStart(2,"0");return`${Y.getFullYear()}-${X(Y.getMonth()+1)}-${X(Y.getDate())}`}window.__MPCore={NEED_ASK:s,needAsk:n,parseLines:D,toNumber:xe,parseRGB:ce,hexToRGB:le,luminance:ye,contrastRatio:t,pickOnColor:ke,ON_DARK:ae,ON_LIGHT:oe,kindOfDirection:I,todayStamp:ve}})(),(function(){const s=`
1
+ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.67.1",factory(Qa){const Oa=(function(){try{return Qa("react")}catch{return globalThis.React}})();if(!Oa)return{inject:[],apply(){}};const p=Oa.createElement,Ht={bazi:"client.chart.js",ziwei:"client.chart.js",hepan:"client.chart.js",trend:"client.chart.js",name:"client.name.js",fengshui:"client.fengshui.js",liuyao:"client.liuyao.js",meihua:"client.liuyao.js",qimen:"client.qimen.js",daliuren:"client.daliuren.js",tarot:"client.tarot.js",almanac:"client.almanac.js",convert:"client.convert.js",zeri:"client.zeri.js",chenggu:"client.chenggu.js",xiaoliuren:"client.xiaoliuren.js",star:"client.star.js",numerology:"client.numerology.js",mbti:"client.mbti.js"},Ft=[{key:"general",label:"综合",dim:null,focus:""},{key:"wealth",label:"财运",dim:"work",focus:"钱财进出的落点主要看「工作与职业选择」与「事业发展」这两条。"},{key:"career",label:"事业",dim:"career",focus:"事业发展这条与你的问题最直接。"},{key:"love",label:"感情",dim:"love",focus:"感情这条与你的问题最直接。"},{key:"health",label:"健康",dim:"health",focus:"健康这条与你的问题最直接;下面只作提醒,不作任何诊断。"},{key:"study",label:"学业",dim:"career",focus:"学业与考试更贴近「事业发展」这条,讲的是长期积累与阶段进展。"},{key:"travel",label:"出行",dim:"overall",focus:"出行与迁动更贴近「整体运势」这条,看的是当下这一段的大环境。"}];window.__MP_VER="0.67.1",window.__MPGroups=[{title:"问一件事",hint:"心里有一件具体的事,起一卦再决定",items:[{k:"liuyao",label:"六爻",tip:"摇六次,问一件事"},{k:"meihua",label:"梅花",tip:"见闻起卦,看当下"},{k:"tarot",label:"塔罗",tip:"抽牌,看关系与选择"},{k:"qimen",label:"奇门",tip:"看方位、时机与取舍"},{k:"daliuren",label:"六壬",tip:"占事,断来意与结果"},{k:"xiaoliuren",label:"小六壬",tip:"掐指一算,快速断"}]},{title:"看一个人",hint:"看自己或身边人的性情、格局与运程",items:[{k:"bazi",label:"八字",tip:"四柱看一生格局"},{k:"ziwei",label:"紫微",tip:"十二宫细看"},{k:"hepan",label:"合盘",tip:"两个人合不合"},{k:"mbti",label:"人格",tip:"16 型性格问卷"},{k:"chenggu",label:"称骨",tip:"按生辰称命重"},{k:"numerology",label:"数字",tip:"生日数字看性格"},{k:"trend",label:"人生K",tip:"一生高低走势",wide:!0}]},{title:"查日子",hint:"挑时间、换农历,顺带看看家里和名字",items:[{k:"almanac",label:"黄历",tip:"今天宜忌、时辰吉凶"},{k:"zeri",label:"择日",tip:"挑个办事的好日子"},{k:"convert",label:"农历",tip:"公历农历互转"},{k:"star",label:"星座",tip:"星座性格与今日运"},{k:"fengshui",label:"风水",tip:"房屋朝向与布置"},{k:"name",label:"起名",tip:"按八字选字"}]}],window.__MP_UNRELEASED=[];const U={};U.DIRECTIONS=Ft,U.compute=()=>{throw new Error("命理引擎尚未加载")};const Pt=Object.create(null),$t=Object.create(null);function Hi(s){return Ht[s]||Ht.bazi||"client.chart.js"}const Dt=()=>typeof performance<"u"&&performance.now?performance.now():Date.now();async function Fi(s){const n=Hi(s);let j=Pt[n];const I=!!j,ae=Dt();if(!j){if(!Qa||typeof Qa.async!="function")throw new Error("当前宿主不支持客户端分块加载(require.async 缺失),请升级 DeepSeek Harness");let oe=$t[n];oe||(oe=Qa.async(`./${n}`).then(ce=>{const le=ce&&(ce.Engine||ce.default);if(!le||typeof le.compute!="function")throw new Error(`命理引擎分块 ${n} 未返回 Engine`);return Pt[n]=le,le}),$t[n]=oe,oe.catch(()=>{}).then(()=>{delete $t[n]})),j=await oe}for(const oe of Object.keys(j))j[oe]!==void 0&&(U[oe]=j[oe]);return Array.isArray(U.DIRECTIONS)||(U.DIRECTIONS=Ft),window.Engine=U,window.__MP_ENGINE_READY__=!0,window.__MP_LAST_LOAD={tab:s,chunk:n,cached:I,ms:Math.round((Dt()-ae)*10)/10},U}window.__mpEnsureEngine=Fi,window.Engine=U,(function(){const s={liuyao:!0,meihua:!0,daliuren:!0,tarot:!0},n=G=>!!s[G],j={general:"other",wealth:"business",career:"career",love:"love",health:"other",study:"career",travel:"action"},I=G=>j[G]||"other",ae="#ffffff",oe="#1c1a15";function ce(G){const Y=String(G??"").match(/rgba?\(([^)]+)\)/i);if(!Y)return null;const X=Y[1].split(/[,\s/]+/).filter(Boolean).map(Number);return X.length<3||X.slice(0,3).some(V=>!Number.isFinite(V))||X.length>3&&Number.isFinite(X[3])&&X[3]<.95?null:[X[0],X[1],X[2]]}function le(G){const Y=String(G||"").replace("#",""),X=Y.length===3?Y.split("").map(V=>V+V).join(""):Y;return/^[0-9a-f]{6}$/i.test(X)?[0,2,4].map(V=>parseInt(X.slice(V,V+2),16)):null}function ye(G){const Y=X=>{const V=X/255;return V<=.03928?V/12.92:Math.pow((V+.055)/1.055,2.4)};return .2126*Y(G[0])+.7152*Y(G[1])+.0722*Y(G[2])}function t(G,Y){const X=ye(G),V=ye(Y),se=Math.max(X,V),wa=Math.min(X,V);return(se+.05)/(wa+.05)}function ke(G){const Y=typeof G=="string"?ce(G):G;return Y?t(Y,le(ae))>=t(Y,le(oe))?ae:oe:""}function D(G){const Y=String(G??"").trim();if(!Y)return{lines:null,warning:""};const X=Y.split(/[^0-9]+/).filter(Boolean).map(Number),V=X.filter(se=>![6,7,8,9].includes(se));return X.length===6&&V.length===0?{lines:X,warning:""}:{lines:null,warning:X.length!==6?`爻值需要正好 6 个数字(当前 ${X.length} 个),本次按随机摇卦。`:`爻值只能是 6/7/8/9(收到 ${V.join("/")}),本次按随机摇卦。`}}function xe(G){const Y=String(G??"").trim();if(!Y)return null;const X=Number(Y);return Number.isFinite(X)?X:null}function ve(G){const Y=G instanceof Date?G:new Date,X=V=>String(V).padStart(2,"0");return`${Y.getFullYear()}-${X(Y.getMonth()+1)}-${X(Y.getDate())}`}window.__MPCore={NEED_ASK:s,needAsk:n,parseLines:D,toNumber:xe,parseRGB:ce,hexToRGB:le,luminance:ye,contrastRatio:t,pickOnColor:ke,ON_DARK:ae,ON_LIGHT:oe,kindOfDirection:I,todayStamp:ve}})(),(function(){const s=`
2
2
  .pp,.mp-it,.mp-al,.mp-cg,.mp-cl,.mp-cli,.mp-kline,.mp-mb,.mp-mb-paper,.mp-nm,.mp-quick,.mp-cdiff,.mp-shadow,.mp-trace-card,.mp-trace-layer,.mp-prof{--ink:#1b1b1b;--ink2:#3f3a33;--muted:#6f6a60;--label:#8a8378;--faint:#a9a296;
3
3
  --line:#c8c1b2;--dimline:#b9b2a4;--hair:#e9e2d3;
4
4
  /* 底色略沉作「桌面」,--card 跳到近白:原先 bg 与 card 只差 1/255,卡片感等于零。
@@ -1456,7 +1456,7 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.67.0",factory(Qa){
1456
1456
  .pp-disp label{display:inline-flex;align-items:center;gap:5px;cursor:pointer;color:var(--ink2);user-select:none;padding:2px 0;min-height:26px}
1457
1457
  .pp-disp-box{width:13px;height:13px;border:1px solid var(--line);border-radius:3px;background:var(--card);display:inline-block;flex:none}
1458
1458
  .pp-disp label:hover .pp-disp-box{border-color:var(--lu)}
1459
- /* 勾选态:12 条 :checked 各自点亮自己 label 的方框(复选框与 .pp-disp 同为 .pp 直接子元素) */
1459
+ /* 勾选态:17 条 :checked 各自点亮自己 label 的方框(复选框与 .pp-disp 同为 .pp 直接子元素) */
1460
1460
  #ppm-d-ss:checked~.pp-disp label[for="ppm-d-ss"] .pp-disp-box,
1461
1461
  #ppm-d-sbg:checked~.pp-disp label[for="ppm-d-sbg"] .pp-disp-box,
1462
1462
  #ppm-d-zha:checked~.pp-disp label[for="ppm-d-zha"] .pp-disp-box,
@@ -1470,7 +1470,10 @@ window.__ModuleLoader__.load({id:"dsh-metaphysics",version:"0.67.0",factory(Qa){
1470
1470
  #ppm-d-zha-bold:checked~.pp-disp label[for="ppm-d-zha-bold"] .pp-disp-box,
1471
1471
  #ppm-d-bad-ink:checked~.pp-disp label[for="ppm-d-bad-ink"] .pp-disp-box,
1472
1472
  #ppm-d-bold:checked~.pp-disp label[for="ppm-d-bold"] .pp-disp-box,
1473
- #ppm-d-hs:checked~.pp-disp label[for="ppm-d-hs"] .pp-disp-box{background:var(--lu);border-color:var(--lu);box-shadow:inset 0 0 0 2px var(--card)}
1473
+ #ppm-d-hs:checked~.pp-disp label[for="ppm-d-hs"] .pp-disp-box,
1474
+ #ppm-d-rigan:checked~.pp-disp label[for="ppm-d-rigan"] .pp-disp-box,
1475
+ #ppm-d-njq:checked~.pp-disp label[for="ppm-d-njq"] .pp-disp-box,
1476
+ #ppm-d-tjz:checked~.pp-disp label[for="ppm-d-tjz"] .pp-disp-box{background:var(--lu);border-color:var(--lu);box-shadow:inset 0 0 0 2px var(--card)}
1474
1477
  /* 组1 飞星派显示(默认全勾,取消才隐藏) */
1475
1478
  #ppm-d-ss:not(:checked)~.pp-body .pp-ss-txt{display:none}
1476
1479
  #ppm-d-sbg:not(:checked)~.pp-body .pp-st.st-sbg{display:none}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-metaphysics",
3
- "version": "0.67.0",
3
+ "version": "0.67.1",
4
4
  "type": "module",
5
5
  "description": "命理排盘(玄学 xuanxue)for DeepSeek Harness: nineteen systems and eleven quick references (almanac, solar–lunar conversion, …), with climate adjustment (tiaohou), the 120 Qiongtong Baojian entries, 1,062-char name library with per-character pinyin, Kangxi stroke counts, five-grid (五格/三才) analysis and mechanical phonetics checks, a 78-card tarot library on the Rider-Waite-Smith base (per-card English name, image description, core meaning and astrological correspondence, cross-checked against three published sources; court cards carry no zodiac by design and the chart says so), classical quotes (Ziping Zhenquan / Di Tian Sui / San Ming Tong Hui), hexagram body relations (六冲/六合/伏吟/反吟/化进神/化退神) plus yongshen placement (用神落位) with month/day strength (月建日辰旺衰) and whole-hexagram per-line strength (全卦逐爻旺衰) and response-time clues (应期线索:逢值/逢冲/逢合 + 月建五态快慢) for liuyao, plus an MBTI-style 16-type questionnaire and exact dayun handover dates (交运日) with annual suiyun hints (岁运并临/伏吟反吟), palace conditions (击刑/入墓), month states (旺相休囚死) and stem–palace relations (天盘干与宫生克) for qimen, flying four-transformations with chained flights (四化飞星串连), three-way-four-corner composite flights (三方四正复合飞化), switchable leap-month policy (闰月按日切分/整月归次月/整月归本月) eleven school switches (亮度/庚干四化/天马/天空/截空旬空/魁钺/天伤天使/长生/晚子时/身主/杂曜全表) for ziwei, the last one opting in to a 61-star minor-star (杂曜) table where each of the twelve extra stars carries its placement verse and the palace it landed in (verses accepted only when at least two independent published editions give the same table, homonymous stars never merged), caliber diffs for bazi/ziwei/qimen (same inputs, one switch, root-field changes), shadow-chart IDs (same normalized params → same ID; version bumps auto-diff chart fields), step-by-step deduction traces (liuyao najia→liuqin→shiying→fushen→strength; bazi strength score and pattern/yongshen; ziwei pattern conditions), and a bundled offline single-file page (命理排盘.html), a panel-to-chat handoff that asks the Harness about a finished chart, per-tab lazy engine chunks so the first-screen client bundle stays under 100KB gzip, and a public verification report (128 classical hexagram cases, 312 Zi Wei charts × 34 patterns, 12 dayun handover cases) generated from the same source that gates CI.",
6
6
  "keywords": [
@@ -362,7 +362,7 @@ h3::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--li
362
362
  <div class="wrap">
363
363
  <header>
364
364
  <div class="brand-row">
365
- <div class="brand"><span class="seal" aria-hidden="true">命</span><span class="brand-txt">命理排盘<span class="ver">v0.67.0</span><small>八字 · 紫微 · 六爻 · 梅花 · 六壬 · 奇门 · 合盘 · 塔罗 全部在本机计算</small></span></div>
365
+ <div class="brand"><span class="seal" aria-hidden="true">命</span><span class="brand-txt">命理排盘<span class="ver">v0.67.1</span><small>八字 · 紫微 · 六爻 · 梅花 · 六壬 · 奇门 · 合盘 · 塔罗 全部在本机计算</small></span></div>
366
366
  <div class="view-switch">
367
367
  <span class="hint">熟练了可以换回平铺</span>
368
368
  <span class="seg" role="group" aria-label="首屏样式">
@@ -653,7 +653,7 @@ h3::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--li
653
653
  <h3>对拍:把典籍当期望值</h3>
654
654
  <ul><li>六爻:京房八宫卦序与世应,64 卦全表;旬空六旬表</li><li>六壬:日干寄宫、中气换将;紫微:纳音定五行局、紫微天府相照</li><li>卦例:《增删卜易》9 条 +《卜筮正宗》128 条(93 成对 + 35 静卦),核本变卦 / 动爻数 / 卦宫 / 缺爻 / 旬空</li><li>奇门:20 个时辰 × 9 宫,核四柱 / 局数 / 值符 / 值使 / 星门神 / 天盘干</li></ul>
655
655
  <h3>工程验证</h3>
656
- <ul><li>测试:170 个测试文件 / 9352 条断言;七道闸(回归 · 断言基线 · 测试可失败自检 · HTML 注入面 · 工程约定 · 产物宿主形态 · 随机扫射)</li><li>可复现:seed / asOf 显式;同一输入同一输出</li><li>口径:晚子时、真太阳时、奇门三流派、闰月归月都可切换,并有字段级差异对照</li></ul>
656
+ <ul><li>测试:171 个测试文件 / 9387 条断言;七道闸(回归 · 断言基线 · 测试可失败自检 · HTML 注入面 · 工程约定 · 产物宿主形态 · 随机扫射)</li><li>可复现:seed / asOf 显式;同一输入同一输出</li><li>口径:晚子时、真太阳时、奇门三流派、闰月归月都可切换,并有字段级差异对照</li></ul>
657
657
 
658
658
  <h3>已知边界(不猜)</h3>
659
659
  <ul><li>六爻应期(具体哪天应验)不做;卦例只录动爻个数,不录爻位</li><li>财富/健康只给结构判断与档位,不给金额区间、不作诊断</li><li>紫微飞星已做「单一支化逐宫追到成环」与「三方四正 16 条按落宫归堆」,但都未叠大限流年四化、不折吉凶;八字交运日已能算到日/时,但未与第三方排盘案例批量对拍</li></ul>
@@ -30127,7 +30127,7 @@ return { interpret, DIRECTIONS, DIRECTION_DEFAULT, BRIGHTNESS, flowOf, parseDate
30127
30127
  })();
30128
30128
 
30129
30129
  window.Engine = __mods.index;
30130
- window.__MP_VER = "0.67.0";
30130
+ window.__MP_VER = "0.67.1";
30131
30131
  </script>
30132
30132
  <script>
30133
30133
  // 两个 UI 共用的表单规则:宿主面板(src/app.js)与独立页(src/web-ui.js)。
@@ -31696,7 +31696,7 @@ window.__MP_VER = "0.67.0";
31696
31696
  .pp-disp label{display:inline-flex;align-items:center;gap:5px;cursor:pointer;color:var(--ink2);user-select:none;padding:2px 0;min-height:26px}
31697
31697
  .pp-disp-box{width:13px;height:13px;border:1px solid var(--line);border-radius:3px;background:var(--card);display:inline-block;flex:none}
31698
31698
  .pp-disp label:hover .pp-disp-box{border-color:var(--lu)}
31699
- /* 勾选态:12 条 :checked 各自点亮自己 label 的方框(复选框与 .pp-disp 同为 .pp 直接子元素) */
31699
+ /* 勾选态:17 条 :checked 各自点亮自己 label 的方框(复选框与 .pp-disp 同为 .pp 直接子元素) */
31700
31700
  #ppm-d-ss:checked~.pp-disp label[for="ppm-d-ss"] .pp-disp-box,
31701
31701
  #ppm-d-sbg:checked~.pp-disp label[for="ppm-d-sbg"] .pp-disp-box,
31702
31702
  #ppm-d-zha:checked~.pp-disp label[for="ppm-d-zha"] .pp-disp-box,
@@ -31710,7 +31710,10 @@ window.__MP_VER = "0.67.0";
31710
31710
  #ppm-d-zha-bold:checked~.pp-disp label[for="ppm-d-zha-bold"] .pp-disp-box,
31711
31711
  #ppm-d-bad-ink:checked~.pp-disp label[for="ppm-d-bad-ink"] .pp-disp-box,
31712
31712
  #ppm-d-bold:checked~.pp-disp label[for="ppm-d-bold"] .pp-disp-box,
31713
- #ppm-d-hs:checked~.pp-disp label[for="ppm-d-hs"] .pp-disp-box{background:var(--lu);border-color:var(--lu);box-shadow:inset 0 0 0 2px var(--card)}
31713
+ #ppm-d-hs:checked~.pp-disp label[for="ppm-d-hs"] .pp-disp-box,
31714
+ #ppm-d-rigan:checked~.pp-disp label[for="ppm-d-rigan"] .pp-disp-box,
31715
+ #ppm-d-njq:checked~.pp-disp label[for="ppm-d-njq"] .pp-disp-box,
31716
+ #ppm-d-tjz:checked~.pp-disp label[for="ppm-d-tjz"] .pp-disp-box{background:var(--lu);border-color:var(--lu);box-shadow:inset 0 0 0 2px var(--card)}
31714
31717
  /* 组1 飞星派显示(默认全勾,取消才隐藏) */
31715
31718
  #ppm-d-ss:not(:checked)~.pp-body .pp-ss-txt{display:none}
31716
31719
  #ppm-d-sbg:not(:checked)~.pp-body .pp-st.st-sbg{display:none}