Skip to content

layout: a place's arrange button grows out of its corner - #634

Merged
foxnne merged 14 commits into
mainfrom
layout/corner-orb
Oct 19, 2026
Merged

foxnne merged 14 commits into
mainfrom
layout/corner-orb

Conversation

@foxnne

@foxnne foxnne commented Oct 19, 2026

Copy link
Copy Markdown
Collaborator

Part of fizzyedit/plans#29 (plans/LIQUID_EDGE_PLAN.md)

Stacked on the orb PR (#633).

What changes

A place's arrange button no longer lies over its content. At rest its top-right corner shows only a small grey glyph, three cells in an L, the empty quarter where the corner curves; content with a focus ring there is no longer drawn over (the report this started from). Pointed at from outside the content (or on the glyph), an orb of glass grows out from behind the glyph into a quarter of a circle on the place's corner point, cut by its outline with a bevel of its own (LiquidField.Edge.cut) and its rim lit from the top right (light_across). One radius on every place, rounded or square, a rounder curve cutting further into it. The glyph's cells move into the button's layout (the top-left slides right, the bottom-left up, the bottom-right grows left) and take the text colour. Pressed, it turns into the picker: FloatingMenu/Popup gain grow_from, a control the menu grows out of in place, its rect and corners carried into the menu's. An empty place shows the same corner, always out.

SDK impact

  • None
  • Core-only or additive: reaches plugins at the next SDK release
  • Fingerprint moved: recorded in sdk/src/version.zig, sdk_version untouched, PR labelled sdk
  • SDK release: bumps sdk_version, lists the sdk PRs since the last sdk-v* tag

Verified

  • macOS: in the sandbox at rest, grown and growing (captured frames on rounded and square places); zig build test, test-integration, check-web
  • Windows:
  • Linux:
  • Web: zig build check-web (builds; not looked at)

Follow-ups

  • The picker's panel is still the menu frost, not the orb's glass, so its material changes as it grows; and it does not shrink back into the button when it closes.

🤖 Generated with Claude Code

foxnne and others added 9 commits October 18, 2026 16:03
`LiquidField.edge`: a place's outline (rect and corner radii). Its outside is one
more shape the field's shapes run into, so a shape near the outline joins the edge
by a neck, metaball-like, and the outline cuts the glass's coverage, so none of it
crosses. The rim and bend come from the joined shape, so there is no rim along the
cut. The edge takes the program's last shape slot, flagged 2, so the uniforms keep
their layout. `glassBubbles` takes it as `.edge`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shapes a control of glass is made of (circles, capsules, panels as rounded
boxes), the cut of one by its place's outline as a polygon, and shape
interpolation: the geometry the orb system builds on, std-only and tested.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rom the top right

`LiquidField.Edge.cut` cuts glass by its place's outline with a bevel and lens band of its own along
the cut, rather than joining the place's outside: a piece of glass laid in a corner, bending the
border and ring it lies along. `light_across` turns a drop's rim light a quarter, for glass whose
edges that show face across the usual light (a place's top-right or bottom-right corner). Both reach
`core.dialogs.glassBubbles` as options.
At rest a place's corner shows only a grey glyph, three cells in an L, so nothing lies over its
content. Hovered from outside the content, an orb of glass (`core.widgets.orb`) grows out from
behind the glyph into a quarter cut by the place's outline, on every place, rounded or square. The
glyph's cells move into the button's layout and take the text colour as it comes out. Pressed, it
turns into the picker: a menu given `grow_from` grows out of the control that opened it, in place.
@foxnne
foxnne force-pushed the layout/corner-orb branch 2 times, most recently from f3c5e84 to 5cdaeed Compare October 19, 2026 15:03
Base automatically changed from core/orb to main October 19, 2026 17:05
@foxnne
foxnne marked this pull request as ready for review October 19, 2026 17:31
@foxnne
foxnne added this pull request to the merge queue Oct 19, 2026
foxnne added a commit that referenced this pull request Oct 19, 2026
`Tape.firstButtonOffAnchor` replaces the test-local check: a `trace` aims as a `move` does, a
keyframe forgets the aim, and a `release` (a drop) is held to the rule as a press is. The soak
tape's check moves to its verdict test, where it asserts soak still presses off an anchor, so
the exemption cannot outlive #634 unnoticed (the old test listed only soak, and exempted it).
AUTOMATION.md names the anchors that exist (`region:<name>`), says soak is not fixed yet, and
squares the rule with the offset the paragraph above describes; CONTRIBUTING says who turns
auto-merge on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
foxnne added a commit that referenced this pull request Oct 19, 2026
`Tape.firstButtonOffAnchor` replaces the test-local check: a `trace` aims as a `move` does, a
keyframe forgets the aim, and a `release` (a drop) is held to the rule as a press is. The soak
tape's check moves to its verdict test, where it asserts soak still presses off an anchor, so
the exemption cannot outlive #634 unnoticed (the old test listed only soak, and exempted it).
AUTOMATION.md names the anchors that exist (`region:<name>`), says soak is not fixed yet, and
squares the rule with the offset the paragraph above describes; CONTRIBUTING says who turns
auto-merge on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merged via the queue into main with commit d523c72 Oct 19, 2026
11 checks passed
@foxnne
foxnne deleted the layout/corner-orb branch October 19, 2026 18:12
foxnne added a commit that referenced this pull request Oct 19, 2026
`Tape.firstButtonOffAnchor` replaces the test-local check: a `trace` aims as a `move` does, a
keyframe forgets the aim, and a `release` (a drop) is held to the rule as a press is. The soak
tape's check moves to its verdict test, where it asserts soak still presses off an anchor, so
the exemption cannot outlive #634 unnoticed (the old test listed only soak, and exempted it).
AUTOMATION.md names the anchors that exist (`region:<name>`), says soak is not fixed yet, and
squares the rule with the offset the paragraph above describes; CONTRIBUTING says who turns
auto-merge on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant