Skip to content

app: the history grip is a vial in the card's corner, its liquid alive - #635

Merged
foxnne merged 14 commits into
mainfrom
app/history-vial
Oct 19, 2026
Merged

foxnne merged 14 commits into
mainfrom
app/history-vial

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

The history's grip moves from the middle of the card's bottom edge — where a split's bar runs, and where it sat on it — to a vial in the card's bottom-right corner: the corner orb (cut by the card, rim lit from the top left), with a history icon, grey at rest. Its liquid is app/Liquid.zig, std-only and tested: a row of spring-joined columns that slosh as the vial accelerates on screen (a pane dragged or resized), splash as each step comes, and ease up to the history's fill, keeping their volume. It asks for frames only while it moves; a long gap between frames is a new start, so the app sleeps as before.

The bar grows out of it as one liquid over 620 ms (the motion speed applies): its bubbles pulled out small along arcs of their own, each at its own moment, one blob first and then pinching off as the field's merge reach falls; their icons ride with them; the vial shrinks into its corner, the glass cut by the card the whole way; the liquid pours from the vial to the line's knob and spreads back along it. Going back is the same played backwards. No shadow rings on the bubbles while they move. A pane's activity feed stacks above the vial rather than on it.

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, and filmed in throwaway instances driven by the control socket (edits landing, the bar coming out and back at the slowest motion speed); zig build test (the liquid's 5 tests), test-integration, check-web
  • Windows:
  • Linux:
  • Web: zig build check-web (builds; not looked at)

Follow-ups

  • app: the history bar plays, its strip has a playhead, a click seeks #630's play bubble needs a slot in the growth (delays, arcs, its icon at its bubble) when one of the two merges the other.
  • The merge reach is one for the field, so the necks thin together rather than each letting go as its own bubble leaves; per-bubble reach is a glass-program change.
  • The stream is drawn over the glass, without its lens or rim.

🤖 Generated with Claude Code

foxnne and others added 5 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>
foxnne and others added 6 commits October 19, 2026 09:54
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>
The history's grip moves from the middle of the card's bottom edge, where a split's bar runs, to a
vial in its bottom-right corner: the corner orb, with a history icon. Its liquid (`app/Liquid.zig`)
sloshes as the pane moves, splashes as steps come and eases up, asking for frames only while it
moves. The bar grows out of it as one liquid: its bubbles pulled out small along arcs, joined and
then pinching off, the liquid pouring from the vial into the line. A pane's activity feed stacks
above the vial.
…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.
foxnne added a commit that referenced this pull request Oct 19, 2026
…e their bubbles, briskly

Merges app/history-vial-return, now on the reviewed vial (#635): `Liquid.step(now, pos)` takes
no width or depth now.

From the user, on #637:
- The open bar sits in the middle of the window's bottom, still growing out of the window's
  corner and going back into it. Its close button covered the history button of a pane in the
  corner. Each history vial at rest now publishes where it is too (`dome.publishBar`), so the
  tape's bar stands clear above any vial or history bar under it.
- Each icon (prev, play, next, close, the tab's chevron) rides its bubble, scaling and moving with
  it, and fades with how far that bubble has come. It's gone before the bubbles run together
  going back, and shows only once they have parted coming out.
- The grow and return take 450 ms, down from 620 ms (`bar_grow_us`, 27% shorter), on the same
  curves. The history bar's own time is unchanged.
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 18:16
@foxnne
foxnne added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit 1d4f7ce Oct 19, 2026
20 of 31 checks passed
@foxnne
foxnne deleted the app/history-vial branch October 19, 2026 18:34
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