Skip to content

Implement shared-renderer viewport, semantic selection, and map tools #5

Description

@zoeyrose

Outcome

Use the exact released renderer for authoring previews and build editing tools over semantic IDs rather than a second pixel scanner/render implementation.

Scope and invariants

  • Adapt lossless document/catalog state to bounded SceneSnapshot with explicit source spans, stable edit identities, resources, surfaces, roles, and revisions.
  • Support pan/zoom, level/layer/role toggles, grid/debug views, semantic ID/depth/coverage picking, hover/selection, conservative object bounds, and linked-map context.
  • Implement paint, erase, eyedropper, select/move, rectangle, bounded fill, direction/transform, copy/cut/paste, and inventory/object placement through Implement command transactions, undo/redo, and minimal atomic saves #4 commands.
  • Keep renderer selection output read-only; editor resolves picked IDs back to documents and validates edit permissions.
  • Update only affected scene/resources after commands and external changes.

Acceptance criteria

  • Viewport RGBA and semantic masks match atrinik-render for the same scene/profile/resources.
  • Selection handles overlap, tall/multipart sprites, transparency, hidden/locked roles, cross-depth scenes, and missing resources deterministically.
  • Tool property/fault tests cover bounds, huge fills, stale selection, clipboard schema/version, undo/redo, and failed multi-file writes.
  • No alternate projection, painter order, GPU cache, or content parser exists in editor.
  • Representative map edit previews/saves/reopens exactly and passes compiler/server validation.

Dependencies and parallelization

Depends on renderer baseline/testkit, toolkit documents/catalog, and #4. Tools can be divided by command type after common selection/transaction contracts.

Licensing

Editor code/tests are MIT. Verified original past work by an approved MIT provenance grantor may be copied, migrated, or translated under the audited file/component grant; other legacy implementation remains behavior/specification input only. Authored content/assets retain exact licenses.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions