llm browser fixes

This commit is contained in:
developer committed 2026-10-19 15:39:46 +00:00
1 parent a4dbb75195
commit f8526bfb4e
8 files changed
+33 -15

No files matched your search

Binary file not shown.
+19 -7
View File
@@ -221,8 +221,11 @@ func (r *mdRenderer) element(b *strings.Builder, n *html.Node) {
case atom.Dl:
r.defList(b, n)
case atom.Button, atom.A, atom.Span, atom.Strong, atom.Em, atom.Code, atom.Small, atom.Label:
// phrasing content at block position: keep it as its own paragraph
if s := strings.TrimSpace(r.inline(n)); s != "" {
// phrasing content at block position (nav links, card wrappers):
// render with full inline semantics so anchors keep their href
var ib strings.Builder
r.inlineNode(&ib, n)
if s := strings.TrimSpace(ib.String()); s != "" {
b.WriteString(s + "\n\n")
}
default:
@@ -230,6 +233,19 @@ func (r *mdRenderer) element(b *strings.Builder, n *html.Node) {
}
}
// inlineNode renders one child node with inline semantics — the single
// dispatch point for list items and block-position phrasing elements, so
// anchors keep their href wherever they appear.
func (r *mdRenderer) inlineNode(b *strings.Builder, n *html.Node) {
if n.Type == html.TextNode {
b.WriteString(collapse(n.Data))
return
}
if n.Type == html.ElementNode {
r.inlineElement(b, n)
}
}
// list renders ul/ol items; nested lists indent under their item.
func (r *mdRenderer) list(b *strings.Builder, n *html.Node, indent string) {
ordered := n.DataAtom == atom.Ol
@@ -258,11 +274,7 @@ func (r *mdRenderer) list(b *strings.Builder, n *html.Node, indent string) {
nested = append(nested, c)
continue
}
if c.Type == html.TextNode {
text.WriteString(collapse(c.Data))
} else {
text.WriteString(r.inline(c))
}
r.inlineNode(&text, c)
}
if item := strings.TrimSpace(text.String()); item != "" {
b.WriteString(indent + marker + item + "\n")
+5
View File
@@ -62,6 +62,11 @@ func TestHTMLToMarkdown(t *testing.T) {
html: `<body><p><img src="/img/logo.png" alt="Logo"> and <img src="/img/x.png"></p></body>`,
want: "![Logo](https://page.test/img/logo.png) and ![x.png](https://page.test/img/x.png)",
},
{
name: "anchors at block position keep their href",
html: `<body><nav><a href="/policy">Policy</a></nav><ul><li><a href="/docs">Docs</a></li></ul></body>`,
want: "[Policy](https://page.test/policy)\n\n- [Docs](https://page.test/docs)",
},
{
name: "consecutive blocks collapse to one blank line",
html: `<body><div><p>a</p></div><div><p>b</p></div></body>`,
@@ -1 +1 @@
@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--root-font-size:112%;--text-3xs:.5625rem;--text-2xs:.625rem;--text-xs:.6875rem;--text-sm:.75rem;--text-md:.875rem;--text-base:1rem;--text-lg:1.3125rem;--text-xl:1.5625rem;--text-2xl:1.75rem;--text-hero:clamp(2.625rem, 5vw, 4.375rem);--font-sans:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:2rem;--space-8:2.5rem;--space-9:3rem;--space-10:4rem;--space-11:5rem;--radius-sm:5px;--radius-md:6px;--radius-lg:9px;--radius-xl:12px;--radius-2xl:14px;--radius-pill:9999px;--focus-ring:2px solid var(--ring);--focus-offset:2px}:root,:root[data-theme=light],.light{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:lab(100% 0 0);--foreground:lab(2.75381% 0 0);--card:lab(97.68% -.0000298023 .0000119209);--card-foreground:lab(2.75381% 0 0);--popover:lab(100% 0 0);--popover-foreground:lab(2.75381% 0 0);--primary:lab(7.78201% -.0000149012 0);--primary-foreground:lab(98.26% 0 0);--secondary:lab(94.2% 0 0);--secondary-foreground:lab(7.78201% -.0000149012 0);--muted:lab(94.2% 0 0);--muted-foreground:lab(39.68% 0 0);--accent:lab(94.2% 0 0);--accent-foreground:lab(7.78201% -.0000149012 0);--destructive:lab(48.4493% 77.4328 61.5452);--destructive-foreground:lab(98.26% 0 0);--border:lab(86.08% -.0000298023 0);--input:lab(86.08% -.0000298023 0);--ring:lab(42% 0 0);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(96.52% -.0000298023 .0000119209);--sidebar-foreground:lab(2.75381% 0 0);--sidebar-primary:lab(7.78201% -.0000149012 0);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(94.2% 0 0);--sidebar-accent-foreground:lab(7.78201% -.0000149012 0);--sidebar-border:lab(86.08% -.0000298023 0);--sidebar-ring:lab(42% 0 0);--dot-color:lab(7.78201% -.0000149012 0/.05)}:root[data-theme=dark],.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:lab(0% 0 0);--foreground:lab(94.78% 0 0);--card:lab(.903296% 0 0);--card-foreground:lab(94.78% 0 0);--popover:lab(.903296% 0 0);--popover-foreground:lab(94.78% 0 0);--primary:lab(89.9321% -47.9163 -15.7303);--primary-foreground:lab(0% 0 0);--secondary:lab(2.47865% 0 0);--secondary-foreground:lab(94.78% 0 0);--muted:lab(2.47865% 0 0);--muted-foreground:lab(60.56% 0 0);--accent:lab(1.98454% 0 0);--accent-foreground:lab(89.9321% -47.9163 -15.7303);--destructive:lab(54.5811% 71.684 50.9279);--destructive-foreground:lab(100% 0 0);--border:lab(4.8411% 0 0);--input:lab(1.98454% 0 0);--ring:lab(89.9321% -47.9163 -15.7303);--chart-1:lab(89.9321% -47.9163 -15.7303);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4328 31.4532);--sidebar:lab(.498049% 0 0);--sidebar-foreground:lab(94.78% 0 0);--sidebar-primary:lab(89.9321% -47.9163 -15.7303);--sidebar-primary-foreground:lab(0% 0 0);--sidebar-accent:lab(1.98454% 0 0);--sidebar-accent-foreground:lab(89.9321% -47.9163 -15.7303);--sidebar-border:lab(4.8411% 0 0);--sidebar-ring:lab(89.9321% -47.9163 -15.7303);--dot-color:lab(89.9321% -47.9163 -15.7303/.045)}html{font-size:var(--root-font-size)}.dot-canvas{background-image:radial-gradient(var(--dot-color) 1px, transparent 1px);background-size:24px 24px}.dot-canvas-dense{background-image:radial-gradient(var(--dot-color) 1px, transparent 1px);background-size:16px 16px}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.stack-xs{gap:var(--space-1);flex-direction:column;display:flex}.stack-sm{gap:var(--space-2);flex-direction:column;display:flex}.stack-md{gap:var(--space-4);flex-direction:column;display:flex}.stack-lg{gap:var(--space-6);flex-direction:column;display:flex}.row-xs{align-items:center;gap:var(--space-1);display:flex}.row-sm{align-items:center;gap:var(--space-2);display:flex}.row-md{align-items:center;gap:var(--space-4);display:flex}.grid-2{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid-3{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.grid-4{gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (width<=760px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.surface-card{background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:0 4px 20px #0000001f}.surface-sidebar{background:var(--sidebar);color:vaLine truncated
@import "https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap";:root{--root-font-size:112%;--text-3xs:.5625rem;--text-2xs:.625rem;--text-xs:.6875rem;--text-sm:.75rem;--text-md:.875rem;--text-base:1rem;--text-lg:1.3125rem;--text-xl:1.5625rem;--text-2xl:1.75rem;--text-hero:clamp(2.625rem, 5vw, 4.375rem);--font-sans:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"DM Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-7:2rem;--space-8:2.5rem;--space-9:3rem;--space-10:4rem;--space-11:5rem;--radius-sm:5px;--radius-md:6px;--radius-lg:9px;--radius-xl:12px;--radius-2xl:14px;--radius-pill:9999px;--focus-ring:2px solid var(--ring);--focus-offset:2px}:root,:root[data-theme=light],.light{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--background:lab(100% 0 0);--foreground:lab(2.75381% 0 0);--card:lab(97.68% -.0000298023 .0000119209);--card-foreground:lab(2.75381% 0 0);--popover:lab(100% 0 0);--popover-foreground:lab(2.75381% 0 0);--primary:lab(7.78201% -.0000149012 0);--primary-foreground:lab(98.26% 0 0);--secondary:lab(94.2% 0 0);--secondary-foreground:lab(7.78201% -.0000149012 0);--muted:lab(94.2% 0 0);--muted-foreground:lab(39.68% 0 0);--accent:lab(94.2% 0 0);--accent-foreground:lab(7.78201% -.0000149012 0);--destructive:lab(48.4493% 77.4328 61.5452);--destructive-foreground:lab(98.26% 0 0);--border:lab(86.08% -.0000298023 0);--input:lab(86.08% -.0000298023 0);--ring:lab(42% 0 0);--chart-1:lab(57.1026% 64.2584 89.8886);--chart-2:lab(55.0223% -41.0774 -3.90277);--chart-3:lab(30.372% -13.1853 -18.7887);--chart-4:lab(80.1641% 16.6016 99.2089);--chart-5:lab(72.7183% 31.8672 97.9407);--sidebar:lab(96.52% -.0000298023 .0000119209);--sidebar-foreground:lab(2.75381% 0 0);--sidebar-primary:lab(7.78201% -.0000149012 0);--sidebar-primary-foreground:lab(98.26% 0 0);--sidebar-accent:lab(94.2% 0 0);--sidebar-accent-foreground:lab(7.78201% -.0000149012 0);--sidebar-border:lab(86.08% -.0000298023 0);--sidebar-ring:lab(42% 0 0);--dot-color:lab(7.78201% -.0000149012 0/.05)}:root[data-theme=dark],.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--background:lab(0% 0 0);--foreground:lab(94.78% 0 0);--card:lab(.903296% 0 0);--card-foreground:lab(94.78% 0 0);--popover:lab(.903296% 0 0);--popover-foreground:lab(94.78% 0 0);--primary:lab(89.9321% -47.9163 -15.7303);--primary-foreground:lab(0% 0 0);--secondary:lab(2.47865% 0 0);--secondary-foreground:lab(94.78% 0 0);--muted:lab(2.47865% 0 0);--muted-foreground:lab(60.56% 0 0);--accent:lab(1.98454% 0 0);--accent-foreground:lab(89.9321% -47.9163 -15.7303);--destructive:lab(54.5811% 71.684 50.9279);--destructive-foreground:lab(100% 0 0);--border:lab(4.8411% 0 0);--input:lab(1.98454% 0 0);--ring:lab(89.9321% -47.9163 -15.7303);--chart-1:lab(89.9321% -47.9163 -15.7303);--chart-2:lab(66.9756% -58.27 19.5419);--chart-3:lab(72.7183% 31.8672 97.9407);--chart-4:lab(52.0183% 66.11 -78.2316);--chart-5:lab(56.101% 79.4328 31.4532);--sidebar:lab(.498049% 0 0);--sidebar-foreground:lab(94.78% 0 0);--sidebar-primary:lab(89.9321% -47.9163 -15.7303);--sidebar-primary-foreground:lab(0% 0 0);--sidebar-accent:lab(1.98454% 0 0);--sidebar-accent-foreground:lab(89.9321% -47.9163 -15.7303);--sidebar-border:lab(4.8411% 0 0);--sidebar-ring:lab(89.9321% -47.9163 -15.7303);--dot-color:lab(89.9321% -47.9163 -15.7303/.045)}html{font-size:var(--root-font-size)}.dot-canvas{background-image:radial-gradient(var(--dot-color) 1px, transparent 1px);background-size:24px 24px}.dot-canvas-dense{background-image:radial-gradient(var(--dot-color) 1px, transparent 1px);background-size:16px 16px}.flex-center{justify-content:center;align-items:center;display:flex}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.stack-xs{gap:var(--space-1);flex-direction:column;display:flex}.stack-sm{gap:var(--space-2);flex-direction:column;display:flex}.stack-md{gap:var(--space-4);flex-direction:column;display:flex}.stack-lg{gap:var(--space-6);flex-direction:column;display:flex}.row-xs{align-items:center;gap:var(--space-1);display:flex}.row-sm{align-items:center;gap:var(--space-2);display:flex}.row-md{align-items:center;gap:var(--space-4);display:flex}.grid-2{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grid-3{gap:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.grid-4{gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}@media (width<=760px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.surface-card{background:var(--card);color:var(--card-foreground);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:0 4px 20px #0000001f}.surface-sidebar{background:var(--sidebar);color:vaLine truncated
File renamed without changes.
+2 -2
View File
@@ -27,8 +27,8 @@
}
})()
</script>
<script type="module" crossorigin src="/assets/index-C60Osx-j.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-B4mWbae6.css">
<script type="module" crossorigin src="/assets/index-tokK9jOz.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BKUAkuNl.css">
</head>
<body>
<div id="root"></div>
@@ -1 +1 @@
{"version":"5.0.0","results":[[":tests/auth.test.tsx",{"duration":536.224841,"failed":false}],[":tests/api.test.ts",{"duration":17.88092000000006,"failed":false}],[":tests/overlay.test.tsx",{"duration":694.3132250000001,"failed":false}],[":tests/check-tokens.test.mjs",{"duration":734.5557109999997,"failed":false}],[":tests/routing.test.tsx",{"duration":2000.0288979999996,"failed":false}],[":tests/appState.test.tsx",{"duration":367.28223000000025,"failed":false}],[":tests/icon-registry.test.tsx",{"duration":80.47717699999998,"failed":false}],[":tests/useTimeout.test.tsx",{"duration":56.3337939999999,"failed":false}],[":tests/useItems.test.tsx",{"duration":398.72940700000004,"failed":false}],[":tests/itemsPage.test.tsx",{"duration":708.2502969999998,"failed":false}],[":tests/agentViewPage.test.tsx",{"duration":1352.459346,"failed":false}],[":tests/markdown.test.ts",{"duration":18.204109000000017,"failed":false}],[":tests/dbg.test.tsx",{"duration":625.5198799999998,"failed":false}]]}
{"version":"5.0.0","results":[[":tests/auth.test.tsx",{"duration":496.2796740000001,"failed":false}],[":tests/api.test.ts",{"duration":20.032437000000073,"failed":false}],[":tests/overlay.test.tsx",{"duration":664.1624070000003,"failed":false}],[":tests/check-tokens.test.mjs",{"duration":755.3123950000002,"failed":false}],[":tests/routing.test.tsx",{"duration":2177.9021880000005,"failed":false}],[":tests/appState.test.tsx",{"duration":375.36047099999996,"failed":false}],[":tests/icon-registry.test.tsx",{"duration":79.88136299999996,"failed":false}],[":tests/useTimeout.test.tsx",{"duration":50.679571000000124,"failed":false}],[":tests/useItems.test.tsx",{"duration":391.9487849999998,"failed":false}],[":tests/itemsPage.test.tsx",{"duration":716.2058189999998,"failed":false}],[":tests/agentViewPage.test.tsx",{"duration":1297.835419,"failed":false}],[":tests/markdown.test.ts",{"duration":18.511739999999918,"failed":false}],[":tests/dbg.test.tsx",{"duration":625.5198799999998,"failed":false}]]}
+5 -4
View File
@@ -2302,14 +2302,15 @@ footer {
}
.agent-doc .markdown-body a {
color: var(--accent);
color: var(--primary);
font-weight: 500;
text-decoration: underline;
text-decoration-color: color-mix(in srgb, var(--accent) 45%, transparent);
text-decoration-color: color-mix(in srgb, var(--primary) 40%, transparent);
text-underline-offset: 2px;
}
.agent-doc .markdown-body a:hover {
text-decoration-color: var(--accent);
text-decoration-color: var(--primary);
}
.agent-doc .markdown-body ul,
@@ -2448,7 +2449,7 @@ footer {
}
.agent-llms-section a {
color: var(--accent);
color: var(--primary);
text-decoration: underline;
text-underline-offset: 2px;
}