镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

feat(agents): simplify imports and clarify community scope - #1660

Merged
tellaho merged 59 commits into
mainfrom
morganm/agent-import-polish
Oct 27, 2026
Merged

tellaho merged 59 commits into
mainfrom
morganm/agent-import-polish

Conversation

@morgmart

@morgmart morgmart commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Category: improvement
User Impact: Owners can import agents with clearer choices, see which communities share their settings, and inspect community-specific memories without labels overflowing the pane.

Problem: Import choices were split across sources without making shared settings clear. Editing a shared agent did not identify every affected community, and section switches could leave hidden drafts or Save controls behind. Long memory names could widen the pane instead of truncating.

Solution: Show a single import list with plain Import actions for other communities and a joined type selector for Buzz (Legacy). Before importing an agent or team members from another community, explain which settings are shared and which memories stay local, with an optional remembered preference. During editing, place Save above a community-scope notice, confirm draft discards, and block section changes during saves. Put community scope popovers beside the Memory headings and constrain long names within the pane.

Import behavior

  • Keep an imported cross-community agent’s identity, type, and settings. The explanation shows its source and destination; it does not copy memories or conversations.

  • Keep legacy import controls inside their own cards as interface size grows. Generic types show the selected name on both agent and team actions; registered logos stay compact.

  • Use provider images in Legacy type choices. Picking a type changes the action without starting an import; loading disables the menu.

  • Hide Import entries once discovery completes without warnings and there is nothing to import. Refresh discovery when the menu opens, keep a steady dialog height, and retain partial-failure notes and retryable errors.

  • Preserve keyboard focus when import completes. The shared SplitButton keeps its action and menu edges joined while open.

  • Keep both Import entries available when legacy discovery reports warnings. Show the diagnostic and scope empty-result copy to the sources that could be read.

  • With no agents yet, keep a first-run import tile available when discovery is incomplete so warning-only results remain reachable.

  • Importing team members from other communities uses the same explanation and account preference as individual imports. Cancellation performs no joins; changing the destination dismisses the confirmation.

  • When a legacy team references agents still in another community, direct recovery through Import an agent before retrying the team.

Settings and memories

  • Show “Changes apply in” below Save for shared agents. The popup lists the current community first and names the shared profile, instructions, and model settings.
  • Keep the active editing line visible as the footer opens. Respect reduced motion and main’s shared resting-pointer preview timing.
  • “Keep editing” preserves a draft. Confirming discard resets the form and any staged harness choice. Saving blocks section switches; failures leave drafts recoverable. Hosted instructions, model settings, and invalid model drafts participate in the same guard.
  • Show the community image beside both Memory headings. Its popover includes the image, name, and an explanation that memories are not shared across communities.
  • Ellipsize long memory labels while preserving the icon, timestamp, chevron, full accessible name, keyboard expansion, and readable body.
File changes

src/app/DeveloperSettings.tsx
Expose dev-only import scenarios for inspecting empty communities and source combinations.

src/app/settings-sections.ts
Register the existing developer settings entry for the import scenario control.

src/bundled/agents/AgentCard.module.css
Allow import-card tracks to reflow with interface text size while retaining the existing inventory layout.

src/bundled/agents/AgentDetails.test.tsx
Cover community ordering, presentation changes, footer visibility, and popup content.

src/bundled/agents/AgentDetails.tsx
Own shared-community presentation and the Save footer integration; keep focused edits visible as the footer opens.

src/bundled/agents/AgentSettingsHost.tsx
Expose the footer's editing and visibility state to its host.

src/bundled/agents/AgentTabs.test.tsx
Cover cancellation, confirmed discard, pending saves, failures, and staged harness changes.

src/bundled/agents/AgentTabs.tsx
Guard section changes with the shared discard dialog, reset confirmed drafts, and retain the current section during a save.

src/bundled/agents/AgentsPage.module.css
Place the footer within the existing pane scrollport and reserve space while it is visible.

src/bundled/agents/AgentsPage.test.tsx
Cover import availability including warning-only first run, visible fallback type choices, individual/team explanation confirmation, shared reminder preference, cancellation, destination changes, errors, and focus recovery.

src/bundled/agents/AgentsPage.tsx
Combine import sources in one list, explain shared settings before cross-community import, remember the owner’s preference, and integrate the settings footer.

src/bundled/agents/README.md
Describe the import list, cross-community explanation, and developer scenarios.

src/bundled/agents/index.tsx
Connect the developer import scenario to the existing Agents page.

src/bundled/builderlab/adapter-type/Instructions.test.tsx
Cover cancellation, confirmed discard, and pending/failed hosted saves for instructions and models.

src/bundled/builderlab/adapter-type/Instructions.tsx
Report hosted instruction drafts and pending saves to the shared section guard without changing the provider-owned Save control.

src/bundled/builderlab/adapter-type/ModelSettings.tsx
Guard model and effort edits, including incomplete selections, while only the visible editor reports state.

src/bundled/builderlab/index.test.tsx
Complete the Settings editor load before testing that deletion waits for a fresh sign-in. Split shared login, creation sign-in recovery, setup recovery, and editing/deletion into independent cases under the existing timeout.

src/bundled/claude-code/tabs.test.tsx
Assert the intentional discard behavior through the provider form.

src/bundled/codex/tabs.test.tsx
Assert cancellation and confirmed discard through the provider form.

src/bundled/pi/tabs.tsx
Report unsaved edits independently from Save availability, including an invalid model draft.

src/bundled/profiles/ProfilePanel.tsx
Use the same community presentation and footer behavior in profile panes.

src/bundled/profiles/index.tsx
Provide the existing community reader to the profile host.

src/features/agents/AgentSaveButton.module.css
Define footer placement and spacing around the shared scroll-edge material.

src/features/agents/AgentSaveButton.tsx
Animate the footer and community notice, support accessible popup interactions, and reveal the current editing position when needed.

src/features/agents/MemoryPanel.test.tsx
Cover copy, current-community presentation, keyboard access, and consumer cleanup.

src/features/agents/MemoryPanel.tsx
Place community scope controls beside both headings, shorten descriptions, and allow memory rows to shrink within the pane.

src/features/agents/tabs.tsx
Thread the existing community reader through the Memory section contract.

src/features/developer/agent-import-scenario.ts
Model bounded development-only import scenarios without changing real agents.

src/features/developer/mode.ts
Expose the development scenario under the existing developer-mode owner.

src/shared/design-system/DESIGN.md
Document SplitButton composition and the shared scroll-edge material.

src/shared/design-system/styles/components.css
Style the shared split action, bound and wrap long labels, and keep both joined halves the same height.

src/shared/design-system/styles/overlays.css
Remove the dialog-specific copy of the scroll-edge styling.

src/shared/design-system/ui/AvatarStack.module.css
Separate overlapping mini images with the panel background while retaining readable artwork and actual artwork overlap.

src/shared/design-system/ui/Dialog.tsx
Reuse the extracted scroll-edge material in the existing dialog footer.

src/shared/design-system/ui/ScrollEdgeMaterial.module.css
Own the existing progressive blur and gradient treatment.

src/shared/design-system/ui/ScrollEdgeMaterial.tsx
Expose that treatment for both dialog and agent footers.

src/shared/design-system/ui/SplitButton.test.tsx
Cover type selection without executing the action, disabled/loading states, and accessible naming.

src/shared/design-system/ui/SplitButton.tsx
Compose the shared Button and Menu into a joined action with a separate choice trigger.

src/shared/design-system/ui/registry.ts
Register SplitButton and scroll-edge ownership; describe avatar separation while preserving reduced-motion behavior.

tests/browser/agent-library.spec.mjs
Exercise popup and discard interactions, footer geometry, editing visibility, and long-label truncation in Chromium and WebKit. Drive animation frames with a controlled clock while retaining the geometry and focus assertions.

tests/fixtures/agent-library.tsx
Supply bounded synthetic legacy choices, joinable team members, memberships, settings, and opt-in long memory data to the existing component fixture. Import layout cases read persisted appearance through the real appearance service.

tests/fixtures/design-system/playwright.config.ts
Include the split-button browser specimen in the existing design-system runner.

tests/fixtures/design-system/split-button.spec.ts
Check the joined action and type menu through real browser interaction, including a constrained action that wraps while keeping both halves aligned.

tests/fixtures/design-system/ui/ButtonSpecimens.tsx
Present split-button variants and states alongside the shared button specimens.

tests/fixtures/design-system/ui/DialogSpecimens.tsx
Exercise the import explanation artwork in the shared dialog composition.

tests/fixtures/design-system/ui/componentSpecimens.tsx
Show overlapping mini avatars and import artwork through the shared component specimens.

tests/fixtures/profiles.tsx
Provide the community reader required by the production profile plugin so standalone profile journeys mount the real plugin.

Reproduction

  1. Open Agents → Import an agent or Import a team. Check other-community and Buzz (Legacy) choices, switch a Legacy type, and confirm that choosing a type does not execute the import.
  2. Import from another community. Verify source/destination artwork and the settings/memory explanation; cancel should preserve the list. Test the remembered preference with a subsequent import.
  3. Edit an owned agent shared across communities. Open “Changes apply in” beneath Save, then switch sections with unsaved changes. Cancel preserves the draft; confirmed discard removes it. A pending save prevents switching, and a failed save remains retryable.
  4. Open Memory and activate the image beside either heading using hover, keyboard, or tap. Narrow the pane with a long memory name: it should truncate while its timestamp and chevron remain visible; expand it to inspect the body.
  5. Repeat editing in the owned profile pane, both themes, and enlarged text.

Development-only source combinations are available under Settings → Developer → Agent import: nothing, other communities only, Buzz (Legacy) only, or both, plus an empty-community view. Pretend imports change no real agents; production builds exclude this control.

Screenshots

Built-app Memory captures from 8dc001f60 with disposable test data and modeled host/relay boundaries; no live account or community data. Memory content is unchanged by the subsequent rebases.

Memory pane: bounded labels Community scope popover
Memory pane with long names truncated and timestamps visible Community scope popup with community avatar, name, and scope explanation

Validation

  • Recovery follow-up at 2cd286bd7: all 67 Agents page component tests pass. Warning-only discovery failed in both menu regressions before the fix; the team recovery assertion also failed before its correction. Mandatory pre-push TypeScript/related-unit checks and design guards passed on this head. No native legacy-store writes or live imports were exercised.
  • Rebased onto main 13b74c89f, preserving the hosted-profile and shared hover behavior. Range-diff retains all 39 feature commits; the latest rebase only combines AvatarStack documentation with main’s reduced-motion description.
  • Agent detail, section-switching, provider-form, MemoryPanel, and import behavior have component coverage. Hosted instructions/models cover cancellation, incomplete drafts, pending saves, failure recovery, and confirmed discard.
  • The 14 agent-library Chromium/WebKit cases cover popup/discard interactions, footer geometry, editing visibility, and truncation. The truncation regression failed before the fix with a 1,575px-wide row in a 360px pane.
  • Four agent-library browser journeys added, none removed: scope/discard interactions, animated footer geometry, focused editing visibility, and truncation. They assert browser layout, focus, pointer, and scrolling behavior; state/failure matrices remain in component tests.
  • On published head 6f50f4688, all 14 Chromium/WebKit cases passed (17.2s). Mandatory pre-push TypeScript/related-unit checks (70.00s), design type/guard checks (4.65s), and repository push policies passed. Native appearance and final human acceptance of the truncation/hosted guard fixes remain pending. No review-completion attestation is claimed.

CI recovery — 1116f3590

Run 40538549005 at 2cd286bd7 exposed four PR-related causes across all 12 failed jobs:

  • The standalone profile fixture lacked the newly required community reader, preventing profile-plugin registration. Supply its stable fixture snapshot; production dependency injection stays unchanged.
  • The mini-avatar mask consumed the previous overlap. Restore 2px of artwork overlap and balance the stack’s trailing spacing through the existing shared AvatarStack owner.
  • Footer animation assertions depended on receiving enough real-time animation frames under runner load. Control the browser clock and retain every geometry/focus threshold, animation, and hit-test assertion.
  • One hosted integration test exceeded the existing 5s budget. Split it at actual workflow boundaries, retain every prior assertion, and additionally verify a successful sign-in retry after failure/cancellation. No timeout, retry, or tolerance was increased.

Local Apple Silicon macOS/Hermit validation of the changed inputs:

  • All 44 cases in the complete agent-library, agent-activity-overhaul, profiles, and profile-channel-focus browser files passed in Chromium and WebKit. After balancing the stack’s trailing spacing, all 24 agent-library/activity cases passed again. Five consecutive animation runs per engine also passed (10/10).
  • The complete hosted integration file now has 13 cases, passing in three consecutive runs. Same-machine JSON timing comparison: before, 10 cases / 2.795s summed execution / 1.769s slowest case; after, 13 cases / 3.484–3.510s summed execution / 0.941–0.946s slowest case. The additional setup costs about 0.7s in total while bounding each workflow; Standalone Vitest wall time was 5.06s before and 5.06s on committed head 1116f3590; these single-run local measurements do not establish Linux CI performance.
  • No browser cases were added or removed for this recovery. Existing profile wiring, shared-stack geometry, and animated-footer browser contracts remain at their existing layer; provider failure/recovery matrices remain in Vitest.

The first pre-push hook also exposed an intermittent WorkflowEditor YAML recovery assertion outside this PR’s changes. Its complete 22-test file passed on the same head; WorkflowEditor, Field, and Textarea match main. That failure is recorded and left unpatched.

Recovery pushed to morganm/agent-import-polish at 1116f3590. Mandatory pre-push TypeScript/related-unit checks (70.28s), design checks (4.72s), and push policies passed on the unchanged retry. Hosted CI on this replacement head still needs confirmation. Native appearance and human acceptance remain pending.

Import follow-up — 80f6740c6

  • f506f6928: show the selected type name in place of generic robot artwork on legacy agent/team actions.
  • 6d0c5cf0d: expose incomplete-discovery diagnostics when the owner has no agents.
  • 5c530e50c: reflow import cards and bound shared SplitButton labels, retaining full joined height and separate action/menu hit targets.
  • 80f6740c6: use the shared explanation/preference gate for team members joining from other communities, showing every source. Legacy team-port semantics stay unchanged.

The final changed inputs passed all 71 tests in the complete Agents page and SplitButton component files (18.06s), all 18 agent-library cases in Chromium/WebKit (22.6s), and the shared split-button browser file in both engines (5.4s). First-run diagnostics, fallback labels, team confirmation, and pointer interception were reproduced before their fixes. Two browser journeys were added, none removed: persisted 110% interface sizing with raw pointer hit testing, and nested team-confirmation focus/source artwork at enlarged size. State and preference matrices remain in component tests. The new cases took 4.0–4.7s and 2.2–2.4s per engine locally.

Built-app captures below use the existing development import scenario, disposable relay data and a fixture provider. They exercise the actual compiled app with development React at 110% interface size; no native app, real account or community data was used.

Light, 361px viewport Dark, 1280px viewport
Scaled import actions contained within narrow cards Wide import cards with readable fallback type labels

Mandatory TypeScript/related-unit checks (64.47s), design checks (4.43s), and push policies passed on 80f6740c6. Native acceptance and hosted CI on this replacement head remain pending.

@morgmart
morgmart requested a review from a team as a code owner October 26, 2026 18:21
@wesbillman
wesbillman force-pushed the carl/copy-agent-to-community branch from c0701b9 to 21972f5 Compare October 26, 2026 18:31
@wesbillman
wesbillman requested a review from a team as a code owner October 26, 2026 18:31
Base automatically changed from carl/copy-agent-to-community to main October 26, 2026 21:12
@tellaho
tellaho force-pushed the morganm/agent-import-polish branch from b5188a4 to 7312938 Compare October 26, 2026 23:40

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

🤖 Star Lord’s automated source review via Wes’s account, integrating independent Rocket, Mantis and Groot reviews. Two changes requested inline: preserve Import access after incomplete discovery, and correct the team recovery instruction.

Reviewed head 7312938852959a3e4844a5321f8aa8612f5e8693 against base 848288b6725fa26627a8590f57285f0de341ee51. Source only; no tests or app workflows run. The CI snapshot shows three failed browser shards and CI required failing; causes were not assessed. Native imports, rendered layout and keyboard behavior remain unverified.

Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
morgmart and others added 23 commits October 27, 2026 08:58
An action joined to a menu of choices for it: the label names the
current choice, and choosing in the menu changes it without running the
action. Base UI has no split button, so it composes Buzz Button and Menu.
Import uses it to show and change the type an old Buzz agent comes in as.

Co-authored-by: Morgarita <6e967af659416160ab4f2fd56d74c8c6f273791ee7bfc9468a1be37c387947be@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
In development builds, Developer settings can stand in for what Import
finds: nothing, agents in other communities, Buzz (Legacy) agents and
teams, or both, and can show the community as having no agents yet.
Pretend imports change nothing.

Co-authored-by: Morgarita <6e967af659416160ab4f2fd56d74c8c6f273791ee7bfc9468a1be37c387947be@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Import an agent and Import a team now show one list with no guidance
paragraphs. Every action reads Import. Agents from other communities come
in as the same agent. Each Buzz (Legacy) agent or team has a split button
naming the type it comes in as, with a menu to change it. What did not
come over reads as a note; failures stay alerts. The menu entries appear
only when something can be imported, and the dialog keeps its height as
the list changes.

Co-authored-by: Morgarita <6e967af659416160ab4f2fd56d74c8c6f273791ee7bfc9468a1be37c387947be@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
…rios

Buttons whose visible text is "Import as Claude" now have names that
start with that text, so voice control finds them. A Developer settings
scenario change now reaches an Agents page that is already open.

Co-authored-by: Morgarita <6e967af659416160ab4f2fd56d74c8c6f273791ee7bfc9468a1be37c387947be@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

🤖 @wesbillman Both recovery issues are fixed at 2cd286bd76cad18f7dced01fcafd3766f6ac1b96:

  • 72fd7362b: keep both Import routes available after warning-only legacy discovery, expose the diagnostic, and scope empty-result copy to readable sources.
  • 2cd286bd7: tell people to use Import an agent for the named missing members before importing the team again.

Validation: all 67 tests in src/bundled/agents/AgentsPage.test.tsx pass. The warning-only menu cases and team recovery assertion failed before their respective fixes. Mandatory pre-push TypeScript/related-unit checks and design guards passed on the pushed head. Both inline threads are resolved.

Native legacy-store writes and live imports were not exercised; hosted CI is pending.

tellaho and others added 3 commits October 27, 2026 09:38
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Keep each hosted workflow isolated under the existing per-test budget and retain sign-in failure, cancellation, setup retry, editing, and deletion assertions. Drive footer animation frames with the browser clock instead of depending on CI scheduling.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>

@kalvinnchau kalvinnchau left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Original findings in this review were established at 2cd286b. Reassessment at 1116f35 repaired the four CI blockers. Latest reassessment at 80f6740 also verifies repairs to wrong-agent targeting, first-run warning access, team sharing confirmation and fallback type labels; confirmations are posted in their existing threads. Exact-head CI run 40546571971 is green. One new P3 pending-discovery tile flash is reported separately: #1660 (review) . Previous-head evidence remains scoped to its original SHA. This is a COMMENT review, not approval.

Comment thread src/bundled/profiles/index.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Comment thread tests/browser/agent-library.spec.mjs Resolved
Comment thread src/bundled/builderlab/index.test.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
tellaho and others added 4 commits October 27, 2026 09:56
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Use the same account preference and confirmation gate for team members joining from other communities. Preserve legacy team import behavior and show every source community in the existing dialog.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

🤖 @kalvinnchau Addressed the import concerns on morganm/agent-import-polish at 80f6740c6:

  • 5c530e50c: reflow scaled cards and contain split-action hit targets, including wrapped labels.
  • 80f6740c6: share the explanation/reminder gate with cross-community team joins; cancellation and destination changes perform no joins. Legacy team ports retain their existing behavior.
  • f506f6928: show selected type names when artwork is generic.
  • 6d0c5cf0d: keep first-run warning-only discovery reachable.

The fixture, mini-avatar, animation-clock and hosted-test concerns map to the already-pushed d1a23cec1, 711690fb7 and 1116f3590 fixes. Seven open threads resolved; the diagnostic follow-up was on an already-resolved thread.

Validation of the final changed inputs: 71 component tests, 18 Chromium/WebKit agent-library cases, and both shared SplitButton browser cases passed. Reproduced the new regressions before fixing them. The pointer case persists 110% sizing and reloads; the team case checks nested-dialog focus, Escape, sources and confirmation at enlarged size. Built-app captures and exact timings are in the description. Mandatory push checks passed on this head; replacement CI and native acceptance remain pending.

@tellaho

tellaho commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

🤖 Screenshot spread for 80f6740c6 (20 captures).

Captured from the actual compiled app in headless Chromium, with development mode enabled and disposable community, relay, memory and provider data. The agent forms use the real Claude settings UI. Interface size is 110%; the gallery covers dark/light appearance and 390px narrow layouts. Pane/dialog images are cropped from the rendered app; the Messages image retains its host context.

Native appearance and final human acceptance remain pending.

Agent pane

Identity draft · dark Identity draft · narrow light
Identity draft · dark Identity draft · narrow light
Shared-settings notice Discard on section change
Shared-settings notice Discard on section change
Runtime settings Agents page
Runtime settings Agents page

Memory

Core and recalled memories Long labels · narrow light
Core and recalled memories Long labels · narrow light
Community scope popover Expanded memory · light
Community scope popover Expanded memory · light

Owned profile pane in Messages

Profile pane in its conversation Profile pane sharing popover
Profile pane in its conversation Profile pane sharing popover

Agent imports

Mixed sources · list top Legacy type menu · scrolled
Mixed sources · list top Legacy type menu · scrolled
Generic type name · narrow light Individual sharing confirmation
Generic type name · narrow light Individual sharing confirmation

Team imports

Community and legacy teams · content crop Team sharing confirmation
Community and legacy teams · content crop Team sharing confirmation

First run and incomplete discovery

No agents · diagnostic entry point Warning-only result
No agents · diagnostic entry point Warning-only result

@kalvinnchau kalvinnchau left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Reassessment at 80f6740: all four previously open import findings are repaired. Exact-head CI run 40546571971 is green. One new P3 remains: pending discovery temporarily shows and then removes the first-run import tile. This COMMENT review synthesizes independent static, security/contracts and actual-app integration lanes; no approval is submitted.

Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Distinguish pending discovery from failure before offering the first-run import tile. Preserve warning and failure recovery, existing import menus, and the Create/Marketplace controls through an empty result.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

🤖 @kalvinnchau Fixed the first-run import flash in be47e3d7b.

Pending discovery keeps Create and Marketplace prominent. The Import tile appears for actual candidates, warnings or a failed read; existing Import menus remain reachable during discovery.

Validation: all 71 AgentsPage component tests pass. New controlled pending-to-empty and pending-to-failure regressions failed before the fix; warning-only coverage stays green. The empty-result test also preserves both controls and focus. Compiled-app Chromium checks for the unchanged UI source pass in wide/dark and narrow/light at 110% interface size: control bounds and focus stay unchanged, and each pending/empty image pair is byte-for-byte identical. Mandatory commit and push checks passed.

Actual compiled app with disposable native/relay data and the existing development empty-inventory scenario. New-head CI and native acceptance remain pending.

Pending · wide dark Empty result · wide dark
Pending discovery, wide dark Empty discovery, wide dark
Pending · narrow light Empty result · narrow light
Pending discovery, narrow light Empty discovery, narrow light

@loganj loganj left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Larry, Rbot and Auto: an independent adversarial review of be47e3d7b. Source review only, plus Auto's local test and mutation run. We split the review by concern. Rbot took runtime correctness. Auto took completeness, shared-component consumers and test evidence. Larry took design coherence and what crosses between communities on import.

Verdict: approve, with two must-fix items. Both are small and we trust you to fix them without another full review round:

  1. Attention saves can lose their error when you switch tabs mid-save (inline on AgentTabs.tsx).
  2. The Buzz (Legacy) import lost its warning about duplicate runtimes (inline on AgentsPage.tsx).

What we checked:

  • Shared components (Dialog, ScrollEdgeMaterial, SplitButton, AvatarStack mini, and the new components.css/overlays.css selectors): safe for every consumer. The ActivityAccessory stacks that AvatarStack mini affects were fixed earlier and stay covered.
  • Discard guard: it reaches the claude-code, codex, goose and pi tabs, builderlab Instructions and ModelSettings, and HostSettings. Attention is the gap (must-fix 1).
  • Tests: at this head, 2786 tests pass and 12 are skipped. Auto mutated 17 guards, and the tests caught 13. Two of the 4 survivors are inline as advice. The other two are redundant safety nets, which are fine to keep.

Items that can't go inline because the files aren't in this diff:

  • convention: docs/agents.md:648 still names the Add action and Import → "From your other communities". Both are gone now that imports are one list. docs/agents.md:170-186 (the settings-host contract) doesn't describe the new behaviour: sections unmount when hidden, switching with unsaved changes asks first, and a confirmed discard drops a pending provider choice. Today :181 says that choice "remains a host-owned draft until Save".
  • question: ProfilePanel.tsx:401-414. ProfileDetails renders agentSections(), including Settings with settingsHost, inside plain Tabs, with no AgentSaveState provider and no discard prompt. This path is used for an unfinished owned agent, or for an agent hosted here under another owner. If it can show an editable form, a tab switch drops the draft silently. The behaviour predates this PR, but it is the one settings editor the new guard doesn't reach.
  • convention: the PR body says the agents README describes the developer scenarios, but the README diff doesn't mention them.
  • Two earlier threads are fixed in code but have no reply yet: Wes 4385500892 (team recovery wording) and kalvinnchau 4391996272 (first-run tile flash, addressed by be47e3d7b).

Labels: error (must-fix), advice = optional improvement, convention = repo or docs consistency, question.

Comment thread src/bundled/agents/AgentTabs.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Comment thread src/bundled/agents/AgentsPage.tsx Resolved
Comment thread src/bundled/agents/AgentDetails.tsx Resolved
Comment thread src/bundled/agents/index.tsx Resolved
Comment thread src/bundled/agents/AgentTabs.tsx Resolved
Comment thread src/bundled/pi/tabs.tsx Resolved
tellaho and others added 9 commits October 27, 2026 13:50
Keep Attention mounted through toggle and skipped-object saves by reporting all pending writes to the existing section guard. Exercise deferred failures through AgentTabs.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Restore the duplicate-runtime warning for agent and team imports, and describe which settings the chosen type can adopt.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Use one field list across import consent, shared-edit notices and bring-agent explanations. Keep pictures and attention explicitly community-specific.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Exercise a destination form without its own dirty report. Removing the host pendingSave guard now fails the discard regression.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Drive an invalid provider and model choice through AgentTabs, retaining it on Keep editing and dropping it only after confirmed discard. Removing dirty reporting now fails the test.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Retire remaining team joins when their import scope unmounts, allowing only the already-started join to settle. Cover the transition with a held first join.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Explain that Real data imports remain real under the empty-inventory developer view, document the development-only production-page scenarios, and update unified import and discard terminology.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Create both chooser-only provider fixtures before rendering and use the supported role-query options. Preserve the tested discard and destination-change assertions.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
Keep contributor-only import scenarios after the README separator, preserving the shared short-guide contract.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho

tellaho commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

🤖 @loganj Addressed at 471ba0d5a on the existing branch.

  • Attention writes now participate in the section guard, including removing unreadable objects. Deferred rejection tests through AgentTabs retain the failure.
  • Legacy agent/team imports warn to stop the old runtime and explain type-dependent instructions/workspace transfer and fresh provider/model settings.
  • Shared-field wording has one source; pictures and attention are explicitly per-community.
  • Remaining team joins stop when their destination scope closes. A held first join reproduces the old second-join bug.
  • Provider-only pending choices and invalid Pi drafts now have tab-switch coverage. Removing either guard makes its regression fail.

I retained the localhost/development-only scenario wrapper: it supports reviewing the actual app and host wiring, which fixture pages supplement. The Real data subtitle now warns that imports remain real under the empty view. README scenarios, unified-import terminology and draft lifetime docs are corrected. Community-reader lookup extraction is deferred; it is not needed for the scope fix.

The pre-existing editable fallback in ProfileDetails (unfinished/other-owner hosted paths) still lacks the completed-owned-pane discard guard. That broader host follow-up remains separate; I have not claimed it is covered. Earlier team-recovery and first-run fixes already have validation notes.

Before main integration: 112 affected checks across eight files passed; the new failure, Legacy-warning and team-scope regressions reproduced their bugs before the fixes. Both guard-removal mutations are caught. All 18 agent-library cases passed in Chromium/WebKit. TypeScript and mandatory commit/push checks passed before integration. Merged main 04327c225 without rewriting the published branch; retained its Attention command/discovery registration and our community-aware page wiring. The combined tree passed 51 checks across six affected files and the two real-app capture flows. Mandatory TypeScript/related-unit checks (63.27s), design checks (5.09s) and push policies passed on the integrated head. New-head CI and native acceptance remain pending. No approval or ready/draft change.

Actual compiled app, 110% interface size, disposable native/relay/provider data. Attention images show an injected storage rejection handled by the production service/UI. These six captures were regenerated and inspected on the integrated tree at 471ba0d5a.

Shared settings · dark Shared settings · narrow light
Shared settings · dark Shared settings · narrow light
Attention storage failure · dark Attention storage failure · narrow light
Attention storage failure · dark Attention storage failure · narrow light
Legacy warning · dark Legacy warning · narrow light
Legacy warning · dark Legacy warning · narrow light

Preserve Attention command and discovery registration alongside community-aware imports and developer scenarios.

Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@feedback.communities.buzz.xyz>
Signed-off-by: Taylor Ho <taylorkmho@gmail.com>
@tellaho
tellaho merged commit b68700f into main Oct 27, 2026
40 checks passed
@tellaho
tellaho deleted the morganm/agent-import-polish branch October 27, 2026 21:28
rileycrane added a commit that referenced this pull request Oct 28, 2026
…ted-setup

* origin/main: (24 commits)
  feat(agents): share agents to the community catalog and export snapshots (#1649)
  feat(navigation): dialogs never become Back/Forward destinations (#1696)
  fix(builderlab): sign in when finishing a hosted agent's setup (#1768)
  fix(messages): link #name prose to open channels the directory has named (#1706)
  feat(agents): keep the Mac awake while agents work (#1718)
  perf(panels): skip layout for covered workspace tabs (#1542)
  feat(composer): offer model and effort in a DM with an agent without a mention (#1621)
  test(workflows): wait for dialog initial focus before pasting YAML in WorkflowEditor test (#1705)
  fix(builderlab): show all captured activity without a conversation toggle (#1764)
  feat(agents): add a UI for Attention watches (#1663)
  Keep thread reply branches one level deep (#1751)
  fix(messages): keep table scrollbars inside webkit message rows (#1677)
  feat(agents): sync agent config through config channels (#1226)
  fix(agents): offer a new hosted agent in Solo chats right away (#1759)
  test(usage): make UsagePage read-window test DST-safe (#1668)
  fix(panels): scope split motion selectors to layout owners (#1681)
  feat(agents): simplify imports and clarify community scope (#1660)
  fix(pi): stop posting replies the agent did not send (#1758)
  feat(identity): support a local debug restore helper (#1517)
  test(perf): cover rich thread open close and reopen (#1683)
  ...

Signed-off-by: Riley Crane <rileycrane@squareup.com>
rileycrane added a commit that referenced this pull request Oct 28, 2026
…into rileycrane/bestie-hourly-wake

* origin/rileycrane/bestie-hosted-setup: (25 commits)
  Give Bestie's test fixture the native keepAwake that main now requires
  feat(agents): share agents to the community catalog and export snapshots (#1649)
  feat(navigation): dialogs never become Back/Forward destinations (#1696)
  fix(builderlab): sign in when finishing a hosted agent's setup (#1768)
  fix(messages): link #name prose to open channels the directory has named (#1706)
  feat(agents): keep the Mac awake while agents work (#1718)
  perf(panels): skip layout for covered workspace tabs (#1542)
  feat(composer): offer model and effort in a DM with an agent without a mention (#1621)
  test(workflows): wait for dialog initial focus before pasting YAML in WorkflowEditor test (#1705)
  fix(builderlab): show all captured activity without a conversation toggle (#1764)
  feat(agents): add a UI for Attention watches (#1663)
  Keep thread reply branches one level deep (#1751)
  fix(messages): keep table scrollbars inside webkit message rows (#1677)
  feat(agents): sync agent config through config channels (#1226)
  fix(agents): offer a new hosted agent in Solo chats right away (#1759)
  test(usage): make UsagePage read-window test DST-safe (#1668)
  fix(panels): scope split motion selectors to layout owners (#1681)
  feat(agents): simplify imports and clarify community scope (#1660)
  fix(pi): stop posting replies the agent did not send (#1758)
  feat(identity): support a local debug restore helper (#1517)
  ...

Signed-off-by: Riley Crane <rileycrane@squareup.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants