docs(plan): 前端设计系统治理重构(ds-flow 全端)实现计划

用 ds-flow 把 Flutter 五端 + 官网 + 用户中心收口到「设计单源·代码镜像·
静态闸拦漂移·golden/fidelity 双级像素验收兜底」。

摸底结论:pangolin 非从零 bootstrap,已约 65% 达标(token 单源含暗色、
Flutter codegen+drift 闸、golden+CI 闸、pre-commit 写好未启用)。本计划是
补缺口 + Web 共享原子层去重,非推倒重来。主题保持 light/dark。

6 阶段:CLAUDE.md → 原型三件套(atoms/icons/index.html,收敛 ui_kits) →
Web token 同源闸 → Web 原子层去重(各自实现+同源闸) → Flutter 收尾+golden
补齐 → 静态闸挂满+启用 pre-commit+fidelity 体检。

真相源(含 checkbox)+ HTML 阅读版 + 登记 docs/index.html;todo #19 tier-1。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-07-07 23:41:50 +08:00
parent 84448b3064
commit 4d274aad7a
5 changed files with 504 additions and 25 deletions
+138 -6
View File
@@ -100,6 +100,8 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
.t-tag:hover { background: #d9e8fb; color: #1d4ed8; }
.ver-badge { font-weight: 700; color: #1f7a44; }
.sub-progress-badge { background: #f0f4ff; color: #3730a3; }
.owner-user{background:rgba(232,192,122,.16);border:1px solid #e8c07a;color:#e8c07a}
.owner-agent{background:rgba(126,224,162,.14);border:1px solid #7ee0a2;color:#7ee0a2}
/* 状态徽章 */
.status-badge { font-size: 11.5px; }
@@ -246,6 +248,78 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
.modal-cmd-code { font-family: "JetBrains Mono", "Fira Code", monospace; font-size: 13px; color: #86efac; word-break: break-all; display: block; }
.modal-copy-btn { margin-top: 10px; padding: 5px 14px; border-radius: 6px; background: #334155; color: #e2e8f0; border: none; font-size: 12px; cursor: pointer; }
.modal-copy-btn:hover { background: #475569; }
/* ════ 家族深色主题覆盖层(2026-07-06 对齐 brain/docs 家族风格;后置覆盖上方浅色基础样式) ════ */
:root{--bg:#0d1117;--card:#161b22;--card-2:#1c2330;--border:#283041;--fg:#e6edf3;--fg-soft:#aeb9c7;--muted:#7d8896;--accent:#58a6ff;--green:#3fb950;--amber:#d29922;--red:#f85149}
body{color:var(--fg);background:radial-gradient(1200px 600px at 80% -10%,rgba(88,166,255,.08),transparent 60%),var(--bg)}
header{background:linear-gradient(135deg,#101a2c 0%,#15294a 100%);border-bottom:1px solid var(--border)}
header .header-meta{color:var(--fg-soft)}
.stat-pill{background:rgba(88,166,255,.12);border:1px solid var(--border)}
.filter-bar{background:rgba(13,17,23,.92);backdrop-filter:blur(6px);border-bottom:1px solid var(--border)}
.filter-label{color:var(--muted)}
.filter-chip,.filter-btn{background:var(--card);border-color:var(--border);color:var(--fg-soft)}
.filter-chip:hover,.filter-btn:hover{border-color:var(--accent);color:var(--accent)}
.filter-chip.active,.filter-btn.active{background:var(--accent);border-color:var(--accent);color:#0d1117}
.filter-sep{background:var(--border)}
.section-title .s-count{background:rgba(255,255,255,.08)}
.st-open {background:rgba(88,166,255,.10);color:#79b8ff;border-left-color:var(--accent)}
.st-doing {background:rgba(210,153,34,.10);color:#e3b341;border-left-color:var(--amber)}
.st-done {background:rgba(63,185,80,.08);color:#7ee787;border-left-color:var(--green)}
.st-accepted{background:rgba(63,185,80,.12);color:#7ee787;border-left-color:var(--green)}
.todo-card{background:var(--card);border-color:var(--border)}
.todo-card.s-doing{border-left-color:var(--amber)}
.todo-card.s-done{border-left-color:var(--green)}
.todo-card.s-accepted{background:rgba(63,185,80,.06);border-left-color:var(--green)}
.item-id{color:var(--accent);background:#0b1020;border-color:var(--border)}
.item-title{color:var(--fg)}
.todo-card.s-accepted .item-title{color:var(--muted)}
.item-desc{color:var(--fg-soft)}
.item-desc code{background:#0b1020;border:1px solid var(--border);color:#c9d6e6}
.item-meta{color:var(--muted)}
.t-block{background:rgba(248,81,73,.15);color:#ff9492}
.t-high{background:rgba(210,153,34,.15);color:#e3b341}
.t-low{background:rgba(88,166,255,.12);color:#79b8ff}
.t-tag{background:var(--card-2);color:var(--fg-soft)}
.t-tag:hover{background:rgba(88,166,255,.15);color:var(--accent)}
.ver-badge{color:var(--green)}
.sub-progress-badge{background:rgba(88,166,255,.12);color:#79b8ff}
.s-open{background:rgba(88,166,255,.15);color:#79b8ff}
.s-doing{background:rgba(210,153,34,.18);color:#e3b341}
.s-done{background:rgba(63,185,80,.15);color:#7ee787}
.s-accepted{background:rgba(63,185,80,.18);color:#7ee787}
.empty-tip{color:var(--muted)}
.tier-1{background:rgba(163,113,247,.15);color:#d2a8ff}
.tier-2{background:rgba(57,197,187,.12);color:#76e3db}
.tier-3{background:var(--card-2);color:var(--fg-soft)}
.reject-btn{background:transparent;border-color:var(--red);color:#ff9492}
.reject-btn:hover{background:var(--red);color:#0d1117}
.reject-note{background:rgba(248,81,73,.08);border-color:rgba(248,81,73,.4);color:#ff9492}
.reject-date{color:rgba(248,81,73,.6)}
.gate-pending{background:rgba(210,153,34,.08);border-color:rgba(210,153,34,.4)}
.gate-granted{background:rgba(63,185,80,.08);border-color:rgba(63,185,80,.4)}
.gate-info{background:var(--card-2);border-color:var(--border)}
.gate-kind,.gate-note,.gate-ref{color:var(--fg-soft)}
.gate-date{color:var(--muted)}
.gate-note code,.gate-ref code{background:#0b1020;border:1px solid var(--border);color:#c9d6e6}
.subtask-block{background:var(--card-2);border-color:var(--border)}
.subtask-label{color:var(--muted)}
.subtask-progress-text{color:var(--fg-soft)}
.subtask-progress-bar{background:var(--border)}
.subtask-item{background:var(--card);border-color:var(--border)}
.subtask-item.s-done,.subtask-item.s-accepted{background:rgba(63,185,80,.06);border-color:rgba(63,185,80,.3)}
.subtask-item.s-doing{background:rgba(210,153,34,.06);border-color:rgba(210,153,34,.3)}
.sub-icon.s-open{color:var(--muted)}
.sub-sid{color:var(--muted)}
.subtask-item.s-done .sub-title,.subtask-item.s-accepted .sub-title{color:var(--muted)}
.dep-label{color:var(--muted)}
.dep-done{background:rgba(63,185,80,.15);color:#7ee787}
.dep-pending{background:rgba(248,81,73,.15);color:#ff9492}
.modal-overlay{background:rgba(0,0,0,.6)}
.modal-box{background:var(--card);border:1px solid var(--border)}
.modal-box h3{color:var(--fg)}
.modal-subtitle{color:var(--fg-soft)}
.modal-label{color:var(--fg-soft)}
.modal-textarea{background:#0b1020;border-color:var(--border);color:var(--fg)}
.modal-btn-cancel{background:var(--card-2);color:var(--fg-soft)}
</style>
</head>
<body>
@@ -253,14 +327,14 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<header>
<div class="wrap">
<h1>feature+windows — 项目 TODO</h1>
<div class="header-meta">生成于 2026-07-01 · 真相源 todo/todo.json</div>
<div class="header-meta">生成于 2026-07-07 · 真相源 todo/todo.json</div>
<div class="stats">
<div class="stat-pill"><strong>17</strong>全部</div>
<div class="stat-pill"><strong>8</strong>待开始</div>
<div class="stat-pill"><strong>18</strong>全部</div>
<div class="stat-pill"><strong>9</strong>待开始</div>
<div class="stat-pill"><strong>0</strong>开发中</div>
<div class="stat-pill"><strong>1</strong>待验收</div>
<div class="stat-pill"><strong>8</strong>已验收</div>
<div class="stat-pill gate-stat"><strong>1</strong>待确认</div>
</div>
</div>
</header>
@@ -293,7 +367,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="filter-sep"></div>
<div class="filter-group">
<span class="filter-label">平台 / 标签</span>
<button class="filter-chip" data-filter-tag="Android">Android</button><button class="filter-chip" data-filter-tag="Windows">Windows</button><button class="filter-chip" data-filter-tag="gRPC">gRPC</button><button class="filter-chip" data-filter-tag="iOS">iOS</button><button class="filter-chip" data-filter-tag="mac">mac</button><button class="filter-chip" data-filter-tag="前端">前端</button><button class="filter-chip" data-filter-tag="后端">后端</button><button class="filter-chip" data-filter-tag="运维">运维</button>
<button class="filter-chip" data-filter-tag="Android">Android</button><button class="filter-chip" data-filter-tag="CI/CD">CI/CD</button><button class="filter-chip" data-filter-tag="Web">Web</button><button class="filter-chip" data-filter-tag="Windows">Windows</button><button class="filter-chip" data-filter-tag="gRPC">gRPC</button><button class="filter-chip" data-filter-tag="iOS">iOS</button><button class="filter-chip" data-filter-tag="mac">mac</button><button class="filter-chip" data-filter-tag="前端">前端</button><button class="filter-chip" data-filter-tag="后端">后端</button><button class="filter-chip" data-filter-tag="运维">运维</button>
</div>
</div>
@@ -302,7 +376,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="section-block" id="section-open">
<div class="section-title st-open" data-toggle="open">
📋 待开始 <span class="s-count">8</span>
📋 待开始 <span class="s-count">9</span>
<span class="s-arrow">▴ 收起</span>
</div>
<div class="section-list-wrap " id="list-wrap-open">
@@ -332,6 +406,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="mac">mac</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-22</span>
</div>
@@ -362,6 +437,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="Android">Android</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-22</span>
</div>
@@ -392,6 +468,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="运维">运维</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
</div>
@@ -422,6 +499,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
</div>
@@ -452,6 +530,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
</div>
@@ -482,6 +561,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="Android">Android</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-29</span>
</div>
@@ -512,12 +592,54 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="前端">前端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-30</span>
</div>
</div>
</li>
<li class="todo-card s-open"
data-id="19"
data-level="mid"
data-status="open"
data-tier="1"
data-tags="前端,Web,mac,iOS,Android,Windows,CI/CD">
<div class="card-header">
<span class="item-id">#19</span>
<span class="item-title">前端设计系统治理重构(ds-flow 全端)</span>
<div class="card-badges">
<span class="tag status-badge s-open">待开始</span>
<span class="tag t-high">重要</span>
<span class="tag tier-1">一级</span>
</div>
</div>
<div class="item-desc">用 ds-flow 把 Flutter 五端+官网+用户中心收口到设计单源。补原型三件套(atoms.css/icons.js/index.html)+Web共享原子层去重(各自实现+同源闸)+硬编码色/fidelity闸+启用pre-commit。6阶段。计划见 docs/superpowers/plans/2026-07-07-frontend-ds-refactor.md</div>
<div class="gate-block gate-pending">
<div class="gate-head"><span class="gate-badge pending">⏸ 待确认</span>
<span class="gate-kind">一级方案规划 · 确认后方可继续开发</span></div>
<div class="gate-note">6 阶段 ds-flow 治理重构:Phase0 CLAUDE.md+计划落库 / Phase1 原型三件套(atoms.css/icons.js/index.html,收敛ui_kits) / Phase2 Web token同源闸 / Phase3 Web共享原子层去重(各自实现+同源闸,★工作量最大) / Phase4 Flutter收尾+golden补齐 / Phase5 静态闸挂满+启用pre-commit+fidelity体检。已定决策:Web各自实现+同源闸、ui_kits收敛纯HTML、先定稿再逐刀。主题保持light/dark。</div><div class="gate-ref">📄 详见 <code>docs/superpowers/plans/2026-07-07-frontend-ds-refactor.md</code></div>
<button class="approve-btn" data-id="19">确认执行 ✓</button>
<div class="approve-cmd" id="approve-cmd-19" style="display:none">
<div class="approve-cmd-label">在终端运行:</div>
<code class="approve-cmd-code">/todo approve 19</code>
<button class="approve-copy-btn" data-cmd="/todo approve 19">复制命令</button>
</div>
</div>
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="Web">Web</span> <span class="tag t-tag" data-tag="mac">mac</span> <span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="Android">Android</span> <span class="tag t-tag" data-tag="Windows">Windows</span> <span class="tag t-tag" data-tag="CI/CD">CI/CD</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-07-07</span>
</div>
</div>
</li>
<li class="todo-card s-open"
data-id="3"
data-level="low"
@@ -542,6 +664,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="Windows">Windows</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-22</span>
</div>
@@ -593,6 +716,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="mac">mac</span> <span class="tag t-tag" data-tag="前端">前端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-07-01</span>
</div>
@@ -633,6 +757,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -663,6 +788,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -693,6 +819,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -723,6 +850,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="iOS">iOS</span> <span class="tag t-tag" data-tag="前端">前端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-30</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -753,6 +881,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -783,6 +912,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span> <span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="gRPC">gRPC</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-29</span>
<span class="meta-date">✅ 验收 2026-06-30</span>
</div>
@@ -813,6 +943,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="前端">前端</span> <span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-28</span>
</div>
@@ -843,6 +974,7 @@ ul.todo-list { list-style: none; margin: 0; padding: 0; }
<div class="card-footer">
<div class="tag-row"><span class="tag t-tag" data-tag="后端">后端</span></div>
<div class="item-meta">
<span class="tag owner-agent">🤖 agent</span>
<span class="meta-date">🕐 2026-06-28</span>
<span class="meta-date">✅ 验收 2026-06-28</span>
</div>
+66 -19
View File
@@ -1,9 +1,9 @@
{
"meta": {
"title": "feature+windows — 项目 TODO",
"updated_at": "2026-06-30T23:10:43.458Z"
"updated_at": "2026-07-07T15:41:36.537Z"
},
"seq": 18,
"seq": 19,
"items": [
{
"id": 1,
@@ -18,7 +18,8 @@
"created_at": "2026-06-22T09:32:42.340Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 2,
@@ -33,7 +34,8 @@
"created_at": "2026-06-22T09:32:56.098Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 3,
@@ -48,7 +50,8 @@
"created_at": "2026-06-22T09:32:56.169Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 4,
@@ -64,7 +67,8 @@
"created_at": "2026-06-27T16:39:31.549Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 5,
@@ -79,7 +83,8 @@
"created_at": "2026-06-27T23:37:24.980Z",
"done": true,
"completed_at": "2026-06-28T13:19:24.207Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 6,
@@ -95,7 +100,8 @@
"created_at": "2026-06-28T00:21:30.990Z",
"done": true,
"completed_at": "2026-06-28T13:19:24.299Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 7,
@@ -110,7 +116,8 @@
"created_at": "2026-06-28T00:26:44.498Z",
"done": true,
"completed_at": "2026-06-30T14:44:35.082Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 8,
@@ -125,7 +132,8 @@
"created_at": "2026-06-28T00:38:22.413Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 9,
@@ -141,7 +149,8 @@
"created_at": "2026-06-28T09:32:26.008Z",
"done": true,
"completed_at": "2026-06-30T14:44:34.810Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 10,
@@ -156,7 +165,8 @@
"created_at": "2026-06-28T09:32:26.080Z",
"done": true,
"completed_at": "2026-06-30T14:44:34.991Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 11,
@@ -171,7 +181,8 @@
"created_at": "2026-06-28T11:27:56.637Z",
"done": true,
"completed_at": "2026-06-30T14:47:39.343Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 12,
@@ -187,7 +198,8 @@
"created_at": "2026-06-28T11:27:56.708Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 13,
@@ -204,7 +216,8 @@
"created_at": "2026-06-29T04:55:46.733Z",
"done": true,
"completed_at": "2026-06-29T16:59:39.926Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 14,
@@ -221,7 +234,8 @@
"created_at": "2026-06-29T09:36:14.004Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 15,
@@ -237,7 +251,8 @@
"created_at": "2026-06-30T10:56:48.894Z",
"done": true,
"completed_at": "2026-06-30T14:44:34.900Z",
"version": null
"version": null,
"owner": "agent"
},
{
"id": 16,
@@ -253,7 +268,8 @@
"created_at": "2026-06-30T14:33:48.996Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 18,
@@ -269,7 +285,38 @@
"created_at": "2026-06-30T23:00:25.193Z",
"done": false,
"completed_at": null,
"version": null
"version": null,
"owner": "agent"
},
{
"id": 19,
"title": "前端设计系统治理重构(ds-flow 全端)",
"desc": "用 ds-flow 把 Flutter 五端+官网+用户中心收口到设计单源。补原型三件套(atoms.css/icons.js/index.html)+Web共享原子层去重(各自实现+同源闸)+硬编码色/fidelity闸+启用pre-commit。6阶段。计划见 docs/superpowers/plans/2026-07-07-frontend-ds-refactor.md",
"level": "mid",
"tier": 1,
"tags": [
"前端",
"Web",
"mac",
"iOS",
"Android",
"Windows",
"CI/CD"
],
"owner": "agent",
"status": "open",
"created_at": "2026-07-07T15:41:25.760Z",
"done": false,
"completed_at": null,
"version": null,
"gate": {
"kind": "plan",
"note": "6 阶段 ds-flow 治理重构:Phase0 CLAUDE.md+计划落库 / Phase1 原型三件套(atoms.css/icons.js/index.html,收敛ui_kits) / Phase2 Web token同源闸 / Phase3 Web共享原子层去重(各自实现+同源闸,★工作量最大) / Phase4 Flutter收尾+golden补齐 / Phase5 静态闸挂满+启用pre-commit+fidelity体检。已定决策:Web各自实现+同源闸、ui_kits收敛纯HTML、先定稿再逐刀。主题保持light/dark。",
"ref": "docs/superpowers/plans/2026-07-07-frontend-ds-refactor.md",
"approval": "pending",
"proposed_at": "2026-07-07T15:41:36.536Z",
"approved_at": null
}
}
]
}