docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale
, '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

docs(nav): strip invisible U+200E marks from version labels (preview experiment) - #457

Closed
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks
Closed

docs(nav): strip invisible U+200E marks from version labels (preview experiment)#457
ketanyekale wants to merge 1 commit into
mainfrom
docs/strip-version-label-invisible-marks

Conversation

@ketanyekale

Copy link
Copy Markdown
Member

What

Removes all 392 invisible U+200E (Left-to-Right Mark) characters from the 49 "version" labels in docs.json navigation. Only .version fields change — no paths, dropdown names, or content are touched (verified by audit: every U+200E in the file was on a "version" line).

The marks were a historical workaround to keep same-named version labels (v5, v4, …) in different dropdowns from colliding, from before Mintlify officially supported versions nested inside dropdowns.

Why (experiment — do not merge before preview checks)

This is a controlled experiment for the version-selector "Error 500 / Error loading page" crash seen on production and staging. There are two competing diagnoses:

  1. Polluted labels: the U+200E-suffixed labels break the version switcher's routing.
  2. Platform bug: a client-side React crash (NotFoundError: Failed to execute 'insertBefore' on 'Node') in Mintlify's hosted bundle when the dropdown opens — reproduced on the React dropdown whose labels contain no marks, intermittently (clicks shortly after page load), with the URL unchanged.

The local CLI does not run the production renderer, so only the Mintlify preview deploy of this branch can settle it.

Verification on the preview deploy

  1. Open /ui-kit/react/overview on the preview, and immediately real-click the version selector (v7 chip in the sidebar). Repeat a few times with hard reloads. Does the Error 500 still occur?
  2. Open each framework dropdown's version menu (React, React Native, iOS, Android, Flutter, Angular, Vue + SDK tabs) and confirm same-named versions did not merge across dropdowns and each version routes to the correct per-framework page.
  3. Spot-check destination pages still return 200: /ui-kit/react/v6/overview, /sdk/android/v5/overview, etc.

If the crash persists with clean labels, diagnosis 2 is confirmed and this becomes evidence for the Mintlify support ticket (deployed chunk f486afc314643ce1.js, deployment dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx). If versions merge across dropdowns in the preview, close this PR unmerged.

🤖 Generated with Claude Code

All 49 version labels in dropdown navigation carried invisible
Left-to-Right Mark (U+200E) characters (392 total) as a historical
workaround to keep same-named versions (v5, v4, ...) in different
dropdowns from colliding. This strips them so every label is a clean
v2-v7 string and relies on Mintlify scoping each version tree to its
parent dropdown.
Experiment for the version-selector 'Error 500' crash: verify on the
Mintlify preview deploy (production renderer) whether the crash and
cross-dropdown version merging behave with clean labels.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mintlify

mintlifyBot commented Aug 7, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

ProjectStatusPreviewUpdated (UTC)
cometchat🟢 ReadyView PreviewAug 7, 2026, 4:26 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@ketanyekale

Copy link
Copy Markdown
MemberAuthor

Preview experiment results — do not merge; closing

Tested on the preview deploy (link), which runs the production renderer.

1. The Error 500 crash is NOT caused by the invisible characters ❌

With all 392 U+200E marks stripped, the crash still reproduces: first real click on the version selector on /ui-kit/react/overview → same "Error 500 / Error loading page", same console error:

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before
which the new node is to be inserted is not a child of this node.
(preview deployment dpl_4sj1y6YapSzDrgGCFZSWj32ncNRX, same signature as
production dpl_FrDoQHZJuUUsA7qTxqB1HKX9E3Xx)

It is a client-side crash in Mintlify's bundle when the dropdown opens (timing-dependent — clicks shortly after page load; scripted element.click() never triggers it). This goes to Mintlify support; no docs.json change can fix it.

2. The invisible marks are still load-bearing ⚠️

All 17 dropdown menus render the correct per-dropdown version lists (counts all correct, no visual merging). But selecting a version routes by label globally, landing in the wrong dropdown's tree:

Action on previewExpectedActual
UI Kits → iOS → select v4/ui-kit/ios/v4/overview/ui-kit/vue/overview (Vue's v4)
UI Kits → Android → select v5/ui-kit/android/v5/overview/ui-kit/react-native/overview (RN's v5)

Mintlify still does not scope version-switch resolution to the parent dropdown, so same-named clean labels collide exactly as the original workaround anticipated. Stripping the marks would break version switching for every framework.

Conclusion: closing unmerged per the plan in the PR description. The U+200E workaround must stay until Mintlify either fixes dropdown-scoped version resolution or the selector crash (ideally both — reporting both in the same support ticket).

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@ketanyekale