Repository navigation
codelessly_sdk 8.3.0: render gauges and charts, interval reactions, dialog placement, computed variables, formula functions - #77
Open
BuildCodelessly wants to merge 22 commits into
Open
BuildCodelessly wants to merge 22 commits into
BuildCodelessly wants to merge 22 commits into
Conversation
PassiveGaugeWidget and PassiveBarChartWidget read their bound values, limits, lists and colors from conditions, variables and formulas. A canvas runs its interval reactions on one timer per period while it is shown, skipping a tick while the previous run is still going. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Braces can't appear inside ${= }, so object(key, value, ...) is how a
formula builds the records a list view shows, e.g. the alerts derived
from live readings and rule limits.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
A bottom sheet lays the canvas out at the screen width and its own height and slides up; adaptive picks a sheet under 600 px and a centered dialog above; anchored places the canvas at its design size just below the widget that opened it (above when there's no room), kept 8 px inside the screen, like a menu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
A variable with a formula reads as the formula's value, coerced to its type, wherever variables are read (bindings, text, formulas, conditions). Widgets listen to the variables the formula reads, transitively, so derived state like the list of active alerts stays live. A formula that reaches its own variable reads null there instead of recursing, and setVariable leaves computed variables alone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
A slider can draw a rectangular thumb with border and grip, fill its active track from the thumb to the end (an "above the limit" zone), mark divisions with notches under the track (every Nth, every fifth long), show a bindable marker (e.g. the current reading) and a bindable active color, keep the thumb inside a selectable part of the track, and fire changeEnd when the drag ends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
A text node's textColor binding or condition recolors all its spans, so readouts and labels can turn red when an alert fires. alpha(color, opacity) gives the #AARRGGBB tint of a color for soft fills. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
…, close button, font size Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
…thickest child's size, as the editor's solver does Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
…con name Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
…est import Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
BuildCodelessly
force-pushed
the
claude/zealous-edison-1mkowx
branch
from
October 23, 2026 23:50
eabfb63 to
bb5267b
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Contributor
Author
|
The With the API resolved by path, every later step of the job passes locally on c5c5de3: format, Generated by Claude Code |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Material Icons SVGs are served per version, from the version an icon was added in, so a bound name like 'air' (v10) asked for v1 and drew nothing. iconWithName looks the version up in a table generated from the Google Fonts icon metadata. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264
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.
Runtime support for the models in Codelessly/CodelesslyAPI#42 (6.2.0), found while rebuilding the RigWatch RV monitor in the editor. This PR is intended ONLY to render and run those features, plus two runtime parity fixes.
PassiveGaugeWidget/GaugePainterandPassiveBarChartWidget, which takescopedValuesso the editor can preview their bindings.textColor.iconWithName).transition.VariableData.formulacomputed variables, evaluated by the same code path as master's${= ...}values (PropertyValueDelegate.variableValueOf). Both forms rebuild on what they read; a typed formula is coerced to the variable's type, self-reference reads null.pad,alpha,concat, list+andFormulaEvaluator.parses. Master'sobject,clamp,sin,cos,sqrt,pow,take,skipandkeysare kept as they are.canvas.parityshowed 324 vs 291.codelessly_api: ^6.2.0; the CHANGELOG entry folds in master's unreleased notes.Rebased on master (16ebc9e); master's value-watching on canvas load is kept next to the interval timers.
CI
CI is red at
flutter pub getuntilcodelessly_api6.2.0 is on pub. With the API resolved by path, every later CI step passes locally:dart formatflutter analyze(no issues)flutter test: 725 passflutter build web --wasmfor the exampleMerge order
Merge after Codelessly/CodelesslyAPI#42 is merged and 6.2.0 is published (re-run CI then), then publish 8.3.0 before merging Codelessly/CodelesslyEditor#707.
🤖 Generated with Claude Code
https://claude.ai/code/session_01AjsYaRkTHNKszSHjd3j264