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
|
@@ -15,6 +15,90 @@ Requests such as “把这张图的构图画到画布上”, “按参考图画
|
|
|
15
15
|
|
|
16
16
|
This is full draft authoring. `composition apply` below only refines existing geometry and cannot create the recovered regions. A reference picture does not require a style-library entry or an image node on the canvas.
|
|
17
17
|
|
|
18
|
+
## Design content from composition planning
|
|
19
|
+
|
|
20
|
+
Use this workflow to create or redesign content from focuses and `plans`, and to
|
|
21
|
+
preserve those relationships during style processing, refinement and authorized
|
|
22
|
+
image generation. For a request to edit only the guides, use
|
|
23
|
+
[Shared composition planning](#shared-composition-planning) and leave content alone.
|
|
24
|
+
|
|
25
|
+
Read the latest capture, user notes and all active-state plans, including hidden
|
|
26
|
+
ones, then inspect the rendered composition. Preserve the user's
|
|
27
|
+
`processingSemantic`; ask for Scene or Editorial if it is null. Read planning in
|
|
28
|
+
frame fractions and directions in physical geometry as documented below. Treat
|
|
29
|
+
focus placement, directional flow, visual weight and negative space as distinct
|
|
30
|
+
relationships. Intersections locate crossings; they do not require a subject at
|
|
31
|
+
every crossing, and a radial origin is not automatically a focus or a light source.
|
|
32
|
+
|
|
33
|
+
With complex planning, such as radial fans, spirals or several interacting guides,
|
|
34
|
+
make a compact correspondence before authoring: **plan id / relevant line or
|
|
35
|
+
relationship → visible content that carries it → expected visual effect**.
|
|
36
|
+
Account for every plan's intent, including its interaction with the others; do not
|
|
37
|
+
silently discard an inconvenient direction. Keep this reasoning in the working
|
|
38
|
+
explanation, with node-specific roles in `annotation`, rather than adding schema
|
|
39
|
+
fields or overwriting user notes. User-specified subjects and priorities remain
|
|
40
|
+
constraints. When the subject is open, choose one whose structure can express the
|
|
41
|
+
planned relationships. Resolve material conflicts with the user if their intent
|
|
42
|
+
cannot be retained; do not move their guides to accommodate a convenient subject.
|
|
43
|
+
|
|
44
|
+
Choose nodes by their contribution to the whole: concentrated weight, directional
|
|
45
|
+
extension, repeated rhythm, enclosure or a boundary of negative space. A node may
|
|
46
|
+
combine several objects or cover only part of one. Split it when a distinct
|
|
47
|
+
relationship would otherwise disappear; merge parts that only improve object
|
|
48
|
+
recognition without changing the composition. Do not default to one node per body
|
|
49
|
+
part, object or guide line. Use the coordinate and draft format in
|
|
50
|
+
[Author a complete draft](composition-projection.md#author-a-complete-draft), with
|
|
51
|
+
`origin: "agent"` for new design nodes. Preserve existing identities, notes and
|
|
52
|
+
plans within the requested edit scope. Save through `capture.commands.save`, or
|
|
53
|
+
`style.commands.save` when applying a style; adding content is full draft authoring.
|
|
54
|
+
|
|
55
|
+
### Make radial and other guide relationships visible
|
|
56
|
+
|
|
57
|
+
For each radial plan, read its convergence point and every authored direction
|
|
58
|
+
(`angles` for Free, or directions derived from the Uniform fields). Preserve the
|
|
59
|
+
recognizable center, principal directions and angular spread of the fan through
|
|
60
|
+
actual contours, elongated masses, repeated elements, tonal
|
|
61
|
+
boundaries or gaps. Several rays may be expressed by one coherent fan or sequence;
|
|
62
|
+
one ray may continue across several shapes. There is no requirement for one node
|
|
63
|
+
or a literal straight stroke per ray, or for content to reach every ray's endpoint
|
|
64
|
+
at the frame boundary. Curvature, interruption and overlap are
|
|
65
|
+
acceptable when the overall directional relationship remains legible. For multiple
|
|
66
|
+
radial centers, check each fan and how the fans meet, cross or remain separated.
|
|
67
|
+
Correct focal placement does not satisfy a radial plan whose fan is absent or
|
|
68
|
+
whose visible directions relate to a different center.
|
|
69
|
+
|
|
70
|
+
Apply the same reasoning to other plans: a spiral needs a turning progression
|
|
71
|
+
around its pole; a triangle needs a corresponding arrangement or directional
|
|
72
|
+
envelope; symmetry needs a perceptible relationship across its axis; thirds and
|
|
73
|
+
golden-section guides inform placement and division of mass or space. Combined
|
|
74
|
+
guides must work as one composition. Not every intersection needs content, and
|
|
75
|
+
matching guides does not by itself establish visual quality. Use approximate visual
|
|
76
|
+
correspondence unless the user requests exact alignment; do not invent universal
|
|
77
|
+
angle tolerances or turn guide marks into decorative artwork.
|
|
78
|
+
|
|
79
|
+
### Verify the draft and carry the structure into generation
|
|
80
|
+
|
|
81
|
+
Inspect the saved draft at the original framing before adding detail. Compare it
|
|
82
|
+
with the planning overlay to check origins, directions, extent and relationships,
|
|
83
|
+
then inspect content without the overlay to check whether the intended structure
|
|
84
|
+
is visible on its own. If needed, hide plans in a temporary local inspection copy;
|
|
85
|
+
preserve their saved geometry and visibility. Judge shape, spacing and contrast,
|
|
86
|
+
not only descriptions or metadata. Correct missing relationships before proceeding.
|
|
87
|
+
|
|
88
|
+
For separately authorized generation, carry the correspondence into the prompt
|
|
89
|
+
alongside subject and style: include the relevant guide centers and directions,
|
|
90
|
+
their visible carriers, and the spaces or intersections that should remain open.
|
|
91
|
+
The generation-reference PNG omits planning lines, so attaching it alone cannot
|
|
92
|
+
communicate all planning intent. Keep these relationships explicit in follow-up
|
|
93
|
+
edits, including when changing subject size, pose or focal position.
|
|
94
|
+
|
|
95
|
+
Inspect the generated image against the same relationships at the same framing,
|
|
96
|
+
and also without guides at thumbnail scale. Focal placement and directional
|
|
97
|
+
structure must both work; attractive detail, a correct node count or a successful
|
|
98
|
+
geometry audit cannot substitute for this review. Revise the missing relationship
|
|
99
|
+
within the authorized task. If it cannot be achieved or visually checked, report
|
|
100
|
+
the specific limitation instead of claiming the planned composition is fulfilled.
|
|
101
|
+
|
|
18
102
|
## Apply a session style to the editable canvas
|
|
19
103
|
|
|
20
104
|
Use the style workflow in `SKILL.md` and save a complete draft through `style.commands.save`. This supports proportion changes and new accents. The `composition apply` workflow below remains a separate Agent-directed derivative workflow; explicit ratio and geometry-symmetry rules may resize existing areas, while node identity and content remain intact.
|
|
@@ -49,7 +133,7 @@ Refinement clarifies the user's composition through deliberate, optional relatio
|
|
|
49
133
|
|
|
50
134
|
6. Require `result.audit.passed` and read every final relation check. Then inspect the final image at the same framing as the source. Does the chosen rule actually strengthen the intended attention, balance, space or flow? Has it harmed a more important relationship or made an incidental mark too prominent? Has changed clipping undermined the subject? Technical satisfaction alone does not answer these questions. Revise the independent result when needed and report the observed outcome and tradeoffs; never claim that the numeric audit proves beauty. A `null` before-value means that relationship was undefined on the source (such as a directional axis before a round mass is elongated).
|
|
51
135
|
|
|
52
|
-
7. Open or provide `ui.editUrl`. The independent result appears in **Refined / 精修**, with objective, evidence, preservation intentions, tradeoffs and relation measurements.
|
|
136
|
+
7. Open or provide `ui.editUrl`. The independent result appears in **Refined / 精修**, with objective, evidence, preservation intentions, tradeoffs and relation measurements. Refinement-audit guides are not rendered and have no display toggle; saved composition `plans` have their own visible overlay as described below. The canvas shows the authored composition elements; relation measurements remain in the result explanation. Guide coordinates in audit data are not artwork or generation-reference content. Original captures are not modified or appended by refinement. New user edits make an older result stale. If the source revision changes while working, reconnect and reconcile the new intent before presenting the result as current.
|
|
53
137
|
|
|
54
138
|
### Available relationships
|
|
55
139
|
|
|
@@ -72,6 +156,113 @@ Version 1 plans and stored results remain readable and executable for compatibil
|
|
|
72
156
|
|
|
73
157
|
When downstream image generation is authorized, export the saved run through `composition reference --session <session-id> --run <run-id> --output <reference.png>`. Attach the returned image path as a soft spatial map, not line art, and carry the mode-specific interpretation and required typography into the generation instruction. The CLI preview SVG includes guides and outside content and must not replace that PNG.
|
|
74
158
|
|
|
159
|
+
## Shared composition planning
|
|
160
|
+
|
|
161
|
+
People and Agents edit the same optional `plans` array in a composition draft.
|
|
162
|
+
Read the latest capture, preserve its content and other states, edit `plans`, and
|
|
163
|
+
save the complete draft through `capture.commands.save` with the latest revision.
|
|
164
|
+
Do not use `composition apply` just to change planning: that command creates a
|
|
165
|
+
separate refinement result. Editing a plan must leave all content nodes untouched.
|
|
166
|
+
Only change content when the task separately asks for a layout adjustment.
|
|
167
|
+
|
|
168
|
+
Each plan has a unique `id` within its state (for example `plan-1`), `type`,
|
|
169
|
+
and `visible`. All plans contribute to composition intent, including hidden plans.
|
|
170
|
+
`visible` only controls editor/inspection display. Planning has no individual notes
|
|
171
|
+
or adoption switch; use the draft's overall requirements for user instructions.
|
|
172
|
+
Legacy `enabled` and `note` fields are removed when loading earlier drafts.
|
|
173
|
+
Preserve existing plans unless the task calls for changes.
|
|
174
|
+
|
|
175
|
+
In the editor, Shift-click (or Ctrl/Cmd-click) selects multiple plans. Drag a
|
|
176
|
+
selected guide or use arrow keys to move the selected movable plans together;
|
|
177
|
+
thirds, golden-section and symmetry guides keep their frame-relative positions.
|
|
178
|
+
Thirds and golden-section lines do not intercept canvas clicks; select and edit
|
|
179
|
+
these plans in the sidebar.
|
|
180
|
+
Unselected guides are light gray. The planning header lock disables manual add,
|
|
181
|
+
geometry, per-plan visibility and delete controls, without restricting Agent saves.
|
|
182
|
+
The header also has a master display icon that hides all planning lines and controls
|
|
183
|
+
without changing per-plan `visible` or generation intent; it works while locked.
|
|
184
|
+
Both master display and lock are local editor state, outside the persisted draft.
|
|
185
|
+
|
|
186
|
+
All planning positions are **fractions of the current frame**, measured from its
|
|
187
|
+
top-left. They are not the world-unit positions used by content nodes. Clockwise
|
|
188
|
+
rotation is measured in physical geometry from the rightward horizontal, so it
|
|
189
|
+
stays correct for portrait frames. Supported plan fields are:
|
|
190
|
+
|
|
191
|
+
| `type` | Additional fields |
|
|
192
|
+
| --- | --- |
|
|
193
|
+
| `thirds` | `axes`: `both`, `horizontal` or `vertical`. Equal thirds fixed to the frame. New drafts start with a visible `both` plan; existing drafts are not backfilled. |
|
|
194
|
+
| `golden-section` | `axes: "both" / "horizontal" / "vertical"`; divisions stay attached to the frame. |
|
|
195
|
+
| `symmetry` | `x`, `y` are fixed to `(0.5, 0.5)` on validation. `rotation` snaps to the nearest of eight 45° directions plus the four directions from the frame center to its corners. Corner directions follow the frame aspect ratio, giving twelve positions for non-square frames and eight merged positions for square frames. Pointer and arrow-key controls use the same positions. Only the outer control moves; the center and radius stay fixed. Default 90° is vertical. |
|
|
196
|
+
| `golden-spiral` | `x`, `y` locate the convergence pole; `rotation` aims the outer radius; positive `scale` is that radius divided by the shorter physical frame side; `mirrored` reverses winding. Clicking the center dot toggles winding; dragging it moves the pole, and dragging the outer dot rotates/resizes. Radius grows by φ per outward quarter-turn. |
|
|
197
|
+
| `triangle` | `x`, `y` locate the center; `rotation` is clockwise from the upright triangle; positive `width` and `height` are the unrotated base width / frame width and perpendicular height / frame height. Both legs always have equal physical length. Dragging the apex rotates and adjusts height; dragging a base corner resizes both sides symmetrically. |
|
|
198
|
+
| `radial` | `x`, `y` locate the convergence point. `mode: "uniform"` uses `rotation`, integer `rayCount` (2–36), and `spread` (1–360°); angles are evenly spaced, and a full circle has no repeated terminal ray. `mode: "free"` instead uses `angles`, an array of 2–36 independent clockwise directions in degrees from the rightward horizontal; omit `rotation`, `rayCount` and `spread`, since the count is `angles.length`. Each free ray has its own direction control; the center control moves the entire plan. New radial plans default to uniform with `(0.5, 0.5)`, 0°, 8 rays and 360°. Earlier radial plans without `mode` load as uniform. |
|
|
199
|
+
|
|
200
|
+
Switching radial planning to Free preserves all current directions. Switching back
|
|
201
|
+
to Uniform keeps the convergence point, ray count and first ray direction, then
|
|
202
|
+
uses a 360° spread. Increasing the count in Free adds rays in the largest angular
|
|
203
|
+
gaps without changing existing directions; decreasing it removes trailing entries.
|
|
204
|
+
Drag or nudge a free ray's control to change only that ray's angle. Free directions
|
|
205
|
+
are saved in `plans` and included individually in the generated composition prompt.
|
|
206
|
+
|
|
207
|
+
Example: `{ "id": "plan-1", "type": "golden-spiral",
|
|
208
|
+
"visible": true, "x": 0.618,
|
|
209
|
+
"y": 0.382, "rotation": 135, "scale": 0.65, "mirrored": false }`.
|
|
210
|
+
|
|
211
|
+
`composition inspect` exposes active `plans`; its SVG preview renders visible
|
|
212
|
+
plans using the same geometry as the browser. Planning guides never enter the
|
|
213
|
+
generation-reference PNG. Carry all planning intent into any
|
|
214
|
+
separately authorized generation work using the
|
|
215
|
+
[content correspondence and visual checks](#design-content-from-composition-planning)
|
|
216
|
+
above; do not ask the model to draw the guides.
|
|
217
|
+
Each state owns its complete planning array in `layout.plans`. The top-level
|
|
218
|
+
array is the active state's editable copy and synchronizes on save, like geometry.
|
|
219
|
+
Switching states restores that state's plans; adding/deleting plans affects only
|
|
220
|
+
the current state. Existing drafts without `plans` remain valid.
|
|
221
|
+
Earlier triangle `points` are converted on load by retaining the base and
|
|
222
|
+
projecting the apex onto its perpendicular bisector. Earlier `thirds` plans are
|
|
223
|
+
retained as ordinary planning; there is no separate nine-cell grid overlay.
|
|
224
|
+
|
|
225
|
+
### Read guide intersections
|
|
226
|
+
|
|
227
|
+
Both local and saved-revision `composition inspect` results include
|
|
228
|
+
`planningIntersections`. They are derived from the active state's planning geometry,
|
|
229
|
+
including hidden plans, and contain isolated crossings inside or on the frame.
|
|
230
|
+
The editor's visibility and lock controls do not affect this data. Empty planning
|
|
231
|
+
or no crossings produces an empty array. Crossings within a plan are included,
|
|
232
|
+
such as the four thirds-grid points, triangle vertices and radial convergence.
|
|
233
|
+
Coincident points merge their sources. Continuous overlaps have no unique point
|
|
234
|
+
and are omitted; a third line crossing overlapping lines can still yield a point.
|
|
235
|
+
|
|
236
|
+
Each intersection provides:
|
|
237
|
+
|
|
238
|
+
- `id`: an inspection-local identifier, ordered by physical Y then X. Re-inspect
|
|
239
|
+
after geometry changes; these ids are not persistent anchors.
|
|
240
|
+
- `framePoint`: fractions of the current frame from its top-left, in `[0, 1]`.
|
|
241
|
+
Use this coordinate system for planning positions.
|
|
242
|
+
- `canvasPoint`: signed canvas coordinates in the same units as content-node
|
|
243
|
+
`x` and `y`, ready for requested node placement. These are not preview pixels
|
|
244
|
+
or output pixels; one canvas unit is 1200 physical units horizontally and 800
|
|
245
|
+
vertically. Frame position and size are already accounted for.
|
|
246
|
+
- `sources`: all participating `{ planId, type, lineId, visible }` records.
|
|
247
|
+
Numbering starts at 1. Grid line ids are `vertical-1/2` from left to right and
|
|
248
|
+
`horizontal-1/2` from top to bottom. Symmetry uses `axis`; a spiral uses `spiral`.
|
|
249
|
+
Triangle `edge-1/2/3` follows apex → left base → right base → apex before rotation.
|
|
250
|
+
Radial `ray-1`, `ray-2`, etc. follow uniform generation order or the free `angles`
|
|
251
|
+
array order.
|
|
252
|
+
- `precision.kind`: `exact` for analytical straight-segment intersections, subject
|
|
253
|
+
to floating-point tolerance; `approximate` when a golden spiral participates.
|
|
254
|
+
Spirals use the same 240-segment polyline as the canvas and CLI preview.
|
|
255
|
+
`precision.maxCurveDeviationPx` bounds the curve-to-polyline deviation in output
|
|
256
|
+
pixels (zero for straight lines). It is **not** a bound on intersection-position
|
|
257
|
+
error, which can be larger near a tangent. Coincidence and frame-boundary checks
|
|
258
|
+
use a tolerance of `1e-7` physical canvas units.
|
|
259
|
+
|
|
260
|
+
For a request such as placing a focus at a golden-section/radial crossing, find
|
|
261
|
+
the entry with the requested `planId` and `lineId` sources, copy its `canvasPoint`
|
|
262
|
+
to that focus's `x` and `y`, and save the complete capture against the inspected
|
|
263
|
+
revision. Preserve unrelated content and plans. Do not write these derived facts
|
|
264
|
+
into the draft. This is a one-time placement; later guide edits do not move nodes.
|
|
265
|
+
|
|
75
266
|
## Canvas stacking order
|
|
76
267
|
|
|
77
268
|
Preserve the optional draft-level `layerOrder` array when editing captures. It lists content node ids from back to front, independently of array numbering, geometry, visual weight or scene depth. Without it, the existing type-based draw order applies. Keep ids unique; remove deleted ids and append new ids after the saved order. Browser layer actions preserve selected nodes’ relative order. UI groups move together in this order, which is shared across motion states. Frame boundaries, guides and selection controls are outside the content order. Preview and SVG/PNG output follow this order.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Model in a consumer project from style and spatial guidance
|
|
2
|
+
|
|
3
|
+
Human2AI supplies design intent. The consumer project owns final geometry,
|
|
4
|
+
materials, scene code and model assets. Use its existing renderer, modeling tools
|
|
5
|
+
and asset conventions; reading a style does not install or run a modeling engine.
|
|
6
|
+
|
|
7
|
+
## Read the style and spatial guidance
|
|
8
|
+
|
|
9
|
+
Resolve the integration and service using the parent Skill. The library is shared
|
|
10
|
+
by projects connected to the same local service, not automatically across machines.
|
|
11
|
+
|
|
12
|
+
For a supplied spatial session, run `session connect --session <id>`. Read
|
|
13
|
+
`style.current`, `capture.latest`, and the returned commands. Retain its existing
|
|
14
|
+
style unless the user requests another. When a style is requested but none is
|
|
15
|
+
bound, inspect suitable entries with `style list --category spatial` and
|
|
16
|
+
`style get --style <id>`, choose according to the task, and bind through the
|
|
17
|
+
connection's command using its session revision. Categories are discovery filters,
|
|
18
|
+
not restrictions on binding. Reconnect after binding or a revision conflict.
|
|
19
|
+
|
|
20
|
+
Use the full description and inspect the reference images; the name and
|
|
21
|
+
`promptSummary` alone are insufficient modeling instructions. A standalone style
|
|
22
|
+
can also guide modeling without creating a Human2AI session.
|
|
23
|
+
|
|
24
|
+
For a saved spatial guide, use one captured revision for inspection and all views:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
<runner> spatial inspect --session <id> --revision <n> --output .human2ai-data/output/spatial-guide.json
|
|
28
|
+
<runner> spatial render --session <id> --revision <n> --camera <camera-id> --output .human2ai-data/output/spatial-guide.png
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Read [spatial.md](spatial.md) for coordinates, character transforms, camera
|
|
32
|
+
projection and optional depth, structure or observation-box references. Inspect
|
|
33
|
+
the rendered image as well as the structured data. Select cameras from the actual
|
|
34
|
+
draft and the user's request. An unsaved space has no saved revision to inspect;
|
|
35
|
+
do not invent guidance or silently create a guide when the task is standalone
|
|
36
|
+
modeling. Export additional views only when they clarify occlusion or geometry.
|
|
37
|
+
|
|
38
|
+
## Save a generated style example
|
|
39
|
+
|
|
40
|
+
When asked for a 3D style preview, generate a fixed model that demonstrates the
|
|
41
|
+
style's forms, joints, palette and materials. Export a self-contained GLB 2.0 to
|
|
42
|
+
ignored `.human2ai-data/output/`, with embedded geometry and textures, no external
|
|
43
|
+
decoder dependencies, and a file size of at most 10 MB. Human2AI stores the model
|
|
44
|
+
and provides a read-only orbit/zoom preview; it does not execute generator code
|
|
45
|
+
or generate geometry from the description when a user opens the style.
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
<runner> style set-model --style <id> --input .human2ai-data/output/style-example.glb --expected-revision <n>
|
|
49
|
+
<runner> style remove-model --style <id> --expected-revision <n>
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Each style has at most one model; setting another replaces it. Read the current
|
|
53
|
+
revision with `style list` before writing. `style get` returns its optional
|
|
54
|
+
`previewModel.url` alongside the images and specification. Review the saved model
|
|
55
|
+
in the style detail view. Revisit the example when the specification changes;
|
|
56
|
+
it is reference evidence, not a substitute for the user's spatial layout.
|
|
57
|
+
|
|
58
|
+
## Interpret the inputs
|
|
59
|
+
|
|
60
|
+
- The user's requested content, functions, dimensions, pose constraints and
|
|
61
|
+
delivery requirements govern the result.
|
|
62
|
+
- The spatial draft guides relative positions, scale relationships, pose,
|
|
63
|
+
occlusion and camera framing. Preserve explicitly required placements and
|
|
64
|
+
viewpoints. Treat other blockout details as approximate guidance that can be
|
|
65
|
+
refined for the actual objects.
|
|
66
|
+
- Read each character, object, camera and observation box's optional `note`
|
|
67
|
+
alongside its stable ID, name and geometry. These user instructions explain
|
|
68
|
+
what placeholders represent and which relationships or views must be retained;
|
|
69
|
+
they are available in `inspect` rather than drawn into the PNG. Preserve them
|
|
70
|
+
if the task also requires editing the Human2AI guide.
|
|
71
|
+
- The style guides shape language, proportion tendencies, surface detail,
|
|
72
|
+
materials, palette and lighting. Resolve these within the user's spatial
|
|
73
|
+
constraints rather than moving the scene to fit a style reference image.
|
|
74
|
+
- Placeholder boxes, pose-guide colors, joint markings and geometric mannequins
|
|
75
|
+
are authoring aids unless the user explicitly asks for those appearances.
|
|
76
|
+
For example, a house placeholder can become a detailed house while retaining
|
|
77
|
+
its intended footprint and relationship to neighboring objects.
|
|
78
|
+
|
|
79
|
+
Account for the consumer project's units, coordinate system and camera conventions
|
|
80
|
+
when translating guidance. Do not import Human2AI's database or private runtime
|
|
81
|
+
modules into the consumer application. Human2AI exports scene data and reference
|
|
82
|
+
PNGs; it does not currently expose a GLB export command.
|
|
83
|
+
|
|
84
|
+
## Build and review
|
|
85
|
+
|
|
86
|
+
Implement with the consumer project's available modeling workflow and save the
|
|
87
|
+
deliverables in its normal source/asset locations. Keep temporary references and
|
|
88
|
+
previews in ignored `.human2ai-data/output/`. Ask for a missing tool choice only
|
|
89
|
+
when it materially blocks the requested deliverable.
|
|
90
|
+
|
|
91
|
+
Render the consumer result from the requested viewpoint. Compare layout, relative
|
|
92
|
+
scale, silhouettes, pose and occlusion with the spatial guide, and compare forms,
|
|
93
|
+
materials, palette and lighting with the style. Use extra viewpoints to inspect
|
|
94
|
+
the completed geometry where needed. Preserve user-authored work while iterating.
|
|
95
|
+
State any unsupported requirement rather than reporting an unverified result.
|
|
96
|
+
|
|
97
|
+
Report the produced files and which spatial/style requirements were verified.
|
|
98
|
+
Include the source session/capture and style revisions when available from the
|
|
99
|
+
connection. Do not mark the Human2AI guide as processed or rewrite its draft just
|
|
100
|
+
to record that modeling finished elsewhere. Re-read current guidance before a
|
|
101
|
+
subsequent task instead of assuming an earlier binding is still current.
|
|
102
|
+
|
|
103
|
+
## Author a reusable 3D style
|
|
104
|
+
|
|
105
|
+
Save it with `style create --category spatial` using the parent Skill's commands.
|
|
106
|
+
Keep the full specification in `description`, plus a concise summary and optional
|
|
107
|
+
reference images. Use this outline as relevant to the actual style:
|
|
108
|
+
|
|
109
|
+
- Forms: silhouettes, curvature, simplification and edge treatment.
|
|
110
|
+
- Proportions: characteristic exaggeration and consistency across object families.
|
|
111
|
+
- Surfaces: materials, reflectivity, roughness and visible texture treatment.
|
|
112
|
+
- Palette: dominant, supporting and accent colors.
|
|
113
|
+
- Lighting and presentation: shadow softness, contrast and preferred camera treatment.
|
|
114
|
+
- Boundaries: defining traits to retain and treatments that would contradict them.
|
|
115
|
+
|
|
116
|
+
Reference images can show an overview, details and useful alternate angles.
|
|
117
|
+
Keep project-specific dimensions, polygon budgets and output formats with the
|
|
118
|
+
project's task unless they are essential to this reusable style. A style entry
|
|
119
|
+
stores a specification and images; mesh files remain consumer-project assets.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
A `spatial` session owns an editable scene, independent of composition and UI sessions. Characters, simple objects, and multiple named output cameras share that scene. The browser's orbit view is temporary; moving a character never reframes an output camera.
|
|
4
4
|
|
|
5
|
+
Characters, primitive objects, output cameras and observation boxes may carry a `note` with user instructions. Read it with the entity's ID, name and geometry when interpreting the scene; a placeholder's note can explain the real object it represents or required framing. Missing or empty notes mean no instructions. Preserve notes when editing other properties. To update a note, use the corresponding `put-character`, `put-object`, `put-camera` or `put-camera-box` with the current entity and changed `note`; use an empty string to clear it. Notes are saved and undoable with the scene, included in `inspect`, and never drawn into reference PNGs.
|
|
6
|
+
|
|
5
7
|
## Connect, inspect, edit, review
|
|
6
8
|
|
|
7
9
|
Use the runner and API origin discovered by the parent skill. Start with `session connect --session <id>` and `capture list --session <id>`. A new space has revision 0 and a default `camera-1`. For an existing revision:
|
|
@@ -65,13 +67,16 @@ Create a box and fit it in one `spatial apply` batch:
|
|
|
65
67
|
<runner> spatial render --session <id> --revision <n> --box hands-reference --output hands-sheet.png
|
|
66
68
|
<runner> spatial render --session <id> --revision <n> --box hands-reference --view top --pass structure --output hands-top.png
|
|
67
69
|
<runner> spatial render --session <id> --revision <n> --box hands-reference --view sheet --pass depth --output hands-depth.png
|
|
70
|
+
<runner> spatial render --session <id> --revision <n> --box hands-reference --views front,left,top --pass color --output .human2ai-data/output/hands-three-views.png
|
|
68
71
|
```
|
|
69
72
|
|
|
70
73
|
`--camera` and `--box` are mutually exclusive. `--view` requires `--box` and accepts `sheet` (default), `front`, `back`, `left`, `right`, `top`, `bottom`. Export individual PNGs by running the command for each face. The sheet is 3×2: front/back/left, then right/top/bottom. Each tile has a 28 px English direction/axis label above it, with 12 px dividers between tiles so cropped limbs do not appear connected across views. Directions refer to the **box-local axes**, not the character's anatomical left/right: front +Z, back −Z, left −X, right +X, top +Y, bottom −Y. In the top image, local −Z points up; in the bottom image, local +Z points up. All faces use the same metric scale. Color preserves transparency; structure/depth use their usual white/black backgrounds, and skeleton uses its pale opaque background with bones visible through surfaces. All four passes support both sheets and individual faces. Box depth maps 0 to `size` metres from each face using a fixed shared linear range, unlike ordinary cameras' visible-surface normalization.
|
|
71
74
|
|
|
72
|
-
The
|
|
75
|
+
Use `--views front,left,top` to combine only the directions needed for the task into one PNG. It requires `--box` and accepts 1–6 distinct names from `front,back,left,right,top,bottom`, separated by commas; whitespace around names is ignored. The supplied order is retained, left to right and then top to bottom, with at most three columns. A single selected direction still includes its label; use `--view front` for the original unlabelled square image. `--view` and `--views` are mutually exclusive; `sheet`, duplicate names and empty selections are invalid in `--views`. All four render passes support combinations. Export reads one saved revision and does not change the box, scene or browser's active direction buttons. The browser and CLI share the sheet layout rules; browser captions follow its locale while CLI captions retain English box-local direction/axis labels. Choose the useful views yourself, or use the user's explicitly requested directions; no browser interaction is required. Create the output directory before exporting.
|
|
76
|
+
|
|
77
|
+
The HTTP route is `GET /api/v1/sessions/:sessionId/spatial/camera-boxes/:boxId.png?revision=<n>&view=sheet&pass=color`. For a combination, replace `view=sheet` with `views=front,left,top`; the response's `x-spatial-box-views` header lists the rendered directions in order, and caching distinguishes both selection and order. Render is read-only and revision-addressed; box edits are saved and undoable through the existing draft history. `session connect` discovers `spatial.render-box@1` and `spatial.render-box-views@1`; `spatial methods` exposes the closed operation schemas, `cameraBoxViews`, the `cameraBoxViewSelection` parameter contract, and `cameraBoxGuidance` (canonical wording: `spatial.cameraBoxGenerationGuidance` in both locale resources). The CLI result includes `views` for an explicit combination and retains `view` for the original single-view/six-view mode.
|
|
73
78
|
|
|
74
|
-
When generating, export the main camera and auxiliary boxes from the **same revision**. Include the returned `cameraBoxGuidance` in the prompt: the main camera determines composition; the sheet shows the same subjects at one moment from
|
|
79
|
+
When generating, export the main camera and auxiliary boxes from the **same revision**. Include the returned `cameraBoxGuidance` in the prompt: the main camera determines composition; the sheet shows the same subjects at one moment from the selected directions, solely to resolve occlusion, digit ownership and approximate flexion. Request one final image, with no contact-sheet layout, duplicate subjects, direction labels, or joint/body markings. Preserve gesture intent while allowing natural anatomical corrections. Inspect the exported views yourself before generation; start with the main camera plus the useful hand views, adding full-space depth or an informative full-resolution face when useful. More views do not guarantee correct fingers, and cannot repair an impossible underlying pose automatically.
|
|
75
80
|
|
|
76
81
|
## Character model styles
|
|
77
82
|
|
package/web/out/404/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/db96ae2e88545d96.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3b7982b41ed8eccd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/db96ae2e88545d96.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3b7982b41ed8eccd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d16ce1f994e98178.js"/><script src="/_next/static/chunks/c7879cf7-7873c8afd9c9c666.js" async=""></script><script src="/_next/static/chunks/158-eb00456e1bab68b3.js" async=""></script><script src="/_next/static/chunks/main-app-cf37a257d91ce62e.js" async=""></script><script src="/_next/static/chunks/20-0801fc297cda2a7a.js" async=""></script><script src="/_next/static/chunks/678-32d3aa1859450d63.js" async=""></script><script src="/_next/static/chunks/app/layout-1dd9196cde94389c.js" async=""></script><meta name="robots" content="noindex"/><title>以形塑形</title><meta name="description" content="使用基础图形规划画面重心、主体占比与视觉方向。"/><link rel="icon" href="/favicon.ico?8ea2c044dfe599d2" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?e28b017365bd9a4d" type="image/svg+xml" sizes="any"/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d16ce1f994e98178.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[84954,[\"20\",\"static/chunks/20-0801fc297cda2a7a.js\",\"678\",\"static/chunks/678-32d3aa1859450d63.js\",\"177\",\"static/chunks/app/layout-1dd9196cde94389c.js\"],\"AppI18nProvider\"]\n3:I[91133,[],\"\"]\n4:I[4297,[],\"\"]\n5:I[66999,[\"20\",\"static/chunks/20-0801fc297cda2a7a.js\",\"678\",\"static/chunks/678-32d3aa1859450d63.js\",\"177\",\"static/chunks/app/layout-1dd9196cde94389c.js\"],\"YisiUiInspectorHost\"]\n6:I[31872,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[31872,[],\"ViewportBoundary\"]\nc:I[31872,[],\"MetadataBoundary\"]\ne:I[57567,[],\"default\",1]\n:HL[\"/_next/static/css/db96ae2e88545d96.css\",\"style\"]\n:HL[\"/_next/static/css/3b7982b41ed8eccd.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/db96ae2e88545d96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3b7982b41ed8eccd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L5\",null,{}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"n4UcxqMmr_2CBmSxBp52z\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nf:I[12569,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"以形塑形\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"使用基础图形规划画面重心、主体占比与视觉方向。\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?8ea2c044dfe599d2\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?e28b017365bd9a4d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$Lf\",\"4\",{}]]\n"])</script></body></html>
|
package/web/out/404.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/db96ae2e88545d96.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3b7982b41ed8eccd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><html lang="zh-CN"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/db96ae2e88545d96.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/3b7982b41ed8eccd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-d16ce1f994e98178.js"/><script src="/_next/static/chunks/c7879cf7-7873c8afd9c9c666.js" async=""></script><script src="/_next/static/chunks/158-eb00456e1bab68b3.js" async=""></script><script src="/_next/static/chunks/main-app-cf37a257d91ce62e.js" async=""></script><script src="/_next/static/chunks/20-0801fc297cda2a7a.js" async=""></script><script src="/_next/static/chunks/678-32d3aa1859450d63.js" async=""></script><script src="/_next/static/chunks/app/layout-1dd9196cde94389c.js" async=""></script><meta name="robots" content="noindex"/><title>以形塑形</title><meta name="description" content="使用基础图形规划画面重心、主体占比与视觉方向。"/><link rel="icon" href="/favicon.ico?8ea2c044dfe599d2" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/icon.svg?e28b017365bd9a4d" type="image/svg+xml" sizes="any"/><title>404: This page could not be found.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-d16ce1f994e98178.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[84954,[\"20\",\"static/chunks/20-0801fc297cda2a7a.js\",\"678\",\"static/chunks/678-32d3aa1859450d63.js\",\"177\",\"static/chunks/app/layout-1dd9196cde94389c.js\"],\"AppI18nProvider\"]\n3:I[91133,[],\"\"]\n4:I[4297,[],\"\"]\n5:I[66999,[\"20\",\"static/chunks/20-0801fc297cda2a7a.js\",\"678\",\"static/chunks/678-32d3aa1859450d63.js\",\"177\",\"static/chunks/app/layout-1dd9196cde94389c.js\"],\"YisiUiInspectorHost\"]\n6:I[31872,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[31872,[],\"ViewportBoundary\"]\nc:I[31872,[],\"MetadataBoundary\"]\ne:I[57567,[],\"default\",1]\n:HL[\"/_next/static/css/db96ae2e88545d96.css\",\"style\"]\n:HL[\"/_next/static/css/3b7982b41ed8eccd.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/db96ae2e88545d96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/3b7982b41ed8eccd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"zh-CN\",\"children\":[\"$\",\"body\",null,{\"children\":[[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}],[\"$\",\"$L5\",null,{}]]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"n4UcxqMmr_2CBmSxBp52z\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\nf:I[12569,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"以形塑形\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"使用基础图形规划画面重心、主体占比与视觉方向。\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?8ea2c044dfe599d2\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/icon.svg?e28b017365bd9a4d\",\"type\":\"image/svg+xml\",\"sizes\":\"any\"}],[\"$\",\"$Lf\",\"4\",{}]]\n"])</script></body></html>
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
2
|
2:I[1076,[],"ClientPageRoot"]
|
|
3
|
-
3:I[
|
|
3
|
+
3:I[49,["460","static/chunks/83607670-fd2f339702a222e4.js","746","static/chunks/c3f2cda1-ef85a0897724e46b.js","20","static/chunks/20-0801fc297cda2a7a.js","635","static/chunks/635-611c009924b842be.js","653","static/chunks/653-6dfb97fec9a2d91b.js","678","static/chunks/678-32d3aa1859450d63.js","130","static/chunks/130-7e9e715a084569bb.js","974","static/chunks/app/page-741ecaf9ee8c3c07.js"],"default"]
|
|
4
4
|
6:I[31872,[],"OutletBoundary"]
|
|
5
5
|
7:"$Sreact.suspense"
|
|
6
6
|
b:I[31872,[],"ViewportBoundary"]
|
|
7
7
|
c:I[31872,[],"MetadataBoundary"]
|
|
8
8
|
d:I[12569,[],"IconMark"]
|
|
9
|
-
f:I[84954,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-
|
|
9
|
+
f:I[84954,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-32d3aa1859450d63.js","177","static/chunks/app/layout-1dd9196cde94389c.js"],"AppI18nProvider"]
|
|
10
10
|
10:I[91133,[],""]
|
|
11
11
|
11:I[4297,[],""]
|
|
12
|
-
12:I[66999,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-
|
|
13
|
-
:HL["/_next/static/css/
|
|
12
|
+
12:I[66999,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-32d3aa1859450d63.js","177","static/chunks/app/layout-1dd9196cde94389c.js"],"YisiUiInspectorHost"]
|
|
13
|
+
:HL["/_next/static/css/06743b5635914999.css","style"]
|
|
14
|
+
:HL["/_next/static/css/39e8cace36461a15.css","style"]
|
|
15
|
+
:HL["/_next/static/css/1f8501a43042a5a2.css","style"]
|
|
14
16
|
:HL["/_next/static/css/db96ae2e88545d96.css","style"]
|
|
15
17
|
:HL["/_next/static/css/3b7982b41ed8eccd.css","style"]
|
|
16
18
|
a:X
|
|
17
|
-
0:{"buildId":"
|
|
19
|
+
0:{"buildId":"n4UcxqMmr_2CBmSxBp52z","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/06743b5635914999.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/39e8cace36461a15.css","precedence":"next"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/1f8501a43042a5a2.css","precedence":"next"}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"以形塑形"}],["$","meta","1",{"name":"description","content":"使用基础图形规划画面重心、主体占比与视觉方向。"}],["$","link","2",{"rel":"icon","href":"/favicon.ico?8ea2c044dfe599d2","type":"image/x-icon","sizes":"16x16"}],["$","link","3",{"rel":"icon","href":"/icon.svg?e28b017365bd9a4d","type":"image/svg+xml","sizes":"any"}],["$","$Ld","4",{}]]}]}]}],null]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/db96ae2e88545d96.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/3b7982b41ed8eccd.css","precedence":"next"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"children":[["$","$Lf",null,{"children":["$","$L10",null,{"parallelRouterKey":"children","template":["$","$L11",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}],["$","$L12",null,{}]]}]}]]}],"isPartial":"$@13","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@14","rootVaryParams":null,"needsRuntimeRequest":"$@15"}
|
|
18
20
|
4:{}
|
|
19
21
|
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
20
22
|
8:null
|
package/web/out/__next._full.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
1:"$Sreact.fragment"
|
|
2
|
-
2:I[84954,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-
|
|
2
|
+
2:I[84954,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-32d3aa1859450d63.js","177","static/chunks/app/layout-1dd9196cde94389c.js"],"AppI18nProvider"]
|
|
3
3
|
3:I[91133,[],""]
|
|
4
4
|
4:I[4297,[],""]
|
|
5
|
-
5:I[66999,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-
|
|
5
|
+
5:I[66999,["20","static/chunks/20-0801fc297cda2a7a.js","678","static/chunks/678-32d3aa1859450d63.js","177","static/chunks/app/layout-1dd9196cde94389c.js"],"YisiUiInspectorHost"]
|
|
6
6
|
6:I[1076,[],"ClientPageRoot"]
|
|
7
|
-
7:I[
|
|
7
|
+
7:I[49,["460","static/chunks/83607670-fd2f339702a222e4.js","746","static/chunks/c3f2cda1-ef85a0897724e46b.js","20","static/chunks/20-0801fc297cda2a7a.js","635","static/chunks/635-611c009924b842be.js","653","static/chunks/653-6dfb97fec9a2d91b.js","678","static/chunks/678-32d3aa1859450d63.js","130","static/chunks/130-7e9e715a084569bb.js","974","static/chunks/app/page-741ecaf9ee8c3c07.js"],"default"]
|
|
8
8
|
a:I[31872,[],"OutletBoundary"]
|
|
9
9
|
b:"$Sreact.suspense"
|
|
10
10
|
d:I[31872,[],"ViewportBoundary"]
|
|
@@ -12,8 +12,10 @@ f:I[31872,[],"MetadataBoundary"]
|
|
|
12
12
|
11:I[57567,[],"default",1]
|
|
13
13
|
:HL["/_next/static/css/db96ae2e88545d96.css","style"]
|
|
14
14
|
:HL["/_next/static/css/3b7982b41ed8eccd.css","style"]
|
|
15
|
-
:HL["/_next/static/css/
|
|
16
|
-
|
|
15
|
+
:HL["/_next/static/css/06743b5635914999.css","style"]
|
|
16
|
+
:HL["/_next/static/css/39e8cace36461a15.css","style"]
|
|
17
|
+
:HL["/_next/static/css/1f8501a43042a5a2.css","style"]
|
|
18
|
+
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/db96ae2e88545d96.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/3b7982b41ed8eccd.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"zh-CN","children":["$","body",null,{"children":[["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","$L5",null,{}]]}]}]]}],{"children":[["$","$1","c",{"children":[["$","$L6",null,{"Component":"$7","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@8","$@9"]}}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/06743b5635914999.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/39e8cace36461a15.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/1f8501a43042a5a2.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L10"}]}]}],null]}],false]],"m":"$undefined","G":["$11",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"n4UcxqMmr_2CBmSxBp52z"}
|
|
17
19
|
8:{}
|
|
18
20
|
9:"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params"
|
|
19
21
|
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|