From e25e1ff85037198fe3f0aa67fbc76d1008fe7ec0 Mon Sep 17 00:00:00 2001 From: Trevor Date: Tue, 9 Jun 2026 11:07:53 -0700 Subject: [PATCH 1/5] Remove feedback action border radius Co-authored-by: Cursor --- style.css | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/style.css b/style.css index b7bdaf40..ce11acbb 100644 --- a/style.css +++ b/style.css @@ -174,6 +174,13 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { border-radius: 0px; } +#feedback-thumbs-up, +#feedback-thumbs-down, +a[href*="/edit/main/"], +a[href*="/issues/new"] { + border-radius: 0 !important; +} + #chat-assistant-sheet .rounded-2xl:has(#chat-assistant-textarea) > div:last-child { padding-bottom: 0.5rem; } From 3a3560a77adc8bd58d85f7d3061eef3d561dc019 Mon Sep 17 00:00:00 2001 From: Trevor Date: Tue, 9 Jun 2026 11:43:54 -0700 Subject: [PATCH 2/5] Update Xbox documentation: refine tab labels for clarity, enhance onboarding instructions, and standardize color codes in CSS. Add language matching policy guidelines for assistant responses. --- .mintlify/Assistant.md | 28 +++++++++++++++++++ docs.json | 20 ++++++-------- index.mdx | 9 +++--- onboarding.mdx | 63 +++++++++++++++++++++++++++--------------- style.css | 25 +++++++++-------- 5 files changed, 94 insertions(+), 51 deletions(-) create mode 100644 .mintlify/Assistant.md diff --git a/.mintlify/Assistant.md b/.mintlify/Assistant.md new file mode 100644 index 00000000..d6a27c6f --- /dev/null +++ b/.mintlify/Assistant.md @@ -0,0 +1,28 @@ +**Language Matching Policy** + +Always respond in the same language the user writes in. This is determined by the language of the user's message, not by their location, name, or any other signal. + +**Detection rules:** + +- Identify the primary language of the user's most recent message and respond entirely in that language. +- If the user switches languages mid-conversation, switch with them. Match the language of their latest message, not earlier ones. +- If a message mixes languages, respond in the dominant language of the message. If it's roughly even, respond in the language the user used for their actual question or request (as opposed to quoted material, code, or pasted content). +- Quoted text, code snippets, error messages, file contents, and pasted documents do not count toward language detection — only the user's own words do. For example, if a user writes in Spanish asking about an English error log, respond in Spanish. + +**Response quality requirements:** + +- Use natural, fluent, idiomatic phrasing in the target language — not literal translations of English sentence structures. +- Match the appropriate register and formality conventions of that language (e.g., usted/tú in Spanish, Sie/du in German, keigo considerations in Japanese) based on the user's own tone. +- Keep technical terms, proper nouns, product names, and code in their original form where that is the convention in the target language. Do not translate code, variable names, commands, or API parameters. +- Formatting conventions (dates, numbers, currency, punctuation such as « » or 「」) should follow the norms of the target language where natural. + +**Edge cases:** + +- If you cannot confidently identify the language, default to English and ask the user to confirm their preferred language. +- If the user explicitly requests a specific response language ("answer in English even though I'm writing in French"), honor that explicit instruction over the matching rule. +- Transliterated text (e.g., Hindi written in Latin script, "Romaji" Japanese) counts as that language — respond in the same script and style the user used, unless they ask otherwise. +- Very short messages with no clear language (e.g., "ok", "?", an emoji) inherit the language of the prior conversation turn. + +**Consistency:** + +- Apply the language choice to the entire response, including headings, lists, captions, and any closing remarks. Do not mix English boilerplate into a non-English response. diff --git a/docs.json b/docs.json index 3b2485e0..2b1c0721 100644 --- a/docs.json +++ b/docs.json @@ -13,22 +13,18 @@ { "href": "https://developer.microsoft.com/en-us/games/", "label": "XBOX Game Dev" - }, - { - "href": "https://github.com/edigonzales-microsoft/mintlify-docs", - "label": "Collaborate with us in GitHub" } ], "primary": { "href": "https://github.com/edigonzales-microsoft/mintlify-docs", - "label": "GitHub", + "label": "Collaborate with us in GitHub", "type": "button" } }, "navigation": { "tabs": [ { - "tab": "XBOX Game Development Documentation", + "tab": "Get Started", "groups": [ { "group": "Get Started", @@ -55,7 +51,7 @@ ] }, { - "tab": "Build & Develop", + "tab": "Build", "groups": [ { "group": "Core Features", @@ -133,7 +129,7 @@ ] }, { - "tab": "XBOX Console Only Features", + "tab": "Console", "groups": [ { "group": "Console Features", @@ -159,7 +155,7 @@ ] }, { - "tab": "Development Tools", + "tab": "Tools", "groups": [ { "group": "Tools", @@ -180,7 +176,7 @@ ] }, { - "tab": "Game Principles", + "tab": "Principles", "groups": [ { "group": "Game Principles", @@ -199,7 +195,7 @@ ] }, { - "tab": "Publishing & Commerce", + "tab": "Publishing", "groups": [ { "group": "Publishing & Commerce", @@ -224,7 +220,7 @@ ] }, { - "tab": "API References", + "tab": "APIs", "groups": [ { "group": "System APIs", diff --git a/index.mdx b/index.mdx index c71a983b..3eb1cef2 100644 --- a/index.mdx +++ b/index.mdx @@ -2,6 +2,7 @@ title: "XBOX Documentation Hub" sidebarTitle: "Home" description: "Xbox game development documentation to develop and publish XBOX games using Microsoft products, tools, and services." +icon: "house" ---
@@ -21,7 +22,7 @@ Jump into the guides most teams use first, from environment setup to release not
-

Get started with the GDK

+ Get started with the GDK

Pick a development path, install the toolchain, and build your first console or PC project.

Read guide →
@@ -30,7 +31,7 @@ Jump into the guides most teams use first, from environment setup to release not
-

Onboard with ID@Xbox

+ Onboard with ID@Xbox

Complete the NDA, concept approval, and Partner Center setup that unlock GDK access. @@ -42,7 +43,7 @@ Jump into the guides most teams use first, from environment setup to release not

-

Download & install

+ Download & install

Grab the latest GDK release and configure Visual Studio for Xbox and Windows targets. @@ -54,7 +55,7 @@ Jump into the guides most teams use first, from environment setup to release not

diff --git a/onboarding.mdx b/onboarding.mdx index f8d9e7dd..c23a035c 100644 --- a/onboarding.mdx +++ b/onboarding.mdx @@ -7,10 +7,10 @@ icon: "id-card" Before you can download the GDK, configure a title in Partner Center, or use any of the products and features described in the rest of this documentation, your studio must complete **ID@Xbox onboarding**. This page walks through every step in order, calls out the steps that block GDK access, and sets realistic timing expectations. -/ - - Full onboarding typically takes **~1–2 weeks minimum**, sometimes longer depending on review cycles and contract turnaround. Plan it into your production schedule — do not assume same-day access. + Full onboarding typically takes **~1–2 weeks minimum**, sometimes longer + depending on review cycles and contract turnaround. Plan it into your + production schedule — do not assume same-day access. ## At a glance @@ -20,13 +20,15 @@ Before you can download the GDK, configure a title in Partner Center, or use any The [ID@Xbox onboarding hub](https://www.xbox.com/en-US/developers/id) — not Partner Center, not the Microsoft Store. - - GDK documentation, GDK software downloads (SDS site), Partner Center publishing, and Xbox services. - + + GDK documentation, GDK software downloads (SDS site), Partner Center + publishing, and Xbox services. + - - Skipping the ID@Xbox flow (for example, creating Partner Center independently) breaks role assignment and blocks GDK access. - + + Skipping the ID@Xbox flow (for example, creating Partner Center independently) + breaks role assignment and blocks GDK access. + ~2 weeks minimum from first registration to a fully provisioned dev environment. @@ -51,6 +53,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi **NDA delivery:** typically within **~20 minutes**, up to **3 business days**. **Output:** signed NDA, onboarding account created. You only complete the contact, studio, and NDA steps once. + Every game requires concept approval before development and publishing. @@ -64,16 +67,19 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi **Typical approval time:** **10–15 business days**. Multiple concepts can be submitted in parallel. **Output:** concept approved or rejected. You must have an approved concept to proceed. If rejected, resubmit when the build materially changes. + Once your concept is approved, you receive the **Title Licensing Agreement (TLA)**. The TLA establishes your publishing rights and commercial terms for shipping the title on Xbox. **Output:** signed TLA. Microsoft's counter-signature is automated in most modern cases. + First-time partners — and older partners onboarded before 2020 — must additionally sign the **GDK Agreement** to gain access to Xbox development resources. **Output:** eligibility for GDK documentation and the software download site. + With agreements complete, the onboarding hub unlocks Partner Center registration. You must enroll in the **Windows and Xbox program** in Partner Center. @@ -109,6 +115,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Account verification typically takes **3–5 business days**. **Output:** Partner Center account, linked to your ID@Xbox onboarding record. + Associate your studio's **Entra ID** (formerly Azure AD) tenant with your Partner Center account. This gives you organization-level identity management for your dev team. @@ -122,6 +129,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi 5. Use this Entra account going forward **Result:** any user added to your tenant and granted Partner Center permissions automatically inherits access to the linked Xbox resources. + When you complete the onboarding flow correctly, the system **automatically assigns** the roles your studio needs: @@ -132,6 +140,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi - Xbox One permissions (in many cases) These roles are guaranteed _only_ if you followed the ID@Xbox onboarding flow end-to-end. If you created Partner Center independently and then tried to link back, you will likely need to file a manual request to get the roles assigned. + Once every prior step is complete, you can: @@ -141,6 +150,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi - Access additional developer resources **Dependency chain for GDK access:** approved concept \+ signed agreements \+ Partner Center account \+ correct roles \+ Entra ID association. + With Partner Center provisioned, reserve a product so you can start configuration: @@ -153,6 +163,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Take note of the values under **Game setup → Identity details** — you'll paste them into your `MicrosoftGame.config` later. See [Partner Center](/publishing/partner-center) for the full product workflow. + Xbox services are **disabled** by default on new products. Enable them early so you can test in your dev cycle. @@ -166,18 +177,19 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Once enabled, return to **Game setup** and choose **Use full Xbox services feature set**. Without this step, Xbox services APIs (for example, Xbox Live initialization) will fail at runtime. + ## Timeline summary -| Phase | Typical time | -| --- | --- | -| NDA and account setup | Same day | -| Concept approval | ~1–2 weeks | -| Contracts (TLA \+ GDK Agreement) | Variable | -| Partner Center setup | 1 to a few days | -| **Total to full GDK access** | **~2\+ weeks minimum** | +| Phase | Typical time | +| -------------------------------- | ---------------------- | +| NDA and account setup | Same day | +| Concept approval | ~1–2 weeks | +| Contracts (TLA \+ GDK Agreement) | Variable | +| Partner Center setup | 1 to a few days | +| **Total to full GDK access** | **~2\+ weeks minimum** | Plan the onboarding window as part of pre-production. Concept approval alone is the longest gating item for most studios. @@ -188,13 +200,18 @@ Plan the onboarding window as part of pre-production. Concept approval alone is The number-one cause of missing GDK access. A Partner Center account created directly — not via the onboarding hub link — will not have the 5x5 token applied, the role assignments will not happen automatically, and you will not be able to download the GDK. Recovering from this requires a manual support request to link the accounts and assign roles. **Always register Partner Center through the link in the onboarding hub.** - - Onboarding is not instant. Concept review meets on a weekly cadence, contracts require signature cycles, and role provisioning runs as a background job. Build at least two weeks of buffer into your schedule before you need the GDK in hand. - + + Onboarding is not instant. Concept review meets on a weekly cadence, contracts + require signature cycles, and role provisioning runs as a background job. + Build at least two weeks of buffer into your schedule before you need the GDK + in hand. + - - The dependency chain (concept approval, contracts, Partner Center, roles, Entra ID, Xbox Live enablement) is largely gated until you already have access. Bookmark this page and use it as the checklist while you wait. - + + The dependency chain (concept approval, contracts, Partner Center, roles, + Entra ID, Xbox Live enablement) is largely gated until you already have + access. Bookmark this page and use it as the checklist while you wait. + Even after the GDK is downloaded and Partner Center is configured, Xbox Live features and some service configurations require a manual activation by Microsoft. If your Xbox services initialization calls fail with a "not enabled" error after a clean onboarding, this is almost always the cause. Contact your Microsoft point of contact to request enablement. @@ -208,4 +225,4 @@ Once you have full GDK access, the natural next pages are: - [Get Started](/gdk/get-started) — the two development paths and how to pick one - [Download & Install](/gdk/download-install) — install the GDK and create your first project - [Partner Center](/publishing/partner-center) — create your first product -- [Publishing overview](/publishing/overview) — the long-term path from build to retail launch \ No newline at end of file +- [Publishing overview](/publishing/overview) — the long-term path from build to retail launch diff --git a/style.css b/style.css index ce11acbb..69e6b68b 100644 --- a/style.css +++ b/style.css @@ -24,8 +24,8 @@ --xbox-text-muted: #78716c; /* Brand */ - --xbox-green: #127C10; - --xbox-green-active: #127C10; + --xbox-green: #127c10; + --xbox-green-active: #127c10; --xbox-green-fg: #ffffff; /* System */ @@ -46,8 +46,8 @@ --xbox-text-subtle: #9f9fa9; --xbox-text-muted: #78716c; - --xbox-green: #127C10; - --xbox-green-active: #127C10; + --xbox-green: #127c10; + --xbox-green-active: #127c10; --xbox-green-fg: #ffffff; } @@ -89,7 +89,7 @@ body { :root { --xbox-page-gutter: 2rem; --xbox-sidebar-width: 16rem; - --xbox-content-width: 42rem; + --xbox-content-width: 50rem; --xbox-toc-width: 15rem; } @@ -181,7 +181,9 @@ a[href*="/issues/new"] { border-radius: 0 !important; } -#chat-assistant-sheet .rounded-2xl:has(#chat-assistant-textarea) > div:last-child { +#chat-assistant-sheet + .rounded-2xl:has(#chat-assistant-textarea) + > div:last-child { padding-bottom: 0.5rem; } @@ -522,7 +524,7 @@ a[href*="/issues/new"] { .dark .almond-nav-bottom-section button[aria-label="Toggle dark mode"], .dark #navbar .xbox-theme-toggle-button { background-color: var(--xbox-bg) !important; - border-color: #27272A !important; + border-color: #27272a !important; color: #9f9fa9 !important; } } @@ -614,7 +616,7 @@ sidebar-group-header { .dark #search-bar-entry { background-color: #000; - border-color: #27272A; + border-color: #27272a; } #assistant-entry { @@ -624,7 +626,7 @@ sidebar-group-header { } .dark #assistant-entry { - border-color: #27272A; + border-color: #27272a; } /* --------------------------------------------------------------------- @@ -758,8 +760,7 @@ toc-item[data-active-deepest], color: var(--xbox-green-active) !important; } -#table-of-contents-content .toc-item[data-active-deepest][data-depth="0"] - > a { +#table-of-contents-content .toc-item[data-active-deepest][data-depth="0"] > a { border-left-width: 2px; border-left-color: var(--xbox-green-active) !important; } @@ -842,7 +843,7 @@ mdx-content a:not(card a) { rgba(18, 124, 16, 0.55) 0%, rgba(18, 124, 16, 0) 60% ), - linear-gradient(135deg, #127C10 0%, #0a0a0c 55%, #1a0b2e 100%); + linear-gradient(135deg, #127c10 0%, #0a0a0c 55%, #1a0b2e 100%); border: 1px solid var(--xbox-border); } From a8b6e6e62715687ae885f2dc539f622c2274ac0c Mon Sep 17 00:00:00 2001 From: Trevor Date: Wed, 10 Jun 2026 12:03:44 -0700 Subject: [PATCH 3/5] style changes --- docs.json | 10 +++++++--- fonts/SegoeUI-Bold.woff | Bin 0 -> 21112 bytes fonts/SegoeUI.woff | Bin 0 -> 20504 bytes style.css | 20 ++++++++++---------- 4 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 fonts/SegoeUI-Bold.woff create mode 100644 fonts/SegoeUI.woff diff --git a/docs.json b/docs.json index 2b1c0721..768fcfde 100644 --- a/docs.json +++ b/docs.json @@ -344,11 +344,15 @@ }, "fonts": { "heading": { - "family": "Inter", - "weight": 600 + "family": "Segoe UI", + "source": "/fonts/SegoeUI-Bold.woff", + "format": "woff", + "weight": 700 }, "body": { - "family": "Inter", + "family": "Segoe UI", + "source": "/fonts/SegoeUI.woff", + "format": "woff", "weight": 400 } }, diff --git a/fonts/SegoeUI-Bold.woff b/fonts/SegoeUI-Bold.woff new file mode 100644 index 0000000000000000000000000000000000000000..b19a7c0b865589e03c4168d100e1a9f15a8585a2 GIT binary patch literal 21112 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 T00000uk}2y00000z{n=u!aZx| literal 0 HcmV?d00001 diff --git a/style.css b/style.css index 69e6b68b..8f724fc8 100644 --- a/style.css +++ b/style.css @@ -29,7 +29,7 @@ --xbox-green-fg: #ffffff; /* System */ - --xbox-radius: 0px; + --xbox-radius: 4px; --xbox-topbar-button-size: 2.125rem; } @@ -62,7 +62,7 @@ body { } .callout { - border-radius: 0px; + border-radius: 4px; } #almond-background-color { @@ -115,7 +115,7 @@ body { } #content-container { - border-radius: 0px; + border-radius: 4px; border: none; } @@ -154,31 +154,31 @@ body { } .card { - border-radius: 0px; + border-radius: 4px; } -/* Assistant side panel — remove the theme's inset spacing and rounded sheet corners. */ +/* Assistant side panel — remove the theme's inset spacing and normalize sheet corners. */ div.sticky.shrink-0:has(> #chat-assistant-sheet) { padding: 0 !important; - border-radius: 0px; + border-radius: 4px; } #chat-assistant-sheet { - border-radius: 0px !important; + border-radius: 4px !important; } /* The visible assistant input frame is the rounded wrapper, not the transparent textarea. */ .chat-assistant-floating-input .rounded-2xl:has(#chat-assistant-textarea), #chat-assistant-sheet .rounded-2xl:has(#chat-assistant-textarea), #chat-assistant-textarea { - border-radius: 0px; + border-radius: 4px; } #feedback-thumbs-up, #feedback-thumbs-down, a[href*="/edit/main/"], a[href*="/issues/new"] { - border-radius: 0 !important; + border-radius: 4px !important; } #chat-assistant-sheet @@ -581,7 +581,7 @@ sidebar-group-header { font-weight: 500; background-color: transparent; border-left: 0; - border-radius: 0; + border-radius: 4px; } #sidebar-content li:not([data-active]):hover::before, From 5cef08f493c9cf80df05b00130a0a05e1af16056 Mon Sep 17 00:00:00 2001 From: Trevor Date: Wed, 10 Jun 2026 12:39:06 -0700 Subject: [PATCH 4/5] Refactor docs.json and style.css for consistency and improved styling - Removed unused font definitions and metadata from docs.json - Updated font weights in style.css for better visual hierarchy - Standardized color values in style.css for consistency across themes - Enhanced sidebar styling for improved contrast and usability --- docs.json | 103 +----------------------------------------------------- style.css | 103 ++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 74 insertions(+), 132 deletions(-) diff --git a/docs.json b/docs.json index 5c200207..9a51fd34 100644 --- a/docs.json +++ b/docs.json @@ -49,16 +49,6 @@ "github": "https://github.com/microsoft/Xbox-GDK-Samples" } }, - "fonts": { - "heading": { - "family": "Open Sans", - "weight": 700 - }, - "body": { - "family": "Open Sans", - "weight": 400 - } - }, "styling": { "eyebrows": "breadcrumbs" }, @@ -492,17 +482,6 @@ } ] }, - "description": "XBOX Game Development Documentation", - "logo": "/images/logo.svg", - "appearance": { - "default": "dark" - }, - "background": { - "color": { - "light": "#FFFFFF", - "dark": "#09090B" - } - }, "fonts": { "heading": { "family": "Segoe UI", @@ -516,85 +495,5 @@ "format": "woff", "weight": 400 } - }, - "styling": { - "eyebrows": "breadcrumbs" - }, - "footer": { - "socials": { - "discord": "https://developer.microsoft.com/en-us/games", - "youtube": "https://www.youtube.com/msftgamedev", - "github": "https://github.com/microsoft/Xbox-GDK-Samples" - } - }, - "metadata": { - "timestamp": true - }, - "redirects": [ - { - "source": "/pc-e2e/register-id-xbox", - "destination": "/onboarding", - "permanent": true - }, - { - "source": "/pc-e2e/partner-center-account", - "destination": "/onboarding", - "permanent": true - }, - { - "source": "/pc-e2e/partner-center-product", - "destination": "/onboarding", - "permanent": true - }, - { - "source": "/pc-e2e/integrate-gdk", - "destination": "/pc-e2e/engines/custom-engine", - "permanent": true - }, - { - "source": "/pc-e2e/publish-your-game", - "destination": "/publishing/overview", - "permanent": true - }, - { - "source": "/services/achievements-eb-vs-tm", - "destination": "/services/player-data", - "permanent": true - }, - { - "source": "/services/stats-eb-vs-tm", - "destination": "/services/player-data", - "permanent": true - }, - { - "source": "/services/multiplayer-intro", - "destination": "/services/multiplayer", - "permanent": true - }, - { - "source": "/services/mpsd", - "destination": "/services/multiplayer", - "permanent": true - }, - { - "source": "/services/mpm", - "destination": "/services/multiplayer", - "permanent": true - }, - { - "source": "/services/mpa", - "destination": "/services/multiplayer-activity", - "permanent": true - }, - { - "source": "/services/matchmaking", - "destination": "/services/multiplayer", - "permanent": true - }, - { - "source": "/services/test-accounts", - "destination": "/tools/test-account-tool", - "permanent": true - } - ] + } } diff --git a/style.css b/style.css index 858e77e3..ce5ce627 100644 --- a/style.css +++ b/style.css @@ -27,9 +27,9 @@ --xbox-green: #008746; --xbox-green-active: #008746; --xbox-green-fg: #ffffff; - --xbox-grey: #484E58; - --xbox-red: #E51D23; - --xbox-blue: #007DB5; + --xbox-grey: #484e58; + --xbox-red: #e51d23; + --xbox-blue: #007db5; /* System */ --xbox-radius: 4px; @@ -52,9 +52,9 @@ --xbox-green: #008746; --xbox-green-active: #008746; --xbox-green-fg: #ffffff; - --xbox-grey: #484E58; - --xbox-red: #E51D23; - --xbox-blue: #007DB5; + --xbox-grey: #484e58; + --xbox-red: #e51d23; + --xbox-blue: #007db5; } /* --------------------------------------------------------------------- @@ -120,6 +120,10 @@ body { padding-right: var(--xbox-page-gutter); } +.navbar-link { + font-weight: 500; +} + #content-container { border-radius: 4px; border: none; @@ -300,7 +304,7 @@ a[href*="/issues/new"] { text-transform: uppercase; color: var(--xbox-text-muted); font-size: 12px; - font-weight: 500; + font-weight: 700; letter-spacing: normal; } @@ -371,7 +375,7 @@ a[href*="/issues/new"] { .nav-tabs-item { color: var(--xbox-text-muted); - font-weight: 500; + font-weight: 700; transition: color 0.15s ease; } @@ -561,26 +565,34 @@ a[href*="/issues/new"] { Sidebar navigation --------------------------------------------------------------------- */ -/* Sidebar background — solid darker Xbox grey on every tab, both themes. - Original brand grey is #484E58; this is a darkened variant for better - contrast against the page content. */ -#sidebar-content, +/* Sidebar background — opaque in both themes, with theme-specific colors. */ +#sidebar-content { + background-color: #ffffff !important; + opacity: 1 !important; +} + .dark #sidebar-content { - background-color: #1E2127 !important; + background-color: #1e2127 !important; opacity: 1 !important; } /* Ensure the sidebar layer/wrapper is opaque (defeat any theme transparency). */ -#sidebar, +#sidebar { + background-color: #ffffff !important; + opacity: 1 !important; +} + .dark #sidebar { - background-color: #1E2127 !important; + background-color: #1e2127 !important; opacity: 1 !important; } -/* On dark mode the page background sits behind the sidebar fixed positioning, - so make sure the rail edges read against the grey rather than the page bg. */ +/* Rail edges need enough contrast against each theme's sidebar surface. */ #sidebar-content::before, -#sidebar-content::after, +#sidebar-content::after { + border-left-color: var(--xbox-border); +} + .dark #sidebar-content::before, .dark #sidebar-content::after { border-left-color: rgba(255, 255, 255, 0.12); @@ -588,26 +600,49 @@ a[href*="/issues/new"] { sidebar-title, sidebar-group-header { + color: var(--xbox-text-main); + font-weight: 700; +} + +.dark sidebar-title, +.dark sidebar-group-header { color: #ffffff; - font-weight: 500; + font-weight: 700; } #sidebar-content li a { - color: #d4d4d8; + color: var(--xbox-text-subtle); border-radius: var(--xbox-radius); } -#sidebar-content li a:hover, +#sidebar-content li a:hover { + color: var(--xbox-text-main); + background-color: transparent !important; +} + +.dark #sidebar-content li a { + color: #d4d4d8; +} + .dark #sidebar-content li a:hover { color: #ffffff; background-color: transparent !important; } -/* Active page — darker brand green for stronger contrast on the grey */ +/* Active page — use theme-specific greens for contrast against each surface. */ #sidebar-content li[data-active] > a, #sidebar-content li[data-active] a { - color: #3FB377; - font-weight: 500; + color: var(--xbox-green-active); + font-weight: 700; + background-color: transparent; + border-left: 0; + border-radius: 4px; +} + +.dark #sidebar-content li[data-active] > a, +.dark #sidebar-content li[data-active] a { + color: #3fb377; + font-weight: 700; background-color: transparent; border-left: 0; border-radius: 4px; @@ -625,12 +660,20 @@ sidebar-group-header { } #sidebar-content li:not([data-active]):hover::before { + background-color: var(--xbox-border); +} + +.dark #sidebar-content li:not([data-active]):hover::before { background-color: rgba(255, 255, 255, 0.35); } #sidebar-content li[data-active]::before { width: 2px; - background-color: #3FB377; + background-color: var(--xbox-green-active); +} + +.dark #sidebar-content li[data-active]::before { + background-color: #3fb377; } /* --------------------------------------------------------------------- @@ -663,7 +706,7 @@ sidebar-group-header { --------------------------------------------------------------------- */ #page-title { color: var(--xbox-text-main); - font-weight: 500; + font-weight: 700; letter-spacing: -0.7px; } @@ -696,7 +739,7 @@ card .font-semibold, card h2, card h3 { color: var(--xbox-text-main); - font-weight: 500; + font-weight: 700; } card p { @@ -934,7 +977,7 @@ mdx-content a:not(card a) { .xbox-quick-body h3 { margin: 0; font-size: 16px; - font-weight: 500; + font-weight: 700; letter-spacing: -0.2px; color: var(--xbox-text-main); } @@ -949,7 +992,7 @@ mdx-content a:not(card a) { .xbox-quick-link { margin-top: auto; font-size: 14px; - font-weight: 500; + font-weight: 700; color: var(--xbox-green-active); } @@ -992,7 +1035,7 @@ mdx-content a:not(card a) { align-items: center; padding: 8px 16px; font-size: 14px; - font-weight: 500; + font-weight: 700; text-decoration: none; border-radius: var(--xbox-radius); transition: From 5d9eb64576cb057241d840217b4671b3c8e20b42 Mon Sep 17 00:00:00 2001 From: Trevor Date: Wed, 10 Jun 2026 13:37:47 -0700 Subject: [PATCH 5/5] Enhance index.mdx and style.css for improved readability and consistency - Made section titles bold in index.mdx for better emphasis - Adjusted CSS styles to ensure consistent font weights and improved visual hierarchy - Cleaned up spacing and formatting in index.mdx for better layout --- index.mdx | 92 ++++++++++++++++++++++++++++++++----------------------- style.css | 5 +-- 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/index.mdx b/index.mdx index a2287193..58dc68a9 100644 --- a/index.mdx +++ b/index.mdx @@ -18,7 +18,7 @@ Jump into the guides most teams use first, from environment setup to release not
- Get started with the GDK + Get started with the GDK

Pick a development path, install the toolchain, and build your first console or PC project.

Read guide →
@@ -27,13 +27,14 @@ Jump into the guides most teams use first, from environment setup to release not
- Onboard with ID@Xbox + Onboard with ID@Xbox

Complete the NDA, concept approval, and Partner Center setup that unlock GDK access.

Read guide → +
@@ -41,7 +42,7 @@ Jump into the guides most teams use first, from environment setup to release not
- Download & install + Download & install

Grab the latest GDK release and configure Visual Studio for Xbox and Windows targets. @@ -53,12 +54,13 @@ Jump into the guides most teams use first, from environment setup to release not

@@ -71,13 +73,15 @@ Choose the entry point that matches your platform, engine, and stage of developm Write once with the shared Game Core model and target Xbox Series X|S, Xbox One, and Windows PC. - - Add player accounts, economy, multiplayer, and live ops with PlayFab managed services. - + + Add player accounts, economy, multiplayer, and live ops with PlayFab managed + services. + - - Wire up achievements, leaderboards, multiplayer, cloud saves, and social features. - + + Wire up achievements, leaderboards, multiplayer, cloud saves, and social + features. + Package your title, meet certification, and ship to the Microsoft Store and Xbox. @@ -93,21 +97,21 @@ The features most teams reach for while building a title. Define identity, capabilities, and packaging metadata in `MicrosoftGame.config`. - - Build MSIXVC and loose packages for testing, submission, and distribution. - + + Build MSIXVC and loose packages for testing, submission, and distribution. + - - Persist progress with connected storage that roams across devices. - + + Persist progress with connected storage that roams across devices. + - - Handle gamepads, keyboard, and mouse with the GameInput API. - + + Handle gamepads, keyboard, and mouse with the GameInput API. + - - Connect players with secure sockets, peer-to-peer, and service traffic. - + + Connect players with secure sockets, peer-to-peer, and service traffic. + Manage local and connected storage across console and PC. @@ -123,21 +127,33 @@ Tools, samples, and references to keep you moving. Profilers, deployment, and diagnostics for console and PC development. - - Set up project templates, debugging, and deployment for GDK titles. - - - - Configure sandboxes, test accounts, and service-side settings. - - - - Gaming Runtime, Xbox Services, and platform API documentation. - - - - Look up GDK and Xbox Services error codes and how to resolve them. - + + Set up project templates, debugging, and deployment for GDK titles. + + + + Configure sandboxes, test accounts, and service-side settings. + + + + Gaming Runtime, Xbox Services, and platform API documentation. + + + + Look up GDK and Xbox Services error codes and how to resolve them. + Browse official, buildable samples on GitHub for every major feature. @@ -156,4 +172,4 @@ Use the getting started guides to set up your environment, choose a platform pat Onboarding → -
\ No newline at end of file +
diff --git a/style.css b/style.css index ce5ce627..12c146fd 100644 --- a/style.css +++ b/style.css @@ -974,10 +974,10 @@ mdx-content a:not(card a) { padding: 16px; } -.xbox-quick-body h3 { +.xbox-quick-title { margin: 0; font-size: 16px; - font-weight: 700; + font-weight: 700 !important; letter-spacing: -0.2px; color: var(--xbox-text-main); } @@ -986,6 +986,7 @@ mdx-content a:not(card a) { margin: 0; font-size: 14px; line-height: 20px; + font-weight: 400; color: var(--xbox-text-subtle); }