Skip to content

Custom Parts 2: parts travel with exported Bots and as PNG files #1215

Closed

Description

@DoodleBears

Parent

Part of #1209.

What to build

A Human shares their drawn decorations. An exported PersonaBot carries its embedded Custom Parts, and whoever imports it as a new Bot sees the same appearance. Those parts are also added to the importer's Part Library, marked by origin. A single part exports as a PNG that previews anywhere and imports back losslessly, animating like a built-in part. The whole library exports and imports as a zip.

Acceptance criteria

  • Bot export and import (the existing zip flow) carry embedded Custom Parts. The imported Bot renders and animates identically.
  • Importing a Bot adds its parts to the Part Library with origin "imported Bot". Identical content merges into one entry that records each origin.
  • The Part Library UI shows each part's origin (drawn here, imported Bot, imported file) and filters by it.
  • A single part exports as a PNG with its part data embedded. Importing that PNG restores color references, tones, slot, layers and metadata exactly, and the part then follows anchors and turns like a built-in part.
  • The library exports as a zip of such PNGs and imports back with deduplication.
  • Name and author are kept as plain metadata. Content hash identity cannot be spoofed: the hash is recomputed on import.
  • Imports are bounded by size, slot canvas and color count. Malformed or oversized files are refused with a clear message and never execute code.
  • Tests cover Bot export→import with parts, PNG round-trip, zip round-trip, deduplication and refusal of malformed input.

Blocked by

Activity

  1. added this to the v1.2 milestone on Oct 8, 2026
  2. added
    area:ui-uxInteraction and visual experience; may accompany a code-layer area
    feature:avatarPersonaBot avatar media and activity frame
    area:fullstackEnd-to-end Host and Client implementation
    scope:tracerHuman-testable implementation slice
    on Oct 8, 2026
  3. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 8, 2026
  4. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Claimed by the cloud agent session claude/cloud/session_01MozvQ2eMvqX1MzSqm9G2o8. The implementation is in #1244:

    • part PNG files with embedded data, and a library zip;
    • import and export through the bridge;
    • parts carried in by imported Bots;
    • an origin filter in the editor.

    Evidence is in docs/assets/pr/1215-part-files/.


    Generated by Claude Code

  5. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 8, 2026
  6. DoodleBears commented on Oct 8, 2026

    @DoodleBears
    ContributorAuthor

    Outcome: implemented in #1244 (merged as 31c41ae).

    • Part files: each part exports as a PNG with its data embedded, and the library exports as a zip of them. Importing merges by content.
    • Bots carry their parts: importing a Bot adds the parts it wears to the library as imported-bot.
    • Origin filter: the library can be filtered by where a part came from.
    • Review: CodeRabbit was rate-limited, so an independent review agent checked the change. It found nothing blocking, and all five should-fix items were fixed before merging.
    • Evidence: docs/assets/pr/1215-part-files/.
    • Waiting for human QA: the import/export flow in the running app.

    The claim is released.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:fullstackEnd-to-end Host and Client implementationarea:ui-uxInteraction and visual experience; may accompany a code-layer areafeature:avatarPersonaBot avatar media and activity frameready-for-agentFully specified, ready for an AFK agentscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions