Skip to content

fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) - #4304

Merged
wesbillman merged 2 commits into
block:mainfrom
iroiro147:fix/2381-attach-image-to-file
Aug 5, 2026
Merged

fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381)#4304
wesbillman merged 2 commits into
block:mainfrom
iroiro147:fix/2381-attach-image-to-file

Conversation

@iroiro147

Copy link
Copy Markdown
Contributor

Fixes #2381.

What was broken

The message composer's paperclip accepts generic attachments — images, videos, PDFs, archives, and any other supported file — but its tooltip and accessible name still read "Attach image". Sighted users might reasonably believe the control is image-only, and screen-reader users get an incomplete description of what the button does.

The fix

Rename the accessible name and tooltip text on the generic composer paperclip in MessageComposerToolbar.tsx:

  • aria-label"Attach image""Attach file"
  • <TooltipContent>"Attach image""Attach file"

Plus update the 12 affected Desktop e2e selectors across five spec files to reference the new accessible name:

  • desktop/tests/e2e/file-attachment.spec.ts (2 selectors)
  • desktop/tests/e2e/spoiler.spec.ts (2)
  • desktop/tests/e2e/composer-image-draw.spec.ts (2)
  • desktop/tests/e2e/image-attachment-gallery.spec.ts (4)
  • desktop/tests/e2e/video-attachment.spec.ts (2)

Scope (per the issue)

The feedback screenshot dialog (desktop/src/features/settings/ui/SendFeedbackDialog.tsx) is unchanged — that dialog itself is image-only, so its "Attach image" wording is accurate. This PR only touches the generic composer control.

Test plan

  • All 105 unit tests in desktop/src/features/messages/ui/*.test.mjs pass locally.
  • Verified no remaining "Attach image" string outside the intentionally preserved feedback dialog:
    grep -rn '"Attach image"' desktop/
    # → only hits in SendFeedbackDialog.tsx
  • The six e2e specs are only exercised in CI; the selector updates are mechanical and verified by grep to reference the new a11y name.

Blast radius

  • Files touched: MessageComposerToolbar.tsx (two strings); five e2e spec files (12 selector updates).
  • User-facing behaviour: one tooltip + one screen-reader name change; no functional or visual changes otherwise.
  • No API or state change.

Out of scope

  • The feedback dialog's "Attach image" wording — kept per the issue's own "Scope" guidance.
  • Any i18n plumbing — Buzz Desktop doesn't currently localize these strings.

… "Attach file"

The message composer's paperclip accepts a generic set of attachments —
images, videos, PDFs, archives, and any other supported file — but its
tooltip and accessible name still read "Attach image". This misleads
sighted users into thinking the control is image-only, and gives
screen-reader users an incomplete description of the actual action.

Rename the generic paperclip:
- `aria-label` "Attach image" → "Attach file"
- Tooltip content "Attach image" → "Attach file"

Per the issue's scope, image-specific actions elsewhere stay put: the
feedback screenshot dialog (`SendFeedbackDialog.tsx`) keeps its
image-only wording because the dialog itself is image-only.

Update the 12 affected Desktop e2e selectors across five spec files
(`file-attachment`, `spoiler`, `composer-image-draw`,
`image-attachment-gallery`, `video-attachment`) to reference the new
accessible name.

Fixes block#2381.

Signed-off-by: Sarthak Singh <sarthak.singh@juspay.in>
@iroiro147
iroiro147 requested a review from a team as a code owner August 2, 2026 12:05
Refreshes the "Attach image" → "Attach file" relabel against latest
main. Resolves the file-attachment.spec.ts conflict by adopting main's
chooseQuarterlyReport helper, and updates the selectors main added
after this PR opened so none still target the old accessible name:
- file-attachment.spec.ts: chooseQuarterlyReport, chooseLargeVideo,
  choosePhoto helpers
- composer-image-draw.spec.ts: one paperclip click

SendFeedbackDialog keeps its image-only wording (unchanged).

Signed-off-by: Ravneet Arora <rarora@squareup.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@ravarora2 ravarora2 added the triage-ready Appropriate for agentic review label Aug 5, 2026

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

Approved on Wes's behalf at cf1271e381b9a308591b061ac9c21f57aaf3396e.

The implementation matches issue #2381 exactly: the generic composer paperclip's accessible name and tooltip now say “Attach file,” while the image-only feedback dialog correctly retains “Attach image.” I searched desktop/ and found no stale generic-composer wording or selector.

Tests do change: 17 Desktop E2E selector occurrences across five specs were mechanically updated to target the new accessible name; test behavior and product attachment behavior are otherwise unchanged. The diff is clean and mergeable. CI was still running when I reviewed, so this approval is for the code at the stated head rather than a claim that all checks have completed.

@wesbillman
wesbillman merged commit d42d60d into block:main Aug 5, 2026
27 checks passed
sandro-sq added a commit that referenced this pull request Aug 5, 2026
* origin/main: (32 commits)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)
  ...

Signed-off-by: Alessandro Joabar <sandro@squareup.com>
wpfleger96 pushed a commit that referenced this pull request Aug 5, 2026
…-agents-nav

* origin/main:
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)

Signed-off-by: Duncan <dcfd242e557282d7a1e2cf2e6877522682f1e5c6156dc92ca7d90eaedd3b0f95@buzz.block.builderlab.xyz>
tellaho added a commit that referenced this pull request Aug 5, 2026
…-pairing

* origin/main:
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)

Signed-off-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
Co-authored-by: Taylor Ho <taylorkmho@gmail.com>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
brow pushed a commit that referenced this pull request Aug 6, 2026
…rebase-wt

* origin/main: (29 commits)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  fix(buzz-agent): scope handoff cap per turn, not per session lifetime (#4805)
  Fix mobile message timeline bounce (#4862)
  Polish mobile bottom sheets and profile cards (#4911)
  Fix media attachment actions (#4849)
  fix(desktop): remove join API token control (#4897)
  ...

Co-authored-by: Tom Brow <tomb@block.xyz>
Signed-off-by: Tom Brow <tomb@block.xyz>

# Conflicts:
#	desktop/src-tauri/src/commands/agents.rs
#	desktop/src-tauri/src/commands/agents_deploy.rs
#	desktop/src-tauri/src/managed_agents/env_vars.rs
tlongwell-block pushed a commit that referenced this pull request Aug 6, 2026
Brings main (a7ea86c) into the PR branch as a merge commit — no rebase,
no force — so the PR's merge ref is rebuilt against current main.

Merged clean: no conflicts, and the resulting tree is byte-identical to
`git merge-tree --write-tree` (fe05a2b).
No manual conflict resolution was performed, so no observer-batching
production or test byte changed in this commit.

Note on CI: this merge does not by itself turn the board green. The two
red Desktop Smoke shard-3 cases are main-branch defects that this branch
inherits through the merge, both root-caused and reproduced on main at
a7ea86c (which cannot contain this PR):

  - inbox-edit.spec.ts:233 expects the composer aria-label "Attach image",
    renamed to "Attach file" on main by d42d60d (#4304); the spec was
    added afterwards by eb6a375 (#2198), so the rename could not have
    updated it. Deterministic: 3/3 red on main in CI, 2/2 reproduced
    locally, 5/5 green with the one-word fix.
  - messaging.spec.ts:606 asserts a single day divider, but the e2e bridge
    seeds #general at now-120s and now-60s; within ~2 minutes of local
    midnight those straddle two calendar days and the non-.first() locator
    trips strict mode. Reproduced on main with page.clock.install pinned to
    00:01:28Z (2 dividers) versus 12:00:00Z (1 divider).

Both fixes belong in their own PR against main, not here.

* origin/main:
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)

Co-authored-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@buzz.block.builderlab.xyz>
Signed-off-by: Sami <f4a42a97e594b77bdbd8ee35191c8b28a94a4cb871d96f32921558275421fb68@buzz.block.builderlab.xyz>
bradseiler added a commit that referenced this pull request Aug 6, 2026
…igration

* origin/main: (95 commits)
  fix(desktop): virtualize channel member lists (#4991)
  fix(desktop): enforce owner-only access in internal builds (#4053)
  test(desktop): match attachment button label (#4993)
  fix(acp): pace observer telemetry at 1/s with per-channel batch envelopes (#4917)
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  feat(desktop): sync themes per community (#3653)
  feat(desktop): cap OpenClaw agent parallelism at 5 (#4019)
  ...

Signed-off-by: Brad Seiler <seiler@squareup.com>
tlongwell-block pushed a commit that referenced this pull request Aug 6, 2026
* origin/main: (26 commits)
  fix(desktop): skip native notifications outside app bundles (#5004)
  ci: prove the relay-driven mesh lifecycle — discover, join, infer, deny — with real nodes (#3862)
  fix(desktop): virtualize channel member lists (#4991)
  fix(desktop): enforce owner-only access in internal builds (#4053)
  test(desktop): match attachment button label (#4993)
  fix(acp): pace observer telemetry at 1/s with per-channel batch envelopes (#4917)
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  fix(reactions): support max-length custom emoji (#3833)
  feat(desktop): allow leaving your final community (#3621)
  fix(buzz-agent): recover from context-window 400s instead of sticking (#4946)
  docs(persona-pack): fix stale desktop import instructions (#4500)
  fix(desktop): route macos notification clicks (#4799)
  feat(mobile): sync themes per community (#3767)
  ...

Co-authored-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
Signed-off-by: Eva <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
wpfleger96 pushed a commit that referenced this pull request Aug 6, 2026
…n-surface

* origin/main: (44 commits)
  fix(buzz-agent): classify read timeouts distinctly in LLM error messages (#4959)
  Refine agent runtime controls (#5026)
  test(desktop): await thread scroll anchor (#3174)
  Improve desktop mobile pairing flow (#5024)
  feat(desktop): show selected community in rail (#5000)
  fix(desktop): stop rate-limited reconnect backfill from tearing down the authenticated socket (#4990)
  fix(desktop): skip native notifications outside app bundles (#5004)
  ci: prove the relay-driven mesh lifecycle — discover, join, infer, deny — with real nodes (#3862)
  fix(desktop): virtualize channel member lists (#4991)
  fix(desktop): enforce owner-only access in internal builds (#4053)
  test(desktop): match attachment button label (#4993)
  fix(acp): pace observer telemetry at 1/s with per-channel batch envelopes (#4917)
  fix(desktop): enable the content security policy (#4614)
  fix(mobile): merge relay recounts with locally seen thread replies (#4633)
  fix(desktop): enable message editing in Inbox (#2198)
  relay: fuzz WebSocket 1012 restart-close timing on graceful drain (BUZZ_DRAIN_JITTER_MS) (#4542)
  fix(desktop): outline the selected community (#4969)
  fix(desktop): clamp thread panel to channel surface (#4965)
  style(messages): increase username contrast (#4948)
  fix(desktop): rename generic attachment action from 'Attach image' to 'Attach file' (#2381) (#4304)
  ...

# Conflicts:
#	desktop/src-tauri/src/commands/mod.rs
setar pushed a commit to setar/buzz that referenced this pull request Aug 7, 2026
Resolved 26 conflict files. All upstream structural changes taken,
i18n t() calls preserved and added for new hardcoded strings.

New translation keys added:
- common.{retry, open}
- huddle.{loading_agents, unmute_mic, click_unmute_or_hold}
- onboarding.machine.{backup_file_link, recover_phone_link,
  desc_enter_key_prefix, or_separator, start_new_identity}
- onboarding.key_import.drop_backup_here
- projects.{buzz_hosted, linked, updating}
- settings.{confirm_mobile_code, confirmation_code, codes_match,
  pairing_sas_status, pairing_transferring_status, pairing_done_status,
  all_communities}
- messages.attach_file (renamed from attach_image per upstream block#4304)

Signed-off-by: Sergey Taranenko <s.taranenko@vdi-service.ru>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

triage-ready Appropriate for agentic review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(desktop): rename generic attachment action from ‘Attach image’ to ‘Attach file’

3 participants