Demo findability prototypes together#3256
Draft
theletterf wants to merge 298 commits into
Draft
Conversation
- Walk ancestor li.group-navigation nodes and add nav-v2-active-ancestor when the folder row is not .current (same color as current; chevron uses currentColor). - Folder row: same URL toggles expand/collapse only; navigating to another URL keeps the folder open (checkbox checked) so parent clicks do not collapse the subtree. - Outside-click collapse leaves folders open when the click target lies on an ancestor folder row in the same branch (folderStaysOpenForNavClick). - Remove any leftover nav-v2-active-label-ancestor class on refresh.
- Set top-level tree li padding-bottom to 32px; margins for label--top and label--nested; first nested header under an icon title uses margin-top 12px. - Remove hardcoded Platform subsection li classes; rely on generic markup and CSS. - Adjust border and nested label colors to match design. - Nav link default/hover colors (#1d2a3e, #f1f6ff); wrap label text instead of single-line ellipsis; clip nav for Tippy; styles for nav-v2-active-ancestor rows. - Drop nav-v2-truncate Tippy theme rules (tooltips disabled while text wraps).
Align with elastic/docs-content#5279: move perform-index-operations from under Index basics to a sibling group under The Elasticsearch data store, and add new index-operations-reference.md as its child. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CSS: force default text colour on nav-v2-active-ancestor rows (keep font-weight); hover/grey-40 variants; scope global #pages-nav .current away from V2 sidebar links. - JS: when several a.sidebar-link.current share the URL, use the deepest in the tree so subtree/ancestor classes attach to the correct rows. Made-with: Cursor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The merge from main changed the FileSystem parameter from `fs` to `readFs`/`writeFs` (ScopedFileSystem). The nav-v2 line reading navigation-v2.yml was not auto-resolved. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… PRs (#2971) Add IsAotCompatible to 12 library projects referenced by docs-builder so Roslyn's trim/AOT analyzers (IL2026/IL3050) run during regular builds. This catches AOT issues at compile time, removing the need for the expensive native ILC publish step on pull requests. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* HTML: Omit version meta tags for versionless pages Versionless pages (serverless, cloud, etc.) were rendering the sentinel value 99999.0+ in product_version and DC.identifier meta tags. Now these tags are omitted entirely when the page's versioning system is versionless. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * HTML: Restore required modifier on CurrentVersion property Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…3025) * Layout: Adapt to static elastic-nav by making secondary nav sticky The global elastic-nav.js (v2026-03) changed the header from fixed to static positioning. This makes the secondary docs nav sticky at the top and simplifies --offset-top to match its height. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Only make secondary nav sticky on md+ viewports On mobile the sticky secondary nav takes too much vertical space. Keep it static on small screens (--offset-top: 0) and only sticky on md+ where it provides persistent navigation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Upgrade lodash to 4.18.x to fix high severity vulnerabilities Fixes code injection via _.template (GHSA-r5fr-rjxr-66jc) and prototype pollution via _.unset/_.omit (GHSA-f23m-r3pf-42rh). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Add bottom border to secondary nav The visual separator was coming from #main-container's border-top, which scrolls away. Adding border-b to the nav itself keeps the line visible while sticky. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Remove border-top from main-container The secondary nav now has border-b, so the main-container border-t was causing a double border. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rvice (#3023) IncrementalDeployService accepted a single ScopedFileSystem used for both reading and writing. The deploy commands passed RealRead which lacks AllowedSpecialFolder.Temp, causing ScopedFileSystemException when AwsS3SyncApplyStrategy stages files in /tmp/ for S3 upload. Rather than just swapping RealRead for RealWrite, properly separate the concerns: the service now accepts distinct read and write filesystems, using each for the appropriate operations (plan file reads vs temp dir writes). This also fixes the Plan command which was writing its output file through a read-scoped filesystem. Made-with: Cursor
* Add skip-labels to evaluate-pr's output * Add tests * Resolve conflicts * Fix docs-builder redirect tests (#3008) * Fix redirect tests * Remove changelog redirects implemented elsewhere * Search: Use default semantic_text inference, remove Jina mappings (#3014) Elasticsearch Serverless now defaults semantic_text to Jina, making the explicit Jina sub-fields redundant and the ELSER inference ID unnecessary. This removes both inference ID constants, all .jina field mappings, and lets semantic_text fields use the platform default. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Update config/versions.yml eck 3.3.2 (#3019) Made with ❤️️ by updatecli Co-authored-by: elastic-observability-automation[bot] <180520183+elastic-observability-automation[bot]@users.noreply.github.com> * Deploy: Use write-scoped filesystem for apply command (#3021) The deploy apply command used RealRead which lacks AllowedSpecialFolder.Temp, causing ScopedFileSystemException when AwsS3SyncApplyStrategy stages files in /tmp/ for S3 upload. Switch to RealWrite which permits temp directory access. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Update Azure EDOT CF version (#3022) +CC @zmoog * Enable AOT/trim analyzers on library projects and skip AOT publish on PRs (#2971) Add IsAotCompatible to 12 library projects referenced by docs-builder so Roslyn's trim/AOT analyzers (IL2026/IL3050) run during regular builds. This catches AOT issues at compile time, removing the need for the expensive native ILC publish step on pull requests. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * HTML: Omit version meta tags for versionless pages (#3020) * HTML: Omit version meta tags for versionless pages Versionless pages (serverless, cloud, etc.) were rendering the sentinel value 99999.0+ in product_version and DC.identifier meta tags. Now these tags are omitted entirely when the page's versioning system is versionless. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * HTML: Restore required modifier on CurrentVersion property Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Adapt to static elastic-nav by making secondary nav sticky (#3025) * Layout: Adapt to static elastic-nav by making secondary nav sticky The global elastic-nav.js (v2026-03) changed the header from fixed to static positioning. This makes the secondary docs nav sticky at the top and simplifies --offset-top to match its height. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Only make secondary nav sticky on md+ viewports On mobile the sticky secondary nav takes too much vertical space. Keep it static on small screens (--offset-top: 0) and only sticky on md+ where it provides persistent navigation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: Upgrade lodash to 4.18.x to fix high severity vulnerabilities Fixes code injection via _.template (GHSA-r5fr-rjxr-66jc) and prototype pollution via _.unset/_.omit (GHSA-f23m-r3pf-42rh). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Add bottom border to secondary nav The visual separator was coming from #main-container's border-top, which scrolls away. Adding border-b to the nav itself keeps the line visible while sticky. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Layout: Remove border-top from main-container The secondary nav now has border-b, so the main-container border-t was causing a double border. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * lint --------- Co-authored-by: Lisa Cawley <lcawley@elastic.co> Co-authored-by: Jan Calanog <jan.calanog@elastic.co> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Co-authored-by: elastic-observability-automation[bot] <180520183+elastic-observability-automation[bot]@users.noreply.github.com> Co-authored-by: Fabrizio Ferri-Benedetti <fabri.ferribenedetti@elastic.co>
…e parsed Made-with: Cursor
…hen empty Made-with: Cursor
…tatic hash on file change Made-with: Cursor
…er states Made-with: Cursor
Made-with: Cursor
* feat(nav-v2): wire entire Install, deploy, and administer section Replace ~97 placeholder title: entries with real page: cross-links across the full "Install, deploy, and administer" label section: - Distributed architecture: 6 pages + group index - Plan your install: 5 pages (versioning, deployment comparison, reference architectures, production guidance) - Install and deploy: 4 pages + group indices (Cloud, ECE, ECK, self-managed, command line tools via elasticsearch://) - Administer your deployment: ~80 pages covering autoscaling, backup tools, security (24 pages), auth/users/roles, API keys, remote clusters, monitoring, cloud organization, licenses, maintenance, upgrades, and uninstall - Deployment tools: ECCTL via toc: ecctl://reference 3 placeholder titles dropped (Skills pages and Overview roundup) as no matching pages exist in docs-content. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(nav-v2): restore dropped placeholder titles Re-add 3 placeholder titles that were incorrectly removed: - Skills for installation and deployment - Skills for cluster and deployment administration - Overview (roundup) under Deployment and administration tools Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Propose: extract EDOT SDKs as a top-level ingest tool group Move the individual EDOT SDK tocs (Android, .NET, iOS, Java, Node.js, PHP, Python, Browser) out from under the EDOT group and into a dedicated "EDOT SDKs" sibling group at the same level as Fleet, APM, Beats, etc. The group links to the existing edot-sdks index page. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Fix EDOT SDK duplication: support child overrides on toc: entries Add TocOverrideNode wrapper in SiteNavigationV2 so that when a toc: entry in navigation-v2.yml declares explicit children, those are used instead of the full V1 node tree — without mutating the shared node. Update navigation-v2.yml to limit opentelemetry://reference children to motlp, edot-cloud-forwarder, and edot-collector, keeping individual EDOT SDKs only in the new sibling EDOT SDKs group. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Revert opentelemetry://reference children override The edot-sdks deduplication is now handled upstream in elastic/opentelemetry by removing edot-sdks/index.md from the reference toc. No children override needed here — toc: opentelemetry://reference renders cleanly without the SDKs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Wire EDOT SDKs as a proper toc node in navigation.yml Group the individual SDK tocs under opentelemetry://reference/edot-sdks in navigation.yml with path_prefix reference/opentelemetry/edot-sdks, so nav-v2 can reference it as a toc: entry with a correct URL. Update navigation-v2.yml to use toc: opentelemetry://reference/edot-sdks instead of group: + page:, which was producing a 404 due to naive URI path resolution ignoring the path_prefix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore: trigger assembler preview --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Sync nav-v2 with the latest main changes and resolve the package lock merge conflict by regenerating it from the merged package manifest. Co-authored-by: OpenAI Assistant <assistant@openai.com> Made-with: Cursor
Keep the new EDOT SDK group in nav-v2 while linking it to the current EDOT SDK index page and restoring only the V1 crosslinks that the assembler can resolve today. Co-authored-by: OpenAI Assistant <assistant@openai.com> Made-with: Cursor
# Conflicts: # src/Elastic.Documentation.Site/package-lock.json
Introduces the `section:` YAML item type in navigation-v2.yml. Each section owns an independent sidebar tree and optionally appears as a tab in the secondary nav bar. Sections marked `isolated: true` render with a back arrow instead of a top bar tab. Key changes: - SectionNavV2Item record + YAML parsing in NavV2FileYamlConverter - SectionNavigationNode nav type + NavigationSection data carrier - SiteNavigationV2 builds sections, URL-to-section lookup - GlobalNavigationHtmlWriter renders per-section sidebar (cached) - NavigationRenderResult carries section metadata - _SecondaryNav.cshtml is now data-driven (falls back to static V1) - _TocTree.cshtml shows back arrow for isolated sections - PlaceholderPageWriter groups by section for per-section nav Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Converts the 4 top-level label: entries in navigation-v2.yml to the new section: format with explicit url: fields. Each section becomes an independent nav island with its own sidebar and top bar tab. Sections: - Elasticsearch fundamentals → /get-started/ - Install, deploy, and administer → /deploy-manage/deploy/ - The Elasticsearch Platform → /manage-data/ingest/ - Solutions and project types → /solutions/ Nested label: items within sections are unchanged. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…oubleshoot, Reference Restructures navigation-v2.yml so all existing labels are children of a single "Docs" section (full V2 tree in one sidebar). Adds Release notes, Troubleshoot, and Reference as separate section tabs. Secondary nav bar is now left-aligned, compact, and fully data-driven from section metadata. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # config/navigation-v2.yml # src/Elastic.Documentation.Site/Assets/styles.css # src/Elastic.Markdown/Myst/Directives/DirectiveBlockParser.cs # src/Elastic.Markdown/Myst/Directives/DirectiveHtmlRenderer.cs
Removes isolated: true so Extension points appears as a regular top-nav section rather than a hidden island, and renames it to "Extend" for brevity. Addresses findability feedback from the prototype review. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- assembler.yml: keep NAV_V2 + new WEBSITE_SEARCH flag from main - NavigationItemExtensions.cs: take main's null-safe Index guard - assembler.css: keep nav overflow fix + new website-search animation - main.ts: adopt runInitSteps pattern, wire navV2 conditional as initNavAuto - styles.css: keep all nav-v2 styles + add main's @layer component utilities - DeploymentInfo.tsx: keep nav-v2 missing-attr guards on gitBranch/gitCommit - _TocTree.cshtml / _TocTreeNav.cshtml: keep htmx nav attributes from nav-v2 Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Variable was dropped during conflict resolution; referenced by GetNavHxAttributes on the leaf anchor at line 104. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Replaces the flat mixed list with eight labeled sections — Elasticsearch, Kibana, Security, Observability, Machine Learning, Ingest, Clients & SDKs, Cloud & deployment, and Standards — so the sidebar has a visible heading hierarchy. Scattered Elasticsearch sub-trees (aggregations, query-languages, etc.) are consolidated under Elasticsearch; APM agents and OTel remain nested under Observability; Logstash islands move into Ingest. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…leSource Both members were added as required in main but the ForUnparsableSource factory on nav-v2 predates them. Null is the correct fallback for unparsable rule files. Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
… empty select-dom v10 $$() throws ElementNotFoundError when no elements match. Switching to $$optional since having zero .current elements is valid (e.g. first markCurrentPage call before any link is marked). Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Make section tabs easier to see and give island sidebars enough context to explain where users are and how to return. Co-authored-by: GPT-5.5 <noreply@openai.com> Co-authored-by: Cursor <cursoragent@cursor.com>
3 tasks
…b pages Point the Platform column entries to the docs-content hub pages (/products/elasticsearch/v9 and /products/kibana/v9) instead of the generic solution/explore pages. Co-authored-by: Cursor <cursoragent@cursor.com>
- Hero directive now renders only icon, title, description, and releases; drop the search box, version dropdown, and quick-link options end to end - Make the hub "on this page" component sticky on desktop - Restore the Products dropdown rendering and scroll-container fix lost in the nav-v2 merge, and remove the deployment-runbook and "soon" stubs Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com> # Conflicts: # src/Elastic.Documentation.Navigation/NavigationItemExtensions.cs # tests/authoring/Applicability/ApplicableToComponent.fs # tests/authoring/Blocks/Admonitions.fs # tests/authoring/Inline/AppliesToRole.fs
- Add md:order-2 to hub <main> so content fills the wide column instead
of collapsing into the sidebar column (matches the default layout).
- Hide the top-bar section dropdown when closed and anchor it under its
summary; let the nav scroll container's overflow go visible while open
so the menu isn't clipped behind the left nav.
- Add a "Find all docs about {product}" eyebrow on hub heroes to signal
the page is a documentation index.
Co-authored-by: Cursor <cursoragent@cursor.com>
Turn the hub indicator into both a label and an escape hatch: keep
"Find all docs about {product}" and add a pill link to the docs home
so readers who land on a product hub can jump to the full docs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refresh the findability demo branch with the latest hub pages prototype changes from PR #3223 while preserving the demo branch's consolidated nav-v2 state. Co-authored-by: GPT-5.5 <gpt-5.5@openai.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
This PR provides a single demo branch that reconciles the findability work across the navigation, hub-page, and landing-page prototypes. Keeping them together makes it possible to review and test the end-to-end experience before deciding how to split or sequence production rollout.
URL: https://docs-v3-preview.elastic.dev/elastic/docs-builder/docs/3256
What
Branch contributions
nav-v2contributes the new IA prototype, label-section navigation model, accordion sidebar behaviour, placeholder page generation, Nav V2 frontend shell, independent sidebar islands, dynamic top-bar sections, API/reference section handling, and related HTMX navigation behaviour. PR: Prototype nav-v2: new IA with label sections, accordion sidebar #2927. Thenav-v2-sectionswork (PR Nav sections: independent sidebar islands and dynamic top bar #3133) has been merged intonav-v2and is included there.hub-pagesbuilds onnav-v2with product hub page support, hub-specific directives and styling, product hub routing, product metadata presentation, and Elasticsearch/Kibana hub examples. PR: Findability - prototype - Hub pages #3223.landing-page/prototypeadds the search-first documentation landing page prototype, with version disambiguation, popular destinations, getting-started routes, solution browsing, and a product index. PR: [Findability] Landing page prototype #3250.demo/findabilityreconciles those branches into one branch for demo purposes. It does not add a separate product feature beyond combining the stack.Estimated hub-page build time
Local forced isolated HTML builds with
--skip-api --exporters htmlshowednav-v2-sectionsprocessing 230 files in 1.745s, and this demo branch processing 239 files in 1.804s. That is about +59ms for the hub-page layer and related added docs files in this repo.Based on that run, budget the marginal cost of each additional hub page in the low tens of milliseconds during isolated HTML generation, roughly <=30ms per page on this machine. Production assembler builds will be dominated by repository checkout, static assets, API/reference work, cross-link fetching, and upload/indexing overhead, so a small number of hub pages should not materially change total build time.
Production rollout considerations
nav-v2(which now includesnav-v2-sections), thenhub-pages, then the landing-page work, or keep the production branch explicitly stacked until all prerequisites are merged.Made with Cursor