# Frontend Redesign — Tasks > 進度來源:本檔。完成一項立刻 `[x]`,不批次。 > 本 SDD 建立於 2026-04-23;richblack 尚未下令動工,**所有 task 預設 `[ ]`**。 --- ## Phase 0 — SDD 建立(本次) - [x] 取得 Claude Design bundle,歸檔至 `design-source/` - [x] 撰寫 `requirements.md` - [x] 撰寫 `design.md` - [x] 撰寫 `tasks.md`(本檔) - [ ] richblack review + 認可 → 開 Phase 1 **等 richblack 明確說「開始動工」之前,不觸 `landing/` 任何檔案。** --- ## Phase 1 — Tokens + Shell(無外部 API 依賴) - [ ] 1.1 建 `landing/app/design-tokens.css`,抄 design-source CSS :root 變數 - [ ] 1.2 更新 `landing/app/globals.css`:`@import './design-tokens.css'`,`@theme inline` 對應 token → Tailwind color - [ ] 1.3 `layout.tsx` 引入 `next/font/google` 的 Inter + JetBrains Mono;body bg 改 `var(--bg)` - [ ] 1.4 建 `landing/components/shell/Icon.tsx`(港設計稿 primitives.jsx 的所有 icon) - [ ] 1.5 建 `landing/components/shell/Logo.tsx`(SVG arc wordmark) - [ ] 1.6 建 `landing/components/shell/TopNav.tsx` - [ ] 1.7 建 `landing/components/shell/Footer.tsx` - [ ] 1.8 建 `landing/components/shell/Sidebar.tsx`(含頭像、項目清單、登出按鈕) - [ ] 1.9 建 `landing/components/primitives/Button.tsx`(variants: primary / secondary / ghost / danger-ghost / sm / lg) - [ ] 1.10 建 `landing/components/primitives/Pill.tsx`、`Toggle.tsx` - [ ] 1.11 Lint + build pass --- ## Phase 2 — Landing(`/`) - [ ] 2.1 Rewrite `app/page.tsx`,結構照 design-source/screens/Landing.jsx - [ ] 2.2 Hero:heading / eyebrow / CTA / radial-grid bg(CSS only) - [ ] 2.3 Paths 左卡:install tabs 元件(Client Component)+ terminal code blocks(字串改 `acr` 實際指令) - [ ] 2.4 Paths 右卡:chat preview(靜態) - [ ] 2.5 Feature strip(4 cell) - [ ] 2.6 TopNav / Footer 接上 - [ ] 2.7 Responsive(≤ 768px: paths 單欄、hero h1 縮 1 級) - [ ] 2.8 視覺比對 design-source/index.html(截圖對比 / DOM spec 檢查) --- ## Phase 3 — Auth(`/auth`,`/login` redirect) - [ ] 3.1 建 `app/auth/page.tsx`(Client) - [ ] 3.2 Sign in / Sign up tabs + OAuth buttons(Google / GitHub)接既有 `/auth/google/start` / `/auth/github/start` - [ ] 3.3 Email / Password form — submit 顯示「OAuth only」提示(待後端支援) - [ ] 3.4 `/login` 頁改為 `redirect('/auth')` - [ ] 3.5 視覺比對 design-source/screens/Auth.jsx --- ## Phase 4 — API Keys(`/keys`) - [ ] 4.1 建 `lib/api.ts` fetch wrapper - [ ] 4.2 建 `lib/apiKeys.ts`(listKeys / createKey / patchKey / deleteKey)— 後端未實作時回 `[{ ...from /me }]` 的 fallback - [ ] 4.3 建 `app/keys/page.tsx`:頂部 new-key-box(sessionStorage flag)、全表格 - [ ] 4.4 「Create new key」呼叫 `POST /api-keys`(後端未實作 → 顯示「coming soon」toast) - [ ] 4.5 Toggle active / trash 接 PATCH / DELETE - [ ] 4.6 middleware.ts matcher 加 `/keys/:path*` - [ ] 4.7 原 `/dashboard` 頁的 Key 卡區塊移除,放提示「API Keys 已搬到 /keys」 --- ## Phase 5 — Dashboard(`/dashboard`) - [ ] 5.1 建 `lib/workflows.ts`、`lib/apps.ts` - [ ] 5.2 Rewrite `app/dashboard/page.tsx`(保留 /me session 檢查) - [ ] 5.3 Main head:breadcrumb / greeting / summary counters - [ ] 5.4 Apps Grid + empty-state 卡(`/apps` 404 → 只顯示 empty-state) - [ ] 5.5 Workflows Table(`/workflows` 404 → 顯示「no workflows — acr push」CTA) - [ ] 5.6 Sidebar 接真實 user(email / display_name)、登出按鈕接 `/auth/logout` - [ ] 5.7 視覺比對 design-source/screens/Dashboard.jsx --- ## Phase 6 — Workflow Viewer(`/workflows/[name]`) - [ ] 6.1 建 `app/workflows/[name]/page.tsx`(Client) - [ ] 6.2 Topbar:back / logo / breadcrumb / title / saved indicator / share / export / edit-in-claude - [ ] 6.3 ``:SVG defs + 節點定位 + bezier edges;資料從 `GET /workflows/:name` - [ ] 6.4 Auto-layout:topological depth → columns,同 depth 平均分配 y - [ ] 6.5 NodeCard 點擊 → DetailPanel - [ ] 6.6 DetailPanel:input / output schema、triplet(disabled)、last run stats(可選) - [ ] 6.7 Export YAML:`GET /workflows/:name/yaml` → blob download - [ ] 6.8 Minimap(純顯示)、ZoomControls(簡單 scale) - [ ] 6.9 middleware.ts matcher 加 `/workflows/:path*` --- ## Phase 7 — 清理 + 收尾 - [ ] 7.1 刪除舊 `/dashboard` 不再用的 code(rotate/revoke 若全搬到 /keys) - [ ] 7.2 Grep 檢查:除 `cypher.arcrun.dev` 外無任何第三方 API host - [ ] 7.3 Grep 檢查:無 `mock` / `fixture` / 硬編的假資料陣列(`app-empty` 的字串常數除外) - [ ] 7.4 Grep 檢查:無新增 npm 依賴(`git diff landing/package.json` 應只改版本,不加條目) - [ ] 7.5 `pnpm build` 通過;`next-on-pages` 通過 - [ ] 7.6 local `pnpm dev` 手工巡覽 5 screen,每個截圖比對 design-source - [ ] 7.7 更新 `.agents/specs/arcrun/arcrun.md`,加一段「CLI 1.2.0 搭配新 landing」之類的進度註記 - [ ] 7.8 richblack 認可 → 合併 / deploy --- ## 需要 cypher-executor 搭配的 endpoint(不屬於本 SDD) 若 richblack 決定新 endpoint 要和前端同 PR 做: - [ ] 後端:`GET /workflows` - [ ] 後端:`GET /workflows/:name` + `/yaml` - [ ] 後端:`GET /apps` - [ ] 後端:`GET /api-keys`、`POST /api-keys`、`PATCH /api-keys/:id`、`DELETE /api-keys/:id` 否則:以 empty state 呈現,封測也能運作。 --- ## KBDB 整合(配合 matrix/kbdb/.agents/specs/arcrun-key-auth/) Arcrun 用戶的 `ak_xxx` Key 同時可用於 KBDB(捆綁服務,自動開通)。 cypher-executor 需在以下時機呼叫 KBDB: - [ ] 後端:OAuth callback 成功 → `POST /partners`(建立 KBDB partner 記錄) - [ ] 後端:`PUT /me/api-key/rotate` → 舊 partner revoke + 建新 partner 記錄 - [ ] 後端:`DELETE /me/api-key` → KBDB partner revoke 詳細設計見 `matrix/kbdb/.agents/specs/arcrun-key-auth/design.md`。 --- ## 目前狀態 - **進度**:Phase 0 已完成(4/5;最後一項等 richblack 認可)。 - **阻擋**:richblack 認可 + 「開始動工」指令。 - **未啟動**:Phase 1-7 全部 `[ ]`。