Skip to content

Fix release hub navigation and unify search recovery UX - #1699

Merged
David Pine (IEvangelist) merged 6 commits into
release/13.6from
ievangelist-release-navigation-compatibility
Sep 19, 2026
Merged

David Pine (IEvangelist) merged 6 commits into
release/13.6from
ievangelist-release-navigation-compatibility

Conversation

@IEvangelist

@IEvangelist David Pine (IEvangelist) commented Sep 18, 2026 •

Copy link
Copy Markdown
Member

Summary

Targets release/13.6.

  • Preserve <ClientRouter fallback="swap" /> while repairing deferred resource artwork, navigation-aware loading recovery, and Browse/Glossary router-owned history and lifecycle restoration.
  • Share search input and no-results presentation across Browse, Glossary, all six API reference routes, Integrations, Samples, AspireConf, the sidebar, and native Pagefind UI while preserving contextual controls and matching behavior.
  • Use data-aware recovery that retains useful queries or filters. Empty results show one recommended action without competing toolbar resets; nonempty results show at most one contextual Clear filters / Reset all action. The input X clears only text.
  • Align typography, count labels, focus outlines, active-filter chips and responsive empty-state layout. Keep the sidebar's original background, funnel icon and compact presentation.
  • Rename DevLayout to HubLayout and retain subtle grain on Hub control containers.
  • Use theme text colors for the header wordmark/icons, with dark icons on selected Hub/Videos backgrounds. Order the actions Install CLI, Videos, Hub, Cookies while retaining existing responsive visibility. Videos and Hub share selected-state styling that follows client navigation.
  • Add regression coverage and contributor guidance for navigation, reusable controls, recovery semantics and visual consistency.

Third-party links and affiliations

None. New URL literals are test fixtures or the SVG XML namespace, not new third-party navigation links.

Validation

  • Initial combined unit matrix: 240 passed across nine files. Final rerun of eight affected component, lifecycle and recovery suites: 206 passed. These runs overlap and are not additive totals.
  • 105 integrated browser cases passed across desktop, tablet and mobile Chromium for API/gallery recovery, localization, sidebar behavior, shared typography/focus/counts and native Pagefind presentation.
  • 66 follow-up API/gallery hierarchy and navigation cases passed, including the reported Integrations state and all six API routes.
  • 18 Hub action-hierarchy and native/forced-swap navigation cases passed.
  • Final header order, selected Videos/Hub styling, keyboard focus, client navigation and responsive geometry matrix: 11 passed, 4 skipped by existing viewport guards.
  • Sidebar background checks: 3 passed across viewport projects, covering both themes.
  • Focused grain, glossary stacked-layout, deferred-image/navigation and early-input initialization regressions passed.
  • Typed ESLint for changed TypeScript/test files and whitespace checks passed.
  • Dev server stopped after validation; no listener remains on port 4334. Working tree clean.

No local full-site build was run. Native Pagefind UI was exercised with a controlled fixture; production search-index/ranking behavior remains a CI-built-site validation. Full CI status is tracked by the PR checks.

Preserve Astro ClientRouter lifecycle and history ownership, restore deferred artwork after navigation, and align search controls and contextual recovery across the hub, API reference and galleries.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Retain brand artwork, button backgrounds and visible focus indicators while removing accent-colored header text and icons.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
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.

🔵 Needs a closer look

Address the dark-theme header contrast, missing locale translations, and sidebar touch-height regression.

Pull request overview

This PR unifies search and recovery UX across the Hub, API references, catalogs, sidebar, and Pagefind while improving navigation lifecycle handling and deferred artwork.

Changes:

  • Adds shared search controls, empty states, recovery actions, and styling.
  • Preserves filter intent and history across navigation.
  • Expands unit, browser, visual, and accessibility regression coverage.

Three moderate follow-ups remain: dark-theme header contrast, translations for supported locales, and sidebar touch-target sizing.

File summaries
File Summary
src/frontend/tests/unit/search-recovery.vitest.test.ts Tests recovery decisions.
src/frontend/tests/unit/search-presentation.vitest.test.ts Tests shared search presentation.
src/frontend/tests/unit/resource-browser.vitest.test.ts Tests Browse rendering and images.
src/frontend/tests/unit/filter-history.vitest.test.ts Tests filter history behavior.
src/frontend/tests/unit/dev-glossary.vitest.test.ts Tests Glossary recovery.
src/frontend/tests/unit/custom-components.vitest.test.ts Expands component coverage.
src/frontend/tests/unit/api-search-recovery.vitest.test.ts Tests API recovery.
src/frontend/tests/unit/api-search-lifecycle.vitest.test.ts Tests API lifecycle behavior.
src/frontend/tests/typecheck/component-props.contracts.ts Validates component contracts.
src/frontend/tests/e2e/site-search.spec.ts Tests Pagefind search behavior.
src/frontend/tests/e2e/search-visual-parity.spec.ts Tests visual consistency.
src/frontend/tests/e2e/filter-navigation.spec.ts Tests filter navigation.
src/frontend/tests/e2e/dev-navigation.spec.ts Tests Hub navigation.
src/frontend/tests/e2e/dev-layout.spec.ts Tests themed header controls.
src/frontend/tests/e2e/dev-grain.spec.ts Tests Hub grain styling.
src/frontend/tests/e2e/dev-glossary.spec.ts Tests Glossary interactions.
src/frontend/tests/e2e/dev-empty-recovery.spec.ts Tests contextual recovery.
src/frontend/tests/e2e/dev-browse.spec.ts Tests Browse behavior.
src/frontend/tests/e2e/api-search-contract.spec.ts Tests API search contracts.
src/frontend/src/utils/dev-center/resource-card-html.ts Adds deferred image fallback markup.
src/frontend/src/styles/site.css Aligns theme-aware site colors.
src/frontend/src/styles/search-controls.css Adds shared search styling.
src/frontend/src/styles/dev-hub.css Adds Hub grain styling.
src/frontend/src/pages/reference/api/typescript/index.astro Integrates TypeScript API search.
src/frontend/src/pages/reference/api/typescript/[module]/index.astro Integrates module search.
src/frontend/src/pages/reference/api/typescript/[module]/[item]/index.astro Integrates item search.
src/frontend/src/pages/reference/api/csharp/index.astro Integrates C# API search.
src/frontend/src/pages/reference/api/csharp/[package]/index.astro Integrates package search.
src/frontend/src/pages/reference/api/csharp/[package]/[type]/index.astro Integrates type search.
src/frontend/src/pages/reference/api/_search-presentation.ts Centralizes API recovery presentation.
src/frontend/src/pages/hub/index.astro Migrates the Hub layout.
src/frontend/src/pages/hub/glossary/index.astro Migrates the Glossary layout.
src/frontend/src/pages/hub/glossary/[term].astro Migrates Glossary detail layout.
src/frontend/src/pages/hub/browse/index.astro Migrates Browse layout.
src/frontend/src/content/i18n/en.json Adds catalog search strings.
src/frontend/src/content/docs/community/contributor-guide.mdx Documents search conventions.
src/frontend/src/components/starlight/Search.astro Aligns native Pagefind UX.
src/frontend/src/components/starlight/Header.astro Updates header theme colors.
src/frontend/src/components/SessionGrid.astro Adds shared search presentation.
src/frontend/src/components/search/SearchField.astro Provides reusable search input.
src/frontend/src/components/search/SearchEmptyState.astro Provides reusable empty state.
src/frontend/src/components/search/search-empty-state.ts Implements recovery helpers.
src/frontend/src/components/Integrations.astro Adds integration search recovery.
src/frontend/src/components/dev-center/ResourceBrowser.ts Adds Browse recovery and history sync.
src/frontend/src/components/dev-center/ResourceBrowser.astro Adds Browse controls and fallback markup.
src/frontend/src/components/dev-center/HubLayout.astro Defines Hub layout behavior.
src/frontend/src/components/dev-center/GlossaryBrowser.ts Adds Glossary recovery and history sync.
src/frontend/src/components/dev-center/GlossaryBrowser.astro Adds Glossary empty-state markup.
src/frontend/src/components/dev-center/filter-history.ts Preserves router history and lifecycle state.
src/frontend/src/components/dev-center/empty-results.ts Builds contextual recovery messages.
src/frontend/src/components/dev-center/BrowseDropdown.astro Updates filter control styling.
src/frontend/src/components/CatalogSearchActiveFilters.astro Renders active-filter chips.
src/frontend/src/components/api-reference/VersionFilter.astro Improves filter reset behavior.
src/frontend/src/components/api-reference/InpageSearch.astro Composes shared API search controls.
src/frontend/src/components/api-reference/inpage-search-sync.ts Initializes clear-button state.
src/frontend/src/components/api-reference/ApiSearchBar.astro Uses shared API search controls.
Review details

Suppressed comments (3)

src/frontend/src/components/starlight/Header.astro:431

  • On dark theme, --sl-color-text is white while this active Dev Hub button uses --sl-color-text-accent (--aspire-color-secondary, a light lavender) as its background, producing insufficient contrast for the icon. The previous var(--sl-color-bg) foreground was contrast-safe; retain a contrast-safe foreground here or use a theme-specific token.
      color: var(--aspire-color-black);

src/frontend/src/content/i18n/en.json:2

  • The new catalogSearch namespace is added only to en.json, while the repository ships 15 other locale files (for example src/frontend/src/content/i18n/fr.json already carries translated integrations keys). Every localized page now calls these keys for search labels, statuses, and recovery actions, so non-English builds will render missing-key/English fallback text instead of a localized shared UX. Add the namespace to each supported locale (or provide an explicit, tested fallback) before enabling these strings everywhere.
  "catalogSearch": {

src/frontend/src/styles/search-controls.css:144

  • This coarse-pointer rule applies to every .search-field, including the sidebar's data-search-size="sm" wrapper. It overrides the small 2.5rem token and makes the sidebar input 3rem tall on touch viewports, undoing the sidebar's compact 2.75rem mobile sizing. Scope the touch-target override to non-small fields (or add a sidebar-specific override) so the sidebar remains compact.
  • Files reviewed: 59/59 changed files
  • Comments generated: 0
  • Review effort level: Lite

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

Keep Install CLI, Videos, Hub and Cookies in DOM order on both layouts; share the selected Hub treatment with Videos and cover route changes, focus and responsive geometry.

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

Copy link
Copy Markdown
Contributor

Frontend HTML artifact ready

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

VS Code: Open PR #1699 artifacts

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

Reserve room for touch-sized reset actions before filters activate. Align glossary and surface assertions with the requested UX, and use an exact Pagefind phrase to test zero results without prefix fallback matches.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Refresh query URLs even when shortcut nodes are unchanged. Reproduce native clear behavior in both themes across the browser matrix, retaining production-index coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@IEvangelist
David Pine (IEvangelist) merged commit fd6a066 into release/13.6 Sep 19, 2026
11 checks passed
@IEvangelist
David Pine (IEvangelist) deleted the ievangelist-release-navigation-compatibility branch September 19, 2026 00:21
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