@qijenchen/design-system 0.1.0-beta.44 → 0.1.0-beta.45
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.
|
@@ -87,6 +87,7 @@ detect_mode() {
|
|
|
87
87
|
**為何不能只靠 deterministic grep**:2026-05-30 嘗試建 `audit-anatomy-prop-existence.mjs`(已刪除不存在)機械驗 prop-existence,但 **prop passthrough(元件 `...props` 轉發 Radix/react-day-picker)使 naive grep 必 over-flag 合法 prop** → 不可靠 → 刪除。**結論:FALSE_CLAIM 驗證本質需 LLM 讀 source 判斷,無法純 grep gate → 故必用「強制 + 報告驗證確認真跑」的機制保證**。
|
|
88
88
|
|
|
89
89
|
**強制流程**(deep-audit 每次必跑,no skip):
|
|
90
|
+
0. **機械 gate 先跑(deterministic,2026-06-02 加)**:`npm run typecheck:stories`(deterministic 抓 stories 的 `{var}`-undefined / prop 型別錯 —— **這是 SizeMatrix `{size}` crash 的真防線**;主 tsc -b exclude stories 故必跑此)+ `node scripts/storybook-smoke-test.mjs --full`(runtime crash render 掃)。先過才進 adversarial read。Anchor:2026-06-02 Field SizeMatrix `{size}` JSX-undefined crash 隨 beta.44 ship。**注**:smoke 全覆蓋 coverage-gate(防靜默-skip 假綠燈)attempted 但 CI server 規模化降級(~60 story 後 timeout 撞 20-min budget)→ **defer**(需 robust-server / browser-recycle + 可靠測試環境);故 typecheck:stories 是目前 deterministic 主防線。
|
|
90
91
|
1. **per-component(NO-SAMPLE,全 62 component + 全 pattern)** dispatch adversarial agent。
|
|
91
92
|
2. 每 agent 必 **Read 元件 .tsx + 其 wrap 的 lib(Radix/cmdk/react-day-picker/sonner 等)source**,對該元件**所有** anatomy / a11y / principles / spec 宣稱**逐句**比對:鍵盤 map / ARIA role / focus 行為 / prop 存在性 / 視覺 token / 預設值 / native-vs-custom。
|
|
92
93
|
3. **「自上次 audit 無 code 改動」≠ 可跳過** —— content 宣稱可在 code 沒變下就是假的(前期正是用此藉口跳過 = 違規)。
|
package/ds-story-manifest.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"scripts/composition-fidelity-visual-diff.mjs",
|
|
8
8
|
"product-workspace apps/template/src/AllDsComponents.stories.tsx (DsCanonicalPortal)"
|
|
9
9
|
],
|
|
10
|
-
"generatedAt": "2026-06-
|
|
10
|
+
"generatedAt": "2026-06-02T08:11:50.389Z"
|
|
11
11
|
},
|
|
12
12
|
"components": {
|
|
13
13
|
"accordion": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qijenchen/design-system",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.45",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "World-class design system — components, patterns, tokens, hooks (single source of truth for team distribution).",
|
|
6
6
|
"type": "module",
|
|
@@ -262,7 +262,7 @@ export const SizeMatrix: Story = {
|
|
|
262
262
|
<div className="flex flex-col gap-10">
|
|
263
263
|
<div>
|
|
264
264
|
<H3>三種 Size — 對齊 field-height 系統</H3>
|
|
265
|
-
<Desc>Field 的 size 透過 context 傳遞給 input-class control(Input / NumberInput / Select),控制其內部高度對齊 `--field-height-*` tier(見 uiSize.spec.md)。Slider / Switch / Checkbox 等 primitive 維持原生尺寸不讀 context size(見 field.spec.md「為什麼 primitive 不自己變高」),其行高節奏改由 Field control-area 的 min-h-field-{size} 提供——同一 Field 內所有 control 因此自動對齊高度。</Desc>
|
|
265
|
+
<Desc>Field 的 size 透過 context 傳遞給 input-class control(Input / NumberInput / Select),控制其內部高度對齊 `--field-height-*` tier(見 uiSize.spec.md)。Slider / Switch / Checkbox 等 primitive 維持原生尺寸不讀 context size(見 field.spec.md「為什麼 primitive 不自己變高」),其行高節奏改由 Field control-area 的 min-h-field-{'{size}'} 提供——同一 Field 內所有 control 因此自動對齊高度。</Desc>
|
|
266
266
|
<div className="grid grid-cols-3 gap-6">
|
|
267
267
|
{(['sm', 'md', 'lg'] as const).map(size => (
|
|
268
268
|
<div key={size} className="border border-dashed border-divider rounded-md p-4">
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
SidebarMenuButton,
|
|
23
23
|
} from './sidebar'
|
|
24
24
|
import { TreeView, TreeItem } from '@/design-system/components/TreeView/tree-view'
|
|
25
|
-
import { ItemAvatar } from '@/design-system/patterns/element-anatomy/item-anatomy'
|
|
26
25
|
import { Avatar } from '@/design-system/components/Avatar/avatar'
|
|
27
26
|
|
|
28
27
|
const meta: Meta = {
|