@loworbitstudio/visor 0.10.2 → 1.2.0

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 CHANGED
@@ -23,6 +23,42 @@ npx visor init
23
23
  | `visor suggest --for <context>` | Get component suggestions for a use case |
24
24
  | `visor migrate token-substitution [path]` | Apply the §3.1 V7-primitive → Visor-semantic substitution table (dry-run by default; use `--apply` to commit) |
25
25
  | `visor check design <path>` | Scan frontend code for Borealis design anti-patterns (deterministic, no LLM) |
26
+ | `visor sandbox init <name>` | Scaffold a Next.js sandbox for in-vivo primitive iteration from a design-handoff manifest |
27
+ | `visor sandbox dev --name <name>` | Boot the sandbox dev server on its allocated port (port 3000 reserved) |
28
+ | `visor sandbox approve --name <name>` | Capture Playwright screenshots of every sandbox route as the visual spec (use `--diff` to pixel-diff vs prior approved) |
29
+
30
+ ## Sandbox
31
+
32
+ The `sandbox` subcommand scaffolds a Next.js app at `.lo/sandbox/<name>/`
33
+ populated with real Visor primitives (via `visor add`) plus visible gap stubs
34
+ for primitives not yet shipped. Operators iterate visually in a real Next.js
35
+ dev server; on approval, captures become the `visual_spec` attached to the
36
+ gap primitive's VI ticket.
37
+
38
+ ```bash
39
+ # 1. Init from a design-handoff manifest
40
+ npx visor sandbox init org-mgmt \
41
+ --handoff ~/Code/playbook/.lo/pattern-builds/organization-management/design-handoff.md \
42
+ --theme entr
43
+
44
+ # 2. Iterate visually
45
+ npx visor sandbox dev --name org-mgmt
46
+ # → prints per-route URLs on a port >= 4060 (never 3000)
47
+
48
+ # 3. Approve captures
49
+ npx visor sandbox approve --name org-mgmt # writes captures/approved/*.png
50
+ npx visor sandbox approve --name org-mgmt --diff # pixel-diff vs prior approved
51
+ ```
52
+
53
+ Pass `--theme <slug>` to look up a theme by name in `themes/` or
54
+ `custom-themes/`, or `--theme /path/to/theme.visor.yaml` for an arbitrary
55
+ location. Pass `--overwrite` to replace an existing sandbox; `--skip-install`
56
+ skips `npm install` (useful for test fixtures).
57
+
58
+ Gap primitives appear as visible dashed-border placeholders containing
59
+ `GAP: VI-<NNN>` plus the primitive name. Hand-edit the stub at
60
+ `components/stubs/<primitive>.tsx` to sketch the design in place; the operator
61
+ edits propagate into the captures and become the visual spec downstream.
26
62
 
27
63
  ## Target platforms
28
64
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.4.0",
3
- "generated_at": "2026-05-14T19:58:07.660Z",
3
+ "generated_at": "2026-05-20T04:45:51.978Z",
4
4
  "components": {
5
5
  "accessibility-specimen": {
6
6
  "changeType": "current",
@@ -50,6 +50,12 @@
50
50
  "breakingChange": false,
51
51
  "migrationNote": null
52
52
  },
53
+ "box": {
54
+ "changeType": "current",
55
+ "files": [],
56
+ "breakingChange": false,
57
+ "migrationNote": null
58
+ },
53
59
  "breadcrumb": {
54
60
  "changeType": "current",
55
61
  "files": [],
@@ -104,6 +110,12 @@
104
110
  "breakingChange": false,
105
111
  "migrationNote": null
106
112
  },
113
+ "chrome-button": {
114
+ "changeType": "current",
115
+ "files": [],
116
+ "breakingChange": false,
117
+ "migrationNote": null
118
+ },
107
119
  "code-block": {
108
120
  "changeType": "current",
109
121
  "files": [],
@@ -122,6 +134,12 @@
122
134
  "breakingChange": false,
123
135
  "migrationNote": null
124
136
  },
137
+ "color-picker": {
138
+ "changeType": "current",
139
+ "files": [],
140
+ "breakingChange": false,
141
+ "migrationNote": null
142
+ },
125
143
  "color-swatch": {
126
144
  "changeType": "current",
127
145
  "files": [],
@@ -146,6 +164,12 @@
146
164
  "breakingChange": false,
147
165
  "migrationNote": null
148
166
  },
167
+ "container": {
168
+ "changeType": "current",
169
+ "files": [],
170
+ "breakingChange": false,
171
+ "migrationNote": null
172
+ },
149
173
  "context-menu": {
150
174
  "changeType": "current",
151
175
  "files": [],
@@ -236,6 +260,12 @@
236
260
  "breakingChange": false,
237
261
  "migrationNote": null
238
262
  },
263
+ "grid": {
264
+ "changeType": "current",
265
+ "files": [],
266
+ "breakingChange": false,
267
+ "migrationNote": null
268
+ },
239
269
  "heading": {
240
270
  "changeType": "current",
241
271
  "files": [],
@@ -260,6 +290,12 @@
260
290
  "breakingChange": false,
261
291
  "migrationNote": null
262
292
  },
293
+ "inline": {
294
+ "changeType": "current",
295
+ "files": [],
296
+ "breakingChange": false,
297
+ "migrationNote": null
298
+ },
263
299
  "input": {
264
300
  "changeType": "current",
265
301
  "files": [],
@@ -368,6 +404,12 @@
368
404
  "breakingChange": false,
369
405
  "migrationNote": null
370
406
  },
407
+ "quick-actions": {
408
+ "changeType": "current",
409
+ "files": [],
410
+ "breakingChange": false,
411
+ "migrationNote": null
412
+ },
371
413
  "radio-group": {
372
414
  "changeType": "current",
373
415
  "files": [],
@@ -380,6 +422,12 @@
380
422
  "breakingChange": false,
381
423
  "migrationNote": null
382
424
  },
425
+ "score-indicator": {
426
+ "changeType": "current",
427
+ "files": [],
428
+ "breakingChange": false,
429
+ "migrationNote": null
430
+ },
383
431
  "scroll-area": {
384
432
  "changeType": "current",
385
433
  "files": [],
@@ -392,6 +440,12 @@
392
440
  "breakingChange": false,
393
441
  "migrationNote": null
394
442
  },
443
+ "section-header": {
444
+ "changeType": "current",
445
+ "files": [],
446
+ "breakingChange": false,
447
+ "migrationNote": null
448
+ },
395
449
  "select": {
396
450
  "changeType": "current",
397
451
  "files": [],
@@ -440,6 +494,18 @@
440
494
  "breakingChange": false,
441
495
  "migrationNote": null
442
496
  },
497
+ "sparkline": {
498
+ "changeType": "current",
499
+ "files": [],
500
+ "breakingChange": false,
501
+ "migrationNote": null
502
+ },
503
+ "stack": {
504
+ "changeType": "current",
505
+ "files": [],
506
+ "breakingChange": false,
507
+ "migrationNote": null
508
+ },
443
509
  "stat-card": {
444
510
  "changeType": "current",
445
511
  "files": [],
@@ -464,6 +530,12 @@
464
530
  "breakingChange": false,
465
531
  "migrationNote": null
466
532
  },
533
+ "status-dot": {
534
+ "changeType": "current",
535
+ "files": [],
536
+ "breakingChange": false,
537
+ "migrationNote": null
538
+ },
467
539
  "stepper": {
468
540
  "changeType": "current",
469
541
  "files": [],