Repository navigation
Photoshoot: hands_on and on_model with an optional Identity - #52
Merged
Merged
Conversation
Both default to 4:5 / 3:4, take identityK 3 refs and the product cutout. Their prompts name 'the person from images 2-4' when an Identity is selected, else describe hands or an archetype model. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…49) plan resolves bestRefs(identityId, identityK) and binds them to Klein image_2..4 after the cutout. An unknown Identity is a 404 on identityId and one without consent a 400; no Identity never errors. The 'Identity ignored' notice stays only for modes with identityK 0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Shown only for modes with identityK > 0; 'No identity' is the default. A recovered run restores the selection. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
playwright.config.ts keeps the throwaway data dir in E2E_DATA_DIR so test workers see the same store; identity.spec.ts seeds a consented Identity there and checks its refs are bound as images 2-4. S-R1 stays fixme (it still needs a face set and Motion identities). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
photoshoot.md §7 no longer says Identity is not built, and its slot table matches the binding (cutout image_1 = node 54, refs image_2..4 = 60/61/62). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #49.
Adds the
hands_onandon_modelProduct Shoot modes. Each uses an Identity only when one is selected and never requires one.One commit per step from the issue:
lib/enhancer/modes.ts):hands_ondefaults to 4:5 andon_modelto 3:4. Both haveidentityK: 3andproductRef: "cutout". A newpersonfield (additive onModeTemplate) fills the{person}prompt slot. With an Identity it reads "the person from images 2-4". Without one,hands_ondescribes hands with at most part of a face, andon_modeldescribes an archetype model.lib/photoshoot/pipeline.ts):planresolvesbestRefs(identityId, identityK)and binds the results to Kleinimage_2..4. The cutout stays inimage_1.prepareGraphdrops any slot that isn't used. An unknown Identity gives 404 onidentityId. An Identity with no consent record, or refs that won't upload, gives 400 onidentityId. Both are refused before any job is sent, and the run never quietly falls back to no Identity. When no Identity is selected the run goes ahead with no error and no notice. The "Identity ignored" notice now appears only for modes withidentityK: 0.photoshoot-studio.tsx): theSoulLibrarypicker shows only for these two modes, with "No identity" as the default. A recovered run restores the selection.tests/photoshoot/identity.test.tsruns through the runner on the mock. It checks that the submitted Klein jobs carry the cutout plus the Identity's three ref asset ids, in order, and only the cutout when no Identity is selected. It also covers the 404 and 400 cases, where nothing is submitted.hands_onandon_modelcomplete with no Identity, and the picker is hidden for packshot. A newidentity.spec.tstest seeds a consented Identity into the e2e store and checks that its cached ref asset ids are bound as images 2-4.playwright.config.tsnow keeps the throwaway data dir inE2E_DATA_DIR, so test workers share it.fixme: it still needs a face set and Motion identities. Its notes are updated.photoshoot.md§7, the "not built yet" note is gone and the slot table now matches the binding (cutout at node 54, refs at 60/61/62). README, ARCHITECTURE, the demo script and the testing strategy now say seven modes.Not done: the spec says to append the Identity's style card to the prompt. That isn't built yet, and §7 says so.
Checks (local)
pnpm lint,pnpm typecheck: cleanpnpm test: 451 pass, 0 failpnpm test:e2e(mock): 43 pass, 0 fail, 8 skipped🤖 Generated with Claude Code