feat(icons+mcp): ban hand-drawn inline SVG repo-wide, polish the MCP page onto the house language - #1205
Merged
Merged
Conversation
Seeds the 扩展 → MCP module surface (sidebarSection 'mcp') with an mcp.json holding two disabled servers, so the market grid, tab row, hero banner and installed server list all render deterministically for the alignment auditor and CDP capture. enabled:false keeps visual-smoke from attempting real npx / HTTP connections, so rows settle in the neutral 已停用 state.
Converge the MCP module page onto the same bar as the 技能 page and the 每日回顾 redesign, presentation-only (same IPC/props/callbacks): - Hero header now rides the shared PageHeader primitive (as=h2, title/subtitle + edged actions cluster; 添加 MCP is the primary CTA). - Market/installed tabs move onto the shared underline TabsList/TabsTrigger primitive with count pills, matching the skills tab-row rhythm; the search field pins to the tab row's right edge. - Empty + no-results states use the shared EmptyState primitive. - Installed server status is exception-only (#651): a healthy/expected server shows no status color — its label rides plain muted text and a neutral dot; only a real 连接失败 raises a destructive Chip + colored dot. - The 把 Maka 连接到你的工作环境 banner's pictogram cluster becomes labeled library-icon tiles (Terminal/Plug/Globe), and the per-template market marks drop their hand-drawn brand SVGs for the catalog text mark on the existing brand-tinted tile (de-inlines all 6 inline <svg> in this file — Task A).
…the funnel Hand-drawn inline SVG is an anti-pattern — generic UI glyphs must ride the @maka/ui/icons lucide funnel so they share one stroke, sizing seam and family. - menu.tsx: the checkbox + radio ItemIndicator glyphs drop their inline check <svg> for <Check> from ../icons.js (same precedent as model-picker's ItemIndicator), keeping the lucide funnel intact. - icon-governance-contract: a new pin machine-walks packages/ui/src and apps/desktop/src/renderer (the same tree-walk the repo-wide OverlayScrollbars ban uses) and fails on any <svg> literal in a .tsx outside an audited brand-mark allowlist (bot-brand-logo.tsx, provider-brand-marks.tsx). The allowlist is guarded against rot; new offenders fail with a message pointing at @maka/ui/icons. icons.tsx needs no exemption — it is a pure lucide re-export with zero <svg> literals.
The MCP module page now has a visual-smoke fixture; add it to the audit-alignment FIXTURES so the row-alignment governance tool sweeps the polished header, tab row, market grid and installed list too.
This was referenced Jul 18, 2026
jackwener
added a commit
that referenced
this pull request
Jul 18, 2026
#1205 replaced the MCP market's official brand marks with generic text marks (S / LINE / 31 / F / ▲ / S) — wrong direction. Famous brands must show their real logos. This restores the six official marks using the same architecture provider-brand-marks.tsx already established: vendored .svg assets imported as URLs, rendered via <img> (color) or a currentColor mask (monochrome), never inline hand-drawn <svg> in the component TSX. - Recover Slack / LINE / Google Calendar / Figma / Vercel / Supabase SVGs byte-faithfully from the pre-#1205 inline markup (commit e48be52) into apps/desktop/src/renderer/assets/mcp-brands/*.svg. - Add McpBrandMark + hasMcpBrandMark (mcp-brand-marks.tsx). Color marks ride <img>; monochrome ▲/LINE ride a mask so they inherit the plate foreground in light + dark. Brands without a faithful asset (钉钉/飞书/ Notion/macOS/…) keep the catalog text mark — no hand-drawn approximations. - Wire McpCatalogCard (market + installed tiles) to McpBrandMark; branded tiles drop the per-brand tint for a quiet neutral plate, matching how .providerLogo treats color marks. Drop the now-unused brand tint tokens. Governance: the component imports .svg assets (not .tsx <svg> literals), so it needs no icon-governance inline-SVG allowlist entry. Tile polish from #1205 is preserved; only the logo removal is reverted.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two user directives in one campaign: 手绘 SVG 是反模式 (replace + govern) and MCP 页面不够美观 (polish).
Inline-SVG sweep + governance
Scope finding: the 6 inline SVGs in mcp-page.tsx were BRAND LOGOS (Slack/LINE/Google-Calendar/Figma/Vercel/Supabase), not UI glyphs — the banner pictograms were already lucide. Convergence: all market tiles now use the catalog's majority treatment (text marks on brand-tinted tiles — 钉/飞/N/⌘ were already this; the 6 special-cased logos were the inconsistency). menu.tsx's two hand-drawn indicator glyphs → Check from the icons funnel (model-picker precedent).
Governance: icon-governance-contract gains a machine tree-walk ban — any
<svgliteral in .tsx under packages/ui/src or apps/desktop/src/renderer outside the audited brand-mark allowlist (bot-brand-logo.tsx, provider-brand-marks.tsx) fails the suite with a pointer to @maka/ui/icons. Allowlist is rot-guarded (losing the SVG fails too). Hand-drawn SVG can no longer re-enter.MCP page polish
Zero behavior change (mcp-market contract pins verified verbatim). Plus: module-mcp visual-smoke fixture added and wired into the alignment auditor — the page is now under permanent visual governance.
Gates (merged tree = main tip already contained)
desktop 2699/2699 · ui 183/183 · typecheck · check-dead-css · knip ×2 = 0 · auditor all fixtures clean incl. module-mcp. CDP light+dark captures visually accepted by maintainer before merge. Implemented by an opus worktree agent.