Project activity for November 7, 2026:
com.erinsparling.happitec.canvas-stack
40 commits
- Implemented Vector-Based Cutting and Tearing: Transitioned from a simple strip model to an
AreaOutlinesystem using thepackage-paper-destructionlibrary. This allows theCuttool to physically split tape and “tear”Thingobjects into multiplePaperPieceentities based on vector strokes, supporting complex geometries like loops and disjoint components. - Enhanced Document Schema and Robustness: Upgraded the
Collagefile format to a flat record list (v3) that explicitly tracks recordkind(thing,group,tape). Introduced a “fallback” mechanism to preserve unknown record types and malformed data, ensuring that files remain round-trippable even when containing data from different provider versions. - Advanced Instrumentation and Automated Testing: Developed a comprehensive “Rung” testing framework (Rungs 4 and 5) featuring a
replay-oracleandRungHost. This system validates precise spatial outcomes—such as vertex-mean centroids and ring counts—via recording replays and “inert twins” (regression tests designed to fail if specific logic is removed). - Refined Interaction and Rendering Logic: Optimized the
TapeLayerto use cachedCGPathfills instead ofTapeStrip, and updated theCollageRootViewto handle tool-specific strokes. Improved the user experience by decouplingGroupThingfromCanvasPaperfor shared gesture settings and refining the “fringe” rendering for torn edges. - Improved Package and Asset Management: Migrated package read/write operations into a dedicated
CollagePackagelibrary to ensure that external children and assets survive the document rebuild process during a cut operation.
T2–src
40 commits
- Implemented Vector-Based Cutting and Tearing: Integrated the
package-paper-destructionlibrary to transition from simple strips to anAreaOutlinemodel. This enables the Cut tool to perform complex geometric splits (usingAreaCutter) on both “Things” (tearing them into paper pieces) and tape, supporting features like loop-closing for disc cutouts and kerf-based splitting. - Architectural Shift to Flat Document Schema: Refactored the
Collagedata model to use a flat list of records with explicitkindidentifiers (thing,group,tape). This architecture introduces a robust unknown record system, allowing the application to load, preserve, and round-trip data from newer or different providers without crashing or losing information. - Enhanced Tape and Group Logic: Redesigned tape as an outline-based fill rather than a center-line stroke. Updated group membership to be determined by connected components of intersecting outlines, and improved the
cutCrossedlogic to correctly identify and report group members that overlap with a cut stroke, even if those members were previously freed. - Robust Package and Fallback Management: Moved package read/write operations into a dedicated
CollagePackagelibrary to ensure that external children and files survive the document rebuild process during a cut. Added a fallback mechanism that renders a grey silhouette snapshot for unknown record types, ensuring visual continuity when the primary provider is missing. - Expanded Testing and Instrumentation Framework: Developed a sophisticated replay-oracle and host instrumentation suite. This includes “inert twins” (regression tests that must fail), seed-based scene generation for recording replays, and precise readiness markers that synchronize test execution with the app’s foreground state and camera orientation.
…and 25 more repositories.