Repository navigation
codelessly_sdk 8.4.0: stacked lists, bound x/y, drag and key reactions, popovers, full height sheets - #84
Open
BuildCodelessly wants to merge 15 commits into
Open
codelessly_sdk 8.4.0: stacked lists, bound x/y, drag and key reactions, popovers, full height sheets#84BuildCodelessly wants to merge 15 commits into
BuildCodelessly wants to merge 15 commits into
Conversation
Contributor
Author
|
The This isn't a code failure. The code needs the model changes in Codelessly/CodelesslyAPI#49, and CI resolves Built locally against that branch, this PR passes Once API #49 is merged and Generated by Claude Code |
BuildCodelessly
force-pushed
the
claude/peaceful-lovelace-09ud27
branch
from
October 24, 2026 00:10
a066b95 to
d5374e2
Compare
- ListLayout.stack lists place each item at its bound x/y, evaluated per item.
- A node's x, y (freeform parents) and rotation can be bound like its size.
- drag/dragEnd/pointerDown/pointerUp reactions run with the drag's deltas in
${result} (deltaX/Y, dx/dy, x/y; velocity on drag end).
- Show dialog can present the canvas as a bottom sheet.
- Formulas build maps and edit lists: obj, with, merge, keys, append, concat,
insertAt, setAt, removeAt, slice, reverse, first, last, at, indexOf,
flatMap, range, plus clamp, pow and sqrt.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
A list inside another list's item reads that item as ${parent.item} and its
index as ${parent.index}, e.g. a home card's floor plan scales by its home.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
feetInches(6.67) reads 6′ 8″. Money without cents and digit grouping are master's money(value, symbol, 0) and thousands(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Show dialog can open a canvas as a popover anchored to the node that ran the action: below it, right-aligned near the edge, above it without room. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
The design canvas and previews have no Codelessly instance, so auth was null and both signed-in and signed-out nodes showed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
A screen runs its Key Down reactions for keys pressed while it is on top and no text field has focus. A full height bottom sheet gives its canvas 90% of the screen so it scrolls its own list. A canvas shown at its design size in a dialog, sheet or popover picks its responsive layout by the screen width instead of its own. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
- A node with bound x/y is always wrapped in its translation, so the first drag move no longer rebuilds the node and ends the drag. - A cloud stacked list doesn't shrink-wrap (a Stack of positioned items can't). - Key Down ignores modifier-only keys and takes a key only for a reaction set to that key, so Tab and browser shortcuts keep working; Space reads 'Space'; reactions refresh when the screen changes. - at(list, -1) is null. - A popover's anchor is measured once, in its navigator's coordinates. - Lints in the formula tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Indexing a text variable whose formula is null read the characters of 'null'. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Other sheets are master's aligned dialog, so the sheet widget no longer takes a fullHeight flag or a scrolling content-height mode. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
BuildCodelessly
force-pushed
the
claude/peaceful-lovelace-09ud27
branch
from
October 24, 2026 00:26
d5374e2 to
62689f7
Compare
A pinned child was placed at its design size, so a bound width (a meter's fill, a to-scale dimension line) didn't show. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
A show dialog action presented as a popover with an end (right) alignment opens with its right edge on the anchor's, for a menu opened from a button at the right of a card. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
It showed a placeholder named after the first variable it reads, so
"Edited ${item.edited}${= if(item.published, ' · ' + …, '')}" read
"Edited just nowPublished" for a draft.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb
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.
This PR renders the model changes in Codelessly/CodelesslyAPI#49. We found what was missing by rebuilding a real app ("Nook", a tiny-home builder with a drag-and-drop floor-plan builder) in the editor.
The branch is rebased on master. Master's gap/wrap, computed variables, formula functions (
obj,concat,moneydigits,thousands, ...) andpresentCanvas(sheets, adaptive, aligned dialogs) landed in parallel. This PR builds on them: popovers and full height sheets are added topresentCanvas, and our duplicate functions were dropped.Changes
x/y.xandyin a freeform parent can be bound, and a freeform child is placed at its bound width and height.${parent.item}and${parent.index}read the item of the list one level out.${result.*}positions and deltas.${result.key},shift,altandmeta. Modifier keys alone are ignored. Only a reaction set to a specific key takes that key, so Tab and browser shortcuts keep working.with,at(a negative index reads nothing),flatMapandfeetInches.authreads as signed out where there is no app user.codelessly_api: ^6.3.0.Checks
These were run locally against the API branch through
pubspec_overrides.yaml:dart format --set-exit-if-changedandflutter analyze: clean.flutter test: 752 pass.Known Issues
codelessly_api6.3.0 is on pub.dev. CI resolves the API from pub.dev, and this code needs its new fields. Merge order: API PR, publish 6.3.0, re-run this PR's CI, merge, then the editor PR.🤖 Generated with Claude Code
https://claude.ai/code/session_0186HDSCvPDpNcgTDiXgg3qb