Skip to content

Add page-owned sidebar contributions - #844

Open
kazemek21 wants to merge 1 commit into
block:mainfrom
kazemek21:kylez_NEXUS-3232_page-sidebar-contribution
Open

kazemek21 wants to merge 1 commit into
block:mainfrom
kazemek21:kylez_NEXUS-3232_page-sidebar-contribution

Conversation

@kazemek21

@kazemek21 kazemek21 commented Oct 10, 2026 •

Copy link
Copy Markdown

TL;DR

Let a plugin page provide its own sidebar instead of Channels. The shell keeps control of collapse and narrow-screen navigation. Me now uses the same page contribution, without changing its sidebar UI.

Page.sidebar receives the current OpenTarget only after route validation and scope selection are ready. Supplied Pages navigation is optional; Me uses its own navigation, and Search lists every active page. Pages without a sidebar retain Channels. Sidebar failures keep the page and shell usable. A new navigation request retries a failed sidebar without remounting healthy state.

#762 deliberately left a plugin sidebar API out of scope. This adds that small contract through the existing page registration lifetime, rather than a new routing or navigation system. The author types and plugin architecture docs describe the host/page boundary.

FOUNDATION files: src/features/pages/service.ts, src/app/App.tsx, and the matching author-facing export in src/plugins/author.ts. No other FOUNDATION files are changed.

Validation

Regression coverage exercises registration/disposal, published author types, target updates, sidebar failure, same-page recovery, shell disclosure, and Me's registered sidebar. Mounted-App cases cover rejected parameters, denied scopes, and delivery after personal-scope selection. Browser journeys cover actual slot geometry, collapse/drawer behavior, Escape/focus, both themes, enlarged text, and scrolling to a failed sidebar's retry destination. Two browser cases are added; none are removed.

The admission cases and recovery-scroll case failed before their repairs. The target-change recovery test also failed before its fix; a temporary remount mutation failed the healthy-state assertion. At c0282939, focused Vitest (6 files, 51 tests), TypeScript, scoped Biome, design checks and the author build passed. The complete page-placement spec passed in Chromium and WebKit (4 cases per engine, 8 executions).

Human acceptance is pending; the review-completed marker is intentionally absent. No packaged/native-app result is claimed.

Test plan

  • In your normal Buzz test setup, switch between Me, Messages and Settings. Their sidebars should remain unchanged.
  • For the contributed-sidebar fixtures, run source bin/activate-hermit, then bin/pnpm test:browser tests/browser/page-placement.spec.mjs --project chromium --no-deps --headed -g 'a page sidebar uses the shell slot|recovery navigation scrolls'.
  • The healthy fixture should replace Channels. Wide hide/show should preserve the page; the narrow drawer should show the same sidebar. Escape should return focus to Show navigation, and Tab should not enter the closed drawer.
  • In the failure fixture, the alert and Pages rows should scroll at short heights and 200% text. The last page row should be reachable and retry the sidebar when activated.

— Posted by Codex (gpt-6.1-sol) on behalf of kylez

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-11T00:52:27.093346Z c028293 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Breezy!

Reviewed commit: 8973db0f7a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b075645432

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/app/App.tsx
Comment thread src/features/pages/service.ts
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 2f0ec73058

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@kazemek21
kazemek21 marked this pull request as ready for review October 10, 2026 10:10
@kazemek21
kazemek21 requested a review from a team as a code owner October 10, 2026 10:10

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Carl, an automated reviewer, commenting via Wes’s GitHub account.

Request changes: the plugin direction is sound, but two P2 host-integration defects need repair. Reviewed 2f0ec73058db22dccae9e4cd9e7166794b73d7e4 against 82d165d5b6fd7dc1f3e9784675d27c04aacdbeae.

Page.sidebar is an appropriate small extension: it follows the page’s existing registration/disposal, removes the Me-specific branch, and retains host-owned navigation, disclosure and error isolation. No second router, registry or sandbox claim is needed. Keep that design; address the admission and recovery-scroll findings inline.

One non-blocking product choice deserves an explicit contract: a sidebar can omit the supplied Pages children. Me already does, and Search remains available, so this is not a new lockout. Decide whether consistent primary navigation is mandatory before widening adoption. External width/resize helpers and cross-version SDK guarantees remain separate work, not prerequisites for this patch.

Validation: exact-head CI passed. Additional mounted-App probes reproduced rejected-target delivery and a pre-admission scope mismatch; the complete modified App profile test file passed 9/9, including three defect-confirmation probes. Independent real-App Chromium/WebKit diagnostics reproduced clipped recovery navigation and exercised healthy disclosure/focus behavior. Temporary fixture/test edits only; no production changes. Prior reported retry/doc fixes are present. Native/assistive-technology and human acceptance remain unverified.

Merge criteria: both inline fixes plus regressions, while retaining healthy same-page sidebar state and shell recovery. This is not an approval.

Comment thread src/app/App.tsx Outdated
Comment thread src/app/App.tsx
Co-authored-by: Codex (gpt-6.1-sol) <noreply@openai.com>

Co-authored-by: Codex (gpt-6-luna) <noreply@openai.com>
Signed-off-by: Kyle Zemek <kylez@squareup.com>
@kazemek21
kazemek21 force-pushed the kylez_NEXUS-3232_page-sidebar-contribution branch from 2f0ec73 to c028293 Compare October 11, 2026 00:44
@kazemek21

Copy link
Copy Markdown
Author

Addressed both required fixes from this review in c0282939c3f6475478735fcb0051d506be756c0f: sidebar targets now follow route admission and scope readiness, and failed-sidebar recovery navigation scrolls. The inline replies contain the regression details. Focused verification passes 51 Vitest tests and all eight Chromium/WebKit page-placement executions at this head.

For the optional Pages-children question, this patch deliberately keeps them optional. The shell contract states that Me uses its own navigation and Search still lists every active page. This does not introduce a requirement that every sidebar render primary navigation; width/resize helpers and SDK version guarantees remain outside this patch.

The PR remains ready for review. Human/native acceptance is still pending; resolving the repaired threads is not an approval.

— Posted by Codex (gpt-6.1-sol) on behalf of kylez

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