镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

fix(composer): make native Mac text shortcuts work past link chips - #2390

Merged
tlongwell-block merged 1 commit into
block:mainfrom
kchung:chung/fix-keyboard-navigation
Nov 4, 2026
Merged

tlongwell-block merged 1 commit into
block:mainfrom
kchung:chung/fix-keyboard-navigation

Conversation

@kchung

@kchung kchung commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

Context

The composer breaks the standard macOS text shortcuts on a line that has a pasted link. Control-A, Control-E, Control-K and Option-Up/Down stop at the link chip. On a line with no chip, they already work. WebKit and Chromium stop native paragraph commands at an uneditable element.

Description

This PR adds no new shortcuts and remaps nothing. The composer now runs these native macOS shortcuts itself, as macOS defines them, so they also work past a link chip. Windows and Linux do not change.

Changes

  • Control-A and Control-E move to the start and end of the line. With Shift, they select to there.
  • Option-Up and Option-Down move to the line edge, then to the next line on a second press, as in other Mac text fields.
  • Control-K deletes to the end of the line across a link chip. Control-Y does not restore text that Control-K deleted across a chip.

Testing

Unit tests cover each shortcut. A new browser test runs the native shortcuts in WebKit and Chromium, because only a real browser stops at the chip; it fails before this change. Manually checked in the desktop app.

On macOS, Control-A, Control-E, Option-Up/Down and Control-K stopped at
a pasted link chip, because WebKit and Chromium end native paragraph
commands at an uneditable element. The composer now runs these commands
in document terms. Control-K across a chip deletes in the editor;
plain-text Control-K stays native.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Kevin Chung <chung@squareup.com>
@kchung
kchung marked this pull request as ready for review November 4, 2026 05:56
@kchung
kchung requested a review from a team as a code owner November 4, 2026 05:56
@kchung kchung changed the title fix(composer): move past link chips with Mac paragraph shortcuts fix(composer): make native Mac text shortcuts work past link chips Nov 4, 2026
@tlongwell-block
tlongwell-block merged commit d1c9c54 into block:main Nov 4, 2026
42 checks passed
@kchung
kchung deleted the chung/fix-keyboard-navigation branch November 4, 2026 14:22
gilgtm added a commit that referenced this pull request Nov 4, 2026
* origin/main: (52 commits)
  feat(agents): give plugin agent types the Buzz side of a turn (#2364)
  feat(plugins): pin buzz://plugin-install links to a path and commit (#2315)
  feat(plugins): tint currentColor SVG page icons like host icons (#2314)
  feat(notifications): add a soft notification sound (#1536)
  feat(agents): let agents propose a profile picture (#2267)
  fix(plugins): default reminders and workflows off for fresh installs (#2291)
  Show all reactors in compact, separate emoji capsules (#2179)
  fix(panels): remember page split widths per workspace (#2264)
  feat(search): browse open channels from a Channels tab in search (#2164)
  perf(relay): page combined replay filters after a reconnect (#2308)
  fix(composer): make native Mac text shortcuts work past link chips (#2390)
  perf(relay): read creator proofs for many channels per filter (#2312)
  fix(channels): let published leave and delete confirm through access loss (#2357)
  fix(media): save native context menu media downloads and hide loopback links on macOS (#2131)
  fix(links): say why a message preview is unavailable, and preview unjoined public channels (#2136)
  test(browser): serve emoji artwork in the reaction hit-area journey (#2138)
  test(browser): click a reply link only after its row settles (#2358)
  fix(agents): restore delegated workflow mentions (#2399)
  feat(identity): always back up keys in managed builds (#2398)
  test(threads): render before checking the reader across activity resizes (#2389)
  ...

Signed-off-by: Gil Birman <gil@squareup.com>
Co-authored-by: Claude <noreply@anthropic.com>

# Conflicts:
#	src/plugins/author.test.mjs
wpfleger96 added a commit that referenced this pull request Nov 4, 2026
…w-tab

* origin/main: (41 commits)
  [3/5] Add protection to the Claude harness plugin (#1878)
  fix(settings): keep the bottom padding on long sections (#2361)
  fix(mermaid): cap diagram output size (#2231)
  feat(agents): give plugin agent types the Buzz side of a turn (#2364)
  feat(plugins): pin buzz://plugin-install links to a path and commit (#2315)
  feat(plugins): tint currentColor SVG page icons like host icons (#2314)
  feat(notifications): add a soft notification sound (#1536)
  feat(agents): let agents propose a profile picture (#2267)
  fix(plugins): default reminders and workflows off for fresh installs (#2291)
  Show all reactors in compact, separate emoji capsules (#2179)
  fix(panels): remember page split widths per workspace (#2264)
  feat(search): browse open channels from a Channels tab in search (#2164)
  perf(relay): page combined replay filters after a reconnect (#2308)
  fix(composer): make native Mac text shortcuts work past link chips (#2390)
  perf(relay): read creator proofs for many channels per filter (#2312)
  fix(channels): let published leave and delete confirm through access loss (#2357)
  fix(media): save native context menu media downloads and hide loopback links on macOS (#2131)
  fix(links): say why a message preview is unavailable, and preview unjoined public channels (#2136)
  test(browser): serve emoji artwork in the reaction hit-area journey (#2138)
  test(browser): click a reply link only after its row settles (#2358)
  ...

# Conflicts:
#	src/buzz-mcp/tools.ts
johnmatthewtennant added a commit that referenced this pull request Nov 4, 2026
Co-authored-by: Martha <73923046810b68ae182000e74ef7c444383a907df20f81f2ba1008870a6f45a1@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* origin/main: (96 commits)
  test(agents): refuse a real relay workflow mention in the harness kit (#2444)
  fix(agents): catch up every event watch on the kinds it watches (#1852)
  Keep local artifact collections current (#1507)
  feat(members): add several people to a chat in one write (#2010)
  feat(solo): let viewers join read-only spaces (#2301)
  [3/5] Add protection to the Claude harness plugin (#1878)
  fix(settings): keep the bottom padding on long sections (#2361)
  fix(mermaid): cap diagram output size (#2231)
  feat(agents): give plugin agent types the Buzz side of a turn (#2364)
  feat(plugins): pin buzz://plugin-install links to a path and commit (#2315)
  feat(plugins): tint currentColor SVG page icons like host icons (#2314)
  feat(notifications): add a soft notification sound (#1536)
  feat(agents): let agents propose a profile picture (#2267)
  fix(plugins): default reminders and workflows off for fresh installs (#2291)
  Show all reactors in compact, separate emoji capsules (#2179)
  fix(panels): remember page split widths per workspace (#2264)
  feat(search): browse open channels from a Channels tab in search (#2164)
  perf(relay): page combined replay filters after a reconnect (#2308)
  fix(composer): make native Mac text shortcuts work past link chips (#2390)
  perf(relay): read creator proofs for many channels per filter (#2312)
  ...

Signed-off-by: John Tennant <jtennant@block.xyz>
ravarora2 added a commit that referenced this pull request Nov 4, 2026
…-mentions

* origin/main: (57 commits)
  Keep local artifact collections current (#1507)
  feat(members): add several people to a chat in one write (#2010)
  feat(solo): let viewers join read-only spaces (#2301)
  [3/5] Add protection to the Claude harness plugin (#1878)
  fix(settings): keep the bottom padding on long sections (#2361)
  fix(mermaid): cap diagram output size (#2231)
  feat(agents): give plugin agent types the Buzz side of a turn (#2364)
  feat(plugins): pin buzz://plugin-install links to a path and commit (#2315)
  feat(plugins): tint currentColor SVG page icons like host icons (#2314)
  feat(notifications): add a soft notification sound (#1536)
  feat(agents): let agents propose a profile picture (#2267)
  fix(plugins): default reminders and workflows off for fresh installs (#2291)
  Show all reactors in compact, separate emoji capsules (#2179)
  fix(panels): remember page split widths per workspace (#2264)
  feat(search): browse open channels from a Channels tab in search (#2164)
  perf(relay): page combined replay filters after a reconnect (#2308)
  fix(composer): make native Mac text shortcuts work past link chips (#2390)
  perf(relay): read creator proofs for many channels per filter (#2312)
  fix(channels): let published leave and delete confirm through access loss (#2357)
  fix(media): save native context menu media downloads and hide loopback links on macOS (#2131)
  ...

Signed-off-by: Ravneet Arora <rarora@squareup.com>
kchung added a commit that referenced this pull request Nov 6, 2026
…composer (#2832)

### Context

Option+Up/Down switches conversations in Slack, but in Buzz it works
only once. After the switch, the composer takes focus and uses the keys
to move the caret, so the next press does nothing. The composer started
to keep these keys in
[#2390](#2390).

### Description

Option+Up/Down in an empty composer now steps to the previous or next
conversation, as in Slack. When the draft has text, the keys move the
caret by paragraph, across link chips.

### Changes

- Option+Up/Down in an empty composer switches conversations.
- Option+Up/Down in a composer with text moves the caret by paragraph.
- The channels design doc describes when the composer keeps these keys.

Signed-off-by: Kevin Chung <chung@squareup.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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