Skip to content

Scene interpreter#156

Merged
mariusandra merged 83 commits intomainfrom
interpreted
Oct 5, 2025
Merged

Scene interpreter#156
mariusandra merged 83 commits intomainfrom
interpreted

Conversation

@mariusandra
Copy link
Collaborator

@mariusandra mariusandra commented Oct 4, 2025

The biggest nuisance in FrameOS has always been the long compilation time. Every small change in the scene, every updated config that you forgot to promote to a state node, everything takes a 2-5min round trip to see in effect.

Let's cut that short. Compilation is great for scenes that really need to be fast, but if the render takes 20 seconds, it doesn't matter if the scene itself renders in 0.1 or 0.01 seconds. So let's optimize for usability.

This PR implements a scene.json interpreter. Here's a full deploy for a new interpreted scene:

2025-10-04 13 00 36

Now, I had to remove support for nim code nodes, as we just can't evaluate that in the interpreter. Instead I integrated QuickJS. Now all ad-hoc code nodes can be written with plain old javascript:

Screenshot 2025-10-04 at 13 08 28

To set a scene as "interpreted", update the options here:

2025-10-04 13 09 34

This will most likely become the new default as soon as it's stable.

There are still some TODOs before this can be merged:

  • Dispatch nodes
  • Source nodes... or add warnings for those (when you edit an app's nim source)
  • Calling interpreted scene nodes from compiled scenes
  • Scenes:
    • Github Stars
    • Haiku of the Hour
    • Image from URL
    • SD card image
    • XKCD
  • Review everything

@mariusandra mariusandra merged commit da73a33 into main Oct 5, 2025
4 checks passed
@mariusandra mariusandra deleted the interpreted branch October 5, 2025 22:38
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