Skip to content

Improve mobile UX consistency and accessibility - #1870

Open
David Pine (IEvangelist) wants to merge 1 commit into
mainfrom
ievangelist-mobile-ux-consistency
Open

David Pine (IEvangelist) wants to merge 1 commit into
mainfrom
ievangelist-mobile-ux-consistency

Conversation

@IEvangelist

@IEvangelist David Pine (IEvangelist) commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Summary

Improve the mobile experience across documentation, the homepage, catalogs, the resource hub, community pages, translations, and both API references while preserving the site's visual identity and desktop information architecture.

  • Standardize mobile touch targets, navigation icon sizing, readable type, and wrapping labels. Keep logo, search, Try, and one menu in the compact header, with secondary actions in the shared menu.
  • Make breadcrumbs show a direct parent link with a disclosure for the full ordered trail. Correct expanded-state announcements, keyboard dismissal, focus handling, and Astro navigation cleanup for menus and page actions.
  • Contain long C#/TypeScript signatures and translation tables without page-wide overflow. Replace clipped, keyboard-focusable sample tags with an accessible disclosure, and improve footer preferences, contrast, and media labels.
  • Add a regression matrix covering 35 route families, touch controls, light/dark themes, enlarged text, landscape, forced colors, and repeated client-side navigation. Persist the page-action fixes through the existing pnpm patch mechanism.

Mobile screenshots

58 screenshots cover all 35 audited page families, expanded controls, representative dark themes, and 320px stress cases. Primary captures use a 390x844 touch viewport. Click an image for its full-size view.

Homepage (1)
Homepage
/
390x844, light
Homepage at 390x844 in light mode
Documentation (4)
Documentation landing
/docs/
390x844, light
First-app tutorial and language selector
/get-started/first-app/
390x844, light
Documentation landing at 390x844 in light mode First-app tutorial and language selector at 390x844 in light mode
CLI installation guide
/get-started/install-cli/
390x844, light
CLI command reference
/reference/cli/commands/aspire-run/
390x844, light
CLI installation guide at 390x844 in light mode CLI command reference at 390x844 in light mode
Integrations and deployment (5)
Integrations landing
/integrations/
390x844, light
Integration gallery
/integrations/gallery/
390x844, light
Integrations landing at 390x844 in light mode Integration gallery at 390x844 in light mode
Integration guide
/integrations/caching/redis/
390x844, light
Dashboard landing
/dashboard/
390x844, light
Integration guide at 390x844 in light mode Dashboard landing at 390x844 in light mode
Deployment landing
/deployment/
390x844, light
Deployment landing at 390x844 in light mode
Community and media (5)
Community landing
/community/
390x844, light
Live videos and provider tabs
/community/videos/
390x844, light
Community landing at 390x844 in light mode Live videos and provider tabs at 390x844 in light mode
Contributor listing
/community/contributors/
390x844, light
Open-source acknowledgements
/community/thanks/
390x844, light
Contributor listing at 390x844 in light mode Open-source acknowledgements at 390x844 in light mode
Conference page
/aspireconf/
390x844, light
Conference page at 390x844 in light mode
Catalogs and resource hub (7)
Sample catalog
/reference/samples/
390x844, light
Sample details
/reference/samples/aspire-shop/
390x844, light
Sample catalog at 390x844 in light mode Sample details at 390x844 in light mode
Container image catalog
/reference/container-images/
390x844, light
Resource hub
/hub/
390x844, light
Container image catalog at 390x844 in light mode Resource hub at 390x844 in light mode
Resource browser
/hub/browse/
390x844, light
Glossary listing
/hub/glossary/
390x844, light
Resource browser at 390x844 in light mode Glossary listing at 390x844 in light mode
Long glossary article title
/hub/glossary/resourcenotificationservice/
390x844, light
Long glossary article title at 390x844 in light mode
Localization and supporting pages (5)
Release notes
/whats-new/aspire-13-6/
390x844, light
Translation dashboard
/i18n/
390x844, light
Release notes at 390x844 in light mode Translation dashboard at 390x844 in light mode
404 page
/404/
390x844, light
German tutorial
/de/get-started/first-app/
390x844, light
404 page at 390x844 in light mode German tutorial at 390x844 in light mode
Japanese tutorial
/ja/get-started/first-app/
390x844, light
Japanese tutorial at 390x844 in light mode
API reference (8)
C# API index
/reference/api/csharp/
390x844, light
C# package details
/reference/api/csharp/aspire.hosting.redis/
390x844, light
C# API index at 390x844 in light mode C# package details at 390x844 in light mode
C# type and inheritance
/reference/api/csharp/aspire.hosting.redis/redisresource/
390x844, light
C# long member signatures
/reference/api/csharp/aspire.hosting.redis/redisbuilderextensions/methods/
390x844, light
C# type and inheritance at 390x844 in light mode C# long member signatures at 390x844 in light mode
TypeScript API index
/reference/api/typescript/
390x844, light
TypeScript module details
/reference/api/typescript/aspire.hosting.redis/
390x844, light
TypeScript API index at 390x844 in light mode TypeScript module details at 390x844 in light mode
TypeScript handle type
/reference/api/typescript/aspire.hosting.redis/redisresource/
390x844, light
TypeScript member details
/reference/api/typescript/aspire.hosting.redis/redisresource/withmodule/
390x844, light
TypeScript handle type at 390x844 in light mode TypeScript member details at 390x844 in light mode
Expanded controls (14)
Expanded mobile site menu
/
390x844, light
Expanded documentation menu and badges
/get-started/install-cli/
390x844, light
Expanded mobile site menu at 390x844 in light mode Expanded documentation menu and badges at 390x844 in light mode
Expanded API sidebar
/reference/api/csharp/aspire.hosting.redis/
390x844, light
Full breadcrumb trail
/reference/api/csharp/aspire.hosting.redis/redisbuilderextensions/methods/
390x844, light
Expanded API sidebar at 390x844 in light mode Full breadcrumb trail at 390x844 in light mode
Open page-action menu
/get-started/install-cli/
390x844, light
Share page-action menu
/hub/glossary/apphost/
390x844, light
Open page-action menu at 390x844 in light mode Share page-action menu at 390x844 in light mode
Resource filter options
/hub/browse/
390x844, light
API version filter
/reference/api/csharp/
390x844, light
Resource filter options at 390x844 in light mode API version filter at 390x844 in light mode
Expanded sample tag filters
/reference/samples/
390x844, light
Footer theme and language preferences
/
390x844, light
Expanded sample tag filters at 390x844 in light mode Footer theme and language preferences at 390x844 in light mode
Language preference menu
/get-started/install-cli/
390x844, light
Locally scrollable translation file-status table
/i18n/
390x844, light
Language preference menu at 390x844 in light mode Locally scrollable translation file-status table at 390x844 in light mode
Long API parameter types and metadata
/reference/api/csharp/aspire.hosting.redis/redisbuilderextensions/methods/
390x844, light
Expanded release navigation
/get-started/install-cli/
390x844, light
Long API parameter types and metadata at 390x844 in light mode Expanded release navigation at 390x844 in light mode
Dark theme (5)
Homepage in dark mode
/
390x844, dark
Integration gallery in dark mode
/integrations/gallery/
390x844, dark
Homepage in dark mode at 390x844 in dark mode Integration gallery in dark mode at 390x844 in dark mode
API member reference in dark mode
/reference/api/csharp/aspire.hosting.redis/redisbuilderextensions/methods/
390x844, dark
Resource browser in dark mode
/hub/browse/
390x844, dark
API member reference in dark mode at 390x844 in dark mode Resource browser in dark mode at 390x844 in dark mode
Expanded site menu in dark mode
/
390x844, dark
Expanded site menu in dark mode at 390x844 in dark mode
Narrow phones (4)
Homepage at 320px
/
320x844, light
Installation guide at 320px
/get-started/install-cli/
320x844, light
Homepage at 320px at 320x844 in light mode Installation guide at 320px at 320x844 in light mode
Long API parameter types at 320px
/reference/api/csharp/aspire.hosting.redis/redisbuilderextensions/methods/
320x844, light
Contained translation table at 320px
/i18n/
320x844, light
Long API parameter types at 320px at 320x844 in light mode Contained translation table at 320px at 320x844 in light mode

Third-party links and affiliations

None. Existing third-party destinations are preserved.

Validation

Commands run from src\frontend:

  • pnpm exec playwright test mobile-ux.spec.ts --workers=2 --reporter=list — passed: 28 tests; 2 intentionally skipped across the existing desktop, tablet, and mobile projects.
  • pnpm exec playwright test mobile-ux.spec.ts --workers=2 --reporter=list --grep 'Markdown copying|shared menus|page actions have' — passed: 9 tests, confirming the final copy/menu/dropdown lifecycle fixes.
  • pnpm exec playwright test dev-browse.spec.ts dev-layout.spec.ts --workers=2 --reporter=list --grep 'shared breadcrumbs|desktop header actions' — passed: 12 tests, preserving existing breadcrumb and desktop-header contracts.
  • pnpm exec vitest run --config vitest.config.ts tests\unit\custom-components.vitest.test.ts tests\unit\header-environment-badge.vitest.test.ts tests\unit\api-reference-components.vitest.test.ts tests\unit\api-reference.vitest.test.ts tests\unit\search-presentation.vitest.test.ts tests\unit\site-tour.vitest.test.ts tests\unit\banner-render.vitest.test.ts tests\unit\navigation-theme.vitest.test.ts tests\unit\icon-styles.vitest.test.ts tests\unit\stream-embeds.vitest.test.ts tests\unit\live-status.vitest.test.ts — passed: 224 tests in 11 files.
  • pnpm exec tsc --noEmit — not clean: 239 pre-existing diagnostics. An in-memory comparison against the base commit found 239 baseline and 239 current diagnostics, with none introduced by this change; isolated strict checking of the changed mobile-controller scripts passed.

No local production build was run, in accordance with repository guidance. Production search is disabled in the dev preview and requires CI/preview verification. Physical iPhone, Android, and Safari checks were unavailable; browser emulation is not device or accessibility certification.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The global badge rule removes the environment identifier from every desktop layout.

1 open finding
What changed in this PR

Improves responsive usability and accessibility across navigation, documentation components, catalogs, API references, and translation views.

Changes:

  • Introduces a shared mobile menu, responsive breadcrumbs, and consistent touch-target/type tokens.
  • Improves overflow, contrast, focus handling, and client-navigation lifecycle behavior.
  • Adds broad unit/E2E regression coverage and patches page-action dropdown behavior.
File Description
src/​frontend/​tests/​unit/​custom-components.vitest.test.ts Tests media labels and breadcrumbs.
src/​frontend/​tests/​e2e/​ui-regressions.spec.ts Updates responsive UI assertions.
src/​frontend/​tests/​e2e/​mobile-ux.spec.ts Adds mobile accessibility regression matrix.
src/​frontend/​tests/​e2e/​live-status.spec.ts Opens live controls through mobile menu.
src/​frontend/​tests/​e2e/​live-embeds.spec.ts Updates mobile live navigation.
src/​frontend/​tests/​e2e/​live-accessibility.spec.ts Covers menu-based live controls.
src/​frontend/​tests/​e2e/​helpers.ts Adds mobile-menu test helper.
src/​frontend/​tests/​e2e/​dev-layout.spec.ts Updates header and action-menu expectations.
src/​frontend/​tests/​e2e/​dev-browse.spec.ts Updates breadcrumbs and touch sizing tests.
src/​frontend/​tests/​e2e/​cookie-consent.spec.ts Supports menu-based video navigation.
src/​frontend/​tests/​e2e/​api-cross-language-navigation.spec.ts Extends navigation timeout.
src/​frontend/​src/​styles/​site.css Adds responsive layout and touch styles.
src/​frontend/​src/​styles/​search-controls.css Enlarges mobile search controls.
src/​frontend/​src/​styles/​glossary-term.css Targets unique action dropdown classes.
src/​frontend/​src/​styles/​dev-hub.css Updates dropdown targeting.
src/​frontend/​src/​styles/​aspire-brand.css Defines shared typography and sizing tokens.
src/​frontend/​src/​styles/​api-reference.css Improves API wrapping and contrast.
src/​frontend/​src/​content/​docs/​community/​videos.mdx Documents mobile live-navigation behavior.
src/​frontend/​src/​content/​docs/​community/​thanks.mdx Adds coarse/mobile spacing.
src/​frontend/​src/​content/​docs/​community/​contributor-guide.mdx Documents responsive design conventions.
src/​frontend/​src/​components/​YouTubeEmbed.astro Adds fallback iframe label.
src/​frontend/​src/​components/​TwitchEmbed.astro Adds fallback iframe label.
src/​frontend/​src/​components/​TopicHero.astro Improves wrapping, sizing, and contrast.
src/​frontend/​src/​components/​starlight/​Sidebar.astro Adds shared mobile links.
src/​frontend/​src/​components/​starlight/​Search.astro Uses shared metadata sizing.
src/​frontend/​src/​components/​starlight/​PageTitle.astro Improves action wrapping and dropdown sizing.
src/​frontend/​src/​components/​starlight/​PageFrame.astro Adds mobile navigation on all layouts.
src/​frontend/​src/​components/​starlight/​MobileSiteLinks.astro Implements shared mobile destinations.
src/​frontend/​src/​components/​starlight/​MobileMenuToggle.astro Implements accessible menu lifecycle.
src/​frontend/​src/​components/​starlight/​Header.astro Simplifies and measures compact header.
src/​frontend/​src/​components/​starlight/​Footer.astro Enlarges compact footer controls.
src/​frontend/​src/​components/​starlight/​Banner.astro Enlarges banner dismissal target.
src/​frontend/​src/​components/​SessionGrid.astro Improves filter readability and contrast.
src/​frontend/​src/​components/​SampleGrid.astro Adds accessible tag disclosure.
src/​frontend/​src/​components/​SampleCard.astro Improves text and link sizing.
src/​frontend/​src/​components/​QuickStartJourney.astro Uses body-text token.
src/​frontend/​src/​components/​PivotSelector.astro Enlarges selector controls.
src/​frontend/​src/​components/​LiveVideosTabs.astro Uses readable body sizing.
src/​frontend/​src/​components/​LivePip.astro Restores focus to a visible control.
src/​frontend/​src/​components/​LicenseBadge.astro Adds focus and touch sizing.
src/​frontend/​src/​components/​LearnMore.astro Allows long labels to wrap.
src/​frontend/​src/​components/​Integrations.astro Improves toggle sizing and wrapping.
src/​frontend/​src/​components/​IntegrationCard.astro Removes title clipping.
src/​frontend/​src/​components/​IconLinkCard.astro Allows card-title wrapping.
src/​frontend/​src/​components/​home/​HomeTestimonials.astro Uses metadata sizing token.
src/​frontend/​src/​components/​home/​HomeHero.astro Improves mobile text sizing.
src/​frontend/​src/​components/​FooterSocials.astro Enlarges social touch targets.
src/​frontend/​src/​components/​FooterPreferences.astro Enlarges preference controls.
src/​frontend/​src/​components/​FeatureShowcase.astro Uses readable body sizing.
src/​frontend/​src/​components/​dev-center/​ResourceBrowser.astro Makes pagination wrap and scale.
src/​frontend/​src/​components/​dev-center/​BrowseDropdown.astro Enlarges coarse-pointer controls.
src/​frontend/​src/​components/​CustomSelect.astro Improves mobile option sizing and wrapping.
src/​frontend/​src/​components/​CTABanner.astro Improves CTA text and wrapping.
src/​frontend/​src/​components/​ContainerImages.astro Uses metadata sizing token.
src/​frontend/​src/​components/​CapabilityGrid.astro Uses readable body sizing.
src/​frontend/​src/​components/​Breadcrumb.astro Adds parent-link and full-trail layouts.
src/​frontend/​src/​components/​AppHostBuilder.astro Enlarges editor controls.
src/​frontend/​src/​components/​api-reference/​VersionFilter.astro Improves filter sizing and contrast.
src/​frontend/​src/​components/​api-reference/​TypeHero.astro Uses API contrast token.
src/​frontend/​src/​components/​api-reference/​PolyglotAttributePanel.astro Prevents metadata overflow.
src/​frontend/​src/​components/​api-reference/​MemberOverviewList.astro Allows identifiers to wrap.
src/​frontend/​src/​components/​api-reference/​MemberCardBase.astro Constrains long signatures.
src/​frontend/​src/​components/​api-reference/​MemberCard.astro Wraps long member names.
src/​frontend/​src/​components/​api-reference/​InpageSearch.astro Enlarges mobile search controls.
src/​frontend/​src/​components/​api-reference/​DocContent.astro Improves link visibility and contrast.
src/​frontend/​src/​components/​api-reference/​ApiSearchBar.astro Uses shared small-text tokens.
src/​frontend/​pnpm-workspace.yaml Registers page-actions patch.
src/​frontend/​pnpm-lock.yaml Records patched dependency hash.
src/​frontend/​patches/​starlight-page-actions@0.7.0.patch Fixes action menus and copy lifecycle.
src/​frontend/​lunaria/​styles.css Contains and labels translation tables.
src/​frontend/​lunaria/​renderer.config.ts Wraps file status in a focusable region.
src/​frontend/​astro.config.mjs Registers navigation overrides.
Files not reviewed (1)
  • src/frontend/pnpm-lock.yaml: Generated file

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +1503 to +1505
header .title-wrapper .sl-badge {
display: none;
}
@aspire-repo-bot

Copy link
Copy Markdown
Contributor

Frontend HTML artifact ready

The latest frontend build uploaded the frontend-dist artifact for PR #1870. Use the VS Code button below to open this PR with GitHub Artifacts Explorer and browse the built HTML locally.

VS Code: Open PR #1870 artifacts

This comment updates automatically when a new frontend build artifact is uploaded.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants