Repository navigation
Formulas, runtime style bindings, show toast, and screen reader names - #71
Merged
Merged
Conversation
Formulas compute values in text, bound properties, conditions and action values. Fill, stroke, opacity, width and height follow conditions, bound variables and set value actions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
…tes safely A list or map value written as JSON is substituted value by value, so text with quotes can't break it and a value that is exactly one formula or path keeps its type. A text node's fill sets its color at runtime. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
A setStorage or setVariable value of `${= item}` now stores the item's map
(or list) instead of its text.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YaHo5D7kD3eWcagvzh3o3K
This was referenced Oct 19, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Ray · project thread
Before: text and action values could only insert variables, not compute anything (no prices, totals or plurals). Fill, opacity and size couldn't follow variables. Apps couldn't show a confirmation message. Screen readers announced tappable frames and icon buttons as nothing at all, and offered a long press that did nothing.
After:
${= expression}formulas work in any text, bound property, condition or action value, e.g.${= money(sum(storage.cart, 'total'))}. A value that is exactly one formula keeps its type, lists and maps included.How:
MergeSemantics+Semantics(button: true)around tappable nodes. Long press is registered only when a long-press action exists.formula_test,style_overrides_test,toast_testandsemantics_test.Known issues:
pubspec.yamlandexample/pubspec.yamltemporarily overridecodelessly_apiwith the branch of Codelessly/CodelesslyAPI#37, which adds the toast action. Remove the override once that API release is published.Generated by Claude Code