scenri 0.6.3 → 0.6.5
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/CHANGELOG.md +16 -0
- package/dist/serve.js +52 -6
- package/package.json +1 -1
- package/studio-dist/assets/{index-DCNiIIP7.js → index-D__G1gHp.js} +25 -25
- package/studio-dist/index.html +1 -1
- package/templates/chrome-bubble-warp.json +1 -1
- package/templates/cold-table-clinic.json +1 -1
- package/templates/confetti-burst-freeze.json +1 -1
- package/templates/editorial-fisheye-flash-studio.json +1 -1
- package/templates/heliconia-bloom-field.json +2 -2
- package/templates/indigo-fold.json +1 -1
- package/templates/interiors-bathroom-vanity.json +2 -2
- package/templates/interiors-marble-kitchen-counter.json +1 -1
- package/templates/interiors-wood-table-flatlay.json +2 -2
- package/templates/liquid-marble-pour.json +1 -1
- package/templates/plain-light-portrait.json +2 -2
- package/templates/precision-bench-anodised.json +1 -1
- package/templates/screen-print-duotone.json +1 -1
- package/templates/showcase/holloway-rings-loupe-surface-plate.json +1 -1
- package/templates/showcase/tanner-fielding-cocoa-crown.json +1 -1
- package/templates/showcase/voss-rowe-dune-slip-face.json +1 -1
- package/templates/social-amber-flare-motion.json +1 -1
- package/templates/social-fashion-campaign-billboard.json +1 -1
- package/templates/social-vertical-story-motion.json +2 -2
- package/templates/stitched-construction-detail.json +2 -2
- package/templates/studio-aloe-flesh-macro.json +1 -1
- package/templates/studio-amber-resin-suspension.json +1 -1
- package/templates/studio-basalt-crust-glow.json +1 -1
- package/templates/studio-blue-ice-melt-channel.json +1 -1
- package/templates/studio-boulder-gap.json +1 -1
- package/templates/studio-dune-slip-face.json +1 -1
- package/templates/studio-molten-sugar-pull.json +1 -1
- package/templates/studio-rainforest-canopy.json +1 -1
- package/templates/studio-reef-shelf-caustics.json +1 -1
- package/templates/studio-sea-stack-horizon.json +1 -1
- package/templates/studio-volcanic-ash-field.json +2 -2
- package/templates/succulent-dew-bed.json +1 -1
- package/templates/suspended-color-field.json +1 -1
- package/templates/terracotta-ledge-glow.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.5](https://github.com/tonygorb/Scenri/compare/v0.6.4...v0.6.5) (2026-08-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* a scene stages a subject slot, never its own demo object ([471981a](https://github.com/tonygorb/Scenri/commit/471981a89f7b3bb62cd4e5f7aec795b468e0aa15))
|
|
9
|
+
* a scene stages a subject slot, never its own demo object ([04e2afe](https://github.com/tonygorb/Scenri/commit/04e2afe7da67af13df32d854d2fd861597e6025e))
|
|
10
|
+
|
|
11
|
+
## [0.6.4](https://github.com/tonygorb/Scenri/compare/v0.6.3...v0.6.4) (2026-08-28)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
* a create draft lives no longer than the attempt that made it ([5bace21](https://github.com/tonygorb/Scenri/commit/5bace21d251159371c4ded381e44b1824aed08b3))
|
|
17
|
+
* a create draft lives no longer than the attempt that made it ([8e4bc62](https://github.com/tonygorb/Scenri/commit/8e4bc62ff98e053d851681ec1e64fb8be259a0f6))
|
|
18
|
+
|
|
3
19
|
## [0.6.3](https://github.com/tonygorb/Scenri/compare/v0.6.2...v0.6.3) (2026-08-28)
|
|
4
20
|
|
|
5
21
|
|
package/dist/serve.js
CHANGED
|
@@ -1291,8 +1291,11 @@ var REFERENCE_ROLE_DIRECTIVE = {
|
|
|
1291
1291
|
// subject or person from it", which handed the model a photograph of a face
|
|
1292
1292
|
// treatment and told it to ignore the treatment. A hand-attached reference
|
|
1293
1293
|
// says "match ... treatment" and works; this now says the same thing, with the
|
|
1294
|
-
// identity carve-out a scene needs and a lone reference does not.
|
|
1295
|
-
|
|
1294
|
+
// identity carve-out a scene needs and a lone reference does not. The tail
|
|
1295
|
+
// names staged objects as stand-ins rather than just "no product": a bare
|
|
1296
|
+
// prohibition still left the demo object in the frame, because the model had
|
|
1297
|
+
// nowhere to put what the photograph so vividly showed.
|
|
1298
|
+
scene: "a reference for this world and for the treatment applied to the figure in it \u2014 match the environment, the light, and the material, density, scale, finish and spread of that treatment, including which parts of the form it covers and how far it reaches; take no identity from the person in it, and treat any product, garment or prop staged in it as a stand-in whose place the attached subject takes \u2014 never an object to reproduce",
|
|
1296
1299
|
composition: "a reference for framing, camera angle and pose only \u2014 take no subject, color, material or branding from it",
|
|
1297
1300
|
style: "a reference for overall treatment and mood only \u2014 take no composition, subject or product detail from it",
|
|
1298
1301
|
reference: "a reference to match in composition, lighting and treatment"
|
|
@@ -3129,6 +3132,21 @@ function sceneGuardDirectives(opts) {
|
|
|
3129
3132
|
"The scene direction above describes the set, not the cast. If it says the space is empty or that no people appear, disregard that: the attached person stands in this set, clearly visible. A ban on props or extra objects in the scene direction is about set dressing only \u2014 it never applies to the presenter or to the product in their hands."
|
|
3130
3133
|
);
|
|
3131
3134
|
}
|
|
3135
|
+
if (opts.hasScenePhoto && (opts.hasProduct || opts.hasPerson)) {
|
|
3136
|
+
out.push(
|
|
3137
|
+
"One attached reference is the scene's own photograph. It shows this world \u2014 the set, the light, and any treatment this world applies \u2014 never a cast: any product, garment, prop or person visible in it is a stand-in, demonstrating where the subject sits, how large it stands in the frame, and what has been done to it."
|
|
3138
|
+
);
|
|
3139
|
+
if (opts.hasProduct) {
|
|
3140
|
+
out.push(
|
|
3141
|
+
"The product in the scene photograph is not in this shot. The attached product photo is the only source of product identity: that exact product takes the stand-in's position, at the placement and scale the scene photograph demonstrates, keeping its own shape, label and colours."
|
|
3142
|
+
);
|
|
3143
|
+
}
|
|
3144
|
+
if (opts.hasPerson) {
|
|
3145
|
+
out.push(
|
|
3146
|
+
"Any person in the scene photograph lends their role, never their face: the attached presenter takes their place, wearing whatever treatment this world applies, with their identity drawn from their own photographs alone."
|
|
3147
|
+
);
|
|
3148
|
+
}
|
|
3149
|
+
}
|
|
3132
3150
|
return out;
|
|
3133
3151
|
}
|
|
3134
3152
|
function brandRuleDirectives(brand) {
|
|
@@ -3388,7 +3406,13 @@ function compileBrief(brief, ctx) {
|
|
|
3388
3406
|
}
|
|
3389
3407
|
const sceneCamera = inlineTemplates[0]?.camera?.trim() || ctx.template?.camera?.trim() || "";
|
|
3390
3408
|
const cameraDirectives = sceneCamera && !shotSpecifiesCamera(sentence) ? [`Camera for this shot: ${sceneCamera}`] : [];
|
|
3391
|
-
const
|
|
3409
|
+
const max = ctx.engineCaps.maxReferenceImages;
|
|
3410
|
+
const { kept, dropped } = allocateAttachments(attachments, max);
|
|
3411
|
+
const guard = scene ? sceneGuardDirectives({
|
|
3412
|
+
hasProduct: !!productId,
|
|
3413
|
+
hasPerson,
|
|
3414
|
+
hasScenePhoto: kept.some((a) => a.role === "scene")
|
|
3415
|
+
}) : [];
|
|
3392
3416
|
const pairDirectives = productId && hasPerson ? [
|
|
3393
3417
|
"If the attached product is something a person wears, the presenter wears that exact product, with the rest of the outfit styled around it; otherwise the presenter presents or uses the product naturally.",
|
|
3394
3418
|
// A product's own notes are written for solo packshots, and several
|
|
@@ -3434,8 +3458,6 @@ function compileBrief(brief, ctx) {
|
|
|
3434
3458
|
...preservation
|
|
3435
3459
|
];
|
|
3436
3460
|
if (allDirectives.length) prompt = `${prompt}${prompt.endsWith(".") ? "" : "."} ${dedupe(allDirectives).join(" ")}`;
|
|
3437
|
-
const max = ctx.engineCaps.maxReferenceImages;
|
|
3438
|
-
const { kept, dropped } = allocateAttachments(attachments, max);
|
|
3439
3461
|
if (dropped.some((d) => d.role !== "scene")) {
|
|
3440
3462
|
const names = [...new Set(dropped.filter((d) => d.role !== "scene").map((d) => d.label))];
|
|
3441
3463
|
const reads = max === 0 ? "reads no reference images" : `reads ${max} reference image${max === 1 ? "" : "s"}`;
|
|
@@ -7513,7 +7535,11 @@ function registerAssetBuildRoutes(app, deps) {
|
|
|
7513
7535
|
kind: "scene",
|
|
7514
7536
|
sceneId: id,
|
|
7515
7537
|
name: scene.name,
|
|
7516
|
-
|
|
7538
|
+
// A plain re-read used to drop the Direction on the floor: body.correction
|
|
7539
|
+
// was the only source, so the analyzer's deciding-word preamble never
|
|
7540
|
+
// fired and whatever the Direction excluded came straight back. No new
|
|
7541
|
+
// word means the stored word.
|
|
7542
|
+
instruction: String(body.correction ?? "").trim() || scene.instruction || void 0,
|
|
7517
7543
|
imageHashes: []
|
|
7518
7544
|
});
|
|
7519
7545
|
} catch (err) {
|
|
@@ -7973,6 +7999,26 @@ function registerImageRoutes(app, deps) {
|
|
|
7973
7999
|
|
|
7974
8000
|
// src/release/notes.data.ts
|
|
7975
8001
|
var RELEASES = [
|
|
8002
|
+
{
|
|
8003
|
+
version: "0.6.5",
|
|
8004
|
+
date: "2026-08-29",
|
|
8005
|
+
sections: [
|
|
8006
|
+
{
|
|
8007
|
+
heading: "Scenes",
|
|
8008
|
+
body: "A Scene no longer brings its own demo object into your shots. The product and presenter you select take the place of whatever its reference or preview happened to stage, while the environment, the light and any figure treatment carry over as before. Editing the Direction and pressing Read again now applies the Direction you wrote instead of quietly ignoring it."
|
|
8009
|
+
}
|
|
8010
|
+
]
|
|
8011
|
+
},
|
|
8012
|
+
{
|
|
8013
|
+
version: "0.6.4",
|
|
8014
|
+
date: "2026-08-29",
|
|
8015
|
+
sections: [
|
|
8016
|
+
{
|
|
8017
|
+
heading: "Create",
|
|
8018
|
+
body: "Adding a product, presenter or scene starts from an empty form. Photos and words belonging to something you already made no longer turn up in a new one, in a second tab, or after a restart. Closing the dialog still keeps what you were working on until you leave, and a build that fails still hands it all back so you can pick up where you were."
|
|
8019
|
+
}
|
|
8020
|
+
]
|
|
8021
|
+
},
|
|
7976
8022
|
{
|
|
7977
8023
|
version: "0.6.3",
|
|
7978
8024
|
date: "2026-08-28",
|