scenri 0.3.3 → 0.3.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/CHANGELOG.md +10 -0
- package/dist/serve.js +32 -4
- package/package.json +1 -1
- package/studio-dist/assets/index-DBz4hsVB.js +102 -0
- package/studio-dist/index.html +1 -1
- package/studio-dist/assets/index-BGiMfD5T.js +0 -102
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.4](https://github.com/tonygorb/Scenri/compare/v0.3.3...v0.3.4) (2026-08-20)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* presenter references are identity, not wardrobe ([dc372fd](https://github.com/tonygorb/Scenri/commit/dc372fd40d7e15d7d8dc72b5ec8f41993e078ae9))
|
|
9
|
+
* presenter references are identity, not wardrobe ([c8bca43](https://github.com/tonygorb/Scenri/commit/c8bca431730a2d4c41d2783fb6eba2c564af5141))
|
|
10
|
+
* stop custom presenter and scene pages freezing the whole app ([fcf88dd](https://github.com/tonygorb/Scenri/commit/fcf88ddbcd57d01354c833cf9f8456fa1b0b0434))
|
|
11
|
+
* stop custom presenter and scene pages freezing the whole app ([8595078](https://github.com/tonygorb/Scenri/commit/859507893892cb23a7ff2f132f273db4dbd0a0f9))
|
|
12
|
+
|
|
3
13
|
## [0.3.3](https://github.com/tonygorb/Scenri/compare/v0.3.2...v0.3.3) (2026-08-20)
|
|
4
14
|
|
|
5
15
|
|
package/dist/serve.js
CHANGED
|
@@ -1271,7 +1271,7 @@ function createCatalogStore(db) {
|
|
|
1271
1271
|
// ../core/src/engine.ts
|
|
1272
1272
|
var REFERENCE_ROLE_DIRECTIVE = {
|
|
1273
1273
|
product: "the exact product \u2014 preserve its label, shape, colors and design faithfully; do not redesign it",
|
|
1274
|
-
character: "the exact person \u2014
|
|
1274
|
+
character: "the exact person \u2014 match their face, facial structure, skin, hair and build exactly; their clothing, pose and background are capture context, not styling to reproduce",
|
|
1275
1275
|
brand: "the brand's own mark \u2014 if the direction calls for the mark to appear, reproduce it exactly as drawn, same colours, letterforms and proportions; otherwise take only its colour and treatment, and never its subject, geometry or composition",
|
|
1276
1276
|
scene: "a reference for the environment and light only \u2014 take no subject, product or person from it",
|
|
1277
1277
|
composition: "a reference for framing, camera angle and pose only \u2014 take no subject, color, material or branding from it",
|
|
@@ -1280,7 +1280,7 @@ var REFERENCE_ROLE_DIRECTIVE = {
|
|
|
1280
1280
|
};
|
|
1281
1281
|
var EDIT_REFERENCE_ROLE_DIRECTIVE = {
|
|
1282
1282
|
product: "the exact product: keep or restore its label, shape and design faithfully",
|
|
1283
|
-
character: "the exact person: keep their face, hair and build faithfully",
|
|
1283
|
+
character: "the exact person: keep their face, facial structure, skin, hair and build faithfully; take no clothing, pose or background from this reference, and keep the source image's existing outfit unless the instruction changes it",
|
|
1284
1284
|
brand: "the brand's own mark: reproduce it exactly as drawn wherever it appears, never redrawn or re-lettered",
|
|
1285
1285
|
scene: "a reference for environment and light only",
|
|
1286
1286
|
composition: "a reference for framing and pose only",
|
|
@@ -1944,6 +1944,9 @@ function createRunner(opts = {}) {
|
|
|
1944
1944
|
});
|
|
1945
1945
|
}
|
|
1946
1946
|
async function probe() {
|
|
1947
|
+
if (process.env.SCENRI_NO_CODEX === "1") {
|
|
1948
|
+
return { ok: false, reason: NOT_INSTALLED_REASON, code: "not-installed" };
|
|
1949
|
+
}
|
|
1947
1950
|
if (!await exitedZero(["--version"])) {
|
|
1948
1951
|
return { ok: false, reason: NOT_INSTALLED_REASON, code: "not-installed" };
|
|
1949
1952
|
}
|
|
@@ -2487,7 +2490,14 @@ async function resolvePresenterImages(core, templatesRoot, presenter) {
|
|
|
2487
2490
|
const hash = core.images.save(png);
|
|
2488
2491
|
shots.push({ file: `asset:${hash}`, angle, locked: true });
|
|
2489
2492
|
}
|
|
2490
|
-
|
|
2493
|
+
if (!shots.length) return null;
|
|
2494
|
+
return {
|
|
2495
|
+
id: presenter.id,
|
|
2496
|
+
name: presenter.name,
|
|
2497
|
+
...presenter.identityNotes ? { identityNotes: presenter.identityNotes } : {},
|
|
2498
|
+
...presenter.negativeConstraints?.length ? { negativeConstraints: presenter.negativeConstraints } : {},
|
|
2499
|
+
shots
|
|
2500
|
+
};
|
|
2491
2501
|
}
|
|
2492
2502
|
async function brandJsonWithResolvedPresenters(core, templatesRoot, presenters, brandJson, tokens) {
|
|
2493
2503
|
const existing = brandJson?.characters ?? [];
|
|
@@ -2793,7 +2803,7 @@ function compileBrief(brief, ctx) {
|
|
|
2793
2803
|
attachments.push({ role: "character", id: c.id, label: c.name, hash: chash, essential: i === 0 });
|
|
2794
2804
|
});
|
|
2795
2805
|
personDirectives.push(
|
|
2796
|
-
"The attached person reference is the same person every time:
|
|
2806
|
+
"The attached person reference is the same person every time: match their face, facial structure, skin, hair and build exactly. Their outfit, pose, background and lighting are neutral studio capture conditions, not styling direction: dress and style them for this shot, to a commercial standard, following any wardrobe the direction itself specifies."
|
|
2797
2807
|
);
|
|
2798
2808
|
if (c.identityNotes) personDirectives.push(String(c.identityNotes));
|
|
2799
2809
|
if (c.negativeConstraints?.length)
|
|
@@ -2891,10 +2901,14 @@ function compileBrief(brief, ctx) {
|
|
|
2891
2901
|
const sceneCamera = inlineTemplates[0]?.camera?.trim() || ctx.template?.camera?.trim() || "";
|
|
2892
2902
|
const cameraDirectives = sceneCamera && !shotSpecifiesCamera(sentence) ? [`Camera for this shot: ${sceneCamera}`] : [];
|
|
2893
2903
|
const guard = scene ? sceneGuardDirectives({ hasProduct: !!productId, hasPerson }) : [];
|
|
2904
|
+
const pairDirectives = productId && hasPerson ? [
|
|
2905
|
+
"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."
|
|
2906
|
+
] : [];
|
|
2894
2907
|
const brandLines = brandRuleDirectives(ctx.brand);
|
|
2895
2908
|
const allDirectives = [
|
|
2896
2909
|
...productDirectives,
|
|
2897
2910
|
...personDirectives,
|
|
2911
|
+
...pairDirectives,
|
|
2898
2912
|
...otherDirectives,
|
|
2899
2913
|
...cameraDirectives,
|
|
2900
2914
|
...brandLines,
|
|
@@ -6524,6 +6538,20 @@ function registerImageRoutes(app, deps) {
|
|
|
6524
6538
|
|
|
6525
6539
|
// src/release/notes.data.ts
|
|
6526
6540
|
var RELEASES = [
|
|
6541
|
+
{
|
|
6542
|
+
version: "0.3.4",
|
|
6543
|
+
date: "2026-08-21",
|
|
6544
|
+
sections: [
|
|
6545
|
+
{
|
|
6546
|
+
heading: "Presenters",
|
|
6547
|
+
body: "A presenter's reference photos now define who they are, not what they wear. The neutral studio outfit from their reference set no longer follows them into finished shots; wardrobe comes from the shot, the product and the scene instead, and refining an image keeps the outfit it already has."
|
|
6548
|
+
},
|
|
6549
|
+
{
|
|
6550
|
+
heading: "Fixes",
|
|
6551
|
+
body: "Opening a presenter or scene you built yourself no longer freezes the app."
|
|
6552
|
+
}
|
|
6553
|
+
]
|
|
6554
|
+
},
|
|
6527
6555
|
{
|
|
6528
6556
|
version: "0.3.3",
|
|
6529
6557
|
date: "2026-08-20",
|