Skip to content

Edit the latest own message with Up in the existing composer - #192

Merged
wesbillman merged 9 commits into
mainfrom
brain/up-arrow-edit
Sep 24, 2026
Merged

wesbillman merged 9 commits into
mainfrom
brain/up-arrow-edit

Conversation

@wesbillman

@wesbillman wesbillman commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Implemented by Brain on behalf of Wes.

Summary

  • Up arrow in an empty composer edits the latest eligible own message using the same input, toolbar, pencil/header, cancel control and send arrow.
  • Preserve new-message draft/undo history and raw attachment source; isolate channel/thread targets and keep original notification recipients unchanged.
  • Reuse the session edit/outbox lifecycle for delivery, exact-event retry, stale-target rejection and emoji-preparation recovery. Enable bounded kind-40003 writes through the existing dev broker.

No formatting-branch changes, new persistence/delivery owner, or merge request. Independent review by Pinky found one recovery defect and one wiring-coverage gap; both were resolved and re-reviewed at 7f556a93.

Originating Buzz channel: b13178df-463f-492d-92f0-1ec84c4fc718; thread 271447353733254cd3469d442a811148c99225dae52eb26d052640232d343482.

Validation

At 7f556a9334a47152ef215d089ef54b0ce16934f5:

  • Required managed and repository hooks enabled; pre-push TypeScript, 131 related Vitest files / 1,660 tests, design typecheck and design guards passed.
  • bin/pnpm test:browser tests/browser/message-edit.spec.mjs --project chromium --project webkit --no-deps --workers=2: 2 passed. Exercises integrated channel edit/cancel/save/retry, native focus/caret/undo, preserved attachment and responsive edit controls at 375/768/1440px in light/dark.
  • Actual ThreadPanel → composer → session integration proves reply targeting and emoji-preparation recovery; new regression failed on the absent retry button before the fix and passed afterward.
  • Source fold/row-sharing, broker validator and real localhost broker sign/publish coverage included in the hook pass.
  • design:test (84 tests) and design:build passed on the feature snapshot before delivery formatting and the isolated emoji-recovery delta; design build retains the existing large-chunk advisory.
  • Wes tried and accepted the running full-app interaction before delivery checks.

Test-layer accounting

One browser scenario added (run in both engines); none removed. It proves native decorated-editor focus/caret/undo, real page wiring and responsive geometry, which jsdom cannot establish. Eligibility, modifier/IME gates, scope changes, stale/deleted targets, delivery states and recovery matrices are component/integration tests. No existing coverage was removed or weakened. No mutation run claimed.

Remaining gates / boundaries

  • Hosted CI and required maintainer/code-owner approval remain before merge; no merge performed.
  • No new packaged-native or full Rust validation was run locally; broader coverage is left to CI.
  • Editing applies to retained eligible rows. Attachment upload is disabled during edits; original attachment metadata/Markdown and notification recipients remain intact.
  • The concurrently developed composer-formatting branch is separate and has not been integrated here.

Review follow-up — 4058a78

Brain, acting on behalf of Wes. Both GitHub review threads have fixes and regression coverage; replies link the details.

  • Media review uses the shared edit target contract, including exact targets and same-second root/reply fallback.
  • Outbox dismissal exposes removal only after durable commit; duplicate callers share the result and failed dismissal preserves editor state.
  • Final required hooks passed TypeScript, 143 related Vitest files / 1,837 tests, design typecheck and guards. Pinky re-reviewed the production delta; the last commit pins deterministic adverse-order fixture values only.
  • Added component/session and deferred storage regressions; no new/removed browser cases. No current-head local browser/native run or mutation evidence claimed. Prior browser/human evidence above belongs to the original head, not this follow-up.
  • New-head hosted CI and required maintainer/code-owner approval remain merge gates. Nothing merged.

Main integration — e5c4e47

Brain, acting on behalf of Wes. Merged main 12a957c2 into the feature branch without rewriting history. Resolved the two broker-file conflicts by retaining edit and message/reaction-deletion admission, including validation on both sign/publish paths, and preserving both API regression cases. Overlapping fold/contracts/row-identity/CSS auto-merges retain both features; no feature expansion.

At e5c4e478ef0cdaa9564274326ab6fa5582fea9af, required hooks passed TypeScript, 146 related Vitest files / 1,853 tests, and design types/guards. This includes the 38-test broker API file and current edit integration. GitHub now reports MERGEABLE; DCO passes. Hosted JavaScript/Rust/browser CI is queued/running, Windows native is skipped, and maintainer/code-owner approval remains. No new local browser/native run or merge performed.

Brain added 3 commits September 23, 2026 19:09
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
@wesbillman
wesbillman requested review from a team and comp615 as code owners September 24, 2026 01:16

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator Author

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: no actionable code, product or security blocker established. Reviewed head 7f556a9334a47152ef215d089ef54b0ce16934f5 against base fe897a10f1bfa6590092b0f82d943e9b555c42c3, with an independent composer/keyboard lane.

Traced target eligibility and conversation scope, draft/application-undo restoration, raw attachment and original recipient preservation, edit/outbox delivery and exact-event retry, stale/deleted targets, emoji-preparation recovery, and broker admission. A thread’s visible root is not excluded by the documented edit contract; a replies-only restriction would be a new requirement, not a proven fix.

Validation: read-only source review on Blox, with no PR-code execution or test reruns. Independently verified exact-head CI: successful JavaScript, Rust/tool integration, browser measurements, and Chromium/WebKit journey shards. Windows native validation was skipped; this review adds no live/native acceptance evidence. Author-reported tests and human acceptance remain separate evidence.

This is a COMMENTED review, not approval. Required maintainer/code-owner approval remains before merge.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator Author

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.

Changes needed: one P2 completeness defect. Wire the media-review image/video comment composer into the existing edit target contract and cover that real consumer; no new editor or delivery owner is needed. The optional dismissal-recovery note is non-blocking and does not imply lost durable text.

Reviewed head 7f556a9334a47152ef215d089ef54b0ce16934f5 against base fe897a10f1bfa6590092b0f82d943e9b555c42c3, integrating three independent review lanes. Hosted CI is green: 2,564 Vitest tests and 267 browser journeys per engine (Chromium/WebKit), including the new edit journey. Review was source/diff plus hosted evidence; no duplicate local suites, live-account edit, or packaged-native acceptance claimed.

Merge criterion: resolve the P2 inline finding with image/video surface wiring coverage and validate the updated head. Existing session/outbox ownership, original recipient/attachment preservation, and relay-side edit authorization do not require redesign.

GitHub rejected a formal CHANGES_REQUESTED review because the authenticated account also authored this PR. This COMMENTED review records the blocking recommendation; it is not approval. It adds a verified production-consumer omission not covered by the earlier clear review.

Comment thread src/features/messages/MessageComposer.tsx
Comment thread src/features/messages/useMessageEdit.ts
Brain added 6 commits September 23, 2026 20:32
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
Signed-off-by: Brain <1a02c72794dcd0f07058a353bc3a81f4028b8c77c92c87fce6d5c8b85970a20b@buzz.block.builderlab.xyz>
@wesbillman
wesbillman merged commit e9e557c into main Sep 24, 2026
12 checks passed
@wesbillman
wesbillman deleted the brain/up-arrow-edit branch September 24, 2026 03:10
morgmart pushed a commit that referenced this pull request Sep 24, 2026
* origin/main:
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)

Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>
morgmart pushed a commit that referenced this pull request Sep 24, 2026
…embers-dialog

* morganm/channel-members-support:
  Preserve member-add recovery across dialog lifetimes
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)

Signed-off-by: Carl <c217fe6b9d958f41c3a5e030dccc7f626775a923089cb6491305eade75ea1f1b@buzz.block.builderlab.xyz>

# Conflicts:
#	src/shared/design-system/ui/Dialog.tsx
zrmarley added a commit that referenced this pull request Sep 24, 2026
…o-player-polish

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>
zrmarley added a commit that referenced this pull request Sep 24, 2026
…-content-compat

* origin/main: (38 commits)
  Fix diff content fallback, keyboard scrolling and edit selection (#205)
  Standardize form controls and field feedback across Buzz (#174)
  Keep image review downloads and external opens distinct (#144)
  Verify media review comments (#166)
  Follow system appearance (#210)
  Add rich composer formatting and spoiler rendering (#203)
  feat: show roster-backed channels and managed instances in profiles (#188)
  Add new direct message flow (#156)
  Remove Home, start in Messages, and keep Channels enabled (#194)
  fix: restore avatar presence controls and active-input sensing (#198)
  Add legacy diff messages with inline and expanded viewing (#202)
  Edit the latest own message with Up in the existing composer (#192)
  Add complete reaction toggles to the message menu (#185)
  feat: add persistent community navigation rail (#191)
  test: add margin to warm-switch performance gate (#195)
  Add composer attachments and compatible media preparation (#183)
  Add reply and copying to the shared message menu (#182)
  fix: avoid idle workspace re-renders from activity and label churn (#186)
  feat: add devtools trace capture to web profiling (#180)
  Add optional channel templates, teams and personal group defaults (#181)
  ...

Signed-off-by: Zach Marley <zmarley@squareup.com>

# Conflicts:
#	docs/channels.md
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