restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows - #715

Closed
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle
Closed

restyle(ui): Mobbin design language — capsule controls, mono ink CTA, soft float shadows#715
jackwener wants to merge 1 commit into
mainfrom
feat/mobbin-restyle

Conversation

@jackwener

Copy link
Copy Markdown
Member

目标

对整个 app 做 Mobbin 风格的视觉重构:UX、流程、DOM 结构一律不动,只改视觉

设计提取文档:notes/mobbin-design-language.md — 用 Chrome 对 mobbin.com 实测 getComputedStyle 得出(字体族/类型标尺/洗色/圆角/阴影/动效均为测量值,非目测)。

Mobbin 语言 → maka 落地

维度Mobbin 实测maka 落地
控件形状一切单行控件 = 药丸 (r999)--radius-control 6→999px(capsule)
容器圆角卡片 16-24surface 8→12,modal 12→20
阴影0 1px 2px @4% chip / 0 8px 40px @4% 浮卡3-5 层堆叠收敛为两档配方
主操作纯墨药丸 #141414,无品牌色按钮--action/--control = 墨/纸对;dark 自动反相为浅色药丸
强调靠形状与对比,不靠色相--nav-active/--toast-accent 并入单色墨族;--accent 只留链接/focus ring/运行态
状态色只给真状态info/success/destructive 未动(延续 #651 restraint)
Composer搜索胶囊浮起composer 增加 0 8px 40px 浮起

Capsule 副作用清理

对全部 60+ 个 --radius-control 调用点做了逐一分类审计:

  • 多行卡片/代码块/textarea/提示条 → surface (12px)
  • 小图标 tile → calc(var(--radius-surface)-6px);复选框 → calc(-8px) 保持方形
  • textarea 从共享 input 选择器中拆出单独覆盖
  • 徽章 chips 保持 capsule(Mobbin 的 New/Updated 就是药丸;"never pills" 旧规范随重构退役)

契约同步

  • radius-converge-contract:pin 999/12/20/999,.enabledEmptyChip 重新归 tier
  • design-system-governance-406-contract:mono ink CTA 对 + load-tool 卡 → surface
  • settings-form-a11y-contract:措辞更新(capsule 语言)
  • docs/design-system.md §1.4 圆角表 + CTA 理由重写

验证

  • ✅ 2297 desktop tests 全绿;dead-css 0
  • ✅ visual smoke 逐面扫过:chat / streaming / skills / settings(外观·模型·记忆) / onboarding / permission dialog / daily review,light + dark
  • WCAG:墨/纸对 ≥15:1,同时覆盖 4.5:1 文本线与 1.4.11 非文本 3:1 线

🤖 Generated with Claude Code

… soft float shadows
Full visual restyle to the Mobbin language (UX/flows/DOM untouched).
Extraction doc: notes/mobbin-design-language.md — measured via computed
styles on mobbin.com (fonts, type scale, washes, radii, shadows, motion).
Token layer (maka-tokens.css):
- radius: control 6→999px capsule / surface 8→12 / modal 12→20;
tier structure + SELECTOR_TIER map unchanged, values only
- shadows: 3-5 layer stacks → Mobbin two-recipe (ring + 0 1px 2px @4%
chip; ring + 0 8px 40px @4% float; modal adds one deep layer)
- mono CTA: --action/--control/--brand-deep/--nav-active/--toast-accent
ride the foreground/background ink pair (dark inverts to light pill —
Mobbin dark convention); --accent stays for link/focus-ring/running;
status colors untouched (#651 restraint rule)
- composer gets the float shadow (Mobbin search-capsule feel)
Capsule fallout re-tier (audited every radius-control call site):
multi-line cards/code/textarea/note strips → surface; icon tiles →
calc(surface-6px); checkboxes → calc(surface-8px) so they stay square;
textareas split from shared input selectors; badge chips stay capsule
(Mobbin New/Updated chips are pills — "never pills" doctrine retired).
Contracts updated with the redesign: radius-converge (999/12/20/999),
406 governance (mono ink CTA pair + load-tool → surface),
settings-form-a11y wording; docs/design-system.md §1.4 + CTA rationale.
Verification: 2297 desktop tests pass, dead-css 0, visual smoke swept
across chat/skills/settings/onboarding/permission/daily-review in
light + dark.
@Astro-Han
Astro-Han deleted the feat/mobbin-restyle branch July 14, 2026 05:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@jackwener