Mobile: opening an attachment names the file after the link text instead of the imeta filename
Maintainers usually reply within 1 day
@wenhaoone is already working on this.
Since Oct 3, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 90/100
Research direction
Start in mobile/lib/features/channels/message_content.dart at _buildLink, then inspect ImetaEntry.filename in mobile/lib/features/channels/message_media.dart. Run the widget tests near “opens local file links through an authenticated download” in mobile/test/features/channels/message_content_test.dart. Done means a labelled attachment with an imeta filename opens under that filename while links without one retain the link text.
Written by the indexing model from the issue text.
Description
Summary
On mobile, tapping a file attachment link downloads the file and opens it under the link text instead of the attachment's imeta filename. When the label is prose rather than a file name, the opened or saved file loses its real name and extension.
Where
mobile/lib/features/channels/message_content.dart, in _buildLink: the authenticated download is opened with the link text as the file name:
await ref.read(openDownloadedFileProvider)(
url,
auth.headersFor(url),
text,
);
_buildLink already receives the matching ImetaEntry? imeta, and ImetaEntry (mobile/lib/features/channels/message_media.dart) parses filename. It just isn't used here.
Steps to reproduce
- Send a message with a non-media attachment whose link label is not the file name, e.g. content
[Quarterly report](https://<relay>/media/<sha256>.pdf)withimetacontainingfilename q3-report.pdf. - Tap the link on mobile.
Expected: the file opens as q3-report.pdf.
Actual: it is opened under Quarterly report, without the .pdf extension, so the system viewer may not recognize it.
Suggested fix
Prefer the imeta filename and fall back to the link text:
imeta?.filename ?? text,
A widget test next to opens local file links through an authenticated download in mobile/test/features/channels/message_content_test.dart can pin it, with a labelled link plus an imeta tag carrying filename.
- Dominant language
- Rust
- Stars
- 35.3k
- Forks
- 4.7k
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 175
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from block/buzz
-
Difficulty 1/5 Under an hour Newbie friendliness 80/100
Maintainers usually reply within 1 day
-
Desktop: private project home channels show no lock icon in the sidebarPossibly taken @Bartok9 claimed this 4 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
Maintainers usually reply within 1 day
-
buzz-pair: panics on wss:// relays — rustls CryptoProvider never installedPossibly taken @Bartok9 claimed this 5 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
block/buzz#7880 · 2 comments · 2 reactions ·
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddingsPossibly taken A pull request linked to this issue is open or already merged. Openbug llm translation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
pytest plugin: a crashed xdist worker aborts the whole session with INTERNALERRORPossibly taken @hazelxue claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
-
skillfs: one malformed chat-log line aborts the entire skill-usage analysis (skill_usage_from_chat_logs.py)Possibly taken @zjncs claimed this today. Opencomponent:skillfs
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
agentic-os-org/ANOLISA#6116 · 1 comment ·
Maintainers usually reply within 1 day