Files
buzz/mobile/ios/Podfile.lock
Tom Brow e558f15faa Mobile: one New chat screen (#9079)
Mobile had two New chat screens.
[#8884](https://github.com/block/buzz/pull/8884) made the Flutter draft
page (first send creates and names the chat) the New chat screen, but
kept the older create form (a native iOS sheet, with a Flutter bottom
sheet on Android) for one case: resuming a creation that an older build
had saved with a chat name and no first message. Nothing creates that
state anymore, so the old form only appeared for users with an
interrupted creation from before that change.

This removes the old form. Every New chat, including that resume case,
now opens the draft page:

- **New chat**: unchanged.
- **Resuming an interrupted creation**: after the existing Resume /
Discard setup / Later prompt, the draft page shows the saved chat with
its agent and workspace locked and a Retry button, the same choices the
old sheet offered when it locked its fields. A creation saved with a
first message resumes exactly as before. One saved without a message
finishes without one, because a saved creation can't change after its
first relay write.

The iOS editor's chat-only code (`presentChat`, `updateChatAssistants`,
the agent list, and its avatar loader) goes too. The same editor still
handles profile fields, channel details and workspace names. The native
test and CI step that covered only the removed chat form are removed.

### Screenshots

Resuming an interrupted creation saved without a first message:

| Before: old native sheet (removed) | After: draft page (kept) |
| --- | --- |
| <img
src="https://raw.githubusercontent.com/block/buzz/5d0a502e92fc3dfeffbe4fa95d63ba8f73d1e612/pr-9079--01-before-resume-native-sheet.png"
width="300"> | <img
src="https://raw.githubusercontent.com/block/buzz/5d0a502e92fc3dfeffbe4fa95d63ba8f73d1e612/pr-9079--02-after-resume-draft-page.png"
width="300"> |

A brand new chat already opened the draft page and is unchanged:

<img
src="https://raw.githubusercontent.com/block/buzz/5d0a502e92fc3dfeffbe4fa95d63ba8f73d1e612/pr-9079--03-new-chat-draft-page.png"
width="300">

### Validation

- Changed tests: `me_page_test` checks that Resume and Discard setup
both open the draft page and that no native sheet is requested.
`solo_creation_tags_test` checks that recovering an interrupted named
creation through the draft page's Retry continues with member setup,
keeps the saved name and agent, and adds no first message.
- Full mobile Flutter suite (4,431 passed) and `flutter analyze`
(clean). iOS debug simulator build succeeds.
- Automated simulator run (iPhone 17 Pro, iOS 27, signed-in account):
New chat opened the draft page, the agent picker selected an agent, and
the first send created the chat, which then appeared under Solo. New
workspace still opened the native editor, enabled Create once named, and
showed the Discard changes prompt on cancel. The recording isn't
attached here because it shows internal account content.
- Resuming an interrupted
pre-[#8884](https://github.com/block/buzz/pull/8884) creation can't be
produced by the current build. For the screenshots above, a
capture-only, uncommitted patch to a `main` build seeded one; the branch
build installed over it resumed it on the draft page. The widget tests
cover finishing it.
- `solo_creation_tags_test` also covers a conflicting pending Solo
organization edit during that Retry: the draft offers the Conflicting
Solo changes dialog, keeps the saved creation, and the next Retry
finishes it.

🤖 Generated with [Claude Code](https://claude.com/claude-code)


buzz-review-completed

---------

Signed-off-by: Tom Brow <tomb@squareup.com>
Co-authored-by: Tom Brow <tomb@squareup.com>
Co-authored-by: studio <dc2fc481343672df31a689840c09299972e704dac592e0da6f18486646a7ee3e@buzz.block.builderlab.xyz>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 16:34:05 -08:00

233 lines
8.6 KiB
Plaintext

PODS:
- app_badge_plus (1.2.10):
- Flutter
- app_links (6.4.1):
- Flutter
- audio_session (0.0.1):
- Flutter
- camera_avfoundation (0.0.1):
- Flutter
- connectivity_plus (0.0.1):
- Flutter
- file_selector_ios (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_secure_storage_darwin (10.0.0):
- Flutter
- FlutterMacOS
- google_mlkit_commons (0.12.0):
- Flutter
- MLKitVision (~> 10.0.0)
- google_mlkit_selfie_segmentation (0.11.0):
- Flutter
- google_mlkit_commons
- GoogleMLKit/SegmentationSelfie (~> 9.0.0)
- GoogleDataTransport (10.1.0):
- nanopb (~> 3.30910.0)
- PromisesObjC (~> 2.4)
- GoogleMLKit/MLKitCore (9.0.0):
- MLKitCommon (~> 14.0.0)
- GoogleMLKit/SegmentationSelfie (9.0.0):
- GoogleMLKit/MLKitCore
- MLKitSegmentationSelfie (~> 1.0.0-beta14)
- GoogleToolboxForMac/Defines (4.2.1)
- GoogleToolboxForMac/Logger (4.2.1):
- GoogleToolboxForMac/Defines (= 4.2.1)
- "GoogleToolboxForMac/NSData+zlib (4.2.1)":
- GoogleToolboxForMac/Defines (= 4.2.1)
- GoogleUtilities/Environment (8.0.2):
- GoogleUtilities/Privacy
- GoogleUtilities/Logger (8.0.2):
- GoogleUtilities/Environment
- GoogleUtilities/Privacy
- GoogleUtilities/Privacy (8.0.2)
- GoogleUtilities/UserDefaults (8.0.2):
- GoogleUtilities/Logger
- GoogleUtilities/Privacy
- GTMSessionFetcher/Core (3.5.0)
- image_picker_ios (0.0.1):
- Flutter
- just_audio (0.0.1):
- Flutter
- FlutterMacOS
- local_auth_darwin (0.0.1):
- Flutter
- FlutterMacOS
- MLImage (1.0.0-beta8)
- MLKitCommon (14.0.0):
- GoogleDataTransport (~> 10.0)
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- GoogleUtilities/Logger (~> 8.0)
- GoogleUtilities/UserDefaults (~> 8.0)
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- MLKitSegmentationCommon (1.0.0-beta14):
- MLKitCommon (~> 14.0)
- MLKitXenoCommon (= 1.0.0-beta16)
- MLKitSegmentationSelfie (1.0.0-beta14):
- MLKitSegmentationCommon (= 1.0.0-beta14)
- MLKitVision (10.0.0):
- GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- MLImage (= 1.0.0-beta8)
- MLKitCommon (~> 14.0)
- MLKitXenoCommon (1.0.0-beta16):
- MLKitCommon (~> 14.0)
- MLKitVision (~> 10.0)
- mobile_scanner (7.0.0):
- Flutter
- FlutterMacOS
- nanopb (3.30910.0):
- nanopb/decode (= 3.30910.0)
- nanopb/encode (= 3.30910.0)
- nanopb/decode (3.30910.0)
- nanopb/encode (3.30910.0)
- open_filex (0.0.2):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- photo_manager (3.11.0):
- Flutter
- FlutterMacOS
- PromisesObjC (2.4.0)
- record_ios (1.2.1):
- Flutter
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- FlutterMacOS
DEPENDENCIES:
- app_badge_plus (from `.symlinks/plugins/app_badge_plus/ios`)
- app_links (from `.symlinks/plugins/app_links/ios`)
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
- file_selector_ios (from `.symlinks/plugins/file_selector_ios/ios`)
- Flutter (from `Flutter`)
- flutter_secure_storage_darwin (from `.symlinks/plugins/flutter_secure_storage_darwin/darwin`)
- google_mlkit_commons (from `.symlinks/plugins/google_mlkit_commons/ios`)
- google_mlkit_selfie_segmentation (from `.symlinks/plugins/google_mlkit_selfie_segmentation/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- just_audio (from `.symlinks/plugins/just_audio/darwin`)
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
- mobile_scanner (from `.symlinks/plugins/mobile_scanner/darwin`)
- open_filex (from `.symlinks/plugins/open_filex/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- photo_manager (from `.symlinks/plugins/photo_manager/darwin`)
- record_ios (from `.symlinks/plugins/record_ios/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
SPEC REPOS:
trunk:
- GoogleDataTransport
- GoogleMLKit
- GoogleToolboxForMac
- GoogleUtilities
- GTMSessionFetcher
- MLImage
- MLKitCommon
- MLKitSegmentationCommon
- MLKitSegmentationSelfie
- MLKitVision
- MLKitXenoCommon
- nanopb
- PromisesObjC
EXTERNAL SOURCES:
app_badge_plus:
:path: ".symlinks/plugins/app_badge_plus/ios"
app_links:
:path: ".symlinks/plugins/app_links/ios"
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
camera_avfoundation:
:path: ".symlinks/plugins/camera_avfoundation/ios"
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/ios"
file_selector_ios:
:path: ".symlinks/plugins/file_selector_ios/ios"
Flutter:
:path: Flutter
flutter_secure_storage_darwin:
:path: ".symlinks/plugins/flutter_secure_storage_darwin/darwin"
google_mlkit_commons:
:path: ".symlinks/plugins/google_mlkit_commons/ios"
google_mlkit_selfie_segmentation:
:path: ".symlinks/plugins/google_mlkit_selfie_segmentation/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
just_audio:
:path: ".symlinks/plugins/just_audio/darwin"
local_auth_darwin:
:path: ".symlinks/plugins/local_auth_darwin/darwin"
mobile_scanner:
:path: ".symlinks/plugins/mobile_scanner/darwin"
open_filex:
:path: ".symlinks/plugins/open_filex/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
photo_manager:
:path: ".symlinks/plugins/photo_manager/darwin"
record_ios:
:path: ".symlinks/plugins/record_ios/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
SPEC CHECKSUMS:
app_badge_plus: 09939f19a075cc742cc155d8ed85e6d8601f0104
app_links: 3dbc685f76b1693c66a6d9dd1e9ab6f73d97dc0a
audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0
camera_avfoundation: 968a9a5323c79a99c166ad9d7866bfd2047b5a9b
connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd
file_selector_ios: ec57ec07954363dd730b642e765e58f199bb621a
Flutter: 71a624a5bc0c04062bf19101d501e466baf2fb47
flutter_secure_storage_darwin: acdb3f316ed05a3e68f856e0353b133eec373a23
google_mlkit_commons: b4dfe2f6ae4cbf24010dc6640a28984d01343c86
google_mlkit_selfie_segmentation: 7fc41b3ef8ba238abf8dc76724da50e44de8aaf0
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
GoogleMLKit: b1eee21a41c57704fe72483b15c85cb2c0cd7444
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326
just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed
local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb
MLImage: 0de5c6c2bf9e93b80ef752e2797f0836f03b58c0
MLKitCommon: 47d47b50a031d00db62f1b0efe5a1d8b09a3b2e6
MLKitSegmentationCommon: f634fb3c20c1d8bace22a2c026bdaa0ca17613d9
MLKitSegmentationSelfie: 62371f35c33d49c3e7474443677b6a0c7ac9c98b
MLKitVision: 39a5a812db83c4a0794445088e567f3631c11961
MLKitXenoCommon: 1a4268c1222a6043047af5bb9435028206c63287
mobile_scanner: 9157936403f5a0644ca3779a38ff8404c5434a93
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
open_filex: 432f3cd11432da3e39f47fcc0df2b1603854eff1
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
photo_manager: 6ab48c2ce7ec21aa06d59e6cc049f0b6d9ba7f94
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
record_ios: 980fd386a97a35987d0fce3dfda4b26a38c90f4c
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb
url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b
video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a
PODFILE CHECKSUM: ed10001903303a0ae660957e1d727012a3136046
COCOAPODS: 1.17.0