Skip to content

feat(studio): bind Recast, Repaint and Panorama with the shared picker - #241

Merged
IAnMove merged 2 commits into
developmentfrom
grok/agente1-g1a-recast
Sep 7, 2026
Merged

feat(studio): bind Recast, Repaint and Panorama with the shared picker#241
IAnMove merged 2 commits into
developmentfrom
grok/agente1-g1a-recast

Conversation

@IAnMove

@IAnMove IAnMove commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Summary

G1-A: Recast, Repaint (Restyle) and Panorama use the shared picker instead of OS-only file inputs.

  • Video/image slots go through StudioSourceField / AssetInput with workspaceId.
  • Catalog choices apply applyChosenStudioMedia (server path + URL probe, no re-download/re-upload to mint a File).
  • Recast extra views are one catalog pick at a time, up to four.
  • Choosing a Repaint frame does not claim it is the first video frame.
  • Panorama still prepares the loop after the source is chosen.

Test plan

  • recastRestylePicker.test.tsx (3) — dual-origin buttons, explorer stays closed
  • eslint on the three panels

Note

Medium Risk
Touches SCAIL-2 Recast/Repaint edit inputs and how server media paths are bound, though it reuses the same picker helpers as other studio panels.

Overview
Recast, Repaint (Restyle), and Panorama now pick source media through the shared AssetInput / StudioSourceField instead of drag-and-drop and hidden file inputs, scoped to activeWorkspace via useWorkspaceOutputs.

Catalog selections go through applyChosenStudioMedia, so edit state gets server path plus preview URL/metadata without the old uploadImage + blob-URL upload path. Recast video, primary character refs, and extra views (one library pick at a time, still capped at four) all use this flow; Repaint clears the edited frame when the source video changes; Panorama still fetches the chosen image and runs prepareTripleTile after selection.

Adds recastRestylePicker.test.tsx to assert dual-origin picker buttons and that the asset explorer stays closed on initial render, plus an architecture wire-inventory entry for the new test.

Reviewed by Cursor Bugbot for commit d127cf7. Configure here.

Replace OS-only file inputs with AssetInput/StudioSourceField. Catalog
picks keep server paths via applyChosenStudioMedia. Recast extra views
stay one catalog choice at a time up to four. Panorama still prepares
the loop after the source is chosen, not inside the picker.
@cursor

cursor Bot commented Sep 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_636449d2-752c-42f0-9b01-02782f4d408f)

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR Review — Loreframe Studio

Risk: low
Scope: 5 file(s); +247/-159; React UI

Automated review from scripts/analyze_pr.py. This is a heuristic pass (no LLM) so humans still own the merge decision.

Findings

  • low — UI changed — rebuild before merge
    Run cd ui && npm run build (CI already does this). Pinokio Update rebuilds for end users; keep ui/dist untracked.

Changed files

  • added: ui/tests/recastRestylePicker.test.tsx
  • modified: tests/fixtures/architecture_wire_inventory.json, ui/src/components/Sidebar/PanoramaLoopPanel.tsx, ui/src/components/Sidebar/RecastControls.tsx, ui/src/components/Sidebar/RestyleControls.tsx

CONTRIBUTING checklist

  • python scripts/verify_clean_repo.py
  • python -m compileall -q app/services app/launch.py scripts
  • cd ui && npm run build if the UI changed
  • No weights, CivitAI sidecars, or generated guides
  • Stays local-first (no required accounts / telemetry)

Posted by the repo PR review workflow. Re-runs on each push to the PR.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

Code health

Quality score: 54.7/100

Higher is better. The score is a trend dashboard; the independent ratchet below remains the CI gate.

Component Weight Current Change
Cyclomatic health 45% 54.3 +0.0
File concentration 25% 61.3 +0.0
Oversized-file debt 20% 36.9 +0.0
Modularity 10% 75.0 +0.0

Change vs PR base: +0.0 points.

Metric Value
Production LOC 263,977
Production files 698
Test LOC 92,553
Functions measured 17,028
Functions complexity ≥ 15 833
Maximum complexity 672
Policy code-health-policy-v1
HEAD 5d453544352303e3088560f73342e0a49a18264f
Base 24dfc5fef1bffe2664fcc782f18bbc68b9b7ee18
UI measurement complete

Markdown, JSON catalogs and tests are out of this table. Only app/ runtime + ui/src TS/JS count.

Most complex functions

Complexity Where
672 app/wgp.py:7219 generate_video
381 ui/src/stores/useStore.ts:4053 Async method 'startGeneration'
355 app/_launch_runtime.py:23563 _run_generation
308 app/wgp.py:12359 generate_video_tab
268 ui/src/stores/useStore.ts:8600 Async method 'loadSettingsFromOutput'
258 app/services/director/planners/short_film.py:3433 ShortFilmPlanner._plan_story_driven
258 ui/src/components/Sidebar/SceneAnimatorPanel.tsx:493 Function 'SceneAnimatorPanel'
248 app/services/director_pipeline.py:13607 _run_video_generation
245 app/services/director_pipeline.py:7712 _run_pipeline
244 ui/src/features/agent/agentActions.ts:1145 Function 'parseAction'
226 app/services/director_pipeline.py:6541 update_comic_preview
225 ui/src/features/agent/agentActions.ts:2892 Async function 'executeAgentActions'

Trend vs baseline

Metric Δ
Production LOC -41
Test LOC +123
Functions ≥ 15 +0
Maximum complexity +0

Ratchet passed.

@IAnMove
IAnMove merged commit 9681826 into development Sep 7, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant