fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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

fix(desktop): purge engineering-speak from user-facing copy (detail round 5) - #648

Merged
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5
Jul 8, 2026
Merged

fix(desktop): purge engineering-speak from user-facing copy (detail round 5)#648
jackwener merged 1 commit into
mainfrom
fix/ui-detail-round5

Conversation

@jackwener

Copy link
Copy Markdown
Member

Detail-audit round 5, continuing the systematic copy/affordance sweep — this round targets engineering-speak leaking into user-facing copy, found while reviewing the post-#636 streaming UI.

Findings & fixes

1. Lineage badges exposed raw internal turn IDs

deriveTurnLineageBadges rendered 重新生成自 turn ${shortId(id)} — a 6-char slice of the internal turn ID. Users can't correlate these IDs with anything on screen (they appear nowhere else), and the hard slice(0, 6) truncates mid-word with no ellipsis (fixture showed "turn regen-"). The pill is a jump button; its label should state the action, not an internal pointer:

  • forward: 重新生成自旧回答 (tooltip: 点击查看被保留的旧回答)
  • reverse: 已重新生成 → 新回答 (tooltip: 点击跳转到重新生成的新回答)

Dead shortId() removed. Contract tests only pin the 重新生成自/已重新生成 vocabulary prefixes (#546 retry→regenerate merge) — unchanged.

2. 默认模型 helper text described implementation, not the setting

"新对话默认使用的具体模型;按连接分组,不显示 OAuth 账号邮箱。" — the second clause narrates picker internals (grouping + privacy of the dropdown). Now: "新对话默认使用的模型。"

3. 关于 page workspace path missed the mono treatment

The 数据 page renders paths left-aligned mono caption (SettingRow mono); the 关于 page's 工作区 row rendered the same path right-aligned proportional, wrapping into a ragged multi-line block. Added mono.

Verification

  • Desktop suite 2250/2250 green
  • CDP re-capture of turn-control-history fixture confirms clean pill labels (screenshot-verified)
  • check-dead-css clean

…ound 5)
- Lineage badges no longer expose raw internal turn IDs ("重新生成自
turn regen-" truncated mid-slug). Labels now state the action:
"重新生成自旧回答" / "已重新生成 → 新回答"; tooltips explain the
click target. Dead shortId() helper removed.
- 默认模型 helper text dropped the implementation clause ("按连接分组,
不显示 OAuth 账号邮箱") — describes grouping internals, not the setting.
- 关于 page workspace path row gained the mono treatment the 数据 page
already uses (left-aligned mono caption instead of right-aligned
ragged proportional wrap).
@jackwener
jackwener merged commit 23aecd8 into mainJul 8, 2026
3 checks passed
@jackwener
jackwener deleted the fix/ui-detail-round5 branch July 8, 2026 17:20
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