Skip to content

feat(shell): give observers their own sidebar and command palette - #2550

Open
Makisuo wants to merge 3 commits into
observer/membersfrom
observer/shell
Open

Makisuo wants to merge 3 commits into
observer/membersfrom
observer/shell

Conversation

@Makisuo

@Makisuo Makisuo commented Nov 12, 2026 •

Copy link
Copy Markdown
Collaborator

Fifth layer of the Observer role, on top of #2549. Observers get a sidebar and command palette built around what they come for.

What changed

  • Sidebar. An observer sees Overview, then Reliability (Incidents with Inbox, Uptime and SLOs; Errors; Status pages) and Product (Web analytics, Users, Replays, Dashboards, Releases, Cost). Flagged rows still follow the org's rollouts.
  • Left out for them: Services, Infrastructure, the explorers, alert rules and routing, Review & CI, Security, and the Sources and Settings rows. Their account stays in the user menu.
  • Top bar. No Connect button: an observer sets nothing up.
  • Command palette. Lists the same pages, plus dashboards and the app actions. Services, "Connect " and the setup pages do not show up in search.
  • Links still open. Nothing is redirected. A trace or log link an engineer shares opens read-only, and the API refuses any change (the layers below).
  • Lab. /lab/shell has a Viewer toggle that draws the shell for an observer.

Self-hosted has no observers, so its shell is unchanged.

Screenshots

Member and above (unchanged) Observer
operator observer

Incidents opens to its three pages:

incidents

Verified

  • apps/web: the shell tests and the shell lab scene test, 133 passed. New cases: the observer nav links to exactly its pages and to no setup or explorer page, rollout flags add Status pages, Releases and Cost, an uptime page marks only Incidents, the palette finds an observer's pages and dashboards but not Traces, services, Connect entries or Settings, and Enter opens the page they see highlighted.
  • @maple/web typecheck, the CI lint config on the changed files, and the UI class pattern check.
  • /lab/shell driven in a headless browser for the screenshots.

Next

The pages an observer reaches still draw their write controls (the API refuses them). The next layer hides those, and the one after gives observers their own Overview.


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.

An observer follows the product without operating it, so the shell shows them the pages that answer whether it works and how it is doing: incidents with uptime and SLOs, errors, status pages, web analytics, users, replays, dashboards, releases and cost. The explorers, infrastructure, alert setup, review, security, Sources, Settings and the Connect button are left out.

The command palette lists the same pages plus dashboards and the app actions. Other pages still open from a link: nothing is redirected, and the API refuses any change.

The shell lab gains a viewer toggle to draw the sidebar for an observer.
@coderabbitai

coderabbitai Bot commented Nov 12, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f90c123b-e6ed-4f54-a9f0-0ac7bf4bd3f0

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

@maple-review-bot

This comment has been minimized.

@maple-review-bot maple-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 inline note from Maple's review. The score and summary are in the review comment above.

Comment thread apps/web/src/shell/palette/entries.ts Resolved
An observer's sidebar calls the alerts inbox Incidents, but the palette built its rows from the full nav, so it listed that page as Alerts and a search for incidents found nothing. Their entries now carry the observer nav's titles; the ids are unchanged, so a pick resolves the same way.
@maple-review-bot

This comment has been minimized.

@maple-review-bot maple-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

1 inline note from Maple's review. The score and summary are in the review comment above.

Comment thread apps/web/src/shell/view-sidebar.ts Resolved
@maple-review-bot

maple-review-bot Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Maple review

🟢 Confidence 10/10 · safe to merge. The only new hunk is a scene test that pins both observer removals in both directions, and no other file moved since the last pass.
no findings · tests covered · risk medium

Adds a lab scene test that pins the observer shell's two removals — the Sources/Settings footer rows and the top bar's Connect button — by driving the new Viewer toggle, which closes the earlier gap. Safe to merge.

5f07072 · What was checked, coverage and telemetry details are on the Maple / review check. Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.

This branch has not been deployed

No deployments
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