@iodes/releasekit 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/model.js +7 -2
- package/dist/prompts.js +23 -12
- package/examples/README.md +6 -4
- package/examples/backup-encryption/dark.prompt.md +15 -6
- package/examples/backup-encryption/light.prompt.md +15 -6
- package/examples/connected-route/dark.prompt.md +13 -4
- package/examples/connected-route/light.prompt.md +13 -4
- package/examples/location-preferences/README.md +6 -3
- package/examples/location-preferences/dark-refined.png +0 -0
- package/examples/location-preferences/dark-refinement.prompt.md +70 -0
- package/examples/location-preferences/dark-size-correction.prompt.md +5 -0
- package/examples/location-preferences/dark-weight-correction.prompt.md +5 -0
- package/examples/location-preferences/dark.prompt.md +19 -9
- package/examples/location-preferences/light-palette-edit.prompt.md +20 -0
- package/examples/location-preferences/light-refined.png +0 -0
- package/examples/location-preferences/light-refinement.prompt.md +70 -0
- package/examples/location-preferences/light-soft.png +0 -0
- package/examples/location-preferences/light.prompt.md +19 -9
- package/examples/location-preferences/pair-review.md +17 -9
- package/examples/location-preferences/scene.yaml +16 -8
- package/examples/queue-action/README.md +4 -2
- package/examples/queue-action/dark-accent-edit.prompt.md +5 -0
- package/examples/queue-action/dark-accent.png +0 -0
- package/examples/queue-action/dark-refined.png +0 -0
- package/examples/queue-action/dark-refinement.prompt.md +74 -0
- package/examples/queue-action/dark-size-correction.prompt.md +5 -0
- package/examples/queue-action/dark.prompt.md +19 -9
- package/examples/queue-action/light-accent-edit.prompt.md +5 -0
- package/examples/queue-action/light-accent.png +0 -0
- package/examples/queue-action/light-palette-edit.prompt.md +20 -0
- package/examples/queue-action/light-refined.png +0 -0
- package/examples/queue-action/light-refinement.prompt.md +74 -0
- package/examples/queue-action/light-soft.png +0 -0
- package/examples/queue-action/light.prompt.md +19 -9
- package/examples/queue-action/pair-review.md +12 -5
- package/examples/queue-action/scene.yaml +13 -5
- package/examples/storage-breakdown/dark.prompt.md +15 -6
- package/examples/storage-breakdown/light.prompt.md +15 -6
- package/examples/tablet-reading/dark.prompt.md +14 -5
- package/examples/tablet-reading/light.prompt.md +14 -5
- package/kit/references/composition-recipes.md +5 -5
- package/kit/references/format.md +2 -0
- package/kit/references/theme-pairing.md +10 -8
- package/kit/references/visual-language.md +25 -6
- package/kit/skills/releasekit-image/SKILL.md +2 -2
- package/package.json +1 -1
- package/schemas/config.schema.json +24 -12
- package/schemas/release.schema.json +24 -12
|
@@ -10,6 +10,8 @@ This generation policy does not require inventing a second appearance for suppli
|
|
|
10
10
|
|
|
11
11
|
Policy is captured in each release when it is prepared. Editing the project default affects new releases. To apply the current project policy to an existing draft, run `releasekit image plan <version> --sync-config`. Previously selected files are retained; themes disabled by the new policy are not exported. Ready releases must be reopened before their policy changes.
|
|
12
12
|
|
|
13
|
+
For a requested palette correction, change the relevant saved theme roles at the requested project or release scope before generating replacements. A project change belongs in `releasekit/config.yaml`; sync that policy into the target draft with `releasekit image plan <version> --sync-config`. A release-only change belongs in that draft's captured visual policy. Do not work around a saved dark glyph value by adding a one-off lighter color to a prompt. Regenerate and review the affected requested variants; preserve unchanged accepted counterparts. A light-only palette correction does not request dark regeneration. If the shared geometry needs correction, update the scene and review both affected variants, keeping each theme's palette. Palette changes are authoring policy changes, not a global filter over supplied images.
|
|
14
|
+
|
|
13
15
|
## Coverage and repeat runs
|
|
14
16
|
|
|
15
17
|
The default image scope is every note in the saved release, including grouped minor fixes and improvements. A grouped note has one visual brief and the configured image variants; its bullets do not become separate notes or image requests. Use [common images](common-images.md) to reuse the appropriate original across releases before planning new generation. Review the current `release.yaml` each time so newly added notes are included. A plain `releasekit-image` invocation uses this full scope without asking the user to pick important notes. Honor an explicitly limited request and the user's explicit text-only choices. If earlier agent prioritization disabled a note's image without such a choice, restore `image: true` and create or complete its visual brief in place, preserving its text, translations, and existing assets. Do not recreate the note. Missing supplied media stays pending instead of making the note text-only.
|
|
@@ -22,15 +24,15 @@ An existing image reported as stale or invalid is unresolved, even though its fi
|
|
|
22
24
|
|
|
23
25
|
## One scene, two presentation treatments
|
|
24
26
|
|
|
25
|
-
Both outputs share the same scene brief. Lock subject identity, geometry, object count, positions, scale, crop, camera, UI topology, action state, chart values, and any allowed literal labels. Change presentation
|
|
27
|
+
Both outputs share the same scene brief. Lock subject identity, geometry, object count, positions, scale, crop, camera, UI topology, action state, chart values, and any allowed literal labels. Change neutral presentation values and necessary surface separation within the selected recipe. Match geometry, not apparent brightness or contrast: use each theme's independent treatment. Preserve meaningful status colors and natural photographic or material colors. Lock the absence of accent for a neutral scene; when accent is justified, keep it on the same meaningful elements in both variants. A theme change does not introduce an accent.
|
|
26
28
|
|
|
27
29
|
| Role | Dark treatment | Light treatment |
|
|
28
30
|
| --- | --- | --- |
|
|
29
31
|
| Canvas | Quiet charcoal | Quiet near-white |
|
|
30
|
-
| Interface surface |
|
|
31
|
-
| Primary neutral symbol |
|
|
32
|
-
| Secondary detail | Subdued, still distinguishable |
|
|
33
|
-
|
|
|
32
|
+
| Interface surface | Distinguish base and foreground charcoal layers | Separate white and pale-gray values |
|
|
33
|
+
| Primary neutral symbol | Compact mid-light neutral; no oversized bright glyph | Medium gray from `primary`, without default charcoal fills |
|
|
34
|
+
| Secondary detail | Subdued, still distinguishable | Lighter `secondary` for incidental bars and supporting detail |
|
|
35
|
+
| Surface separation | Preserve only feature-relevant layers | Use surface roles and thin dividers; do not invent shadows |
|
|
34
36
|
| Optional interaction or status color | Preserve assignment and semantic hue, or keep absent | Preserve assignment and semantic hue, or keep absent |
|
|
35
37
|
| Photo or product material | Preserve authentic appearance | Preserve authentic appearance |
|
|
36
38
|
|
|
@@ -38,18 +40,18 @@ Do not invert pixels or shift brightness globally. A black lens remains a black
|
|
|
38
40
|
|
|
39
41
|
## Generation sequence
|
|
40
42
|
|
|
41
|
-
1. Complete the shared brief and inspect its product references.
|
|
43
|
+
1. Complete the shared brief and inspect its product references. Map schematic groups to the [neutral color roles](visual-language.md#assign-neutral-colors-by-role); preserve those assignments across themes while using each theme's saved values.
|
|
42
44
|
2. Read the current image plan and the project's requested themes. Reuse existing current assets and import any suitable [common originals](common-images.md), then refresh the plan. The following rendering steps apply to `action: generate`; handle `action: provide` through the supplied-image workflow.
|
|
43
45
|
3. Generate one requested variant using its prompt. Select and inspect the result.
|
|
44
46
|
4. Import it. Re-run the image plan; a valid approved counterpart is now offered as a composition reference for the other theme.
|
|
45
47
|
5. When the available tool supports image references or edits, use the counterpart for a constrained theme edit. Otherwise repeat the exact scene contract and inspect for layout drift. Never claim pixel-identical geometry from independent stochastic generations.
|
|
46
|
-
6.
|
|
48
|
+
6. Review dark images together and light images together at equal display widths, then compare the pair. Check glyph ink size, supporting detail, and charcoal layer separation in dark; check medium-gray neutral symbols and soft supporting values in light. Check equivalent elements against their configured roles without forcing equal apparent contrast between themes. Both files should have the same pixel dimensions. Verify pose, crop, UI state, values, and semantic colors by sight, then import the selected counterpart.
|
|
47
49
|
|
|
48
50
|
Use one file per theme, not a split canvas or a two-panel comparison image. Keep the current selection until a reviewed replacement is imported into the same slot. Do not restart the entire release when one small defect can be corrected locally.
|
|
49
51
|
|
|
50
52
|
## Replace or regenerate an image
|
|
51
53
|
|
|
52
|
-
Treat replacement and regeneration as an edit to the existing release, note ID, and affected theme. Reopen a ready release as a draft before editing it. Reuse its scene brief and current assets as needed for the requested correction. A request to regenerate an image still needs work even if the unchanged asset is reported as current by the plan; report the requested replacement as pending until it has been generated, reviewed, and imported.
|
|
54
|
+
Treat replacement and regeneration as an edit to the existing release, note ID, and affected theme. A requested accent-use correction updates the shared scene's color assignment; regenerate the affected variants while preserving unrelated geometry and theme palettes. Reopen a ready release as a draft before editing it. Reuse its scene brief and current assets as needed for the requested correction. A request to regenerate an image still needs work even if the unchanged asset is reported as current by the plan; report the requested replacement as pending until it has been generated, reviewed, and imported.
|
|
53
55
|
|
|
54
56
|
Keep the existing variant metadata while preparing the candidate, then run `releasekit image import <version> <note> --theme <theme> --file <selected-file>` for the same slot. Import validates the candidate and saves the new selection before removing unused managed images for this note, including older imports and obsolete shared/themed files. Reimporting identical bytes reuses the same file. Other selected variants, notes, releases, declared image references, and original source files outside the note's managed assets are preserved. If decoding or saving fails, the previous source and selection remain intact; report the replacement as pending.
|
|
55
57
|
|
|
@@ -29,19 +29,38 @@ For each standalone note, derive the scene from that feature independently. Grou
|
|
|
29
29
|
|
|
30
30
|
Separate the canvas, base surface, raised surface, primary symbol, secondary detail, and divider. These are semantic roles, not a global color filter. The project defines their dark and light values.
|
|
31
31
|
|
|
32
|
-
On dark backgrounds,
|
|
32
|
+
Judge each theme at the same display width using its own saved palette. On dark backgrounds, retain distinct charcoal layers and compact mid-light neutral symbols; keep supporting UI quieter than the focal control. Avoid oversized bright glyphs, thick label bars, and milky overlays. On light backgrounds, use near-white space, subtle gray separation, and medium-gray neutral symbols with lighter supporting details. Do not use charcoal glyphs or dark placeholder bars by default. A dark device or natural photo may stay dark in a light presentation. Equal geometry does not require equal apparent brightness or contrast. A light-only palette correction leaves the accepted dark treatment intact.
|
|
33
33
|
|
|
34
|
-
For icons, use a compact flat rounded-square tile with a neutral monochrome filled glyph and clear negative space. A typical tile occupies 20–24% of the canvas width, with the glyph around 50–65% of the tile width. Keep broad margins, uniform background fills, and related corner radii. Use color only when the feature gives it a functional meaning. Do not default to a colored badge, physical object, or modeled icon.
|
|
34
|
+
For generic capability icons, use a compact flat rounded-square tile with a neutral monochrome filled glyph and clear negative space. A typical tile occupies 20–24% of the canvas width, with the glyph around 50–65% of the tile width. Keep broad margins, uniform background fills, and related corner radii. Use color only when the feature gives it a functional meaning. Do not default to a colored badge, physical object, or modeled icon.
|
|
35
35
|
|
|
36
36
|
Flat icons and symbol pairs have no perspective, extrusion, material texture, gradients, lighting, or shadows. Simplified interfaces may use restrained layer separation where it explains the actual control hierarchy. Preserve shading already present in supplied media. Do not add sculpted objects, decorative 3D, studio lighting, glass, glow, or bevels to generated release illustrations.
|
|
37
37
|
|
|
38
|
+
## Assign neutral colors by role
|
|
39
|
+
|
|
40
|
+
Use the release's captured palette as the source of truth. The default palettes give the themes independent value hierarchies:
|
|
41
|
+
|
|
42
|
+
| Role | Default dark value | Default light value | Assignment |
|
|
43
|
+
| --- | --- | --- | --- |
|
|
44
|
+
| `canvas` | `#242527` | `#F8F8F8` | Uniform background |
|
|
45
|
+
| `surface` | `#18191B` | `#FFFFFF` | Base or recessed panels |
|
|
46
|
+
| `raised` | `#343638` | `#ECECEC` | Foreground panels, controls, and quiet tile fills |
|
|
47
|
+
| `primary` | `#B9BBBE` | `#999999` | Main glyphs, focal controls, and feature-defining marks |
|
|
48
|
+
| `secondary` | `#777B80` | `#B8B8B8` | Supporting glyphs, incidental bars, and abstract content |
|
|
49
|
+
| `divider` | `#46494D` | `#D9D9D9` | Thin separators and necessary boundaries |
|
|
50
|
+
|
|
51
|
+
Map visible schematic groups to these roles by hierarchy in `composition`; do not choose a fresh gray for each object or each image. Object type alone does not fix its role: a foreground row can use `raised`, and a subordinate thumbnail can share `secondary` with incidental bars. A feature-relevant title, value, or control may use `primary` when the scene calls for that distinction. Preserve that hierarchy across themes and equivalent scenes; do not brighten every label bar or flatten genuinely different levels into one tone. Use the configured values, including explicit project overrides, instead of copying hex values from a worked example. Keep uniform flat fills without arbitrary warm or cool casts, opacity washes, gradients, or invented shading. Antialiased edges can contain intermediate pixels.
|
|
52
|
+
|
|
53
|
+
Light illustrations explain shapes and relationships without the contrast of a text document. If something is unclear at card size, improve silhouette, spacing, stroke width, scale, or crop first. Do not globally darken glyphs and placeholder bars or introduce shadows to make every element sharper. Preserve authentic dark hardware, supplied UI, content colors, and justified semantic colors; the neutral role map applies to generated schematic elements.
|
|
54
|
+
|
|
55
|
+
Review same-role objects across the release's dark images together, and separately across its light images. Use equal display widths, not differently sized website cards. In dark images inspect glyph footprint and charcoal layer separation; in light images inspect soft neutral weight. A successful decode and matching dimensions do not validate the palette or visual weight.
|
|
56
|
+
|
|
38
57
|
## Color has a job
|
|
39
58
|
|
|
40
|
-
|
|
59
|
+
Use neutral surroundings and a clear hierarchy, then choose focal color from the feature. Prefer the project accent for the primary action, a selected or enabled control, an active route, or a defined information distinction when it helps readers find what matters. Color can guide attention even when the shape or interaction also reads in grayscale; it does not have to be indispensable.
|
|
41
60
|
|
|
42
|
-
|
|
61
|
+
Keep the accent on the meaningful control, state, or feature-defining component; supporting glyphs, label bars, tiles, and surfaces remain neutral. Preserve an established functional accent instead of replacing it with gray merely for restraint. Use the neutral palette roles for neutral elements, not to recolor the chosen accent target. Honor explicit monochrome choices and authentic product colors.
|
|
43
62
|
|
|
44
|
-
In the shared scene's `composition`,
|
|
63
|
+
In the shared scene's `composition`, name the accent target and what it communicates, or choose a neutral treatment when appropriate. Generic capability and maintenance symbols, and simple associations between symbols, normally stay neutral. A specific action or state within those archetypes may receive accent. Do not invent a selection, badge, or status just to use color. Preserve the chosen assignment across themes; revise it in the shared scene when the user requests a change in accent use.
|
|
45
64
|
|
|
46
65
|
Preserve established meanings such as warnings, completed states, traffic or map semantics, chart categories, and authentic content colors between themes. These colors belong to supported information; a generic improvement or security note is not itself a success or protection status.
|
|
47
66
|
|
|
@@ -74,6 +93,6 @@ Make the brief concrete enough that another model can render the same scene. “
|
|
|
74
93
|
|
|
75
94
|
## Review the actual output
|
|
76
95
|
|
|
77
|
-
Inspect the selected image at full resolution and at roughly 350 pixels wide. First compare the image with the release note, product evidence, and scene-specific constraints; use the chosen recipe's correctness checks. Then assess whether the changed capability reads in a moment, the focal object remains distinct, incidental detail stays subordinate, and every explicit label and crop is correct.
|
|
96
|
+
Inspect the selected image at full resolution and at roughly 350 pixels wide. First compare the image with the release note, product evidence, and scene-specific constraints; use the chosen recipe's correctness checks. Then assess whether the changed capability reads in a moment, the focal object remains distinct, incidental detail stays subordinate, and every explicit label and crop is correct. Review accent in both directions: remove decorative spread into unrelated elements, and restore the intended functional accent if it has been suppressed into gray. A useful attention cue remains valid even when the image is understandable without color. Review the release together for both overuse and habitual avoidance; do not impose a minimum, maximum, or one-colored-point-per-note quota. Attractive styling and theme similarity do not establish factual or structural correctness.
|
|
78
97
|
|
|
79
98
|
For a pair, compare both outputs side by side using [theme-pairing.md](theme-pairing.md). Automated checks establish file integrity, dimensions, configured variants, and scene freshness; they do not prove visual correspondence or truthfulness. Correct a specific defect with a targeted edit instead of randomly regenerating every asset. Preserve unrelated accepted assets. Import a reviewed replacement into the same note and theme slot so unused older managed files are removed; keep the previous selection until that import succeeds.
|
|
@@ -11,7 +11,7 @@ When a user decision is needed during image work, such as an ambiguous target fo
|
|
|
11
11
|
|
|
12
12
|
For standalone notes, derive one visual message from the release note and its Git/product evidence. Minor groups use the common kind's generic scene, independent of their current bullet list. Choose an archetype and `source`; the scaffold leaves both unselected. Generate flat explanatory graphics when an abstraction is sufficient. `object-detail` and `editorial-scene` require supplied media, and any other type can use an actual capture when fidelity matters. Search existing approved assets or use the user's capture; if absent, ask for the specific image and keep it pending. Do not invent a physical product, content artwork, or decorative 3D scene. Examples illustrate individual features, not default layouts.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Establish a clear hierarchy with neutral supporting elements and purposeful focal color. Map visible schematic groups to the captured palette roles in `composition`, using the [neutral role assignments](references/visual-language.md#assign-neutral-colors-by-role). Assign roles by hierarchy, not object type alone, and preserve explicit project color overrides. Follow the [independent theme treatments](references/theme-pairing.md#one-scene-two-presentation-treatments): dark images retain compact mid-light neutral glyphs and necessary charcoal layers; light images use medium-gray neutral glyphs and softer supporting values. Keep flat fills consistent. Correct glyph weight and spacing in the shared scene for both themes; a light-only palette correction leaves accepted dark assets intact. In `composition`, identify the accent target and its meaning, or choose a neutral treatment when appropriate. Prefer accent for the primary action, selected/enabled state, active path, or focal information when it helps readers find the feature; it need not be indispensable in grayscale. Keep generic information and minor-group icons normally neutral. Respect explicit monochrome choices. For a requested accent revision, update the affected scene assignment instead of treating an earlier neutral choice as permanent. Preserve meaningful status, map, chart, and supplied-content colors.
|
|
15
15
|
|
|
16
16
|
Complete each missing or unfinished scene brief before planning the release. Preserve the briefs of unchanged accepted images. Each note has one shared scene brief for its configured variants. Keep common minor-group scenes independent of release-specific text and evidence. For standalone scenes, encode product facts and uncertainties in `context`, the relevant state and relationships in `composition`, and the feature-specific correctness constraints in `preserve` and `avoid`. Keep reference identities and attributed style names out of prompts and assets. Inspect product references as evidence. Do not invent a concrete UI or physical design to fill missing evidence; use a supported abstraction or leave the unresolved detail in the brief.
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@ For an image replacement or regeneration request, reuse the existing release and
|
|
|
21
21
|
|
|
22
22
|
If no image generator is available, preserve the generated prompt files and report the pending assets. Continue independent editorial work. Do not silently call a paid API, install a provider, or replace requested raster illustrations with placeholders. Import user-supplied PNG, JPEG, or WebP files when they become available.
|
|
23
23
|
|
|
24
|
-
Inspect selected images at full resolution and small-card
|
|
24
|
+
Inspect selected images at full resolution and equal small-card widths. Review dark images together for compact glyph weight and charcoal hierarchy, then light images together for soft neutral values. First compare the image with the note, product evidence, and scene-specific constraints using the selected recipe's review criteria. Then check visual clarity and theme correspondence: an assigned functional accent must remain visible and confined to its intended elements. Review the release for both decorative overuse and suppressed functional accents; grayscale readability alone is not a reason to remove color. Do not impose a fixed color quota. The CLI checks files and metadata; it does not decide whether an image truthfully depicts the feature. Two matching variants can share the same factual or structural mistake. Correct a defect in its own scene or applicable recipe; promote it into common guidance only when the principle applies across features.
|
|
25
25
|
|
|
26
26
|
If the accepted image requires an alt-text correction, update the source and affected translations using [Translate selected locales](references/workflow.md#translate-selected-locales), reviewing them before recording new source fingerprints.
|
|
27
27
|
|
package/package.json
CHANGED
|
@@ -157,27 +157,33 @@
|
|
|
157
157
|
"properties": {
|
|
158
158
|
"canvas": {
|
|
159
159
|
"type": "string",
|
|
160
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
160
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
161
|
+
"description": "Uniform illustration background."
|
|
161
162
|
},
|
|
162
163
|
"surface": {
|
|
163
164
|
"type": "string",
|
|
164
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
165
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
166
|
+
"description": "Base or recessed interface panels."
|
|
165
167
|
},
|
|
166
168
|
"raised": {
|
|
167
169
|
"type": "string",
|
|
168
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
170
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
171
|
+
"description": "Foreground panels, controls, and quiet tile fills."
|
|
169
172
|
},
|
|
170
173
|
"primary": {
|
|
171
174
|
"type": "string",
|
|
172
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
175
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
176
|
+
"description": "Main neutral glyphs, focal controls, and feature-defining marks; mid-gray in the default light theme."
|
|
173
177
|
},
|
|
174
178
|
"secondary": {
|
|
175
179
|
"type": "string",
|
|
176
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
180
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
181
|
+
"description": "Supporting glyphs, incidental label bars, and abstract content."
|
|
177
182
|
},
|
|
178
183
|
"divider": {
|
|
179
184
|
"type": "string",
|
|
180
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
185
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
186
|
+
"description": "Thin separators and necessary surface boundaries."
|
|
181
187
|
}
|
|
182
188
|
},
|
|
183
189
|
"required": [
|
|
@@ -195,27 +201,33 @@
|
|
|
195
201
|
"properties": {
|
|
196
202
|
"canvas": {
|
|
197
203
|
"type": "string",
|
|
198
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
204
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
205
|
+
"description": "Uniform illustration background."
|
|
199
206
|
},
|
|
200
207
|
"surface": {
|
|
201
208
|
"type": "string",
|
|
202
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
209
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
210
|
+
"description": "Base or recessed interface panels."
|
|
203
211
|
},
|
|
204
212
|
"raised": {
|
|
205
213
|
"type": "string",
|
|
206
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
214
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
215
|
+
"description": "Foreground panels, controls, and quiet tile fills."
|
|
207
216
|
},
|
|
208
217
|
"primary": {
|
|
209
218
|
"type": "string",
|
|
210
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
219
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
220
|
+
"description": "Main neutral glyphs, focal controls, and feature-defining marks; mid-gray in the default light theme."
|
|
211
221
|
},
|
|
212
222
|
"secondary": {
|
|
213
223
|
"type": "string",
|
|
214
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
224
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
225
|
+
"description": "Supporting glyphs, incidental label bars, and abstract content."
|
|
215
226
|
},
|
|
216
227
|
"divider": {
|
|
217
228
|
"type": "string",
|
|
218
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
229
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
230
|
+
"description": "Thin separators and necessary surface boundaries."
|
|
219
231
|
}
|
|
220
232
|
},
|
|
221
233
|
"required": [
|
|
@@ -122,27 +122,33 @@
|
|
|
122
122
|
"properties": {
|
|
123
123
|
"canvas": {
|
|
124
124
|
"type": "string",
|
|
125
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
125
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
126
|
+
"description": "Uniform illustration background."
|
|
126
127
|
},
|
|
127
128
|
"surface": {
|
|
128
129
|
"type": "string",
|
|
129
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
130
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
131
|
+
"description": "Base or recessed interface panels."
|
|
130
132
|
},
|
|
131
133
|
"raised": {
|
|
132
134
|
"type": "string",
|
|
133
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
135
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
136
|
+
"description": "Foreground panels, controls, and quiet tile fills."
|
|
134
137
|
},
|
|
135
138
|
"primary": {
|
|
136
139
|
"type": "string",
|
|
137
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
140
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
141
|
+
"description": "Main neutral glyphs, focal controls, and feature-defining marks; mid-gray in the default light theme."
|
|
138
142
|
},
|
|
139
143
|
"secondary": {
|
|
140
144
|
"type": "string",
|
|
141
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
145
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
146
|
+
"description": "Supporting glyphs, incidental label bars, and abstract content."
|
|
142
147
|
},
|
|
143
148
|
"divider": {
|
|
144
149
|
"type": "string",
|
|
145
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
150
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
151
|
+
"description": "Thin separators and necessary surface boundaries."
|
|
146
152
|
}
|
|
147
153
|
},
|
|
148
154
|
"required": [
|
|
@@ -160,27 +166,33 @@
|
|
|
160
166
|
"properties": {
|
|
161
167
|
"canvas": {
|
|
162
168
|
"type": "string",
|
|
163
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
169
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
170
|
+
"description": "Uniform illustration background."
|
|
164
171
|
},
|
|
165
172
|
"surface": {
|
|
166
173
|
"type": "string",
|
|
167
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
174
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
175
|
+
"description": "Base or recessed interface panels."
|
|
168
176
|
},
|
|
169
177
|
"raised": {
|
|
170
178
|
"type": "string",
|
|
171
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
179
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
180
|
+
"description": "Foreground panels, controls, and quiet tile fills."
|
|
172
181
|
},
|
|
173
182
|
"primary": {
|
|
174
183
|
"type": "string",
|
|
175
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
184
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
185
|
+
"description": "Main neutral glyphs, focal controls, and feature-defining marks; mid-gray in the default light theme."
|
|
176
186
|
},
|
|
177
187
|
"secondary": {
|
|
178
188
|
"type": "string",
|
|
179
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
189
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
190
|
+
"description": "Supporting glyphs, incidental label bars, and abstract content."
|
|
180
191
|
},
|
|
181
192
|
"divider": {
|
|
182
193
|
"type": "string",
|
|
183
|
-
"pattern": "^#[a-fA-F0-9]{6}$"
|
|
194
|
+
"pattern": "^#[a-fA-F0-9]{6}$",
|
|
195
|
+
"description": "Thin separators and necessary surface boundaries."
|
|
184
196
|
}
|
|
185
197
|
},
|
|
186
198
|
"required": [
|