Skip to content

feat(messages): polish sidebar interactions - #123

Open
klopez4212 wants to merge 16 commits into
mainfrom
kennylopez-sidebar-polish
Open

klopez4212 wants to merge 16 commits into
mainfrom
kennylopez-sidebar-polish

Conversation

@klopez4212

@klopez4212 klopez4212 commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • make the Messages sidebar resizable with a persistent width, delayed affordance, and double-click reset
  • remove sidebar search, align section rows and custom emoji rendering, and drop redundant channel-name tooltips
  • normalize scrollbars and restore the macOS title-bar double-click preference

Testing

  • bin/pnpm check
  • focused unit and Chromium sidebar/layout journeys
  • exact WebKit timeline measurement reruns
  • native Buzz app against wss://buzz.block.builderlab.xyz with the requested profile

Validation note

  • bin/just scan passed integration, unit, and native suites; its full browser phase was blocked by two unrelated WebKit timeline-settling timeouts under parallel load. Both exact WebKit measurements pass in isolation.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 22, 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-09-22T19:14:16.380600Z 21bec35 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 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: 3616d92be4

ℹ️ 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 tests/browser/navigation-sidebar.spec.mjs Outdated
Comment thread src/bundled/channels/ChannelsPage.tsx
Comment thread src/app/shell/title-bar.ts
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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: 4ae4c61981

ℹ️ 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/bundled/channels/Channels.module.css Outdated
Comment thread src/bundled/channels/SidebarSectionIcon.tsx
Comment thread src/bundled/channels/ChannelsPage.tsx
Comment thread src/bundled/channels/ChannelsPage.tsx
…lish

Signed-off-by: klopez4212 <klopez4212@gmail.com>

# Conflicts:
#	src/bundled/channels/ChannelSidebarRow.tsx
#	src/bundled/channels/Channels.module.css
#	src/bundled/channels/ChannelsPage.tsx
#	src/bundled/channels/useSidebarView.ts
#	tests/browser/navigation-scroll-intent.spec.mjs
#	tests/browser/navigation-sidebar.spec.mjs
#	tests/browser/session-search.spec.mjs
#	tests/browser/sidebar-unread.spec.mjs
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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: 8be76f5059

ℹ️ 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/bundled/channels/ChannelsPage.tsx
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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: da91ccd466

ℹ️ 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/bundled/channels/ChannelSidebarRow.tsx
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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.

Reviewed 8720a4b1fc3c3ff9452fa328e96bf2205a17cf68 against e9717dda50eb25e81e0edad30b5d0500a052b591. Changes requested: two confirmed P2 defects plus a failed validation gate. Both delegated source-review lanes have returned and been reconciled. These are three bounded exit criteria, not a request to redesign the sidebar. This consolidates existing inline findings resize origin, panel overlap, and tooltip timing rather than duplicating them.

P2 — Start resizing from the rendered width, not the unclipped preference

src/bundled/channels/ChannelsPage.tsx:1088–1095 with Channels.module.css:17–20,286–295.

Set the sidebar to 520px at a wide viewport, then narrow the window to 800px. CSS renders the sidebar at 432px while the drag origin remains 520px. A real 30px left drag changes the saved value to 490 but leaves the visible sidebar at 432px. The first 88px of leftward movement is therefore dead travel; the new direct-manipulation control does not follow the pointer.

Independently reproduced in both Chromium and WebKit against the production-built app, not a copied layout. Begin the drag from the actual rendered sidebar width (and keep the keyboard/ARIA value coherent with constrained layout). Preserve the durable preferred width unless explicit user action changes it. Cover this responsive transition in both engines.

P2 — Bound the narrow right-panel overlay by the current sidebar edge

src/bundled/channels/Channels.module.css:286–304.

The new resizable grid retains an overlay width based on the old fixed sidebar: min(420px, calc(100% - 206px)). At an 800px viewport with a wide saved sidebar, opening a real GitHub link panel gives sidebar x=16,width=432 and panel x=364,width=420: 84px of the sidebar is covered, including the row-end action area. The resize affordance can also paint over the panel because it has the higher z-index. This contradicts the 651–1000px contract in docs/shell-design.md:118–123, where the panel overlays the conversation rather than sidebar navigation.

Both Chromium and WebKit reproduce identical geometry. Derive the overlay's available region from the current sidebar/conversation boundary; retain the intentional full-page overlay below 650px. Exercise wide saved widths with a panel open at the intermediate breakpoint.

Validation gate — resolve the new resize journey’s tooltip failure

tests/browser/navigation-sidebar.spec.mjs:78–92.

The exact-head WebKit 2/2 job fails this newly added journey at line 92: opacity expected "1", received "0", after its custom 1,000ms poll. The job ends 1 failed / 118 passed. This is not one of the unrelated timeline-measurement failures mentioned in the PR body; the current browser-measurement check passed.

The test also asserts immediate opacity zero after an asynchronous mouse move against a real 600ms CSS delay, without controlling the elapsed boundary. The captured trace moves to the gutter center at (280,495), and its failure screenshot shows the grip but no tooltip; this does not establish whether the failure belongs to product behavior or test scheduling. Establish the actual hover/delay/transition boundary and repair its owner while preserving delayed presentation and eventual visibility coverage. Do not hide it with retries, fixed sleeps, or simply a larger timeout. My complete local file passed 20/20 across both engines, which does not resolve the hosted failure. The exact trigger remains unconfirmed; this is a failed validation gate, not a separately proven production-tooltip defect.

Reconciled comments and limits

Search removal and redundant-title removal are explicit product changes, not automatically blockers. Full-name discovery for truncated rows and stale search documentation need design/documentation follow-up without blindly restoring the removed UI. Decorative emoji error fallback and demand-only catalog loading are non-blocking here. The retained-draft route with Sessions disabled already exists on the base; the new menu gate does not introduce it. Pointer-loss cleanup outside the native window was not reproduced and is not counted as a confirmed defect.

A focused browser probe of the actual title-bar helper confirmed that a one-pixel movement on the second click still emits a browser dblclick but suppresses the helper action in both engines. This is a non-blocking interaction papercut, not native acceptance. The proposed absent-macOS-preference/default-action blocker was retracted because the native default behavior was not established; no such claim is included in this verdict.

Validation: unchanged production source at the pinned head; complete navigation-sidebar.spec.mjs 20/20 passed locally (30.9s); separate diagnostic cases reproduced both responsive defects in both engines. Existing hosted CI supplies broad coverage; no full local suite, native build, live account, or native window test was run by the review lead. The completed hosted run has JavaScript, Rust/tool integration, measurements, both Chromium shards, WebKit 1/2, DCO and security checks passing; WebKit 2/2 and the aggregate CI-required gate failed. Windows native validation was skipped. No approval or merge.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212

Copy link
Copy Markdown
Contributor Author

🤖 Addressed the three bounded exit criteria from the latest review in 1ff3954: resizing starts from the rendered width with constrained ARIA state, the intermediate-width panel is bounded by the current sidebar edge, and the tooltip test no longer races wall time. I also removed the macOS title-bar double-click implementation from this PR so it remains isolated in #76. Clean-head evidence: full static/type/design checks passed; 38/38 focused Chromium/WebKit layout and sidebar journeys passed; pre-push TypeScript, 33 related unit tests, and design guards passed.

@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: 1ff39540e7

ℹ️ 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/bundled/channels/ChannelsPage.tsx Outdated
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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.

Re-review: two production findings closed; one P2 test repair remains

Reviewed 778457daeba2505f9587b2cc17ae0ce1726da5a3 against base e9717dda50eb25e81e0edad30b5d0500a052b591, focusing on the delta since my previous review at 8720a4b1fc3c3ff9452fa328e96bf2205a17cf68. Both independent source-review lanes have returned and been reconciled.

Closed: pointer and keyboard resizing now start from the rendered sidebar width; constrained ARIA and durable preferred-width behavior are covered. The intermediate-width panel is bounded by the conversation grid column, with the resize handle beneath it. The complete sidebar/layout files pass 38/38 locally across Chromium and WebKit at this head. The title-bar implementation was removed back to base and remains separate work.

Remaining P2: the tooltip regression test still races the initial 600ms window. The inline finding is in tests/browser/navigation-sidebar.spec.mjs:84–89. Polling for {delay:"0.6s", opacity:"0"} after real hover does not control elapsed time. A first observation after the delay/transition sees opacity 1, which stays 1 while hovered; polling can never recover the expected zero. The subsequent transition: none !important override also bypasses the native reveal previously under investigation.

I exercised the actual built app without CSS overrides in both engines: its native tooltip reaches opacity 1 and visibility visible. After observing that completion, applying the new zero-opacity predicate times out in both. This deliberately models late test scheduling; it does not claim the current hosted run failed or establish the cause of the older hosted failure. No production-tooltip defect is demonstrated.

Smallest exit criterion: assert the declared delay independently of transient opacity, remove the transition override, and verify eventual native visibility; alternatively, explicitly control the animation boundary if retaining an initial-hidden timing assertion. Do not add sleeps, retries, or longer timeouts. A review-only copy of the full sidebar file using the first approach passed 20/20 across Chromium/WebKit (18.5s), with no production edits. This confirms a small test-only repair is sufficient; no sidebar redesign or broader hardening is requested.

Validation and limits

  • Unmodified navigation-sidebar.spec.mjs + layout.spec.mjs: 38/38 passed, 39.5s, at the reviewed head. Separate late-observation diagnostic: 2/2, asserting the determinism defect rather than acceptance. Modified diagnostic copy above is not a committed fix.
  • Commands used Hermit-managed bin/pnpm exec playwright test --config tests/browser/playwright.config.mjs --project chromium --project webkit --no-deps <files>. Tracked product/test files remain unchanged.
  • Current hosted CI is green, including all four browser shards and CI required; Windows native validation was skipped. No broad local CI rerun, native acceptance, approval, or merge. Previously dispositioned search/icon/pointer-loss concerns remain outside these bounded exit criteria.

Comment on lines +84 to +89
await expect.poll(tooltip).toEqual({ delay: "0.6s", opacity: "0" });
await page.addStyleTag({
content: `[aria-label="Resize channel sidebar"]:hover::before {
transition: none !important;
}`,
});

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.

[P2] Remove the remaining transient-opacity race without bypassing the reveal

This poll still requires the runner to observe opacity 0 within the real 600ms window after mouse.move(). If its first observation is scheduled after the native transition finishes, opacity is already 1 and never returns to 0 while hovered, so retrying the predicate cannot succeed. I verified that state in both Chromium and WebKit against this head. The following transition: none !important injection then bypasses the native reveal rather than validating it.

Assert the stable declared delay separately and verify eventual native opacity/visibility without the CSS override; or explicitly control the animation boundary if the initial-hidden assertion is required. A review-only full-file copy using the former passed 20/20 in both engines. No production change is needed, but the prior tooltip-test determinism criterion is not yet closed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🤖 Fixed in 8489936. The test now checks the declared hover delay independently, removes the transition override, and waits for native opacity 1 plus visible visibility. The complete navigation-sidebar file passes 20/20 across Chromium and WebKit from a clean exact-head checkout.

Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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: 8489936a19

ℹ️ 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 tests/browser/navigation-sidebar.spec.mjs
@klopez4212 klopez4212 changed the title feat(messages): polish sidebar interactions feat(messages): polish sidebar and add channel creation Sep 22, 2026
@klopez4212
klopez4212 force-pushed the kennylopez-sidebar-polish branch from 6e7e4e5 to 8489936 Compare September 22, 2026 17:07
@klopez4212 klopez4212 changed the title feat(messages): polish sidebar and add channel creation feat(messages): polish sidebar interactions Sep 22, 2026

@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: 6e7e4e58aa

ℹ️ 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/features/relay/session.ts Outdated
Comment on lines +672 to +678
let pendingChannelCreation:
| {
signature: string;
id: string;
operation: string;
}
| undefined;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Restore pending creation before accepting another

When a kind-9007 publish has an unknown outcome and the app reloads or recreates the relay session, the durable outbox restores that operation but this in-memory variable starts empty. A subsequent submission therefore generates a new channel UUID instead of retrying or reconciling the saved operation; if the first request reached the relay before its acknowledgement was lost, the user creates two channels. Initialize this guard from the restored outbox or otherwise block new creation until saved kind-9007 operations are resolved.

AGENTS.md reference: AGENTS.md:L78-L80

Useful? React with 👍 / 👎.

Comment thread src/bundled/channels/ChannelsPage.tsx Outdated
Comment on lines +1148 to +1149
if (event.key === "ArrowLeft") setWidth(width - step);
else if (event.key === "ArrowRight") setWidth(width + step);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Measure keyboard resizing from the rendered width

When a saved 520 px width is constrained by an 800 px viewport or an opened panel, ArrowLeft subtracts from the persisted width rather than the roughly 432 px rendered width, so the first several presses produce no visible or announced change. Fresh evidence in 08429b2 is that the channel-creation integration reverted the DOM measurement added in 778457d while retaining the constrained-width browser assertion; compute arrow deltas from the adjacent sidebar's current bounding box.

Useful? React with 👍 / 👎.

Comment thread dev/session-commands.mjs Outdated
Comment on lines +43 to +46
tags
.slice(0, expected.length)
.every(
(tag, index) => tag.length === 2 && tag[0] === expected[index],

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Reject incomplete channel tags without throwing

For a malformed kind-9007 request containing only h, h plus name, or the first three required tags, this prefix check succeeds for every present tag and the following direct access to tags[1], tags[2], or tags[3] throws a TypeError. The signing/publishing endpoint consequently returns an internal error instead of the intended bounded 400 rejection; require all four mandatory tags before indexing them.

AGENTS.md reference: AGENTS.md:L10-L12

Useful? React with 👍 / 👎.

Comment on lines +4 to +5
export function isChannelSectionKey(key: string) {
return key === "channels" || key.startsWith("group:");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Assign channels created from a custom group

When sidebar preferences contain a custom group, this predicate adds a Create channel action to that group, but the dialog passes no group identifier and the success callback always expands channels. Since sidebarSections only places a channel in a group when preferences.assignments contains its new UUID, creating from a group such as Engineering makes the result appear under Channels instead. Either persist the clicked group assignment or restrict the action to the default Channels section.

Useful? React with 👍 / 👎.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@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.

All three independent source-review lanes have returned and been integrated.

Reviewed head 7c36465d7ebf3295ef20f6698ce90e3e075fb27c against base bef06b7692002cfdf3296901611dd544269b246d.

P2: preserve the upstream global-search child-session regression

This PR deletes tests/browser/session-search.spec.mjs:10–70 at the pinned base. That file now tests global search, not the removed sidebar search: collapse the containing section and child-session disclosure, select the hidden child through Search Buzz with the keyboard, verify the session composer while the child stays hidden, then remount Messages and verify both collapsed levels plus native Enter/Space summary behavior.

The retained global-search.spec.mjs:40–101 opens an ordinary channel, not a child session. The session-navigation browser case opens sessions directly; the sidebar browser/RTL cases cover disclosure or persistence separately. Those assertions do not replace this real-browser search → hidden child → remount composition. Removing it drops the regression guard for reaching hidden sessions without changing the user's saved sidebar intent. This violates the repository's explicit requirement to preserve regression coverage and map replacements before deleting browser cases (AGENTS.md:103–120); no production failure is claimed from the deletion alone.

Why this is new since the previous review: deletion commit 4ae4c61 removed the old sidebar-search case, but upstream eced798 subsequently converted the file to this global-search case. That upstream commit is absent from previously reviewed head 778457d and present in the current base. Merge a71c77d retained the deletion against the evolved file. This is a merge-integration coverage loss, not a reversal of the intentional sidebar-search removal.

Smallest exit criterion: restore the pinned-base case, or preserve the same assertions in the global-search browser file, and validate the full affected file in Chromium and WebKit. No sidebar-search UI restoration or production redesign is requested.

Previous findings and validation limits

  • The prior tooltip-test exit criterion is satisfied: the current test checks the declared delay separately, removes the transition override, and awaits native visibility. The rendered-width resize origin and conversation-bounded panel fixes remain present. Previously settled product choices remain settled.
  • This review is source-only on the pinned Blox object store. No PR code, build, test, or native workflow was executed; no CI rerun was triggered. All 15 outgoing commits have matching sign-offs.
  • Existing exact-head CI run 35761770974 is red: WebKit 1/2 reports 123 passed / 1 failed. The unchanged top-bar search/avatar case fails fixture teardown with expected reader role primary, received undefined, rather than the alignment assertion. Attribution to this PR is not established, so this remains a separate validation gap, not an additional asserted sidebar defect. The other three browser shards, measurements, JavaScript, Rust/tool integration, security, and DCO checks passed; Windows native validation was skipped.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212

Copy link
Copy Markdown
Contributor Author

🤖 Addressed Wes’s latest P2 in 21bec35 by restoring the upstream global-search child-session browser regression exactly as it exists on current main. This keeps sidebar search removed while preserving keyboard search into a hidden child, remount persistence, collapsed group/session intent, and native Enter/Space disclosure behavior. Focused Chromium + WebKit: 2/2 passed. Full scan: static checks, 83 integration tests, 2,100 unit tests, plugin-manager Rust tests, and 503/504 browser cases passed; the only failure was the unchanged Chromium composer-links caret measurement, which passed immediately in isolated rerun. Pre-push types, 33 related unit tests, and design guards passed.

@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: 21bec3516c

ℹ️ 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".

useRef,
useState,
useSyncExternalStore,
type CSSProperties,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Add the required DCO sign-off

The reviewed commit message contains no Signed-off-by trailer, so it violates the repository’s mandatory DCO policy and will fail the required hosted DCO check. Recreate the commit with git commit --signoff using the verified effective author identity.

AGENTS.md reference: AGENTS.md:L150-L153

Useful? React with 👍 / 👎.

@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.

Review clear: previous blocker resolved

Reviewed head 21bec3516c946b68b83f6899b6f56c3999eaf3f7 against base bef06b7692002cfdf3296901611dd544269b246d. No remaining actionable findings in this convergent re-review; this is a review comment, not an approval.

  • The previous blocker is resolved. The sole change since reviewed head 7c36465d7ebf3295ef20f6698ce90e3e075fb27c restores the complete 70-line tests/browser/session-search.spec.mjs, byte-for-byte identical to the pinned base. It exercises global Search Buzz keyboard selection of a hidden child session, the session composer, both collapsed sidebar levels surviving a Messages remount, and native Enter/Space summary behavior. This preserves the integration regression without bringing back sidebar search.
  • Previously reviewed fixes are retained. The rendered-width keyboard resize origin, conversation-bounded narrow panel, and tooltip test using the real transition are unchanged from the prior reviewed head. The independent source lane and coordinator verification found no new defect in the restored test or its current fixture/navigation wiring. All 16 outgoing commits retain author-matching sign-offs; the hosted DCO check is successful.
  • Validation and limits: existing CI run 35771819539 for this head is green. Its logs explicitly show the restored full file passing in Chromium, shard 2 (2.1s) and WebKit, shard 2 (2.4s), along with the retained sidebar regressions. These jobs tested GitHub merge commit 87b0376ba297acee1787cc543d66dee9f4486b15 (this head merged with 298a50a9861c19d33e45b2b52bdadb81b128f15d), not an isolated checkout of the pinned review base. This review was source-only on Blox: no checkout, install, build, test, PR-code execution, or CI rerun. Packaged native/macOS title-bar behavior and live-relay acceptance were not exercised; Windows native validation was skipped by the automatic workflow.

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