upstream(sync): Mobile UI — upstream 0.5.12–0.5.18 parity - #305
Merged
Conversation
Ports the upstream mobile test suite from desktop-v0.5.18 ahead of the implementation so the new timeline, composer, emoji, invites, profile and channel-details behaviours are covered before the port lands. Refs #277 Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Takes upstream desktop-v0.5.18 mobile wholesale (permalink chips, community invites, composer/timeline/emoji work, iOS native emoji picker, jump-to-latest + sticky-date glass, thread tail + iOS channel header, device auth for identity export, batched observer telemetry, pairing confirmation, channel details page) and re-homes the Crew agent-activity layer on top: AgentActivityLine stays mounted above both the channel and thread composers, now inside upstream's AndroidImeLift dock, and the moved profile providers (features/profile -> shared/profile) are re-imported. Fixes #277 Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: Oscar Le <oscar.lehuu@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
This was referenced Aug 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Takes upstream Buzz
mobile/wholesale fromdesktop-v0.5.11→desktop-v0.5.18and re-homes Crew's mobile delta on top of it. Per issue #277's conflict matrix,mobile/is low-conflict and Crew's fork divergence there is small, so this is a tag-scoped port rather than a per-PR cherry-pick.Upstream scope landed: compact permalink chips (block#5639), community invites (block#5641), composer input regressions (block#5594), profiles/DMs/sheets polish (block#5401), timeline/composer/emoji work (block#5645, block#5873, block#5874, block#6297), thread tail + iOS channel header (block#6399), device auth for identity export (block#5116), batched observer telemetry unwrap (block#5805), pairing confirmation (block#6018), iOS native emoji picker (block#5853), channel details page (block#6113).
Crew divergence preserved (the only Crew-owned mobile delta that survives):
features/channels/agent_activity/**(agent activity line, observer control/models, working-bot providers) andshared/relay/**observer plumbing are kept.AgentActivityLinestays mounted above both composers, now nested inside upstream's newAndroidImeLiftcomposer dock:features/profile/user_cache_provider.dart+user_profile.dart→shared/profile/; Crew's agent-activity imports were re-pointed at the new location rather than keeping a duplicate.mobile/and none was introduced.docs/crew/upstream-buzz.jsonis intentionally not bumped here: the pin belongs to the meta sync issue #285 and bumping it from a mobile-only child PR would claim parity this PR does not deliver on its own.docs/crew/STATE.mdis updated to record that mobile is now in scope for upstream sync (the earlier "mobile out of scope" decision is superseded); D-026 is unchanged — desktop remains the main office.Related issue
Fixes #277 (child of #285; guardrails per #278).
Testing
TDD order, evidence attached in the session:
flutter teston pre-port codeMobile checks:
flutter analyze→ 0 issues;dart format --set-exit-if-changedclean; file-size ratchet clean.Gates run individually (not
just ci— its mobiledart formatleg hangs in this env):pnpm --filter buzz check— passpnpm --filter buzz typecheck— passpnpm --filter buzz test— passjust test-unit— 4 pre-existing failures unrelated to this diff:buzz-clicommand_inventory_is_stable,subcommand_counts_are_stable,subcommand_names_are_stableandbuzz-dbmigration::tests::embedded_migrator_contains_consolidated_initial_schema. Reproduced identically from a cleanmainworktree (logs11-preexisting-main-buzz-cli.log,12-preexisting-main-buzz-db.log). Everything else passes.just check-compile— N/A, no Rust changes in this diff (just _ensure-sidecar-stubsverified anyway).UI evidence — full-screen Android emulator (1080x2400,
xyz.block.buzz.mobile), cleanmainbuild vs. this branch's build:main/ 0.5.11)Limitation, stated rather than papered over: every surface this port changes (timeline, composer, emoji picker, thread tail, channel details, invites, pairing confirmation) lives behind device pairing, which needs a paired desktop + live relay that this environment cannot stand up. So the emulator screenshots prove the ported app builds, installs and launches unchanged through the pairing wall, and the 1575-test widget suite (which pumps those exact widgets, including the new upstream ones) is the behavioural evidence for what is behind it.
Link to Devin session: https://app.devin.ai/sessions/51e0224f24344b1ea587ded6909157a3
Requested by: @oscarlehuu