human2ai 0.1.2 → 0.1.4
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.en.md +36 -4
- package/README.md +44 -4
- package/dist/cli/main.js +47 -13
- package/dist/cli/main.js.map +1 -1
- package/dist/database/style-library-repository.d.ts +14 -1
- package/dist/database/style-library-repository.js +59 -0
- package/dist/database/style-library-repository.js.map +1 -1
- package/dist/domain/composition/analysis.d.ts +3 -0
- package/dist/domain/composition/analysis.js +5 -0
- package/dist/domain/composition/analysis.js.map +1 -1
- package/dist/domain/composition/draft.d.ts +2 -0
- package/dist/domain/composition/draft.js +126 -5
- package/dist/domain/composition/draft.js.map +1 -1
- package/dist/domain/composition/frame.d.ts +1 -0
- package/dist/domain/composition/frame.js +6 -0
- package/dist/domain/composition/frame.js.map +1 -1
- package/dist/domain/composition/geometry.d.ts +5 -1
- package/dist/domain/composition/geometry.js +40 -2
- package/dist/domain/composition/geometry.js.map +1 -1
- package/dist/domain/composition/index.d.ts +6 -3
- package/dist/domain/composition/index.js +6 -3
- package/dist/domain/composition/index.js.map +1 -1
- package/dist/domain/composition/planning-intersections.d.ts +20 -0
- package/dist/domain/composition/planning-intersections.js +119 -0
- package/dist/domain/composition/planning-intersections.js.map +1 -0
- package/dist/domain/composition/planning.d.ts +25 -0
- package/dist/domain/composition/planning.js +152 -0
- package/dist/domain/composition/planning.js.map +1 -0
- package/dist/domain/composition/refinement/engine.js +1 -0
- package/dist/domain/composition/refinement/engine.js.map +1 -1
- package/dist/domain/composition/render.js +14 -1
- package/dist/domain/composition/render.js.map +1 -1
- package/dist/domain/composition/states.js +6 -3
- package/dist/domain/composition/states.js.map +1 -1
- package/dist/domain/composition/types.d.ts +49 -1
- package/dist/domain/session/capabilities.js +1 -0
- package/dist/domain/session/capabilities.js.map +1 -1
- package/dist/domain/spatial/camera-box-sheet.d.ts +15 -0
- package/dist/domain/spatial/camera-box-sheet.js +24 -0
- package/dist/domain/spatial/camera-box-sheet.js.map +1 -0
- package/dist/domain/spatial/camera-box.d.ts +1 -1
- package/dist/domain/spatial/camera-box.js +6 -2
- package/dist/domain/spatial/camera-box.js.map +1 -1
- package/dist/domain/spatial/camera-render-key.d.ts +7 -0
- package/dist/domain/spatial/camera-render-key.js +63 -0
- package/dist/domain/spatial/camera-render-key.js.map +1 -0
- package/dist/domain/spatial/index.d.ts +1 -0
- package/dist/domain/spatial/index.js +1 -0
- package/dist/domain/spatial/index.js.map +1 -1
- package/dist/domain/spatial/lighting.js +3 -2
- package/dist/domain/spatial/lighting.js.map +1 -1
- package/dist/domain/spatial/model.d.ts +2 -0
- package/dist/domain/spatial/model.js +82 -27
- package/dist/domain/spatial/model.js.map +1 -1
- package/dist/domain/spatial/preview.d.ts +4 -0
- package/dist/domain/spatial/preview.js +23 -0
- package/dist/domain/spatial/preview.js.map +1 -0
- package/dist/domain/spatial/reference-lines.d.ts +12 -3
- package/dist/domain/spatial/reference-lines.js +37 -16
- package/dist/domain/spatial/reference-lines.js.map +1 -1
- package/dist/domain/spatial/render-inputs.d.ts +3 -0
- package/dist/domain/spatial/render-inputs.js +14 -0
- package/dist/domain/spatial/render-inputs.js.map +1 -0
- package/dist/domain/spatial/scene-cache.d.ts +13 -1
- package/dist/domain/spatial/scene-cache.js +90 -11
- package/dist/domain/spatial/scene-cache.js.map +1 -1
- package/dist/domain/spatial/scene-update.d.ts +6 -0
- package/dist/domain/spatial/scene-update.js +52 -0
- package/dist/domain/spatial/scene-update.js.map +1 -0
- package/dist/domain/spatial/scene.d.ts +3 -1
- package/dist/domain/spatial/scene.js +78 -20
- package/dist/domain/spatial/scene.js.map +1 -1
- package/dist/domain/spatial/types.d.ts +8 -0
- package/dist/domain/spatial/types.js.map +1 -1
- package/dist/domain/style/model-input.d.ts +3 -0
- package/dist/domain/style/model-input.js +36 -0
- package/dist/domain/style/model-input.js.map +1 -0
- package/dist/domain/style/types.d.ts +8 -1
- package/dist/domain/style/types.js +1 -1
- package/dist/domain/style/types.js.map +1 -1
- package/dist/domain/ui-sketch/clipboard.d.ts +12 -0
- package/dist/domain/ui-sketch/clipboard.js +55 -0
- package/dist/domain/ui-sketch/clipboard.js.map +1 -0
- package/dist/domain/ui-sketch/index.d.ts +1 -0
- package/dist/domain/ui-sketch/index.js +1 -0
- package/dist/domain/ui-sketch/index.js.map +1 -1
- package/dist/server/routes/spatial-sessions.js +39 -15
- package/dist/server/routes/spatial-sessions.js.map +1 -1
- package/dist/server/routes/style-library.js +39 -0
- package/dist/server/routes/style-library.js.map +1 -1
- package/dist/server/spatial-render-service.d.ts +21 -0
- package/dist/server/spatial-render-service.js +67 -0
- package/dist/server/spatial-render-service.js.map +1 -0
- package/dist/server/spatial-render-worker.d.ts +1 -0
- package/dist/server/spatial-render-worker.js +15 -0
- package/dist/server/spatial-render-worker.js.map +1 -0
- package/dist/server/spatial-render.d.ts +15 -3
- package/dist/server/spatial-render.js +47 -14
- package/dist/server/spatial-render.js.map +1 -1
- package/locales/en/common.json +94 -14
- package/migrations/0009_spatial_styles.sql +31 -0
- package/migrations/0010_style_preview_models.sql +8 -0
- package/package.json +1 -1
- package/schemas/composition-draft.schema.json +474 -1
- package/schemas/spatial-draft.schema.json +12 -0
- package/schemas/spatial-operations.schema.json +12 -0
- package/skills/human2ai/SKILL.md +23 -9
- package/skills/human2ai/references/composition.md +192 -1
- package/skills/human2ai/references/spatial-modeling.md +119 -0
- package/skills/human2ai/references/spatial.md +7 -2
- package/web/out/404/index.html +1 -1
- package/web/out/404.html +1 -1
- package/web/out/__next.__PAGE__.txt +7 -5
- package/web/out/__next._full.txt +7 -5
- package/web/out/__next._tree.txt +4 -2
- package/web/out/_next/static/chunks/101.6ef34adad3e9815b.js +1 -0
- package/web/out/_next/static/chunks/130-7e9e715a084569bb.js +1 -0
- package/web/out/_next/static/chunks/166-96a8c6ae1e9aed59.js +1 -0
- package/web/out/_next/static/chunks/218.7b89674409b344b8.js +1 -0
- package/web/out/_next/static/chunks/484.92b016222d6749f2.js +1 -0
- package/web/out/_next/static/chunks/{381-4a803b79da320e6e.js → 635-611c009924b842be.js} +54 -54
- package/web/out/_next/static/chunks/653-6dfb97fec9a2d91b.js +1 -0
- package/web/out/_next/static/chunks/678-32d3aa1859450d63.js +1 -0
- package/web/out/_next/static/chunks/83607670-fd2f339702a222e4.js +1 -0
- package/web/out/_next/static/chunks/app/_not-found/{page-59ce938ad0594022.js → page-b92817fdc4609975.js} +1 -1
- package/web/out/_next/static/chunks/app/composition/page-6c12ee8472715448.js +1 -0
- package/web/out/_next/static/chunks/app/{layout-6351ae607c4ee18d.js → layout-1dd9196cde94389c.js} +1 -1
- package/web/out/_next/static/chunks/app/page-741ecaf9ee8c3c07.js +1 -0
- package/web/out/_next/static/chunks/app/spatial/page-5ba0940650df6c7f.js +1 -0
- package/web/out/_next/static/chunks/app/styles/page-1ccfc2c5fbc1e646.js +1 -0
- package/web/out/_next/static/chunks/app/ui-sketch/page-ef4f2e531583e684.js +1 -0
- package/web/out/_next/static/chunks/{c3f2cda1-9e279dab137b7272.js → c3f2cda1-ef85a0897724e46b.js} +1 -1
- package/web/out/_next/static/chunks/main-app-cf37a257d91ce62e.js +1 -0
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-33b4f58f02e82215.js +1 -0
- package/web/out/_next/static/chunks/webpack-d16ce1f994e98178.js +1 -0
- package/web/out/_next/static/css/06743b5635914999.css +5 -0
- package/web/out/_next/static/css/0b43ff4a0439c97e.css +1 -0
- package/web/out/_next/static/css/1f8501a43042a5a2.css +1 -0
- package/web/out/_next/static/css/39e8cace36461a15.css +1 -0
- package/web/out/_not-found/__next._full.txt +3 -3
- package/web/out/_not-found/__next._not-found.__PAGE__.txt +3 -3
- package/web/out/_not-found/__next._tree.txt +1 -1
- package/web/out/_not-found/index.html +1 -1
- package/web/out/_not-found/index.txt +3 -3
- package/web/out/composition/__next._full.txt +6 -5
- package/web/out/composition/__next._tree.txt +3 -2
- package/web/out/composition/__next.composition.__PAGE__.txt +6 -5
- package/web/out/composition/index.html +1 -1
- package/web/out/composition/index.txt +6 -5
- package/web/out/index.html +1 -1
- package/web/out/index.txt +7 -5
- package/web/out/spatial/__next._full.txt +6 -5
- package/web/out/spatial/__next._tree.txt +3 -2
- package/web/out/spatial/__next.spatial.__PAGE__.txt +6 -5
- package/web/out/spatial/index.html +1 -1
- package/web/out/spatial/index.txt +6 -5
- package/web/out/styles/__next._full.txt +6 -5
- package/web/out/styles/__next._tree.txt +3 -2
- package/web/out/styles/__next.styles.__PAGE__.txt +6 -5
- package/web/out/styles/index.html +1 -1
- package/web/out/styles/index.txt +6 -5
- package/web/out/ui-sketch/__next._full.txt +6 -5
- package/web/out/ui-sketch/__next._tree.txt +3 -2
- package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +6 -5
- package/web/out/ui-sketch/index.html +1 -1
- package/web/out/ui-sketch/index.txt +6 -5
- package/web/out/_next/static/chunks/130-f2627352fc1e1f49.js +0 -1
- package/web/out/_next/static/chunks/678-b0ea409290a64ff4.js +0 -1
- package/web/out/_next/static/chunks/728-ce64a38c9e8339e8.js +0 -1
- package/web/out/_next/static/chunks/83607670-bc1279370476e59f.js +0 -1
- package/web/out/_next/static/chunks/app/composition/page-b0a2f7370b949cf9.js +0 -1
- package/web/out/_next/static/chunks/app/page-a6fde4165eb4be1e.js +0 -1
- package/web/out/_next/static/chunks/app/spatial/page-2c3df91fd1d7d444.js +0 -1
- package/web/out/_next/static/chunks/app/styles/page-54b11f1945d64255.js +0 -1
- package/web/out/_next/static/chunks/app/ui-sketch/page-1abcd70a81ac7b30.js +0 -1
- package/web/out/_next/static/chunks/main-app-8946bf6a8c0dc843.js +0 -1
- package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-5ac7248e26f2e308.js +0 -1
- package/web/out/_next/static/chunks/webpack-97ae63c0e0b2a512.js +0 -1
- package/web/out/_next/static/css/7bfa3a5c92836f5c.css +0 -5
- /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_buildManifest.js +0 -0
- /package/web/out/_next/static/{1To86KpfZhDmNzmTIgEuy → n4UcxqMmr_2CBmSxBp52z}/_ssgManifest.js +0 -0
package/locales/en/common.json
CHANGED
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
"label": "Category",
|
|
49
49
|
"all": "All types",
|
|
50
50
|
"visual": "Visual",
|
|
51
|
-
"ui": "UI"
|
|
51
|
+
"ui": "UI",
|
|
52
|
+
"spatial": "3D"
|
|
52
53
|
},
|
|
53
54
|
"creator": {
|
|
54
55
|
"label": "Creator",
|
|
@@ -66,11 +67,12 @@
|
|
|
66
67
|
},
|
|
67
68
|
"description": {
|
|
68
69
|
"heading": "Design specification",
|
|
69
|
-
"placeholder": "Describe the layout, proportions, visual hierarchy, and decorative treatment."
|
|
70
|
+
"placeholder": "Describe the layout, proportions, visual hierarchy, and decorative treatment.",
|
|
71
|
+
"spatialPlaceholder": "Describe forms, proportions, materials, palette, lighting, and camera treatment."
|
|
70
72
|
},
|
|
71
73
|
"searchPlaceholder": "Search styles",
|
|
72
74
|
"deleteTitle": "Delete this style?",
|
|
73
|
-
"deleteDescription": "The style and all of its reference images will be permanently deleted.",
|
|
75
|
+
"deleteDescription": "The style and all of its reference images and models will be permanently deleted.",
|
|
74
76
|
"empty": "No styles yet",
|
|
75
77
|
"noMatches": "No matching styles",
|
|
76
78
|
"loading": "Loading styles",
|
|
@@ -82,6 +84,13 @@
|
|
|
82
84
|
"promptSummary": {
|
|
83
85
|
"label": "Style summary",
|
|
84
86
|
"placeholder": "Summarize the defining visual traits in one sentence."
|
|
87
|
+
},
|
|
88
|
+
"model": {
|
|
89
|
+
"label": "Model example",
|
|
90
|
+
"loading": "Loading model",
|
|
91
|
+
"failed": "Could not preview the model",
|
|
92
|
+
"reset": "Reset model view",
|
|
93
|
+
"controls": "Drag to rotate, scroll to zoom. When focused, use arrow keys to rotate, + / − to zoom, and Home to reset."
|
|
85
94
|
}
|
|
86
95
|
},
|
|
87
96
|
"notes": {
|
|
@@ -254,8 +263,6 @@
|
|
|
254
263
|
"quadrilateral": "Rectangle",
|
|
255
264
|
"textRegion": "Text region"
|
|
256
265
|
},
|
|
257
|
-
"showGuideGrid": "Show grid",
|
|
258
|
-
"hideGuideGrid": "Hide grid",
|
|
259
266
|
"canvasZoom": "Current zoom",
|
|
260
267
|
"zoomOut": "Zoom out",
|
|
261
268
|
"zoomIn": "Zoom in",
|
|
@@ -300,7 +307,16 @@
|
|
|
300
307
|
"left": "left",
|
|
301
308
|
"lightSourceNumber": "Light source {{index}}",
|
|
302
309
|
"lightSourceGuidance": "- Like ordinary shape regions, light markers describe approximate visual intent and spatial relationships. Pale yellow identifies lighting, not color temperature. A source is distinct from the area it illuminates: interpret its origin and contribution in the scene. Rectangles suggest band-shaped or extended illumination; circles suggest localized illumination. Retain the broad lighting placement, extension trend and contribution to subject and space, while freely adapting width, length, curvature, continuity, edges and strength to the scene. User instructions and node notes take precedence; otherwise the Agent chooses. Do not infer fixed width, straight constant-width strips, full-frame coverage, medium-strong contrast or thumbnail prominence from the reference. Consider sources individually while allowing their visible effects to split, overlap or blend. Review whether the overall lighting broadly echoes the composition rather than comparing edges, segments or widths; tighten a constraint only when the user explicitly requests it, and do not ignore the authored lighting intent entirely.",
|
|
303
|
-
"lightBandGuidance": "Light-band intent: broadly retain the extended or band-like illumination and its spatial role here. Its realization may narrow, widen, curve, break up or blend with the scene; a complete, straight, constant-width or conspicuous stripe is not required. User instructions and this node’s notes take precedence for width, length, edges and strength; otherwise the Agent interprets them freely. An approximate overall correspondence is sufficient."
|
|
310
|
+
"lightBandGuidance": "Light-band intent: broadly retain the extended or band-like illumination and its spatial role here. Its realization may narrow, widen, curve, break up or blend with the scene; a complete, straight, constant-width or conspicuous stripe is not required. User instructions and this node’s notes take precedence for width, length, edges and strength; otherwise the Agent interprets them freely. An approximate overall correspondence is sufficient.",
|
|
311
|
+
"planningGuidance": "Use the following plans as composition intent alongside the overall requirements and notes. Do not draw the guide lines, axes, spiral or triangle outline in the artwork. Positions are relative to the top-left of the image; angles run clockwise from the rightward horizontal.",
|
|
312
|
+
"planningGrid": "- {{type}}: {{axes}} divisions.",
|
|
313
|
+
"planningSymmetry": "- Symmetrical composition: axis through the image center ({{x}}%, {{y}}%), direction {{rotation}}°.",
|
|
314
|
+
"planningSpiral": "- Golden spiral: pole at ({{x}}%, {{y}}%), outer radius directed at {{rotation}}°, radius {{scale}}% of the shorter image side, {{winding}}.",
|
|
315
|
+
"planningClockwise": "expanding clockwise",
|
|
316
|
+
"planningCounterclockwise": "expanding counterclockwise",
|
|
317
|
+
"planningTriangle": "- Triangular composition: isosceles triangle with vertices at {{points}}.",
|
|
318
|
+
"planningRadial": "- Radial composition: convergence point ({{x}}%, {{y}}%), {{rayCount}} evenly spaced rays starting at {{rotation}}° and spanning {{spread}}° clockwise.",
|
|
319
|
+
"planningRadialFree": "- Free radial composition: convergence point ({{x}}%, {{y}}%), {{rayCount}} rays with independent directions: {{angles}} (clockwise from the rightward horizontal)."
|
|
304
320
|
},
|
|
305
321
|
"depth": {
|
|
306
322
|
"label": "Depth",
|
|
@@ -346,6 +362,52 @@
|
|
|
346
362
|
},
|
|
347
363
|
"lightSource": {
|
|
348
364
|
"toggle": "Use as light source"
|
|
365
|
+
},
|
|
366
|
+
"textRegion": {
|
|
367
|
+
"cornerLabel": "Text outline corner {{index}}",
|
|
368
|
+
"cornerHelp": "Select a text region and hold Ctrl to drag its corners. Focus a corner and use the arrow keys for fine adjustments."
|
|
369
|
+
},
|
|
370
|
+
"planning": {
|
|
371
|
+
"title": "Composition planning",
|
|
372
|
+
"add": "Add plan",
|
|
373
|
+
"empty": "No composition plans",
|
|
374
|
+
"types": {
|
|
375
|
+
"thirds": "Rule of thirds",
|
|
376
|
+
"golden-section": "Golden section",
|
|
377
|
+
"symmetry": "Symmetrical composition",
|
|
378
|
+
"golden-spiral": "Golden spiral",
|
|
379
|
+
"triangle": "Triangular composition",
|
|
380
|
+
"radial": "Radial composition"
|
|
381
|
+
},
|
|
382
|
+
"visible": "Show plan",
|
|
383
|
+
"axes": "Grid directions",
|
|
384
|
+
"both": "Horizontal and vertical",
|
|
385
|
+
"horizontal": "Horizontal",
|
|
386
|
+
"vertical": "Vertical",
|
|
387
|
+
"x": "Horizontal (%)",
|
|
388
|
+
"y": "Vertical (%)",
|
|
389
|
+
"rotation": "Rotation (°)",
|
|
390
|
+
"scale": "Spiral size (%)",
|
|
391
|
+
"mirrored": "Mirror spiral",
|
|
392
|
+
"handle": "Plan control {{index}}",
|
|
393
|
+
"help": "Shift-click to select multiple plans and drag a selected guide to move them together. Thirds, golden-section and symmetry guides stay fixed. Select thirds and golden-section plans in the sidebar. Arrow keys nudge; Delete removes a plan.",
|
|
394
|
+
"width": "Base width (%)",
|
|
395
|
+
"height": "Triangle height (%)",
|
|
396
|
+
"triangleHelp": "Drag the apex to rotate and adjust height. Drag a base corner to resize; both sides stay symmetric.",
|
|
397
|
+
"symmetryHelp": "The center stays fixed. Drag the other dot to one of eight regular directions or four frame-corner directions. Corner directions follow the frame ratio; duplicate positions merge for a square. Arrow keys step between positions.",
|
|
398
|
+
"spiralHelp": "Click the center dot to switch clockwise/counterclockwise. Drag it to move the spiral; drag the outer dot to rotate and resize.",
|
|
399
|
+
"spiralDirection": "Switch spiral direction (clockwise/counterclockwise)",
|
|
400
|
+
"rayCount": "Ray count",
|
|
401
|
+
"spread": "Spread (°)",
|
|
402
|
+
"radialHelp": "Uniform mode uses a starting direction and spread. In Free mode, drag each ray’s dot to adjust its direction; drag the center to move the convergence point. Switching to Free preserves directions; switching back to Uniform redistributes the current rays around a full circle.",
|
|
403
|
+
"lock": "Lock composition planning",
|
|
404
|
+
"unlock": "Unlock composition planning",
|
|
405
|
+
"showAll": "Show composition guides",
|
|
406
|
+
"hideAll": "Hide composition guides",
|
|
407
|
+
"radialMode": "Radial mode",
|
|
408
|
+
"radialUniform": "Uniform",
|
|
409
|
+
"radialFree": "Free",
|
|
410
|
+
"rayHandle": "Ray {{index}} direction"
|
|
349
411
|
}
|
|
350
412
|
},
|
|
351
413
|
"uiSketch": {
|
|
@@ -498,14 +560,17 @@
|
|
|
498
560
|
},
|
|
499
561
|
"spatial": {
|
|
500
562
|
"title": "3D space",
|
|
563
|
+
"spaceTab": "Space",
|
|
564
|
+
"workspaceViews": "3D workspace view",
|
|
565
|
+
"cameraPreviewPending": "Preview available after saving",
|
|
501
566
|
"newSpace": "New 3D space",
|
|
502
567
|
"newInProject": "New 3D space in {{project}}",
|
|
503
568
|
"untitled": "Untitled 3D space",
|
|
504
569
|
"objects": "Scene objects",
|
|
505
570
|
"cameras": "Cameras",
|
|
506
|
-
"addCharacter": "
|
|
571
|
+
"addCharacter": "Character",
|
|
507
572
|
"character": "Character",
|
|
508
|
-
"addCamera": "
|
|
573
|
+
"addCamera": "Camera",
|
|
509
574
|
"camera": "Camera {{number}}",
|
|
510
575
|
"box": "Box",
|
|
511
576
|
"sphere": "Sphere",
|
|
@@ -544,8 +609,6 @@
|
|
|
544
609
|
"loadFailed": "Could not load the 3D space",
|
|
545
610
|
"saveFailed": "Could not save. Try again.",
|
|
546
611
|
"conflict": "The space has changed. Reload to continue.",
|
|
547
|
-
"saving": "Saving space",
|
|
548
|
-
"saved": "Space saved",
|
|
549
612
|
"duplicate": "Duplicate scene object",
|
|
550
613
|
"deleteConfirm": "Delete this scene object?",
|
|
551
614
|
"empty": "No objects in this space",
|
|
@@ -587,6 +650,7 @@
|
|
|
587
650
|
"resetPose": "Reset pose",
|
|
588
651
|
"resetPoseHint": "Restore the default pose and clear this character’s locks. Can be undone.",
|
|
589
652
|
"showRig": "Show joints and bones",
|
|
653
|
+
"showCameras": "Show cameras",
|
|
590
654
|
"lightingEffects": "Lighting effects",
|
|
591
655
|
"jointLeftWrist": "Left wrist",
|
|
592
656
|
"jointLeftAnkle": "Left ankle",
|
|
@@ -655,7 +719,20 @@
|
|
|
655
719
|
"downloadReference": "Download PNG",
|
|
656
720
|
"referenceLoadFailed": "Could not load reference",
|
|
657
721
|
"cameraBox": "Camera box",
|
|
658
|
-
"
|
|
722
|
+
"cameraBoxTab": "Camera box",
|
|
723
|
+
"cameraBoxFrontToggle": "Front",
|
|
724
|
+
"cameraBoxBackToggle": "Back",
|
|
725
|
+
"cameraBoxLeftToggle": "Left",
|
|
726
|
+
"cameraBoxRightToggle": "Right",
|
|
727
|
+
"cameraBoxTopToggle": "Top",
|
|
728
|
+
"cameraBoxBottomToggle": "Bottom",
|
|
729
|
+
"copyObservationImage": "Copy observation image",
|
|
730
|
+
"downloadObservationImage": "Download observation image",
|
|
731
|
+
"observationCopyFailed": "Could not copy the observation image. Try again or download it.",
|
|
732
|
+
"observationDownloadFailed": "Could not download the observation image. Try again.",
|
|
733
|
+
"noCameraBoxes": "No camera boxes",
|
|
734
|
+
"noObservationDirections": "Select at least one direction",
|
|
735
|
+
"addCameraBox": "Camera box",
|
|
659
736
|
"cameraBoxSize": "Edge length (m)",
|
|
660
737
|
"cameraBoxResolution": "Tile resolution",
|
|
661
738
|
"cameraBoxView": "Observation view",
|
|
@@ -670,14 +747,17 @@
|
|
|
670
747
|
"fitCameraBoxHands": "Fit all hands",
|
|
671
748
|
"cameraBoxHint": "Six inward orthographic views show only the box interior. Directions rotate with the box. Use the sheet to understand the pose and the main camera for composition.",
|
|
672
749
|
"cameraBoxTargetError": "Specify exactly one of --camera or --box.",
|
|
673
|
-
"cameraBoxViewTargetError": "
|
|
750
|
+
"cameraBoxViewTargetError": "Observation-view options require --box.",
|
|
674
751
|
"cameraBoxViewError": "--view must be sheet, front, back, left, right, top, or bottom.",
|
|
675
|
-
"
|
|
752
|
+
"cameraBoxViewsError": "Choose 1–6 distinct directions from front, back, left, right, top, bottom, separated by commas.",
|
|
753
|
+
"cameraBoxViewConflict": "Use either --view or --views, not both.",
|
|
754
|
+
"cameraBoxGenerationGuidance": "The main camera sets the final composition. The observation sheet shows the same scene at one moment; labels identify box-local directions, not anatomical left and right. Use auxiliary views to understand occlusion, digit ownership, and approximate bending intent. Produce a single image without a contact-sheet layout, duplicated subjects, direction labels, or joint/body guide lines. Correct anatomy and finger contact naturally instead of reproducing the references pixel for pixel.",
|
|
676
755
|
"referenceSkeleton": "Skeleton",
|
|
677
756
|
"renderPassError": "--pass must be one of {{passes}}.",
|
|
678
757
|
"appearance": "Model style",
|
|
679
758
|
"appearanceQuaternius": "Human model",
|
|
680
|
-
"appearanceGeometric": "Geometric mannequin"
|
|
759
|
+
"appearanceGeometric": "Geometric mannequin",
|
|
760
|
+
"editObject": "Edit object"
|
|
681
761
|
},
|
|
682
762
|
"canvasHistory": {
|
|
683
763
|
"undo": "Undo",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- Rebuild the category constraint while keeping foreign keys enabled. Dropping
|
|
2
|
+
-- the old parent cascades its references and clears bindings; restore both
|
|
3
|
+
-- inside the migration transaction without changing session revisions.
|
|
4
|
+
CREATE TEMP TABLE spatial_style_references AS SELECT * FROM style_reference_images;
|
|
5
|
+
CREATE TEMP TABLE spatial_style_bindings AS
|
|
6
|
+
SELECT id, style_id FROM sessions WHERE style_id IS NOT NULL;
|
|
7
|
+
|
|
8
|
+
CREATE TABLE style_entries_with_spatial (
|
|
9
|
+
id TEXT PRIMARY KEY,
|
|
10
|
+
name TEXT NOT NULL CHECK (length(trim(name)) > 0),
|
|
11
|
+
category TEXT NOT NULL CHECK (category IN ('visual', 'ui', 'spatial')),
|
|
12
|
+
creator_type TEXT NOT NULL CHECK (creator_type IN ('user', 'agent')),
|
|
13
|
+
description TEXT NOT NULL CHECK (length(trim(description)) > 0),
|
|
14
|
+
revision INTEGER NOT NULL DEFAULT 1 CHECK (revision > 0),
|
|
15
|
+
created_at TEXT NOT NULL,
|
|
16
|
+
updated_at TEXT NOT NULL,
|
|
17
|
+
prompt_summary TEXT
|
|
18
|
+
) STRICT;
|
|
19
|
+
|
|
20
|
+
INSERT INTO style_entries_with_spatial SELECT * FROM style_entries;
|
|
21
|
+
DROP TABLE style_entries;
|
|
22
|
+
ALTER TABLE style_entries_with_spatial RENAME TO style_entries;
|
|
23
|
+
CREATE INDEX style_entries_updated_idx ON style_entries (updated_at DESC, id);
|
|
24
|
+
|
|
25
|
+
INSERT INTO style_reference_images SELECT * FROM spatial_style_references;
|
|
26
|
+
UPDATE sessions
|
|
27
|
+
SET style_id = (SELECT style_id FROM spatial_style_bindings WHERE id = sessions.id)
|
|
28
|
+
WHERE id IN (SELECT id FROM spatial_style_bindings);
|
|
29
|
+
|
|
30
|
+
DROP TABLE spatial_style_references;
|
|
31
|
+
DROP TABLE spatial_style_bindings;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
CREATE TABLE style_preview_models (
|
|
2
|
+
style_id TEXT PRIMARY KEY REFERENCES style_entries(id) ON DELETE CASCADE,
|
|
3
|
+
id TEXT NOT NULL UNIQUE,
|
|
4
|
+
relative_path TEXT NOT NULL,
|
|
5
|
+
original_filename TEXT NOT NULL,
|
|
6
|
+
byte_size INTEGER NOT NULL CHECK (byte_size > 0),
|
|
7
|
+
created_at TEXT NOT NULL
|
|
8
|
+
) STRICT;
|