Skip to content

Restore native docs channel picker and fix deploy - #8172

Merged
lawrencecchen merged 2 commits into
mainfrom
feat-docs-picker-bottom
Jul 15, 2026
Merged

lawrencecchen merged 2 commits into
mainfrom
feat-docs-picker-bottom

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Jul 15, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • restore the native release/nightly selector below Changelog
  • fix the broken setup-bun action pin in docs deployment CI

Testing

  • bun test tests/docs-channel.test.ts tests/docs-search-index.test.ts tests/docs-search-utils.test.ts tests/client-config-env.test.ts
  • bun run typecheck
  • focused ESLint
  • actionlint .github/workflows/docs-deploy-reusable.yml
  • rendered nightly /docs/base: native selector follows Changelog
  • verified oven-sh/setup-bun@0c5077e... exists

Failure fixed

https://github.com/manaflow-ai/cmux/actions/runs/29411036747


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.


Summary by cubic

Restores the native release/nightly docs channel picker and places it below the Changelog in the sidebar. Also fixes the docs deploy by pinning the Bun setup action to a stable v2.

  • Refactors

    • Replaced @base-ui-components/react/select with a native <select> and moved the picker below the Changelog.
  • Bug Fixes

    • Pinned oven-sh/setup-bun to v2 in the docs deploy workflow to resolve CI failures.

Written for commit ebb8601. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Accessibility & Usability

    • Replaced the custom documentation version picker with a native, accessible dropdown.
    • Documentation version selection now navigates directly to the chosen release or nightly documentation.
    • Repositioned the version picker within the documentation sidebar for improved navigation flow.
  • Maintenance

    • Updated the documentation deployment workflow to use a newer setup action revision.

@coderabbitai

coderabbitai Bot commented Jul 15, 2026 •

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: fa985dee-b20d-48da-a150-4af59bdab538

📥 Commits

Reviewing files that changed from the base of the PR and between 8d9c6fd and ebb8601.

📒 Files selected for processing (3)
  • .github/workflows/docs-deploy-reusable.yml
  • web/app/[locale]/components/docs-sidebar.tsx
  • web/app/[locale]/components/docs-version-picker.tsx

📝 Walkthrough

Walkthrough

The docs version picker now uses a native select for release and nightly channels, navigates on channel changes, and renders after sidebar navigation. The reusable docs deployment workflow also updates its pinned Bun setup action revision.

Changes

Docs version picker

Layer / File(s) Summary
Native picker and sidebar placement
web/app/[locale]/components/docs-version-picker.tsx, web/app/[locale]/components/docs-sidebar.tsx
Replaces the custom dropdown with a native <select> for release and nightly channels, navigates on changes, and moves the picker below the sidebar navigation.

Docs deployment workflow

Layer / File(s) Summary
Bun action pin update
.github/workflows/docs-deploy-reusable.yml
Updates the pinned oven-sh/setup-bun revision.

Estimated code review effort: 2 (Simple) | ~10 minutes

Possibly related PRs

  • manaflow-ai/cmux#7871: Covers the related native docs version-picker refactor and sidebar repositioning.
🚥 Pre-merge checks | ✅ 24 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description covers summary and testing, but it omits the demo video, review-trigger block, and checklist from the template. Add the missing Demo Video, Review Trigger, and Checklist sections, and include a short video link since the change affects UI behavior.
✅ Passed checks (24 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately reflects the two main changes: native docs picker restoration and docs deploy fix.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Swift Actor Isolation ✅ Passed No Swift files changed; the diff only touches TSX and a workflow, so actor-isolation rules don't apply.
Cmux Swift Blocking Runtime ✅ Passed PR diff only changes TSX files; no Swift code or blocking runtime primitives were introduced.
Cmux Browser Automation Off-Main ✅ Passed PR only changes docs sidebar/version picker and a workflow pin; it does not touch browser-automation commands or routing, so the off-main WebKit policy is unaffected.
Cmux Expensive Synchronous Load ✅ Passed No Swift files changed; the PR only touches docs TSX and a workflow, so the Swift synchronous-load rule is not implicated.
Cmux Cache Substitution Correctness ✅ Passed The PR only moves a docs picker and changes a deployment pin; no cached value replaces a fresh authoritative read in any persistence, history, undo, or snapshot path.
Cmux No Hacky Sleeps ✅ Passed No fixed sleeps, timers, polling, or retry/backoff logic were introduced in the changed TSX runtime files; the workflow change is out of scope per the rule.
Cmux Algorithmic Complexity ✅ Passed The diff only swaps a docs selector to a native , repositions it in the sidebar, and updates a workflow pin; no new scalable scans/sorts/joins are introduced.
Cmux Swift Concurrency ✅ Passed PASS: The PR diff touches only TSX and YAML files; no Swift code was added or modified, so the Swift concurrency rule is not applicable.
Cmux Swift @Concurrent ✅ Passed No Swift files changed in this PR; only docs workflow and TSX components were modified, so the Swift @concurrent rule is not applicable.
Cmux Swift Package Boundaries ✅ Passed The PR diff only changes docs workflow and TSX components; no Swift files or package-boundary-relevant Swift changes are present.
Cmux Swiftpm Lockfiles ✅ Passed Branch diff vs main changes only a docs workflow and TS files; no Package.resolved, Package.swift, .gitignore, or Xcode lockfile changes appear.
Cmux Swift Logging ✅ Passed PASS: The diff since merge-base only touches a workflow and TSX docs components; no Swift app/runtime code or logging changes are present.
Cmux User-Facing Error Privacy ✅ Passed The actual commit only moves the docs picker and switches it to a native select; it adds no user-facing error, alert, or recovery copy and exposes no sensitive provider details.
Cmux Full Internationalization ✅ Passed No new user-facing copy was added; the picker uses existing next-intl keys present in all locales, and the workflow pin is operational only.
Cmux Swiftui State Layout ✅ Passed Diff only touches YAML and TSX docs components; no SwiftUI files or state/layout patterns from the rule are introduced.
Cmux Architecture Rethink ✅ Passed No Swift files or Swift architecture changes are in the diff; the rule is not applicable to these docs/UI/workflow edits.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: the diff only touches docs workflow/TSX files; no Swift windows or cmuxAuxiliaryWindowIdentifiers changes are present, so the rule is not implicated.
Cmux Source Artifacts ✅ Passed All changed paths are intentional source/config files; none are logs, caches, build outputs, temp dirs, or other accidental artifacts.
Cmux No Test Or Debug Seam In Production Source ✅ Passed Diff only changes two TSX docs files; no Swift production Sources/** code or test/debug seam additions are present.
Cmux No Ambient Global State ✅ Passed The PR diff touches only a workflow file and TSX components; no production Swift files or new ambient global state are introduced.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat-docs-picker-bottom

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR restores the docs release/nightly channel selector to its intended position below the nav (Changelog) by moving DocsVersionPicker to the end of the sidebar, replaces the previous Base UI Select implementation with a simpler native HTML <select>, and fixes the broken oven-sh/setup-bun action SHA pin in the docs deploy workflow.

  • docs-version-picker.tsx: Base UI Select removed in favour of a native <select>; the position swap in docs-sidebar.tsx puts it below the nav list as originally intended.
  • docs-deploy-reusable.yml: SHA updated from 735343b… (v2.0.0) to 0c5077e… (a v2 commit) to unblock the broken deployment run.

Confidence Score: 4/5

Safe to merge; changes are a straightforward UI reorder, a native element replacement, and a CI pin update with no logic-critical paths affected.

All three changes are narrow and well-scoped. The workflow fix is a SHA-pinned action update. The sidebar reorder is purely positional. The version picker replacement swaps a composite component for a native element and introduces only a minor redundant accessible-name annotation.

web/app/[locale]/components/docs-version-picker.tsx — minor accessible-name duplication worth cleaning up.

Important Files Changed

Filename Overview
.github/workflows/docs-deploy-reusable.yml Updates oven-sh/setup-bun SHA pin from v2.0.0 to a newer v2 commit to fix the broken docs deployment CI step.
web/app/[locale]/components/docs-sidebar.tsx Moves DocsVersionPicker from above the search bar to below the nav list so it renders beneath the Changelog section as intended.
web/app/[locale]/components/docs-version-picker.tsx Replaces the Base UI Select implementation with a native HTML select; minor: both a sr-only span and an aria-label carry the same accessible name, making the span redundant.

Sequence Diagram

%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
    participant User
    participant DocsSidebar
    participant DocsVersionPicker as DocsVersionPicker (native select)
    participant window.location

    User->>DocsSidebar: opens docs page
    DocsSidebar->>DocsSidebar: renders DocsSearch + nav items
    DocsSidebar->>DocsVersionPicker: renders at bottom (after Changelog)
    User->>DocsVersionPicker: changes channel (release ↔ nightly)
    DocsVersionPicker->>window.location: assign(docsChannelUrl(value, pathname, search, hash))
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
sequenceDiagram
    participant User
    participant DocsSidebar
    participant DocsVersionPicker as DocsVersionPicker (native select)
    participant window.location

    User->>DocsSidebar: opens docs page
    DocsSidebar->>DocsSidebar: renders DocsSearch + nav items
    DocsSidebar->>DocsVersionPicker: renders at bottom (after Changelog)
    User->>DocsVersionPicker: changes channel (release ↔ nightly)
    DocsVersionPicker->>window.location: assign(docsChannelUrl(value, pathname, search, hash))
Loading

Reviews (1): Last reviewed commit: "Move native docs picker below navigation" | Re-trigger Greptile

Comment on lines +17 to +20
<label className="block px-3 pt-4 pb-4" data-pagefind-ignore="all">
<span className="sr-only">{label}</span>
<select
aria-label={label}

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.

P2 The <label> wraps the <select>, so the <span className="sr-only"> text already becomes the select's accessible name through the label association. The explicit aria-label attribute on the <select> takes priority over that programmatic label (per ARIA spec), which makes the <span> a dead node for screen readers. Either the <span> or the aria-label should be removed to keep the accessible name in one place.

Suggested change
<label className="block px-3 pt-4 pb-4" data-pagefind-ignore="all">
<span className="sr-only">{label}</span>
<select
aria-label={label}
<label className="block px-3 pt-4 pb-4" data-pagefind-ignore="all">
<span className="sr-only">{label}</span>
<select

@lawrencecchen
lawrencecchen merged commit 271a51f into main Jul 15, 2026
8 checks passed
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.

1 participant