Technical docs

Sidebar Navigation

Overview

Support-facing summary of the current sidebar structure and behavior.

Layout

  • Top area:
  • organization switcher
  • search button
  • quick HQ tool buttons
  • Today the only visible quick HQ button is `Chats`.
  • Main nav merges organization, admin, and system tools and inserts `Home` in the regular tier. Active organization-defined links appear before the built-in tools; collapsed navigation shows their titles in tooltips. The personal `Hide admin sidebar items` setting hides the entire built-in main-nav tool list, including regular, admin, and developer links, but keeps custom links and the top and bottom sidebar controls. This browser-local display preference does not revoke access to routes or alter organization navigation configuration.
  • Bottom menu includes operator status plus static user-menu links/actions.
  • On mobile portal routes, the desktop sidebar is replaced by a shared bottom bar plus a full-width `Menu` sheet.

Top controls

  • Org switcher always shows the current org.
  • The dropdown appears only when the user belongs to more than one org.
  • Orgs are grouped as system orgs first, then regular orgs. A normal organization switch opens the selected organization's home. On a missing shared Docs/Storage path recovery screen, its organization switcher keeps the requested URL path so the link can be retried in the selected organization.
  • Search opens the command palette, not a dedicated `/search` page. It keeps built-in commands above organization search results grouped as `Database records`, `Files`, `Knowledge`, and `Related by meaning`. A result opens its record in a saved card view or its file/note in Docs. Enter at least three characters to search; results can include matching excerpts and a partial-results notice. See `organization-search.md` for scope and response behavior.
  • Search shortcut label is platform-aware: `Cmd+K` on macOS, `Ctrl+K` elsewhere.

Main navigation items

  • Regular tier:
  • `Home` (`/home`)
  • `Omni Hub` (`/omni`)
  • `Staff` (`/staff`)
  • `Storage` (`/storage`)
  • `Databases` (`/databases`) for structured data that teammates and AI can query
  • `Workflows` (`/workflows`)
  • `Docs` (`/docs`)
  • `Variables` (`/variables`)
  • `Mcps` (`/mcps`)
  • `Integrations` (`/integrations`)
  • `Settings` (`/org-settings`)
  • Admin tier:
  • `Logs` (`/logs`)
  • Developer tier:
  • `Admin` (`/admin`)
  • `Models` (`/models`)
  • `Prompts` (`/prompts`)
  • `Voices` (`/voices`)
  • `Defaults` (`/defaults`)

Bottom user menu

  • The user identity uses the provider-independent `name` and `picture` fields from the current user payload.
  • Expanded sidebar mode shows the profile image, display name, email, and current status indicator.
  • Collapsed sidebar mode shows the profile image and status indicator; its tooltip shows the display name and email.
  • If `name` is absent, the email is used as the display name and avatar fallback. If `picture` is absent, the avatar component uses that text fallback.
  • Status selector:
  • `Active`
  • other operator-status options from `STATUS_OPTIONS`
  • Static items:
  • `Invite people` -> `/staff?tab=invites&invite=true`
  • `Upgrade` -> toast placeholder, not a real modal yet
  • `Website` -> `https://alloy.cx`
  • `Portal` -> `/`
  • `Toggle Theme`
  • `Sign Out`

Visibility rules

  • Hidden items are filtered out before render.
  • `Home` is always inserted as the first regular nav item. An organization admin can also designate one active custom link as `Use as home page`. Opening the portal root redirects to that same-origin internal page; if it is unavailable or invalid, the existing fallback is used (`/home` on desktop, Docs chat history on mobile). An external URL, `/`, `/login`, or `/logout` cannot be the Home destination. Turning off `Show in sidebar` also prevents that link from being used as Home.
  • Organization-defined links can point to internal paths or full HTTP(S) URLs, optionally open in a new tab, and appear in admin-defined order. Disabled links are omitted from the sidebar. Same-origin navigation uses the app navigation guard; external destinations use the browser.
  • Role grouping uses `splitToolsByRole()`:
  • regular: no role gate
  • admin: `isOrgAdmin` or `isOrgOwner`
  • developer: `isDeveloper`
  • Developers bypass org-role gates.
  • A tool marked both developer and org-role gated appears only in the developer tier.
  • Separators render only between non-empty tiers.
  • `Notifications` stays hidden.
  • `Search` exists in the manifest but is rendered as the top search control instead of a nav item.
  • `Admin` comes from the `(sys)` route group and is flagged `isDeveloper: true` in the generated sidebar manifest.

Organization navigation API

  • `GET /api/organizations/{organization_id}/navigation-items` lists links for organization members. Owners and admins can `POST` to the same route, `PATCH` or `DELETE /{navigation_item_id}`, and `PUT /order` with `navigation_item_ids`. The records include title, URL, icon, position, `open_in_new_tab`, `is_active`, and `is_home`; create defaults to visible, same-tab, not Home. The general AI organization-action tool can read navigation items and submit create, update, reorder, or delete actions, but an AI-initiated manage action is authorized only when the initiating organization user is an owner or admin; requests without an authorized initiating user are denied.

Chats and Staff behavior

  • The old sidebar Ally entry is now labeled `Chats`.
  • Clicking sidebar `Chats` opens internal chat directly through an action item instead of navigating to a dedicated `/ai` route.
  • Global shortcut: `Alt+C`.
  • On macOS, `Alt+C` is ignored while focus is inside an editable field; on other platforms it still fires.
  • The mobile Docs menu uses the same direct-open `Chats` action.
  • The shared mobile bottom bar uses `Menu`, `Files`, `Omni`, `Home`, `Chats`.
  • Mobile `Chats` routes to `/docs?coworkPanel=history`; mobile `Files` routes to `/docs?coworkPanel=tree`.
  • Inside the `/docs` workspace itself, the mobile bottom bar is labeled `Docs panels` for assistive tech.
  • The mobile menu sheet is full width, sits above the bottom bar, closes on route change, and includes org switcher, search, visible tools, full nav, and user menu.
  • `Staff` behavior:
  • desktop + active AI teammates -> hover/focus quick launcher with `Staff` plus direct teammate chat shortcuts
  • mobile, or no active AI teammates -> plain nav link

Resize and collapse behavior

  • Expanded width is persisted in local storage.
  • Width bounds:
  • min `175px`
  • max `270px`
  • default `225px`
  • Collapse threshold: dragging below `130px` switches to icon-only mode.
  • Collapsed desktop width is `80px`.
  • Collapsed desktop mode removes the expanded card chrome, keeps the sidebar fully visible, shortens separators, and uses smaller compact icons.
  • In collapsed desktop mode, the old footer expand toggle is no longer shown.
  • Collapsed desktop mode instead exposes a thin right-edge `Expand sidebar` hit area.
  • Collapsed desktop mode uses tooltips for non-`Staff` items, including the `Alt+C` hint on `Chats`.

Start building your AI team