mirror of
https://github.com/block/buzz.git
synced 2026-11-02 23:41:08 +00:00
Replace the mobile Agents sheet with a full-page directory of verified owned agents. Add dedicated creation and avatar pages with catalog-backed model selection, reuse the profile emoji/photo/camera controls, and expose Builderbot model settings while labeling desktop agents “Manage on desktop.” Share one account-scoped model catalog across editable cards and retries. Choose Bestie from the agent profile using the shared encrypted main-agent record (text-only action, filled star once selected), and move confirmed deletion to a top-left trash control with native iOS glass. Include uploaded avatars in owner registrations so desktop can display them. Validation: mobile analysis and all 3,958 hosted-enabled app tests passed; default-build tests run by the push hook. Earlier iPhone build installed and iterated with the user; the current iOS build succeeds, but final changes still need a device pass. Independent review found no new blockers. Actual camera capture and live Bestie sync remain unconfirmed; the existing shared `main-agent` wire format and Bestie terminology are retained. ### Snapshots Widget-harness captures with test data (not native iOS chrome). | Agents directory | Image avatar editor | | --- | --- | |  |  | --------- Signed-off-by: kenny lopez <klopez4212@gmail.com> Co-authored-by: Terp <5856f6900e8e0a4e0ea1f4f8d2ee33e4753d2119bc122f94ecafc660b46c0511@buzz.block.builderlab.xyz>
37 lines
937 B
Dart
37 lines
937 B
Dart
import 'package:flutter/material.dart';
|
|
|
|
import '../../shared/theme/theme.dart';
|
|
|
|
/// Read-only model details for agents without mobile model editing.
|
|
class AgentModelInfo extends StatelessWidget {
|
|
const AgentModelInfo({
|
|
required this.model,
|
|
this.managementLabel = 'Manage on desktop',
|
|
super.key,
|
|
});
|
|
final String? model;
|
|
final String managementLabel;
|
|
|
|
@override
|
|
Widget build(BuildContext context) => Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
if (model != null && model!.trim().isNotEmpty) ...[
|
|
Text(
|
|
model!,
|
|
textAlign: TextAlign.center,
|
|
style: context.textTheme.labelMedium,
|
|
),
|
|
const SizedBox(height: Grid.half),
|
|
],
|
|
Text(
|
|
managementLabel,
|
|
textAlign: TextAlign.center,
|
|
style: context.textTheme.bodySmall?.copyWith(
|
|
color: context.colors.onSurfaceVariant,
|
|
),
|
|
),
|
|
],
|
|
);
|
|
}
|