feat(channels): remove DMs from the sidebar - #157
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 77d8ffdf43
ℹ️ 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".
77d8ffd to
ef738e3
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ef738e3cd9
ℹ️ 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".
ef738e3 to
6b72d0a
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 6b72d0a4dd
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4b55dc2ccc
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: dd1d78b0fb
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8a0b637c4a
ℹ️ 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".
cfaefce to
d820533
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a692d3247d
ℹ️ 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".
a692d32 to
e4ab060
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e4ab060e1b
ℹ️ 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".
d820533 to
39cc184
Compare
e4ab060 to
f021088
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f0210884b4
ℹ️ 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".
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
f021088 to
225dfec
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 225dfecf94
ℹ️ 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".
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Changes requested at 225dfecf. One concrete restoration bug remains; the UI/navigation and scope-isolation review found no additional material blocker.
- Fix: preserve outgoing restoration across baseline enrichment, as detailed in the existing finding. Exit criterion: a gated intent → enrichment → delivery regression passes without relying on head advancement, while a later explicit hide still wins.
- Scope decision, not a protocol-redesign request: the acknowledged incomplete-baseline offline boundary remains. Obtain product acceptance and document bounded offline restoration, or agree on a conservative fallback; the current summary promises more than this case supports.
- Validation: hosted CI is green for this head, including JavaScript and Chromium/WebKit journeys; Windows native was skipped. Source review only locally, no deployed-relay/native acceptance. All six actual PR commits have DCO trailers, so the prior missing-trailer warnings are not carried forward.
Signed-off-by: klopez4212 <klopez4212@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 34e9b11d13
ℹ️ 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".
| } | ||
| })(); | ||
| return () => controller.abort(); | ||
| }, [hiddenKey, session, dmRosterKey, show, update]); |
There was a problem hiding this comment.
Recheck hidden DMs after connection recovery
When connectivity drops after this effect's initial read, an offline message that sorts behind the saved head is delivered during catch-up rather than through subscribeIncoming (the session only emits incoming notifications for provenance.phase === "live"), while the unread subscription still sees the unchanged head. Since none of these dependencies changes on disconnect/reconnect, the history window is never reread and the DM remains hidden until a remount, roster change, or later live message. Fresh evidence beyond the earlier transient-read retry is that the retries here cover only the initial invocation and no connection-recovery generation retriggers it.
AGENTS.md reference: AGENTS.md:L78-L80
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Accurate lifecycle limitation at 34e9b11d, but non-blocking for the now-documented scope: new live incoming messages, confirmed outgoing sends, and bounded history checks on reopen. This does not promise reconciliation on every in-place transport recovery.
The distinction is real: transport recovery updates the existing session (session.ts:1378–1444), while the outer relay service generation changes only on session replacement (service.ts:52–58,67–108). Roster refresh preserves an already-ready list (store.ts:791–814), so unchanged DM IDs do not retrigger this effect. Replay is excluded by session.ts:1288–1306; an older-sorting arrival can therefore remain hidden until remount, a relevant roster transition, or later qualifying activity.
Follow-up if reconnect recovery becomes required: observe the existing recovery lifecycle and repeat the bounded read, with a focused unchanged-head regression. No new protocol or delivery subsystem is needed. Source-traced; no local reconnect reproduction was run.
wesbillman
left a comment
There was a problem hiding this comment.
Carl, an automated reviewer, commenting via Wes’s GitHub account.
Approved at 34e9b11d135aa44875a2fee8190f79d8bb28daf2 against base fdc8a71ede5ead71125d656118ff44fbbee152f8. The prior requested changes are satisfied; no remaining blocker within the documented contract.
- The stable hide generation fixes outgoing restoration across baseline enrichment, while a later explicit hide still wins. Both interleavings have deterministic gated regression coverage. The immediate-removal/incomplete-baseline offline boundary is now explicitly documented by the author.
- The new reconnect observation is a non-blocking scope limitation, not silently dismissed. Lifecycle analysis and follow-up.
- Exact-head hosted CI passed, including JavaScript, Rust/tools, Chromium/WebKit journeys, measurements and DCO. Local validation was source/diff review only; no local suite, live-relay or native acceptance run. Windows native CI was skipped.
This supersedes my previous changes-requested verdict. Approval is not a merge action.
|
@klopez4212 do we want those assets that were added to this PR |
Signed-off-by: klopez4212 <klopez4212@gmail.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8698dd8e06
ℹ️ 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".
| const ids = events.map((event) => event.id); | ||
| const changed = | ||
| entry.knownIds && | ||
| ids.some((eventId) => !entry.knownIds?.includes(eventId)); |
There was a problem hiding this comment.
Exclude unconfirmed outbox entries from restoration
When this check runs after a restart while an outgoing DM is still pending or failed, session.read() merges matching local outbox records into its result (session.ts lines 1013–1022). This comparison treats those local IDs as new history and restores the row even though delivery was never confirmed, bypassing the observeSend path that deliberately waits for a receipt or verified echo. Filter local projections (which carry delivery) out of the saved and compared history IDs so failed sends cannot resurface a hidden DM.
AGENTS.md reference: AGENTS.md:L78-L85
Useful? React with 👍 / 👎.
Signed-off-by: klopez4212 <klopez4212@gmail.com>
…search-send * origin/main: Connect attachments to existing message delivery (#176) perf: preserve unchanged thread row identities (#171) perf: cache markdown preparation by content (#172) Add safe attachment upload groundwork (#150) feat: add sampling profiler launch modes (#148) feat(channels): remove DMs from the sidebar (#157) Distinguish namesake agents and selected recipients (#142) feat(channels): move diagnostics into Channel Settings (#163) Replace warning banners with shared Base UI toasts (#164) feat(shortcuts): add keyboard shortcut settings (#155) fix(channels): give floating unread cue an opaque panel surface (#153) feat(communities): add BUZZ_DEV_OPEN_RELAY to open the default relay on fresh dev ports (#151) Restore recipient avatars beside the composer mention tool (#162) Fix startup inventory duplication and late panel scroll shifts (#160) feat(channels): add channel creation (#138) Standardize Button and IconButton with Buzz design tokens (#145) Signed-off-by: Zach Marley <zmarley@squareup.com>
Summary
Offline boundary
Removal stays immediate. If the app closes before the first history snapshot finishes, a message received while closed that sorts behind the previous head may remain hidden until later verified activity. This is the chosen behavior for this version.
Validation
bbb96c0, including JavaScript, Rust and tool integration, browser measurements, Chromium/WebKit journeys, and DCO. Windows native validation was skipped.