fix(desktop): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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): 模型连接 rows speak the same row language as the catalog below - #675

Merged
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows
Jul 9, 2026
Merged

fix(desktop): 模型连接 rows speak the same row language as the catalog below#675
jackwener merged 1 commit into
mainfrom
fix/models-connection-rows

Conversation

@jackwener

Copy link
Copy Markdown
Member

Maintainer report: the connection sub-rows under 模型连接 clash with the well-formed 模型供应商 rows below — same page, two row implementations.

Root cause: the expanded provider panel painted its own full-bleed 2% wash + hairline from x=0, an edge-to-edge band running under the logo column. No other list surface in the app does this — sidebar rows, session rows, catalog rows all carry state on rounded, inset row fills.

Fix: panel chrome removed; hover/selected state now lives on the rounded row fills (radius from #666), inset mx-2 with pl-10 so the text column stays at the same 48px absolute position under the provider name. All spacing on the 4px ruler — the spacing-converge contract correctly rejected the first pl-[42px] attempt, which is the governance system working as designed.

On the maintainer's broader point (shared solutions, per-site implementations): the audit keeps converging these one recipe at a time with contracts pinning each convergence; the standing NEXT item to extract shared PageShell/row primitives is recorded in the audit plan. CDP capture verified; desktop 2291/2291 exit-code gated.

The expanded provider panel painted a full-bleed 2% wash + top border
from x=0 — an edge-to-edge band running under the logo column that read
as a different component from the 模型供应商 rows below (maintainer:
'共用的解决方案却每处单独实现'). The panel is transparent now; hover /
selected state lives on the rounded row fills, inset from the edges
(mx-2 + pl-10 keeps text at the same 48px absolute column), exactly the
sidebar/session-row recipe. Spacing stays on the 4px ruler per the
spacing-converge contract (which correctly rejected my first pl-[42px]
attempt). Desktop 2291/2291.
@jackwener
jackwener merged commit 24cd26a into mainJul 9, 2026
3 checks passed
@jackwener
jackwener deleted the fix/models-connection-rows branch July 9, 2026 13:01
jackwener added a commit that referenced this pull request Jul 9, 2026
…rgence round 2) (#686)
* refactor(ui): adopt the Item primitive for state-fill list rows (round 2)
Extend primitives/item.tsx with a `selected` prop (data-selected →
--state-selected-bg, the governed 6.5% foreground-alpha token) and an
`interactive` gate so inert geometry-only rows can borrow Item's
media/content/actions layout without a hover fill. Item already speaks
hover 4% / pressed 8% via Base UI useRender + render-prop composition.
Migrations:
- models 连接行 (enabledConnRow): data-default → Item `selected`; retire the
bespoke [data-default] fill rule in models.css. #675 mx-2/pl-10/pr-6
geometry preserved.
- daily-review archive rows: UiButton variant=quiet → Item render=<button>
with `selected` for the active archive; ItemContent stacks title over the
tabular-nums meta line. daily-review.css keeps only geometry + the
selected-border accent.
- providerCatalogRow: already on Item (round 1 groundwork) — no change
needed; its remaining CSS is pinned list-separator/logo-plate geometry.
Deferred/skipped (disproportionate contract risk, no state-fill to
converge — noted for a later round):
- enabledProviderTrigger: a Base UI AccordionTrigger header, not a list row;
its hover already uses --state-hover-bg.
- settingsOsPermissionRow: static grid row w/ status ::before stripe, pinned
by permissions-unified-card (grid/divider/div-actions) — Item's flex model
conflicts, zero interactive fill to fold.
- daily-review session rows: composite (hover on the <li> container +
non-interactive preview sibling outside the button) — not a single
state-fill row.
- maka-skill-library-row: bespoke 3-col grid + 38px icon tile, hover on the
parent <li>, pinned by skills.test.ts; interactive={false} support added
so a future round can adopt without behavior change.
- sidebar .maka-list-row/.maka-nav-row: untouched by design (densest pins).
Verify: desktop 2291/2291, ui 46/46, check-dead-css clean,
audit-alignment clean (no new findings on any fixture).
* docs: mark convergence map round 2 (Item rows) shipped with deferrals
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