Skip to content

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

@karthikscale3@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(docs): right-align sidebar folder carets consistently by karthikscale3 · Pull Request #2377 · vercel/workflow · GitHub
Skip to content

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

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

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

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

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

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

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

@karthikscale3@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(docs): right-align sidebar folder carets consistently by karthikscale3 · Pull Request #2377 · vercel/workflow · GitHub
Skip to content

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

@karthikscale3@VaguelySerious
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(docs): right-align sidebar folder carets consistently by karthikscale3 · Pull Request #2377 · vercel/workflow · GitHub
Skip to content

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

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

fix(docs): right-align sidebar folder carets consistently - #2377

Merged
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment
Jun 12, 2026
Merged

fix(docs): right-align sidebar folder carets consistently#2377
karthikscale3 merged 1 commit into
mainfrom
fix/docs-sidebar-caret-alignment

Conversation

@karthikscale3

@karthikscale3karthikscale3 commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Problem

In the docs sidebar, some folder carets sat directly next to the folder name while others were right-aligned:

FolderCaret position
Getting Started, Foundations, Observability, Deploying, Errors, Migration Guides, API Referenceright edge
How it works, AI Agents, Testinginline, next to the text

Cause

Both fumadocs chevrons use ms-auto, but the two folder variants render different elements:

  • Folders with an index link use SidebarFolderLink, which renders an <a>. With display: flex it becomes a block-level box spanning the full sidebar width, so ms-auto pushes the chevron to the right edge.
  • Folders without an index link (how-it-works has no index.mdx; ai and testing list "index" as a regular child page in their meta.json) use SidebarFolderTrigger, which renders a <button>. Buttons shrink-to-fit their content regardless of display: flex, so the chevron stays glued to the text.

Neither className in docs/components/geistdocs/sidebar.tsx set a width.

Fix

Add w-full to both SidebarFolderLink and SidebarFolderTrigger classNames so every folder row spans the sidebar and all carets right-align consistently.

🤖 Generated with Claude Code

SidebarFolderTrigger renders a <button>, which shrink-to-fits its
content, so the ms-auto chevron sat directly next to the folder name
for folders without an index link (e.g. How it works, AI Agents,
Testing). SidebarFolderLink renders an <a> that spans the full sidebar
width, so its chevron was pushed to the right edge. Add w-full to both
so every folder caret is right-aligned.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@karthikscale3
karthikscale3 requested a review from a team as a code ownerJune 12, 2026 04:46
@changeset-bot

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: bfaeeb2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel

vercelBot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

@karthikscale3
karthikscale3 merged commit 3cf0e33 into mainJun 12, 2026
58 checks passed
@karthikscale3
karthikscale3 deleted the fix/docs-sidebar-caret-alignment branch June 12, 2026 14:16
@github-actions

Copy link
Copy Markdown
Contributor

No backport to stable for 3cf0e33 (AI decision).

The change only touches docs/components/geistdocs/sidebar.tsx, which is part of the docs app outside docs/content/ — a path explicitly not maintained on stable (docs are deployed only from main). Backporting this UI fix would have no effect.

To override, re-run the Backport to stable workflow manually via workflow_dispatch and paste this commit SHA into the ref input:

3cf0e335621d9c76ee4133559649d213bfef29be

pranaygp added a commit that referenced this pull request Jun 12, 2026
…ry-2
* origin/main:
Version Packages (beta) (#2364)
Animate in-progress segments in the timeline (#2383)
Render queued span time as a lead-in connector on the trace timeline. (#2381)
fix(docs): right-align sidebar folder carets consistently (#2377)
[core] Add wire-level framing for byte streams (#1853)
docs: move World SDK and getWorld under workflow/runtime, split out workflow/observability (#2375)
Replace hook.hasConflict with hook.getConflict() returning the conflicting Run (#2373)
ci: use claude-fable-5 for backport AI model (#2370)
Add `hook.hasConflict` for early hook conflict detection (#2015)
[core] V2: unify wait+step queue dispatch in suspension processing (#1925)
fix(world-local,world-postgres): make duplicate hook_created idempotent (#2295)
docs(observability): remove MVP implementation detail bullet (#2367)
fix: settle aborted parallel steps before completing abortParallelWorkflow (#2244)
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.

2 participants

@karthikscale3@VaguelySerious