Repository navigation
codelessly_sdk 8.4.0: charts, side sheets and overlay caps, new bindings, batch writes, multi-page publishing - #78
Open
BuildCodelessly wants to merge 19 commits into
Open
BuildCodelessly wants to merge 19 commits into
BuildCodelessly wants to merge 19 commits into
Conversation
Contributor
Author
|
CI Generated by Claude Code |
BuildCodelessly
force-pushed
the
claude/relaxed-cerf-h3r5kj
branch
from
October 23, 2026 23:47
bf4982a to
74f7b3d
Compare
A StartEndProp past the end of its text (left by an edit that shortened the text) threw a RangeError on every layout and paint, which blanked the editor canvas and blocked even deleting the node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
PassiveChartTransformer paints the chart like the surf reference app's
tide card: grid and labels, shaded ranges, curve and fill, markers, a
dashed reference line, and the selection band, line and dot. Points,
markers and selectedX read their bound variables (paths or formulas).
A tap or horizontal drag snaps and clamps the x under the pointer,
writes the bound selectedX variable (or the node value, or local state),
sets the node state so actions read it as ${value}, and fires changed.
Needs codelessly_api with ChartNode.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
…measure them A list that doesn't scroll, hugs its items and has a known item count builds every item anyway. It now lays them out in a Flex instead of a ListView, so a Row/Column that stretches its children (IntrinsicHeight) no longer falls back to start when one child holds such a list: cards side by side stay equal. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
A bound 'icon' names the Material icon or symbol to show (e.g. star or star_border by a favorite flag); materialIconVersions gives the SVG version for a name chosen at runtime. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
VariablePreview.scopeFor overlays the list item from the build context on the editor's preview scope, and text spans pass it, so each item of a bound list on the canvas shows its own data instead of the first item's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
A list with wrap on and a known item count (itemCount or bound data, no cloud query) builds all its items in a Wrap along its scroll direction: the separator spacing between items (no dividers), runSpacing between runs, aligned to the start, sized by its own fits (shrink-wrap hugs the runs). It never scrolls. A list with an unknown count ignores wrap. Items keep their own size in a run instead of being aligned across the list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
applyStyleOverrides applies a cornerRadius binding (a number or [tl, tr, br, bl]) on corner nodes and a padding binding (a number, [h, v] or [l, t, r, b]) on any node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
setCloudStorage gains removeDocuments (ids from a variable or formula, where filters, or the whole collection) and setDocuments (a list of documents, optionally replacing the collection), each committed in Firestore batches of up to 500 writes. CloudDatabase.removeDocuments/setDocuments default to one write per document for other implementations. applyStyleOverrides also applies a strokeWeight binding. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
…nvases SDKPublishUpdates.merge applies a publish of some layouts (one page) on top of the published updates, keeping the per-layout fonts/apis of the layouts it doesn't touch. A new layoutCanvases index (layout id -> canvas ids) lets navigation and dialogs resolve a destination canvas whose layout is not downloaded yet; FunctionsRepository.resolveLayoutIdForCanvas is the one lookup both actions use. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
A replace navigation awaited Navigator.pushReplacement, whose future only completes when the new screen pops, so the actions after it (pop a dialog, replace the page, show a toast) never ran. It no longer waits, and the new screen's ActionChainHost joins the chain (ActionChainAdopter), so the remaining actions run there once the old screen unmounts. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
InputDecorationModel.contentPadding, when set, replaces the node's padding (12 x 16 by default for text fields) as the InputDecoration's content padding, so a collapsed, borderless field can sit flush. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
showToast reads ShowToastAction.actionColor (the button's label), showClose (a close button), cornerRadius, fontSize and offset (a variable or formula for the distance from the screen edge). Without a font of its own the toast takes the app's text style at the trigger. Toasts without the new fields look as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
… override lookup - A flexible Row/Column that scrolls on its main axis hugs its content there, capped by its Flexible parent (Flutter loose Flexible), instead of taking its solved design size: a form body between header and footer no longer collapses to its padding. - ShowDialogAction.maxHeightFactor caps a dialog (and a bottom sheet, default 88%) at a share of the screen height; the canvas takes min(design height, cap). - A canvas that hugs vertically makes a bottom sheet, side sheet (vertically centred) or dialog as tall as its content, up to the cap. - ScopedValues keys variable overrides by name, as formulas look them up (they were keyed by id and never found). - PassiveIconWidget takes the scoped values its bindings read, for the editor canvas. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
…Canvases index Links and actions now resolve a canvas the same way, including layouts on other pages that aren't loaded yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
BuildCodelessly
force-pushed
the
claude/relaxed-cerf-h3r5kj
branch
from
October 24, 2026 00:16
74f7b3d to
64d4cb8
Compare
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5
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.
Summary
Runtime changes found while rebuilding the Swellbook surf-report reference app in CodelesslyEditor. Each one closes a gap where the editor couldn't match the code-built app. Releases as codelessly_sdk 8.4.0 (CHANGELOG entry included), on top of master's 8.3.0, and depends on codelessly_api ^6.3.0 (Codelessly/CodelesslyAPI#43).
The branch is rebased onto current master (after #76). Where master already had a feature, this keeps master's version:
CodelesslyWrap), rotation binding (rotation) andobject().presentCanvas, which keeps adaptive andActionChainOpener. This branch adds side sheets,insets,maxHeightFactorand content-height sheets to it.VariablePreview.scopeFor, which only overrides the sample item when the item carries data.SDKPublishModel.resolveLayoutIdfalls back to thelayoutCanvasesindex for layouts not loaded yet.What this adds:
removeDocuments/setDocuments, in batches of up to 500).contentPadding.Merge order
codelessly_api 6.3.0.codelessly_sdk 8.4.0.Checks (run locally, same steps as CI)
dart formatis clean.flutter analyze: no issues.flutter test: 807 passed, including master's dialog presentation tests.CI stays red until
codelessly_api 6.3.0is published.flutter pub getresolves^6.3.0from pub.dev.Known Issues
🤖 Generated with Claude Code
https://claude.ai/code/session_01SyH8twyrBoe4wFCTw78Cz5