Repository navigation
Polish the FerroDesign editor and add Scale and Slice tools - #2
Merged
Merged
Conversation
…the inspector header
…h Command or Control
…hrough real input
…oots while painting
…nd Layers navigation Add native interaction and Chromium regressions, including an opt-in comparison against matching artwork exported by Figma.
…e through grouped artwork Use native accessible inline validation, scroll to the active guide, and exercise the real antialiased rotation target in browser output.
…exports Cull offscreen guide owners, compare both full artwork and foreground detail against the pinned Figma export, and verify rotated-frame redlines with real input and rendered pixels.
… and page hiding Distinguish a pending lock grant from a real capture loss, roll back before storage flushes, and verify exact Shift gain beyond the viewport in the release browser.
…rame-resize operations
…ances and frame constraint overrides Verify keyboard and pointer gestures, visible outline pixels, mobile controls and undo through the editor.
… preference checks with native presentation
… compact layouts Keep page hit targets at least 44 DIPs and verify the gestures through native touch events and release Chromium.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Layer hierarchy, shared resize and canvas-only editing
The branch includes
mainat8e5ac06with the pinned FerroUI updatec4c4cf87. Integrated CIAt
1a9ea40, 555 core and 310 native editor tests passed. The downloaded release passed 33 checks on each Chromium renderer (Software2D and WebGL2). At 97% zoom, the Orbit fixture showed 407.81 in the native inspector during a drag, matching the 407.8082-unit width of both frames. The full shared size badge cleared the dock by 23 screen pixels. Hosted layout and selection checksCanvas, batch editing and playback
Verification. All 550 core and 303 native editor tests passed locally, along with seven JavaScript test files and 68 Python checks. Chromium passed 16 focused checks and the full 15-check selection scenario on each release renderer, Software2D and WebGL2. The test harness waits for the fitted prototype camera and explicitly activates Move after canceling Rectangle. Final CI run
Measuring, editing pages and previewing flows
(Mixed / 2) + 6produces 38 and 54 in one undoable edit. The existing FerroUI NumberBox evaluator handles expressions. Invalid calculations keep the draft available for correction.Canvas measurements · Page menu · Inspector arithmetic · Phone prototype
Canvas, search and small screens
Rputs Rectangle first. Arrow keys follow the displayed order. Enter uses the current text, Tab stays inside the palette, and Escape returns focus to the canvas.Side resize · Phone dock · Quick Actions · Layers search
Editor workflows
Kusing edge and corner handles. Uniform scaling covers child geometry, typography, strokes, effects and layout. Instance and style links survive scaling. Tiled fills, strokes and vector faces retain their repeat counts.S. Move, rotate and resize slices independently of artwork. PNG and SVG use slice-local coordinates and preserve transparent padding. Multiple targets download in one ZIP with distinct filenames.Interaction and visual polish
F2, orCmd/Ctrl+R. Enter commits one undoable rename. Escape cancels it. Reveal in Layers expands the hierarchy and scrolls to a nested or virtualized row.Desktop inspector · Compact workspace · Compact Layers drawer
Earlier validation
A row-projection benchmark with 25 active-page nodes and 16,000 nodes elsewhere measured 1.041 ms per query before and 1.614 µs after the search change, with identical results. With 10,000 rectangles, 20 leaf-resize samples and commit took 0.27–0.40 ms on the scoped path versus 353–395 ms on the full-snapshot path in the same debug build. The resulting documents and undo states matched. Both measurements exclude rendering.
The release SVG benchmark exported 10,000 root rectangles. Repeated single-CPU runs went from 1.50–1.54 s to 89–91 ms, with matching output length and checksum. A separate benchmark of visible-caption lookup on 10,000 roots went from 486.1 µs to 0.8 µs.
Figma Scale reference · Figma Slice reference
All nine CI jobs that ran on
7015eb4passed, including the four Software2D suites and the WebGL2 smoke suite. GitHub Actions