From f79876f392898188d0a09eba2fc82130353e0f41 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Thu, 30 Jul 2026 12:32:13 -0400 Subject: [PATCH 01/10] Open only external docs links in a new tab The Markdown renderer put target="_blank" on every link in docs and reference content, so following an internal cross-link like the Mongo Shell Quick Start from the Docker guide spawned a new tab on every hop. The quick starts are chains of internal links, which made normal docs reading accumulate tabs. Only links with an http(s) scheme now open in a new tab with rel="noopener noreferrer"; site-internal paths and in-page anchors navigate in place. --- app/components/Markdown.tsx | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/app/components/Markdown.tsx b/app/components/Markdown.tsx index b547ad7..84d1c72 100644 --- a/app/components/Markdown.tsx +++ b/app/components/Markdown.tsx @@ -244,18 +244,21 @@ function getMarkdownComponents() { ); }, - // Links - a: ({ children, href, ...props }: any) => ( - - {children} - - ), + // Links: only external links open in a new tab; internal links (/docs/..., + // /samples, #anchors) navigate in place + a: ({ children, href, ...props }: any) => { + const isExternal = /^https?:\/\//i.test(href ?? ''); + return ( + + {children} + + ); + }, // Strong text strong: ({ children, ...props }: any) => ( From 74efa7f8344eb00759e36387577511e4e0184f87 Mon Sep 17 00:00:00 2001 From: Guanzhou Song Date: Thu, 30 Jul 2026 12:32:35 -0400 Subject: [PATCH 02/10] Remove unused images from public/images GoogleCloudLogo.png, GoogleCloudAltLogo.png, NeonLogo.png, OracleLogo.png, and 'DocumentDB - Logo next to text.png' (203 KB) are referenced nowhere - not in this repository, and not in any repository in the documentdb organization (checked GitHub code search for both the plain and the %20-encoded filename forms). They ship in every deploy as dead weight, and stray Google Cloud / Oracle / Neon logos in the images directory invite the wrong conclusions about project affiliations. --- .../images/DocumentDB - Logo next to text.png | Bin 3141 -> 0 bytes public/images/GoogleCloudAltLogo.png | Bin 17405 -> 0 bytes public/images/GoogleCloudLogo.png | Bin 1864 -> 0 bytes public/images/NeonLogo.png | Bin 9091 -> 0 bytes public/images/OracleLogo.png | Bin 8109 -> 0 bytes 5 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 public/images/DocumentDB - Logo next to text.png delete mode 100644 public/images/GoogleCloudAltLogo.png delete mode 100644 public/images/GoogleCloudLogo.png delete mode 100644 public/images/NeonLogo.png delete mode 100644 public/images/OracleLogo.png diff --git a/public/images/DocumentDB - Logo next to text.png b/public/images/DocumentDB - Logo next to text.png deleted file mode 100644 index bc90bdd4bf98ee57dd52d0f2343d1ad537a2d85b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3141 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 HPTYS07PkwY diff --git a/public/images/GoogleCloudAltLogo.png b/public/images/GoogleCloudAltLogo.png deleted file mode 100644 index 2adedff32b1258dd35e750ae95b9fe5d3aa2b6e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17405 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 pHWV!XVeK5amvmw_eNWxAg3x@AY=aQ{{c;=^uMf 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 diff --git a/public/images/OracleLogo.png b/public/images/OracleLogo.png deleted file mode 100644 index ee9b813c84bc97fdf25faa687dbd76c5c2796bd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8109 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 Date: Thu, 30 Jul 2026 12:33:34 -0400 Subject: [PATCH 03/10] Centralize the Discord invite link The discord.gg/vH7bYu524D invite was hardcoded in three places: the Next.js navbar, the VS Code quick-start guide content, and the Jekyll blog layout. If the invite ever expires or rotates, each copy has to be found and updated separately. The Next.js app now reads it from app/services/externalLinks.ts (which already exists for exactly this purpose), and the Jekyll side reads site.discord_url from blogs/_config.yml, leaving one definition per stack with cross-references in comments. --- app/components/Navbar.tsx | 3 ++- app/services/articleService.ts | 3 ++- app/services/externalLinks.ts | 2 ++ blogs/_config.yml | 3 +++ blogs/_layouts/default.html | 2 +- 5 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/components/Navbar.tsx b/app/components/Navbar.tsx index 5ec97c7..9a8087a 100644 --- a/app/components/Navbar.tsx +++ b/app/components/Navbar.tsx @@ -3,6 +3,7 @@ import { useState } from "react"; import Image from "next/image"; import Link from "next/link"; +import { documentdbDiscordUrl } from "../services/externalLinks"; import { withBasePath } from "../services/sitePath"; type NavItem = { @@ -24,7 +25,7 @@ const navItems: NavItem[] = [ }, { label: "Discord", - href: "https://discord.gg/vH7bYu524D", + href: documentdbDiscordUrl, kind: "anchor", newTab: true, icon: "discord", diff --git a/app/services/articleService.ts b/app/services/articleService.ts index 4fa0a52..d8fdc59 100644 --- a/app/services/articleService.ts +++ b/app/services/articleService.ts @@ -5,6 +5,7 @@ import matter from 'gray-matter'; import { Article } from '../types/Article'; import { Link } from '../types/Link'; import { buildAptInstallCommand, buildRpmInstallCommand } from '../lib/packageInstall'; +import { documentdbDiscordUrl } from './externalLinks'; const articlesDirectory = path.join(process.cwd(), 'articles'); const dockerGuideContent = `# Docker Quick Start @@ -372,7 +373,7 @@ For extension-specific help or bugs: - [GitHub repository](https://github.com/microsoft/vscode-documentdb) - [GitHub discussions](https://github.com/microsoft/vscode-documentdb/discussions) - [GitHub issues](https://github.com/microsoft/vscode-documentdb/issues) -- [DocumentDB Discord](https://discord.gg/vH7bYu524D) +- [DocumentDB Discord](${documentdbDiscordUrl}) ## Next steps diff --git a/app/services/externalLinks.ts b/app/services/externalLinks.ts index eab069c..bc7b4c6 100644 --- a/app/services/externalLinks.ts +++ b/app/services/externalLinks.ts @@ -1,3 +1,5 @@ +export const documentdbDiscordUrl = 'https://discord.gg/vH7bYu524D'; + export const documentdbKubernetesOperatorDocsUrl = 'https://documentdb.io/documentdb-kubernetes-operator/preview/'; diff --git a/blogs/_config.yml b/blogs/_config.yml index f9503d1..3f0faa6 100644 --- a/blogs/_config.yml +++ b/blogs/_config.yml @@ -1,5 +1,8 @@ title: DocumentDB Blog description: Insights, updates, and deep dives into the world of document databases and open-source innovation. +# Shared external links. The Next.js app keeps the same values in +# app/services/externalLinks.ts; update both when one changes. +discord_url: https://discord.gg/vH7bYu524D baseurl: /blogs url: "" permalink: pretty diff --git a/blogs/_layouts/default.html b/blogs/_layouts/default.html index 5d49624..207308d 100644 --- a/blogs/_layouts/default.html +++ b/blogs/_layouts/default.html @@ -31,7 +31,7 @@