From 858e7d9cb6e8e92ce85be2d6d326e10a2e64b6e4 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Sun, 2 Aug 2026 02:01:09 +0300 Subject: [PATCH] feat: warn on the main window when Best-FaceID cannot do anything Best-FaceID reads identity from an identity_pin-tagged guide, and only the AUTO continuity builder ever applies that tag (timeline._identity_pin_guide). Every way of losing it is silent: the run succeeds and simply carries no identity. Three such states, all verified against _run_sampler_inputs (tagged guides in the emitted funpack_scene_guides payload: 2 when healthy, 0 in each bad case): - no identity pin set at all - custom guide stack on -- manual guides REPLACE auto guides (`manual or auto`), and manual GuideEntry has no identity_pin field, so the pin is dropped - auto continuity off -- same outcome by the other route Shown on the main window of both frontends, not inside the settings pane that turns it on: you would only see it there if you already went looking. - shared predicate: PipelineCaps.identityTransferIssue -> {short, detail} - Editor: amber chip beside Generate in the timeline header, click opens Engine settings; full text in the tooltip - Easy Gen: full-width amber strip between the preview and the Generate row fpActionbar had to grow the identity fields -- it hashed only pid/sel/gen, so setting the pin would have left a stale warning sitting next to Generate. Verified live in both UIs across all five transitions (no pin -> pin -> stack on -> stack off -> auto off -> feature off); appears and clears correctly in each. Silent when the Chain Sampler is not in the pipeline, where the knob is inert. Tests: 22 failed / 465 passed, unchanged from baseline. Co-Authored-By: Claude Opus 5 --- easy_gen/frontend/app.js | 7 +++++ easy_gen/frontend/easy.css | 9 ++++++ easy_gen/frontend/index.html | 2 ++ movie_editor/frontend/actionbar.js | 11 ++++++++ movie_editor/frontend/pipeline_caps.js | 38 ++++++++++++++++++++++++++ movie_editor/frontend/styles.css | 3 ++ movie_editor/frontend/view_bus.js | 8 ++++++ 7 files changed, 78 insertions(+) diff --git a/easy_gen/frontend/app.js b/easy_gen/frontend/app.js index 36a7d8ea..88bc2918 100644 --- a/easy_gen/frontend/app.js +++ b/easy_gen/frontend/app.js @@ -15,6 +15,7 @@ const uploadInput = document.getElementById("easy-upload-input"); const galleryBtn = document.getElementById("easy-gallery-btn"); const generateBtn = document.getElementById("easy-generate-btn"); + const warnStrip = document.getElementById("easy-warn-strip"); const advancedBtn = document.getElementById("easy-advanced-btn"); const projectsBtn = document.getElementById("easy-projects-btn"); const saveBtn = document.getElementById("easy-save-btn"); @@ -72,6 +73,12 @@ uploadBtn.textContent = attached ? "⬆ Uploaded ✕" : "⬆ Upload"; preview.setUpload(attached ? API.mediaUrl(source.media_ref) : null, source?.type === "v2v" ? "video" : "image"); + // A setting that is switched on but cannot do anything belongs on the main screen, + // above Generate — not only inside the pane that switched it on. + const issue = window.PipelineCaps?.identityTransferIssue(st); + warnStrip.textContent = issue ? issue.detail : ""; + warnStrip.hidden = !issue; + const pid = p ? p.id : null; if (pid !== lastProjectId) { lastProjectId = pid; diff --git a/easy_gen/frontend/easy.css b/easy_gen/frontend/easy.css index b3adc30b..dfbd3491 100644 --- a/easy_gen/frontend/easy.css +++ b/easy_gen/frontend/easy.css @@ -63,6 +63,15 @@ a.brand:hover .brand-sub { color: var(--amber-2); } overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .easy-progress-stop:disabled { opacity: .6; cursor: default; } +/* Full-width notice between the preview and the Generate row: a setting that is on + but cannot do anything should be readable without opening any panel. */ +.easy-warn-strip { + flex: none; padding: 9px 16px; font-size: 12.5px; line-height: 1.45; + color: var(--amber); border-top: 1px solid color-mix(in srgb, var(--amber) 45%, var(--line)); + background: color-mix(in srgb, var(--amber) 9%, transparent); +} +.easy-warn-strip[hidden] { display: none; } + .easy-bar { flex: none; display: flex; align-items: flex-end; gap: 12px; padding: 14px 16px; border-top: 1px solid var(--line); background: var(--ink-1); diff --git a/easy_gen/frontend/index.html b/easy_gen/frontend/index.html index 1a13a2e0..34c53626 100644 --- a/easy_gen/frontend/index.html +++ b/easy_gen/frontend/index.html @@ -64,6 +64,8 @@
+ +