You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: plugins/canvas-apps/agents/canvas-screen-builder.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -165,7 +165,7 @@ incomplete, and the orchestrator will send the screen back.
165
165
## Constraints
166
166
167
167
- Modify exactly one screen file.
168
-
- Never edit `[working directory]/App.pa.yaml` or `[working directory]/_EditorState.pa.yaml`.
168
+
- Do not edit `[working directory]/App.pa.yaml` or `[working directory]/_EditorState.pa.yaml`; the top-level orchestrator owns app-level and cross-file ordering changes.
169
169
- Never substitute a filename, YAML key, or control name prefix.
170
170
- Never use a property absent from that control's definition.
171
171
- Never write a version suffix on a `Control:` value.
Copy file name to clipboardExpand all lines: plugins/canvas-apps/references/ControlGuide.md
+30-22Lines changed: 30 additions & 22 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,7 @@ Choosing a control type, and writing properties and enum values that the compile
6
6
## Contents
7
7
8
8
- Discover before you choose
9
+
- Interpret property defaults and requirements
9
10
- Layout containers
10
11
- Data display
11
12
- Selection controls — `ItemDisplayText` is a per-item formula
@@ -14,7 +15,7 @@ Choosing a control type, and writing properties and enum values that the compile
14
15
- Enum type names
15
16
- Enum member values
16
17
- Option set values
17
-
-Colour and button-state patterns
18
+
-Color and button-state patterns
18
19
- Timer lifecycle
19
20
- Read-only ancestors
20
21
- Cross-screen navigation
@@ -27,7 +28,26 @@ Choosing a control type, and writing properties and enum values that the compile
27
28
**⚠️ Required — not optional:** run `list_controls` before planning your layout. Controls
28
29
you don't know exist can't influence your design, and the catalog includes high-level
29
30
controls (`ModernTabList`, `ModernCard`, and others) that are easy to miss and expensive
30
-
to reinvent with primitives. Then run `describe_control` on every type you plan to use.
31
+
to reinvent with primitives.
32
+
33
+
The resulting list will also specify if any Code Components or Canvas Components are available as control instances in the app. The result identifies the `ComponentName` to pass to `describe_control`.
34
+
35
+
Run `describe_control` on every type you plan to use.
36
+
37
+
## Interpret property defaults and requirements
38
+
39
+
The `Default` shown for a property is the value the property takes when it is omitted from the YAML.
40
+
Properties marked `Required: true` must be provided, even when no default is shown.
41
+
Omit other properties to accept their default.
42
+
43
+
### Refresh Canvas and Code Component descriptions
44
+
45
+
`describe_control` results for Canvas and Code Components are snapshots of the current
46
+
Studio document, not durable catalog entries. Re-run `describe_control` for the returned
47
+
`ComponentName` after a successful `compile_canvas` applies changes to a local component
48
+
definition or its custom properties. Do not reuse component descriptions from an earlier
49
+
turn after any of those events. Refresh immediately before recording component properties
Copy file name to clipboardExpand all lines: plugins/canvas-apps/references/DesignGuide.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,7 +62,7 @@ the real user experience.
62
62
-**Font Weight**: Use `ModernText` for headlines with `FontWeight: =FontWeight.Bold` and a large font size. Use `ModernText` with `FontWeight: =FontWeight.Normal` for body content.
63
63
-**Size Contrast**: Create dramatic hierarchy with size differences. Headers at 24-32, subheaders at 18-20, body at 14-16.
64
64
-**Alignment as Statement**: Mix `Align.Left`, `Align.Center`, `Align.Right` intentionally. Centered text for impact, left-aligned for readability.
65
-
-**Font Properties**: Leverage `Size`, `FontWeight`, `Align`, `VerticalAlign`, and `Color` to create visual interest. On the modern React controls the text colour property is `Color` and the font size property is `Size` — `FontColor` and `FontSize` exist only on `Badge`. Confirm with `describe_control` rather than assuming.
65
+
-**Font Properties**: Leverage `Size`, `FontWeight`, `Align`, `VerticalAlign`, and `Color` to create visual interest. On the modern React controls the text color property is `Color` and the font size property is `Size` — `FontColor` and `FontSize` exist only on `Badge`. Confirm with `describe_control` rather than assuming.
66
66
67
67
### Color & Visual Theme
68
68
@@ -80,7 +80,7 @@ the real user experience.
80
80
-**Design for the narrowest width you claim to support**: A layout composed at 1440px and never re-checked will clip at 1024px and collapse on a phone. Size layout containers with `Parent.Width` or `FillPortions`, never a literal like `Width: =1120`. Reserve fixed pixel sizes for icons, avatars, and steppers — and keep interactive ones at 44px or larger.
81
81
-**Every horizontal row of more than two controls needs a reflow strategy**: Set `LayoutWrap: =true`, or drive `LayoutDirection` from a width breakpoint, so rows stack instead of squeezing. This is the single most common defect in generated apps and it is invisible at the width you designed at.
82
82
-**The screen root must scroll** whenever it holds a gallery, a form, or more than about three stacked sections: canvas screens do not scroll on their own, so give the root container `LayoutOverflowY: =LayoutOverflow.Scroll` and content below the fold stays reachable on short viewports.
83
-
-**Set foreground wherever you set background**: Text does not inherit a contrasting colour. Every time you choose a container `Fill`, set `Color` on the text inside it — dark-on-dark passes every automated check and is unreadable.
83
+
-**Set foreground wherever you set background**: Text does not inherit a contrasting color. Every time you choose a container `Fill`, set `Color` on the text inside it — dark-on-dark passes every automated check and is unreadable.
84
84
-**Rows inside a `Gallery` need their own container**: `Gallery` is a Classic control and positions its template children absolutely, so a row authored at desktop width stays at desktop width everywhere. Put one AutoLayout `GroupContainer` in the template and build the row inside it. See `${PLUGIN_ROOT}/references/LayoutGuide.md`.
85
85
-**Asymmetry & Breaking Grid**: Don't center everything. Offset elements. Use unexpected positioning.
0 commit comments