Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ build/icon.png

# tooling scratch
.playwright-mcp/

# Embedded build consumed by a host app (npm run build:renderer:embed)
dist-embed/
26 changes: 26 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
MIT License

Copyright (c) 2026 Daniel Trujillo

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Portions of this software are derived from third-party projects and remain
under their own licenses. Each derived file carries the upstream notice, the
license identifier and a statement of changes in its header. The principal
upstream sources are listed under Credits in README.md.
385 changes: 299 additions & 86 deletions README.md

Large diffs are not rendered by default.

51 changes: 51 additions & 0 deletions docs/media/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Media assets

Images referenced by [README.md](../../README.md). Every file here is generated
from this repository's own code, not captured by hand.

| File | Size | Source |
|---|---|---|
| `banner.webp` | 1280x400 | The `willidream` still under a scrim, with the wordmark in the bundled Source Code Pro |
| `hero.webp` | 1280x720 | The `miraclemile` still, DETONATION act |
| `scenes/<id>.webp` | 480x270 | One still per registry scene, `<id>` matching `meta.id` in `src/renderer/engine/scenes/` |

## Regenerating the scene stills

`gallery.plan.json` is the scene-harness plan the stills come from. It carries
one entry per scene in registry order, each with the exact `io` snapshot
(palette, bands, level, beat, knobs, gestures, strikes, transport) that the
scene was photographed under.

```sh
node scripts/scene-harness.js docs/media/gallery.plan.json
```

The harness renders in a hidden Electron window and writes one PNG per shot to
`%TEMP%/swaycommand-harness` unless the plan sets `out`. Shots whose name starts
with an underscore exist to advance a scene into the state the next shot
photographs: `_willidream_bang` runs the universe from the singularity through
the big bang so that `willidream` can fire a hyperspace jump into a settled star
field, and `_miraclemile_open` moves the act knob off zero so that the act
change registers as a move rather than an initial value.

Two properties of the harness affect what comes back. Scene instances are cached
across shots, so a scene's shots must stay contiguous and in order. The clock
`t` is shared by every shot in a run, so a scene's absolute time depends on what
ran before it; re-running the plan reproduces the setup exactly and the frame
approximately.

The PNGs are then scaled and re-encoded to WebP at quality 0.80 (0.86 for the
hero) through a canvas in the same Electron runtime. There is no native image
dependency in this tree.

Cold-cache warning: on a GPU shader cache that has never seen these scenes,
`miraclemile` and `naturestomb` block the calling thread for one to two minutes
on their first draw. That is the open compile regression recorded in
[HANDOFF.md](../../HANDOFF.md), not a harness fault. A second run is fast.

## Replacing a still with a recording

The README references each scene by path, so a recording replaces a still by
taking its name. An animated `scenes/<id>.gif` supersedes `scenes/<id>.webp`
once the link in README.md points at it. Keep the 16:9 frame and a width of 480
so the gallery grid stays even.
Binary file added docs/media/banner.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading