Skip to content

[Epic] Editor feature set: object model, pens, image import, projects #10

Description

@BernardJen

Epic: Editor feature set

Tracking issue for the planned editor features. These are not independent — most depend on a shared object/scene model. This epic captures the recommended build order and dependencies.

Recommended build order

Phase 0 — Foundation

Phase 1 — Pens & medium

Phase 2 — Content creation

Phase 3 — Persistence

Independent / anytime

Key cross-cutting decision

The object/scene model introduced in #6 is the keystone: it defines the project file format (#8), what a pen attaches to (#2/#3), and what magnets check against (#9). Pin it down early.


Done

Every issue in this epic has landed, in the order the plan set out:

#6 Editing toolbar, multi-selection, scene model #69
#2 Pen library and a pen per artwork #67
#3 Multi-pen plotting with pen-change pauses #68
#7 Selectable paper type #66
#5 Shapes and single-line text #70
#11 Import wizard: shell, adjust, 2 algorithms #71
#12 / #4 5 conversion algorithms #72
#56 PDF, HEIC and camera import, by content #77
#9 Magnet keep-out zones #74
#64 Travel routed around the magnets #75
#58 Cutting mode: knife profile, overcut, blade offset #73
#63 Holding tabs #76
#8 Save and load projects #78
#14 App settings on the gateway #65
#57 Settings page bacd9bc

The object/scene model the epic called the keystone is src/plot/scene.ts: objects with
identity, transform and stacking order, and the operations on a selection of them. Everything after
it — shapes and text as objects, wizard output dropped into the scene, the project file that
serialises it — was built on that, as planned.

The pure core grew from ~2 000 to ~2 900 statements and the coverage floor was raised from
50/48/40/50 to 72/68/62/72.

Still open: hardware verification. Several changes are correct in software and unverified on
the machine — they are listed in the OpenSpec changes that stay active for exactly that reason
(multi-pen pauses, cutting mode, holding tabs, magnet avoidance).

Activity

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

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions