From 81be4ed0fc19336ed86a6432b2ca36ff7c74a9ea Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 28 Jul 2026 19:17:07 +0800 Subject: [PATCH 1/8] fix(llms): set explicit Content-Type on llms.txt routes Signed-off-by: Pamela Chia --- src/routes/llms-full[.]txt.ts | 4 +++- src/routes/llms[.]txt.ts | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/llms-full[.]txt.ts b/src/routes/llms-full[.]txt.ts index afb79d3..10a0e82 100644 --- a/src/routes/llms-full[.]txt.ts +++ b/src/routes/llms-full[.]txt.ts @@ -7,7 +7,9 @@ export const Route = createFileRoute('/llms-full.txt')({ GET: async () => { const scan = source.getPages().map(getLLMText); const scanned = await Promise.all(scan); - return new Response(scanned.join('\n\n')); + return new Response(scanned.join('\n\n'), { + headers: { 'Content-Type': 'text/plain; charset=utf-8' }, + }); }, }, }, diff --git a/src/routes/llms[.]txt.ts b/src/routes/llms[.]txt.ts index 59ae413..f2c5eb8 100644 --- a/src/routes/llms[.]txt.ts +++ b/src/routes/llms[.]txt.ts @@ -35,7 +35,9 @@ export const Route = createFileRoute('/llms.txt')({ const body = `# Multigres\n\n> ${TAGLINE}\n\n${docsIndex}\n\n${blogSection}\n`; - return new Response(body); + return new Response(body, { + headers: { 'Content-Type': 'text/plain; charset=utf-8' }, + }); }, }, }, From 3e508781bff5a8488516c7498be442d9993ecc75 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 28 Jul 2026 19:18:29 +0800 Subject: [PATCH 2/8] feat(seo): advertise markdown siblings via rel=alternate head tags Signed-off-by: Pamela Chia --- src/routes/blog/$slug.tsx | 5 ++++- src/routes/docs/$.tsx | 15 +++++++++++++-- src/routes/index.tsx | 6 ++++++ src/start.ts | 2 +- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/routes/blog/$slug.tsx b/src/routes/blog/$slug.tsx index ff11034..705e6cc 100644 --- a/src/routes/blog/$slug.tsx +++ b/src/routes/blog/$slug.tsx @@ -60,7 +60,10 @@ export const Route = createFileRoute('/blog/$slug')({ { name: 'twitter:description', content: description }, { name: 'twitter:image', content: image }, ], - links: [{ rel: 'canonical', href: canonicalUrl }], + links: [ + { rel: 'canonical', href: canonicalUrl }, + { rel: 'alternate', type: 'text/markdown', href: `${canonicalUrl}.md` }, + ], scripts: [ { type: 'application/ld+json', diff --git a/src/routes/docs/$.tsx b/src/routes/docs/$.tsx index 981746f..6ac7e41 100644 --- a/src/routes/docs/$.tsx +++ b/src/routes/docs/$.tsx @@ -16,7 +16,7 @@ import { import { SiteDocsContainer } from '@/components/site-docs-container'; import { baseOptions } from '@/lib/layout.shared'; import { docPageHeadingClassName } from '@/lib/typography'; -import { gitConfig } from '@/lib/shared'; +import { gitConfig, siteUrl } from '@/lib/shared'; import { useFumadocsLoader } from 'fumadocs-core/source/client'; import { Suspense } from 'react'; import { useMDXComponents } from '@/components/mdx'; @@ -48,7 +48,18 @@ export const Route = createFileRoute('/docs/$')({ { name: 'twitter:description', content: description }, { name: 'twitter:image', content: '/img/og-image.png' }, ], - links: [{ rel: 'canonical', href: canonicalUrl }], + links: [ + { rel: 'canonical', href: canonicalUrl }, + ...(loaderData?.markdownUrl + ? [ + { + rel: 'alternate', + type: 'text/markdown', + href: `${siteUrl}${loaderData.markdownUrl}`, + }, + ] + : []), + ], scripts: [ { type: 'application/ld+json', diff --git a/src/routes/index.tsx b/src/routes/index.tsx index 85a1468..fbb87ef 100644 --- a/src/routes/index.tsx +++ b/src/routes/index.tsx @@ -1,6 +1,7 @@ import { createFileRoute } from '@tanstack/react-router'; import LandingPage from '@/components/landing-page'; import { serializeJsonLd } from '@/lib/json-ld'; +import { siteUrl } from '@/lib/shared'; const description = 'A horizontally scalable Postgres architecture supporting multi-tenant, highly available, and globally distributed deployments.'; @@ -72,6 +73,11 @@ export const Route = createFileRoute('/')({ rel: 'canonical', href: 'https://multigres.com/', }, + { + rel: 'alternate', + type: 'text/markdown', + href: `${siteUrl}/index.md`, + }, ], scripts: [ { diff --git a/src/start.ts b/src/start.ts index 6f0dfe0..ab6d7a3 100644 --- a/src/start.ts +++ b/src/start.ts @@ -34,7 +34,7 @@ const llmMiddleware = createMiddleware().server(async ({ next, request }) => { const path = explicitMarkdown ? pathname.slice(0, -MARKDOWN_EXT.length) : pathname; - if (path === '/' || path === '') { + if (path === '/' || path === '' || path === '/index') { return markdownResponse(homepageMarkdown); } From 7ccf2344b3b22e384d785561c1a29f03545f1b93 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 28 Jul 2026 19:19:37 +0800 Subject: [PATCH 3/8] feat(ui): replace view-options popover with copy + ask markdown actions Signed-off-by: Pamela Chia --- src/components/docs-page-actions.tsx | 69 --------------- src/components/markdown-actions.tsx | 121 +++++++++++++++++++++++++++ src/routes/docs/$.tsx | 21 +++-- 3 files changed, 131 insertions(+), 80 deletions(-) delete mode 100644 src/components/docs-page-actions.tsx create mode 100644 src/components/markdown-actions.tsx diff --git a/src/components/docs-page-actions.tsx b/src/components/docs-page-actions.tsx deleted file mode 100644 index 09345dc..0000000 --- a/src/components/docs-page-actions.tsx +++ /dev/null @@ -1,69 +0,0 @@ -'use client'; - -import { Button, buttonVariants } from '@/components/ui/button'; -import { useCopyButton } from '@/hooks/use-copy-button'; -import { cn } from '@/lib/utils'; -import { ViewOptionsPopover as FumaViewOptionsPopover } from 'fumadocs-ui/layouts/docs/page'; -import { Check, Copy } from 'lucide-react'; -import { useState, type ComponentProps } from 'react'; -import { useTranslations } from 'fumadocs-ui/contexts/i18n'; - -const markdownCache = new Map>(); - -export const docsActionButtonClass = cn( - buttonVariants({ variant: 'default', size: 'sm' }), - 'gap-2 [&_svg]:size-3.5 [&_svg]:text-muted-foreground data-[state=open]:bg-foreground/15', -); - -export function MarkdownCopyButton({ - markdownUrl, - className, - children, - ...props -}: ComponentProps<'button'> & { markdownUrl: string }) { - const t = useTranslations(); - const [isLoading, setLoading] = useState(false); - const [checked, onClick] = useCopyButton(async () => { - const cached = markdownCache.get(markdownUrl); - if (cached) return navigator.clipboard.writeText(await cached); - - setLoading(true); - try { - const promise = fetch(markdownUrl).then((res) => res.text()); - markdownCache.set(markdownUrl, promise); - await navigator.clipboard.write([ - new ClipboardItem({ 'text/plain': promise }), - ]); - } finally { - setLoading(false); - } - }); - - return ( - - ); -} - -export function ViewOptionsPopover( - props: ComponentProps, -) { - return ( - - ); -} diff --git a/src/components/markdown-actions.tsx b/src/components/markdown-actions.tsx new file mode 100644 index 0000000..66ee9b9 --- /dev/null +++ b/src/components/markdown-actions.tsx @@ -0,0 +1,121 @@ +'use client'; + +import { Button, buttonVariants } from '@/components/ui/button'; +import { useCopyButton } from '@/hooks/use-copy-button'; +import { cn } from '@/lib/utils'; +import { Check, Copy } from 'lucide-react'; +import { useState, type ComponentProps, type SVGProps } from 'react'; +import { useTranslations } from 'fumadocs-ui/contexts/i18n'; + +const markdownCache = new Map>(); + +const actionButtonClass = cn( + buttonVariants({ variant: 'default', size: 'sm' }), + 'gap-2 [&_svg]:size-3.5 [&_svg]:text-muted-foreground', +); + +const askLinkClass = cn( + buttonVariants({ variant: 'secondary', size: 'sm' }), + 'gap-2 [&_svg]:size-3.5', +); + +export function MarkdownCopyButton({ + markdownUrl, + className, + children, + ...props +}: ComponentProps<'button'> & { markdownUrl: string }) { + const t = useTranslations(); + const [isLoading, setLoading] = useState(false); + const [checked, onClick] = useCopyButton(async () => { + const cached = markdownCache.get(markdownUrl); + if (cached) return navigator.clipboard.writeText(await cached); + + setLoading(true); + try { + const promise = fetch(markdownUrl).then((res) => res.text()); + markdownCache.set(markdownUrl, promise); + await navigator.clipboard.write([ + new ClipboardItem({ 'text/plain': promise }), + ]); + } finally { + setLoading(false); + } + }); + + return ( + + ); +} + +function OpenAiIcon(props: SVGProps) { + return ( + + + + ); +} + +function AnthropicIcon(props: SVGProps) { + return ( + + + + ); +} + +export function MarkdownActions({ + markdownUrl, + pageUrl, + className, +}: { + markdownUrl: string; + pageUrl: string; + className?: string; +}) { + const prompt = `Read ${pageUrl}, I want to ask questions about it.`; + return ( + + ); +} diff --git a/src/routes/docs/$.tsx b/src/routes/docs/$.tsx index 6ac7e41..c779577 100644 --- a/src/routes/docs/$.tsx +++ b/src/routes/docs/$.tsx @@ -9,14 +9,11 @@ import { DocsPage, DocsTitle, } from 'fumadocs-ui/layouts/docs/page'; -import { - MarkdownCopyButton, - ViewOptionsPopover, -} from '@/components/docs-page-actions'; +import { MarkdownActions } from '@/components/markdown-actions'; import { SiteDocsContainer } from '@/components/site-docs-container'; import { baseOptions } from '@/lib/layout.shared'; import { docPageHeadingClassName } from '@/lib/typography'; -import { gitConfig, siteUrl } from '@/lib/shared'; +import { siteUrl } from '@/lib/shared'; import { useFumadocsLoader } from 'fumadocs-core/source/client'; import { Suspense } from 'react'; import { useMDXComponents } from '@/components/mdx'; @@ -91,6 +88,7 @@ const serverLoader = createServerFn({ title: page.data.title, description: page.data.description, markdownUrl: slugsToMarkdownPath(page.slugs).url, + pageUrl: page.url, pageTree: await source.serializePageTree(source.getPageTree()), }; }); @@ -98,7 +96,7 @@ const serverLoader = createServerFn({ const clientLoader = browserCollections.docs.createClientLoader({ component( { toc, frontmatter, default: MDX }, - { markdownUrl, path }: { markdownUrl: string; path: string }, + { markdownUrl, pageUrl }: { markdownUrl: string; pageUrl: string }, ) { return ( @@ -114,10 +112,9 @@ const clientLoader = browserCollections.docs.createClientLoader({ ) : null}
- -
@@ -130,7 +127,9 @@ const clientLoader = browserCollections.docs.createClientLoader({ }); function Page() { - const { path, pageTree, markdownUrl } = useFumadocsLoader(Route.useLoaderData()); + const { path, pageTree, markdownUrl, pageUrl } = useFumadocsLoader( + Route.useLoaderData(), + ); return ( null, }} > - {clientLoader.useContent(path, { markdownUrl, path })} + {clientLoader.useContent(path, { markdownUrl, pageUrl })} ); } From 0c6259694371bd4363592dcdeae6cad363e312c3 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 28 Jul 2026 19:20:24 +0800 Subject: [PATCH 4/8] feat(ui): markdown copy + ask actions on blog posts and homepage Signed-off-by: Pamela Chia --- src/components/landing-page.tsx | 8 ++++++++ src/routes/blog/$slug.tsx | 12 ++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/landing-page.tsx b/src/components/landing-page.tsx index 0cc2a15..6f0550f 100644 --- a/src/components/landing-page.tsx +++ b/src/components/landing-page.tsx @@ -1,8 +1,10 @@ "use client"; import { LandingShardCanvas } from "@/components/landing-shard-canvas"; +import { MarkdownActions } from "@/components/markdown-actions"; import { SiteNav } from "@/components/site-nav"; import { Button } from "@/components/ui/button"; +import { siteUrl } from "@/lib/shared"; import { pageHeadingClassName } from "@/lib/typography"; import { cn } from "@/lib/utils"; import { GithubIcon } from "@/components/github-icon"; @@ -135,6 +137,12 @@ export default function Home() { + + diff --git a/src/routes/blog/$slug.tsx b/src/routes/blog/$slug.tsx index 705e6cc..378828d 100644 --- a/src/routes/blog/$slug.tsx +++ b/src/routes/blog/$slug.tsx @@ -7,7 +7,9 @@ import { BlogLayout } from '@/components/blog-layout'; import { BlogShardPlaceholder } from '@/components/blog-shard-placeholder'; import { useMDXComponents } from '@/components/mdx'; import { parseAuthorKeys, resolveAuthors } from '@/lib/authors'; +import { MarkdownActions } from '@/components/markdown-actions'; import { blogSource } from '@/lib/blog-source.server'; +import { siteUrl } from '@/lib/shared'; import { docPageHeadingClassName } from '@/lib/typography'; import { useFumadocsLoader } from 'fumadocs-core/source/client'; import { Suspense } from 'react'; @@ -98,7 +100,7 @@ const serverLoader = createServerFn({ method: 'GET' }) }); const clientLoader = browserCollections.blog.createClientLoader({ - component({ default: MDX, frontmatter }) { + component({ default: MDX, frontmatter }, { slug }: { slug: string }) { const postAuthors = resolveAuthors( parseAuthorKeys(frontmatter.authors ?? frontmatter.author), ); @@ -130,6 +132,11 @@ const clientLoader = browserCollections.blog.createClientLoader({ series={frontmatter.series} seriesPart={frontmatter.seriesPart} /> +
@@ -141,10 +148,11 @@ const clientLoader = browserCollections.blog.createClientLoader({ function BlogPostPage() { const { path } = useFumadocsLoader(Route.useLoaderData()); + const { slug } = Route.useParams(); return ( - {clientLoader.useContent(path)} + {clientLoader.useContent(path, { slug })} ); } From 63fe093ba5aecb48f26308264c8c9edea026eddf Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Tue, 28 Jul 2026 19:24:27 +0800 Subject: [PATCH 5/8] refactor(ui): derive blog markdown urls from page.url, drop toolbar wrapper Signed-off-by: Pamela Chia --- src/routes/blog/$slug.tsx | 18 ++++++++++++------ src/routes/docs/$.tsx | 11 +++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/routes/blog/$slug.tsx b/src/routes/blog/$slug.tsx index 378828d..1f5f798 100644 --- a/src/routes/blog/$slug.tsx +++ b/src/routes/blog/$slug.tsx @@ -96,11 +96,16 @@ const serverLoader = createServerFn({ method: 'GET' }) image: page.data.image, datePublished: page.data.date ? page.data.date.toISOString() : undefined, authorName: firstAuthor?.name, + markdownUrl: `${page.url}.md`, + pageUrl: page.url, }; }); const clientLoader = browserCollections.blog.createClientLoader({ - component({ default: MDX, frontmatter }, { slug }: { slug: string }) { + component( + { default: MDX, frontmatter }, + { markdownUrl, pageUrl }: { markdownUrl: string; pageUrl: string }, + ) { const postAuthors = resolveAuthors( parseAuthorKeys(frontmatter.authors ?? frontmatter.author), ); @@ -133,8 +138,8 @@ const clientLoader = browserCollections.blog.createClientLoader({ seriesPart={frontmatter.seriesPart} /> @@ -147,12 +152,13 @@ const clientLoader = browserCollections.blog.createClientLoader({ }); function BlogPostPage() { - const { path } = useFumadocsLoader(Route.useLoaderData()); - const { slug } = Route.useParams(); + const { path, markdownUrl, pageUrl } = useFumadocsLoader( + Route.useLoaderData(), + ); return ( - {clientLoader.useContent(path, { slug })} + {clientLoader.useContent(path, { markdownUrl, pageUrl })} ); } diff --git a/src/routes/docs/$.tsx b/src/routes/docs/$.tsx index c779577..7d63fd1 100644 --- a/src/routes/docs/$.tsx +++ b/src/routes/docs/$.tsx @@ -111,12 +111,11 @@ const clientLoader = browserCollections.docs.createClientLoader({ ) : null}
-
- -
+ From 39847bd652afd587ad204a3644f69cc7d52b77ac Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Wed, 29 Jul 2026 00:35:49 +0800 Subject: [PATCH 6/8] feat(analytics): posthog events for copy + ask clicks Signed-off-by: Pamela Chia --- src/components/markdown-actions.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/markdown-actions.tsx b/src/components/markdown-actions.tsx index 66ee9b9..4bea18b 100644 --- a/src/components/markdown-actions.tsx +++ b/src/components/markdown-actions.tsx @@ -2,6 +2,7 @@ import { Button, buttonVariants } from '@/components/ui/button'; import { useCopyButton } from '@/hooks/use-copy-button'; +import { posthogClient } from '@/lib/posthog-client'; import { cn } from '@/lib/utils'; import { Check, Copy } from 'lucide-react'; import { useState, type ComponentProps, type SVGProps } from 'react'; @@ -29,7 +30,11 @@ export function MarkdownCopyButton({ const [isLoading, setLoading] = useState(false); const [checked, onClick] = useCopyButton(async () => { const cached = markdownCache.get(markdownUrl); - if (cached) return navigator.clipboard.writeText(await cached); + if (cached) { + await navigator.clipboard.writeText(await cached); + posthogClient.capture('copy_as_markdown_clicked'); + return; + } setLoading(true); try { @@ -38,6 +43,7 @@ export function MarkdownCopyButton({ await navigator.clipboard.write([ new ClipboardItem({ 'text/plain': promise }), ]); + posthogClient.capture('copy_as_markdown_clicked'); } finally { setLoading(false); } @@ -103,6 +109,7 @@ export function MarkdownActions({ target="_blank" rel="noreferrer noopener" className={askLinkClass} + onClick={() => posthogClient.capture('ask_ai_clicked', { agent: 'chatgpt' })} > Ask ChatGPT @@ -112,6 +119,7 @@ export function MarkdownActions({ target="_blank" rel="noreferrer noopener" className={askLinkClass} + onClick={() => posthogClient.capture('ask_ai_clicked', { agent: 'claude' })} > Ask Claude From c72f6039be905251e0a18a13501d18ecb72930c0 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Wed, 29 Jul 2026 01:08:06 +0800 Subject: [PATCH 7/8] feat(analytics): github_clicked event with source property Signed-off-by: Pamela Chia --- src/components/landing-page.tsx | 2 ++ src/components/site-footer.tsx | 6 ++++++ src/components/site-nav.tsx | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/src/components/landing-page.tsx b/src/components/landing-page.tsx index 6f0550f..d22bc7a 100644 --- a/src/components/landing-page.tsx +++ b/src/components/landing-page.tsx @@ -4,6 +4,7 @@ import { LandingShardCanvas } from "@/components/landing-shard-canvas"; import { MarkdownActions } from "@/components/markdown-actions"; import { SiteNav } from "@/components/site-nav"; import { Button } from "@/components/ui/button"; +import { posthogClient } from "@/lib/posthog-client"; import { siteUrl } from "@/lib/shared"; import { pageHeadingClassName } from "@/lib/typography"; import { cn } from "@/lib/utils"; @@ -131,6 +132,7 @@ export default function Home() { href="https://github.com/multigres/multigres" target="_blank" rel="noreferrer" + onClick={() => posthogClient.capture('github_clicked', { source: 'hero' })} > GitHub diff --git a/src/components/site-footer.tsx b/src/components/site-footer.tsx index c6c6004..fde27af 100644 --- a/src/components/site-footer.tsx +++ b/src/components/site-footer.tsx @@ -1,5 +1,6 @@ import { Link } from '@tanstack/react-router'; import { GithubIcon } from '@/components/github-icon'; +import { posthogClient } from '@/lib/posthog-client'; import { appName, blogRoute, docsRoute, gitConfig } from '@/lib/shared'; import { cn } from '@/lib/utils'; @@ -39,6 +40,11 @@ export function SiteFooter({ className }: SiteFooterProps) { target="_blank" rel="noreferrer" className="inline-flex items-center gap-1.5 hover:text-foreground" + onClick={ + item.label === 'GitHub' + ? () => posthogClient.capture('github_clicked', { source: 'footer' }) + : undefined + } > {item.label === 'GitHub' ? : null} {item.label} diff --git a/src/components/site-nav.tsx b/src/components/site-nav.tsx index db54e20..b77edc7 100644 --- a/src/components/site-nav.tsx +++ b/src/components/site-nav.tsx @@ -2,6 +2,7 @@ import { GithubIcon } from '@/components/github-icon'; import { MultigresLogo } from '@/components/multigres-logo'; +import { posthogClient } from '@/lib/posthog-client'; import { cn } from '@/lib/utils'; import { appName } from '@/lib/shared'; import { siteNavLinks } from '@/lib/site-nav'; @@ -56,6 +57,11 @@ export function SiteNav({ trailing, className }: SiteNavProps) { target="_blank" rel="noreferrer" className="inline-flex items-center gap-1.5 text-sm font-semibold text-foreground" + onClick={ + item.label === 'GitHub' + ? () => posthogClient.capture('github_clicked', { source: 'nav' }) + : undefined + } > {item.label === 'GitHub' ? ( From 1f7055fb9b3531a38e81601ff29bbd78dff9e804 Mon Sep 17 00:00:00 2001 From: Pamela Chia Date: Wed, 29 Jul 2026 01:12:55 +0800 Subject: [PATCH 8/8] refactor(analytics): rename github event to multigres_github_clicked Signed-off-by: Pamela Chia --- src/components/landing-page.tsx | 2 +- src/components/site-footer.tsx | 2 +- src/components/site-nav.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/landing-page.tsx b/src/components/landing-page.tsx index d22bc7a..1ef2b05 100644 --- a/src/components/landing-page.tsx +++ b/src/components/landing-page.tsx @@ -132,7 +132,7 @@ export default function Home() { href="https://github.com/multigres/multigres" target="_blank" rel="noreferrer" - onClick={() => posthogClient.capture('github_clicked', { source: 'hero' })} + onClick={() => posthogClient.capture('multigres_github_clicked', { source: 'hero' })} > GitHub diff --git a/src/components/site-footer.tsx b/src/components/site-footer.tsx index fde27af..395f852 100644 --- a/src/components/site-footer.tsx +++ b/src/components/site-footer.tsx @@ -42,7 +42,7 @@ export function SiteFooter({ className }: SiteFooterProps) { className="inline-flex items-center gap-1.5 hover:text-foreground" onClick={ item.label === 'GitHub' - ? () => posthogClient.capture('github_clicked', { source: 'footer' }) + ? () => posthogClient.capture('multigres_github_clicked', { source: 'footer' }) : undefined } > diff --git a/src/components/site-nav.tsx b/src/components/site-nav.tsx index b77edc7..6984ed3 100644 --- a/src/components/site-nav.tsx +++ b/src/components/site-nav.tsx @@ -59,7 +59,7 @@ export function SiteNav({ trailing, className }: SiteNavProps) { className="inline-flex items-center gap-1.5 text-sm font-semibold text-foreground" onClick={ item.label === 'GitHub' - ? () => posthogClient.capture('github_clicked', { source: 'nav' }) + ? () => posthogClient.capture('multigres_github_clicked', { source: 'nav' }) : undefined } >