OG T
|
ba4ee46514
|
fix(ui): 架構師 Review 修復 — i18n/keyframe/型別/版面
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Critical:
- flow-pipeline.tsx: 移除 4 個重複 lobster-bob keyframe,統一在父元件注入
修正 isResolved 路由邏輯,保留嚴重度視覺識別 (P0 resolved 仍用 StyleA)
- incident-card.tsx: 修復 4 個硬編碼中文字串 (affectedServices/signalCount/statusLabel/aiProposal)
新增對應 i18n key 到 zh-TW.json + en.json
Warning:
- page.tsx: MetricItem type 提升至 module scope,pendingApprovals null 安全檢查
Metrics Strip 移除固定 height:68px 改為 auto + padding:8px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-02 21:36:51 +08:00 |
|
OG T
|
28bd06d7b3
|
feat(homepage): Metrics Strip 7指標視覺強化 + 真實資料串接
CD Pipeline / build-and-deploy (push) Has been cancelled
E2E Health Check / e2e-health (push) Has been cancelled
- 新增 podHealth/allRunning i18n key (zh-TW + en)
- Metrics Strip: 6個指標全部串接真實 API
- 活躍事件: incidents count + P0 badge
- 服務健康: dashboard services healthy/total + RPS sparkline
- 待簽核: dashboard pendingApprovals + 橘色 badge
- 自動處置率: incidents resolved rate + error rate sparkline
- MTTR 均值: incidents resolved avg duration
- POD 健康: dashboard services up/total + 顏色狀態
- Right panel 固定 530px 寬度 (55/45 比例)
- 禁止假數據: 無 API 資料時顯示 "--"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-02 21:27:59 +08:00 |
|
OG T
|
93e3aa6811
|
feat(ui): 四種嚴重度管線動畫 + WoooClaw 命名更新
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
- flow-pipeline.tsx: 新增 severity prop,四種管線樣式
- P0 → Style A: 脈衝光波 + 流動光效 (#cc2200)
- P1 → Style B: 進度條,龍蝦站在進度端點 (#F59E0B)
- P2 → Style C: 卡片步驟,龍蝦浮在 active 卡片上方 (#4A90D9)
- P3 → Style D: 時間軸,虛線流動動畫 (#22C55E)
- incident-card.tsx: FlowPipeline 傳入 severity={sev}
- openclaw-panel.tsx: NemoClaw→WoooClaw, OpenClaw Pipeline→WoooClaw Pipeline
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-02 21:18:22 +08:00 |
|
OG T
|
9afb518ea6
|
fix(ui): 修復事件卡片溢出框 + 基礎架構資料欄位錯誤對應
CD Pipeline / build-and-deploy (push) Failing after 49s
E2E Health Check / e2e-health (push) Successful in 21s
- incident-card: AI提案按鈕 width 100% + margin 造成右側懸浮框,改為 calc(100%-20px)
- page.tsx: useHosts() 返回 Host[] 但直接傳入 HostGrid 期望的 HostInfo[],
補上 mapper (name→hostname, metrics.cpu_percent→cpuPct, service.status→healthy)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-02 19:01:07 +08:00 |
|
OG T
|
1ec342db0c
|
fix(web): 首席架構師審查修復 (82/100 → Pass)
E2E Health Check / e2e-health (push) Successful in 18s
CD Pipeline / build-and-deploy (push) Has been cancelled
- 字體遷移遺漏: host-grid (2處), sidebar (1處) → var(--font-body)
- time-series-chart tick → var(--font-mono) (圖表軸標籤保留等寬意圖)
- i18n key 重複: 移除 incident.anomaly, 保留 incident.card.anomaly
- 全站 inline fontFamily: 'monospace' 歸零
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 13:56:43 +08:00 |
|
OG T
|
f0f9cc87a1
|
fix(web): monitoring 頁 QA 修復 — NAN% + HostGrid + i18n
E2E Health Check / e2e-health (push) Successful in 17s
CD Pipeline / build-and-deploy (push) Has been cancelled
- HostGrid 接 useHosts() SSE 數據(不再傳空陣列)
- HealthSummary NAN% 修復:total_count=0 時顯示 0% 而非 NaN%
- 8 處硬編碼中文改 i18n (正常/警告/異常/黃金指標/主機狀態/服務清單/表頭)
- 新增 monitoring namespace i18n keys (11 keys × 2 langs)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 13:55:29 +08:00 |
|
OG T
|
1f174e1268
|
fix(web): 首頁全面 QA 修復 — hosts 數據 + incident 標題 + i18n + 字體
E2E Health Check / e2e-health (push) Successful in 17s
CD Pipeline / build-and-deploy (push) Has been cancelled
- HostGrid 接 useHosts() SSE 數據(不再傳空陣列)
- IncidentCard 標題從 description?? '--' 改為 decision.action ?? services + 異常
- 6 處硬編碼中文改 i18n (活躍事件/載入中/系統穩定/OpenClaw認知引擎/基礎架構)
- fontFamily: Inter/monospace → var(--font-body) 全部替換
- 新增 dashboard.openclawEngine / infrastructure i18n keys
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 13:33:48 +08:00 |
|
OG T
|
1628f659e3
|
fix(web): tDashboard is not defined — 補上 useTranslations('dashboard')
E2E Health Check / e2e-health (push) Successful in 16s
CD Pipeline / build-and-deploy (push) Has been cancelled
ReferenceError 導致 web pod crash loop。
page.tsx 用了 tDashboard() 但沒宣告。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 13:17:32 +08:00 |
|
OG T
|
1123eb4107
|
feat(web): Metrics Strip 自動處置率 + MTTR 真實計算
E2E Health Check / e2e-health (push) Successful in 17s
CD Pipeline / build-and-deploy (push) Has been cancelled
- autoRemediationRate: resolved+closed / total incidents
- mttrAvg: 平均 (updated_at - created_at) 分鐘/小時
- 替換原本的 '--' 靜態值
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 13:03:20 +08:00 |
|
OG T
|
05cd9cbab4
|
fix(web): 驗收報告 6 個問題修復
E2E Health Check / e2e-health (push) Successful in 17s
CD Pipeline / build-and-deploy (push) Has been cancelled
1. [Medium] Metrics Strip [object Object] — 移除 pendingApprovals 陣列直接渲染
+ label 硬編碼改 i18n (activeIncidents/serviceHealth/todayIncidents 等)
2. [Low] KB GET /{id} 不過濾 archived — get_by_id 加 status != ARCHIVED
3. [Low] favicon.ico 404 — 新增 NemoClaw SVG favicon + layout metadata
4. [Medium] auto-repair console errors — fetchEval 加 try-catch 靜默處理
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 10:30:43 +08:00 |
|
OG T
|
4d46e6b9a7
|
style(web): 全站 font-mono → font-body (DM Mono 設計系統套用)
E2E Health Check / e2e-health (push) Successful in 17s
CD Pipeline / build-and-deploy (push) Has been cancelled
45 個 component + 6 個 page 統一從舊 font-mono 遷移到
font-body (DM Mono),確保設計系統一致性。
font-body = DM Mono (等寬),視覺效果相同但走新設計 token。
保留: font-heading (Syne)、font-dot-matrix (VT323/DSEG7)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 09:37:03 +08:00 |
|
OG T
|
3ecfe7b3f5
|
chore: 清理 NemoNodeAnimation 殘留 + 修復 Migration YAML
E2E Health Check / e2e-health (push) Successful in 19s
CD Pipeline / build-and-deploy (push) Has been cancelled
- 移除 nemo-node-animation.tsx (無人引用,已被 NemoClaw 取代)
- Migration YAML: 修復 $$ 在 YAML heredoc 被 shell 解析問題
改用單引號字串 DO '' 語法
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 09:09:25 +08:00 |
|
OG T
|
e17248fd10
|
fix: 首席架構師審查修復 — i18n/CD/時區/死碼清理
E2E Health Check / e2e-health (push) Successful in 16s
CD Pipeline / build-and-deploy (push) Has been cancelled
P0 前端 i18n 合規 (6 檔案):
- settings/page.tsx: 全面改用 useTranslations('settings')
- auto-repair/page.tsx: 30+ 處硬編碼改用 t('autoRepair.*')
- sidebar.tsx: sectionLabel 改用 tSection(),aria-label 國際化
- openclaw-panel.tsx: STATUS_MESSAGES 改用 tPanel(),Production 改用 tBrand
- alerts/page.tsx: StatPill label 改用 t('incident.severity.*')
P1 CD Pipeline:
- cd.yaml: runs-on 改 self-hosted (ADR-039)
- Telegram Secret 注入失敗改為 exit 1 (ADR-035)
- kubectl patch op:replace → op:add (首次部署相容)
P2 後端:
- langfuse_client.py: 移除 v4.x 死碼分支 (SDK 鎖定 <3.0.0)
- ai.py: 標記 TODO(R4) Router 瘦身
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 09:02:41 +08:00 |
|
OG T
|
502621e2f2
|
feat(web): Knowledge Base 前端頁面 + i18n
CD Pipeline / build-and-deploy (push) Has been cancelled
E2E Health Check / e2e-health (push) Has been cancelled
- 左側分類導航 (基礎設施/應用層/AI系統/安全合規)
- 頂部搜尋欄 + 類型篩選 + 新增按鈕
- 知識條目列表 (type badge + status + tags + view count)
- 右側詳情 Panel (content + meta + approve/archive)
- 空態設計 (BookOpen icon + 說明文字)
- i18n: zh-TW + en knowledgeBase namespace (30+ keys)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 09:00:23 +08:00 |
|
OG T
|
5959855a71
|
feat(web): 字體系統升級 + NemoClaw SVG 還原 + Knowledge Base 設計文件
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
- 字體:Syne (標題) + DM Mono (內文) + VT323 (品牌點陣),替換 Inter
- Tailwind: fontFamily 更新 + 5 層文字色彩 token (primary→disabled)
- Sidebar: NemoClaw 白瓷龍蝦爪 SVG + AWOOOI 用 VT323 放大
- OpenClaw Panel: 還原 NemoClaw 3D 白瓷龍蝦爪 (替換 NemoNodeAnimation)
- Knowledge Base 設計文件 (B分離/A K8s Job/Phase1跳過向量搜尋)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-02 00:48:42 +08:00 |
|
OG T
|
75e17528fc
|
feat(settings): 從佔位符升級為完整設定頁面
CD Pipeline / build-and-deploy (push) Successful in 6m55s
E2E Health Check / e2e-health (push) Successful in 15s
- 4 分區側邊導覽:外觀/語言/通知/系統資訊
- 外觀:緊湊模式 Toggle (localStorage 持久化)
- 語言:zh-TW / en 切換(路由導向)
- 通知:瀏覽器推播 / P0 Only 過濾 Toggles
- 系統:版本、API 端點資訊
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 23:03:41 +08:00 |
|
OG T
|
b51241826c
|
feat(auto-repair): 從佔位符升級為完整自動修復頁面
- 統計面板: Playbook 數/高品質數/執行次數/成功率
- 自動修復就緒狀態指示器
- 活躍 P1/P2 Incident 評估列表(可展開查看 Playbook 詳情)
- 執行修復按鈕(呼叫 /api/v1/auto-repair/execute)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 23:02:40 +08:00 |
|
OG T
|
cdf60bb8c8
|
feat(pages): 補全所有缺失路由頁面 (15 個)
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
實作頁面:
- /monitoring: 黃金指標 + 主機狀態 + 服務健康表格
- /alerts: P0-P3 分組 + 嚴重度統計 (已送)
- /terminal: OmniTerminal 路由 (已送)
- /authorizations: LiveApprovalPanel (已送)
佔位頁面 (ComingSoon):
- /apm /topology /security /compliance
- /auto-repair /deployments /tickets /cost /reports
- /apps /services /users /notifications /billing /help
新增 ComingSoon 元件 (極簡動點動畫)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:59:02 +08:00 |
|
OG T
|
7dde534575
|
feat(alerts): 新增告警管理頁面 + i18n 補全
CD Pipeline / build-and-deploy (push) Successful in 6m52s
E2E Health Check / e2e-health (push) Has been cancelled
- /alerts 頁面:按 P0/P1/P2/P3 分組,15s 自動刷新
- 統計 4 欄(P0 CRITICAL 紅色高亮)
- 空態 / 載入 / 錯誤三態處理
- 補全 alerts.autoRefresh、common.loading/refresh i18n keys
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:50:12 +08:00 |
|
OG T
|
fccc69972d
|
feat(terminal): 建立 /terminal 路由頁 + 補全 Sidebar 全部 i18n nav keys
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
- 新增 terminal/page.tsx (自動開啟 OmniTerminal)
- zh-TW/en nav 補全 18 個缺失 key (alerts/monitoring/apm/...)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:46:59 +08:00 |
|
OG T
|
ddf82937f4
|
feat(authorizations): 從佔位符升級為完整 HITL 授權頁面
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
接入 LiveApprovalPanel:Multi-Sig、權限擋板 (RBAC)、SSE 即時更新、CSRF 保護
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:45:41 +08:00 |
|
OG T
|
79c8a2e7ab
|
fix(layout): 還原 Header 原始設計 + 修復 Metrics Strip 高度
CD Pipeline / build-and-deploy (push) Has been cancelled
E2E Health Check / e2e-health (push) Has been cancelled
- Header 左側換回頁面標題 (移除重複的 SVG + AWOOOI 品牌)
- Metrics Strip height 50→60px (避免三行文字被截斷)
- 原因: commit 249ecde 錯誤地在 Header 加入品牌區塊,與 Sidebar 重複
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:42:07 +08:00 |
|
OG T
|
48d89a1a91
|
style(font): 系統性字體升級 — 對齊業界標準 Linear/Vercel/Anthropic
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
- openclaw-panel: 11/9/8px → 13/12/11px
- sidebar: nav 13→14px, badges 11→12px, bottom 12→13px, icons 14→15px
- page.tsx: metric labels 11→12px, section headers 12→13px
- incident-card: 11px 全面升 12px, meta 12→13px
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 22:15:35 +08:00 |
|
OG T
|
0ae210a433
|
fix(ui): sidebar font sizes to standard + remove dead NemoClaw SVG from openclaw-panel
CD Pipeline / build-and-deploy (push) Successful in 6m47s
E2E Health Check / e2e-health (push) Successful in 17s
|
2026-04-01 21:24:52 +08:00 |
|
OG T
|
0df2625b26
|
fix(ui): increase font sizes to mainstream web standards across AI Center
|
2026-04-01 21:05:03 +08:00 |
|
OG T
|
44e2244781
|
fix(page): wrap with AppLayout to restore Sidebar + Header, use calc(100vh-64px)
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
|
2026-04-01 20:30:58 +08:00 |
|
OG T
|
249ecdeb25
|
feat(header): update NemoClaw Logo SVG with ceramic3d arms and LED core
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:11:39 +08:00 |
|
OG T
|
e623b1c4e9
|
chore(incident): remove DualStateIncidentCard (Phase 6.5 old style, migrated to IncidentCard)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:10:20 +08:00 |
|
OG T
|
d14a58be0d
|
fix(page): correct comment from 3-col to 2-col (sidebar is in AppLayout)
|
2026-04-01 20:09:27 +08:00 |
|
OG T
|
9268d22dee
|
feat(page): redesign AI Center layout - 3-col Feed+RightPanel, Metrics Strip
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:07:58 +08:00 |
|
OG T
|
beb6a227db
|
feat(ai): replace dragon arm SVG with NemoNodeAnimation in OpenClawPanel
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:05:18 +08:00 |
|
OG T
|
edc3707032
|
fix(incident): a11y AI proposal button, move spin keyframe to globals, fix deps
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:03:09 +08:00 |
|
OG T
|
823e2b95a3
|
feat(incident): redesign IncidentCard with FlowPipeline, migrate auth logic from DualState
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 20:00:16 +08:00 |
|
OG T
|
8b99dde05e
|
fix(i18n): add tagline and fix liveDashboard section placement
|
2026-04-01 19:53:57 +08:00 |
|
OG T
|
faf658c4b4
|
feat(sidebar): 4-section nav with AI center active style #d97757
|
2026-04-01 19:53:00 +08:00 |
|
OG T
|
dae401270c
|
feat(i18n): rename to AI Center, add flow pipeline keys
|
2026-04-01 19:52:28 +08:00 |
|
OG T
|
91b42b4bb9
|
feat(infra): add HostGrid 2x2 compact host grid component
|
2026-04-01 19:50:27 +08:00 |
|
OG T
|
354bf7a6f2
|
feat(ai): add NemoNodeAnimation 72x72 SVG with orb-pulse and ring-spin
|
2026-04-01 19:50:05 +08:00 |
|
OG T
|
16ca133955
|
feat(incident): add FlowPipeline 7-node pipeline with lobster animation
|
2026-04-01 19:47:19 +08:00 |
|
OG T
|
c1c7564e41
|
feat(design): add Anthropic Warmth ai-center color tokens
|
2026-04-01 19:44:43 +08:00 |
|
OG T
|
c9c60c3a61
|
feat(mcp-integrations): Phase S 架構修復 + MCP 整合基礎建設
E2E Health Check / e2e-health (push) Has been cancelled
CD Pipeline / build-and-deploy (push) Has been cancelled
Type Sync Check / check-type-sync (push) Failing after 22s
Phase S 技術債修復 (首席架構師審查 82→完整):
- S-01: generate_alert_fingerprint 移至 AlertAnalyzer.generate_fingerprint() staticmethod
- S-04: 移除 Pydantic v2 deprecated json_encoders (直接用原生 datetime 序列化)
Sentry MCP 整合 (Phase 23):
- ADR-048: Sentry→OpenClaw AI Triage 架構決策
- sentry_webhook_service.py: parse/analyze/create_incident/build_message Service 層
- config.py: SENTRY_WEBHOOK_SECRET (Fail-Closed HMAC-SHA256)
Playwright MCP 整合 (短期):
- smoke.spec.ts: 5 頁面 E2E smoke test (home/dashboard/incidents/approvals/terminal)
- cd.yaml: E2E Smoke Test 步驟 + Telegram 🎭 Smoke 狀態通知
長期規劃 ADR:
- ADR-049: Figma Code Connect 設計系統同步
- ADR-050: Telegram 互動式 Incident 2.0 (6鍵 Inline Keyboard)
- ADR-051: Context7 依賴升級顧問 (Next.js 14→15, FastAPI 0.115→0.128)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 16:20:57 +08:00 |
|
OG T
|
22de22c989
|
refactor(phase-s): Phase S 技術債清理 - 五項架構改善
S-01: generate_alert_fingerprint() 移至 alert_analyzer_service (Router→Service)
S-02: 移除廢棄 USE_NEW_ENGINE config (Phase R 已完成歷史使命)
S-03: github_webhook.py linter 清理 (Field unused + delivery_id noqa)
S-04: Pydantic v2 遷移 - approval/incident models (class Config → ConfigDict)
S-05: Skill 09 v1.1 更新 (USE_NEW_ENGINE 廢棄說明)
測試: 393 passed, 零失敗
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 13:12:02 +08:00 |
|
OG T
|
384015ec2c
|
perf(cd): 加速 CI/CD - venv 持久化 + Web cache 精準失效 + 合併 SSH
CD Pipeline / build-and-deploy (push) Failing after 50s
E2E Health Check / e2e-health (push) Successful in 16s
- Run API Tests: 持久化 /opt/api-venv,pyproject.toml hash 變才重裝 (~6-7 min)
- Build Web: CACHE_BUST=git_sha 取代 --no-cache,deps 層可 cache (~2-3 min)
- Deploy: ConfigMap + Deploy + Health Check 合併為 2 次 SSH 連線 (~30s)
- 預估總節省: ~8-10 min/run
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 11:17:47 +08:00 |
|
OG T
|
95de7e0e15
|
fix(web): 活躍事件 Y/n 按鈕補上 CSRF Token (P0 根本原因)
E2E Health Check / e2e-health (push) Successful in 19s
問題: DualStateIncidentCard 的 Y/n 按鈕呼叫 apiClient.signApproval/rejectApproval
時,沒有帶 X-CSRF-Token header 也沒有 credentials: 'include'
後端返回 403 CSRF token cookie missing
修復:
- api-client.ts: signApproval/rejectApproval 加入 csrfToken 參數
+ X-CSRF-Token header + credentials: 'include'
- dual-state-incident-card.tsx: 加入 useCSRF() hook,
將 csrfToken 傳入 API 呼叫,更新 useCallback deps
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 22:45:27 +08:00 |
|
OG T
|
589f2fc4c7
|
fix(web): openclaw-state-machine 補上 CSRF Token (P0 根本原因)
E2E Health Check / e2e-health (push) Successful in 15s
根本原因: 首頁用的是 openclaw-state-machine.tsx 而非 LiveApprovalPanel
該元件的 handleApprove 完全沒有 CSRF token 和 credentials: include
導致後端回傳 "CSRF token cookie missing" → 按鈕沒有任何反應
修復:
- import useCSRF hook
- handleApprove 加上 X-CSRF-Token header
- fetch 加上 credentials: 'include'
- useCallback deps 加上 csrfToken
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-03-31 21:50:34 +08:00 |
|
OG T
|
172ff04653
|
fix(web): 簽核失敗視覺回饋 (Phase 22 P0)
E2E Health Check / e2e-health (push) Successful in 18s
問題: 簽核失敗時沒有任何提示,用戶不知道發生了什麼
修復:
- 新增 toast.error() 當簽核失敗時
- 新增 Error Overlay (紅色背景 + critical 狀態球)
這與前一個 commit 的 CSRF 修復配合,讓用戶能清楚知道:
1. CSRF 載入中 → 按鈕 disabled
2. CSRF 失敗 → 顯示警告訊息
3. 簽核失敗 → Error Overlay + Toast
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 19:18:25 +08:00 |
|
OG T
|
936f1d64de
|
feat(types): Phase 14.3 共用型別系統 (#97-#100)
建立 Pydantic → TypeScript 自動生成工具鏈:
1. scripts/generate-schemas.py
- 從 Pydantic 模型生成 JSON Schema
- 正確處理 Pydantic 2.x 的 $defs 格式
- 支援 Approval/Incident/Terminal/Playbook/CSRF 模型
2. packages/shared-types/
- @awoooi/shared-types 套件
- 44 個型別定義,40 個介面
- json-schema-to-typescript 自動生成
3. 前端整合
- apps/web 加入 @awoooi/shared-types 依賴
- typecheck 通過
使用方式:
cd packages/shared-types
pnpm generate # 重新生成型別
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 19:10:33 +08:00 |
|
OG T
|
a028b44c84
|
fix(web): Y/n 按鈕 CSRF Token 缺失修復 (Phase 22 P0)
E2E Health Check / e2e-health (push) Successful in 17s
修復問題:
- 按鈕點擊無反應:CSRF token 載入中或失敗時,buttons 現在會被 disabled
- 增加 toast.error() 提示:當 token 缺失時,顯示「安全驗證失敗」提示
變更:
- handleSign: 新增 toast.error() 當 csrfToken 為 null
- confirmReject: 新增 toast.error() 當 csrfToken 為 null
- ApprovalCard isLoading: 擴展為 signing || csrfLoading || csrfError
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 19:09:25 +08:00 |
|
OG T
|
62327b6ca8
|
fix(i18n): 修復 placeholder 頁面硬編碼字串 + 擴展 ESLint ignore
Wave 3 i18n 合規修復:
- authorizations/knowledge-base/settings 頁面改用 t('placeholder.xxx')
- demo 頁面 brand tagline 改用 tBrand('aiTagline')
- 新增 placeholder i18n keys (zh-TW/en)
- ESLint 擴展 ignoreAttribute/ignoreCallee 覆蓋更多技術標籤
剩餘 83 個 warn 為技術組件中的英文標籤 (LIVE/SSE/Multi-Sig)
Phase 1 warn 模式可接受,待 Phase 2 升級 error 前處理
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 18:59:28 +08:00 |
|
OG T
|
83a0845858
|
feat(lint): Wave 3 ESLint i18n Plugin 啟用 (warn 模式)
E2E Health Check / e2e-health (push) Successful in 18s
安裝 eslint-plugin-i18next:
- 檢測 JSX 中硬編碼字串
- markupOnly: true (只檢查 JSX)
- 忽略技術屬性: data-testid, className, href, src
階段一: warn 模式 (當前)
階段二: error 模式 (待統帥批准)
發現 10+ 遺留警告,待修復
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
2026-03-31 18:54:47 +08:00 |
|