Skip to content

feat: plugin button roles, curved flybys, and manifest version 3 - #242

Merged
jherforth merged 1 commit into
jherforth:mainfrom
mrramam:themes/motion
Oct 8, 2026
Merged

jherforth merged 1 commit into
jherforth:mainfrom
mrramam:themes/motion

Conversation

@mrramam

@mrramam mrramam commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Plugin buttons can follow the theme. Five role tokens (--hg-button-bg, -text, -radius, -weight, -quiet-border) reach plugins through the theme message and the SDK. Classic's values are today's plugin look, so nothing changes until a theme sets them.

Flybys can follow a curve: arc (a slice of a long parabola, for planets) or wander (a meander that faces where it goes and may turn back, for eg fish, cars, spaceships), with glide, count, begin: underway, hue and angle. Straight flybys are unchanged.

Also fixed:

  • A tab with no widgets now shows the theme's scene.
  • The plugin SDK is served no-cache with an ETag, so an upgrade reaches plugins at once. Before, displays kept the old SDK for up to an hour, even after a hard reload.

Themes using any of this declare manifestVersion 3; older cores refuse them as needing a newer HomeGlow.

Tested in production and on a dev host under Classic, Starship and Reef.

Plugin buttons drew a fixed blend of the secondary and accent colors with
the theme's text color. Under Starship that was peach text on a
blue-to-orange blend, about 1.2:1. Five role tokens let a theme say how
plugin buttons look: --hg-button-bg, --hg-button-text, --hg-button-radius,
--hg-button-weight and --hg-button-quiet-border. Classic's values are the
look plugin buttons have today, so nothing changes until a theme sets them.

Flybys can follow a curve. `arc` is a slice of a long parabola whose
turning point is usually off screen (planets); `wander` meanders, faces
where it goes within `pitch`, and with `turn` may swim partway in and leave
the way it came (fish). `glide`, `count`, `begin: underway`, `hue` and
`angle` round it out. Paths are sampled into transform keyframes, since an
offset-path path() is in pixels and auto rotation flips a picture moving
left. Straight flybys keep their existing code.

A tab with no widgets now shows the theme's scene; the grid and the phone
layout each mount it, and neither mounts on an empty tab.

The plugin SDK is served no-cache with an ETag. Its path never changes, so
with max-age=3600 a display kept the previous release's SDK for an hour
after an upgrade, and a hard reload did not refetch it.

Themes that use the button tokens or the new flyby options declare
manifestVersion 3; an older core refuses them as needing a newer HomeGlow.

Cost (Chromium, 3 runs each): no change at a 4x CPU slowdown. At 20x, a
meandering fish layer costs a few percent.
@jherforth
jherforth merged commit 70fdce5 into jherforth:main Oct 8, 2026
3 checks passed
@mrramam
mrramam deleted the themes/motion branch October 9, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants