Skip to content

fix(wizard,studio): agrupar correcciones Cursor de Wizard y DramaBox - #279

Merged
IAnMove merged 5 commits into
developmentfrom
fix/cursor-wizard-studio-drafts-20260909
Sep 9, 2026
Merged

fix(wizard,studio): agrupar correcciones Cursor de Wizard y DramaBox#279
IAnMove merged 5 commits into
developmentfrom
fix/cursor-wizard-studio-drafts-20260909

Conversation

@IAnMove

@IAnMove IAnMove commented Sep 9, 2026

Copy link
Copy Markdown
Owner

Resumen ejecutivo

Qué cambia

Agrupa en un solo PR contra development cinco correcciones de Cursor que ya tenían sentido por separado: persistencia CAS del Wizard, duración auto de DramaBox, preguntas how-to, para educativo vs cancelar, y qué/por qué silenciados.

Para qué sirve

Había cinco PR pequeños al mismo base. Este PR aplica las mismas ideas sobre origin/development y deja un único cambio listo para revisar.

Impacto para el usuario

  • Un workflow de varios pasos ya no borra checkpoints hermanos si otra pestaña guarda a mitad del avance.
  • DramaBox puede usar duración 0 (auto) en vez de forzar 1 s.
  • Preguntar cómo generar o “pasos para generar un vídeo” ya no encola GPU ni cancela la tarea activa.
  • Preguntas con “Qué” / “por qué” vuelven a mostrar la explicación.

Riesgo

  • Bajo
  • Medio
  • Alto

Estado

  • En desarrollo
  • Listo para revisión
  • Bloqueado por CI o revisión
  • Requiere migración o acción manual

Summary

Replaces Cursor PRs #263, #269, #272, #273 and #274 with one branch from origin/development edf93aa6.

  1. Wizard CAS (fix(wizard): no borrar workflows hermanos tras un merge CAS a mitad de un avance #263 remaining commit). After fix(wizard): no perder el checkpoint al cambiar de carpeta a mitad de un paso #258 pinned persist to the pre-open() collection, a CAS retry only copied revision back. The next persist in the same advance() cloned the pre-merge owner and dropped sibling workflows. adoptPersistMerge() copies remote-only/newer workflows into the live owner collection and keeps the in-memory objects advanceUnlocked is mutating.

  2. DramaBox auto duration (fix(studio): no convertir la duración auto de DramaBox en 1 s #269). setDurationSeconds(0) used the video floor of 1 s. DramaBox declares audio_only and duration_slider.min=0 (0 = auto). The setter now allows 0 only in that case; video models still clamp to ≥1 s.

  3. How-to must not generate (fix(wizard): no encolar generación ante preguntas how-to #272). How do I launch the video? matched explicit generate/resume classifiers. Those classifiers now reject isHowToGenerateQuestion. Classification uses the first 240 characters so a long explanation after the question stays educational. Comic how-to is answered before the generic how-to stripper.

  4. Spanish para (fix(wizard): no cancelar ni generar ante frases educativas con para #273). \bpara\b plus vídeo treated “Dime los pasos para generar un vídeo” as cancel. Imperative para is now only at sentence start and only with a job object (tarea/cola/generación), never media or an infinitive. Educational paraphrases (dime los pasos, qué debo configurar) are how-to, not generate.

  5. Accented qué/por qué (fix(wizard): no silenciar preguntas con qué o por qué #274). JS \b is ASCII-only, so Qué / por qué failed allowsExplanation and showed a false empty-turn receipt. The request is NFD-normalized and combining marks stripped before the word-boundary patterns.

Image-command drafts #276/#277/#278 are not in this PR: those files do not exist on development and the refined ideas already live in #275 65ed2852.

Overview

Wizard text classification, Wizard workflow persist, and Studio duration clamping. No backend, receipts, or MCP changes.

Detailed changes

Backend

Unchanged.

UI and Wizard

  • wizardWorkflowRuntime.ts: adopt CAS merge into the pinned owner collection.
  • studioConfigurationSlice.ts: keep TTS auto duration 0.
  • agentActions.ts: how-to vs generate; para vs cancel.
  • wizardTurnReport.ts: fold accents for explanation policy.

Data, provenance and compatibility

No storage, receipt or workspace-name contract change.

Files and ownership

  • ui/src/features/agent/wizardWorkflowRuntime.ts + test — CAS siblings
  • ui/src/stores/studioConfigurationSlice.ts + test — DramaBox 0
  • ui/src/features/agent/agentActions.ts + test — how-to / para
  • ui/src/features/agent/wizardTurnReport.ts + test — qué/por qué

Intentionally untouched: image command admission (#275), MCP, launchers, ui/src/index.css.

Validation

  • Date (UTC): 2026-09-09

  • Base SHA: edf93aa

  • Head SHA: 6523bd7

  • Validation scope: focused

  • python scripts/verify_clean_repo.py — PASS

  • python -m compileall — N/A (no Python files in this PR)

  • Focused Python tests: N/A

  • cd ui && npm run i18n:check — not required; no copy catalog change

  • UI tests: npx tsx --tsconfig tsconfig.app.json --import ./tests/setupI18n.ts --test tests/wizardWorkflowRuntime.test.mjs tests/architectureSlices.test.mjs tests/agentActions.test.mjs tests/wizardTurnReport.test.ts109 pass / 0 fail

  • eslint on changed files --max-warnings=0 — PASS

  • cd ui && npm run build — pending CI

  • git diff --check — PASS

  • E2E/smoke checks: N/A (classifier/persist/duration unit coverage; no real generation)

Code quality

  • Score: pending CI
  • Complexity trend: pending CI
  • Production LOC trend: pending CI
  • Regression versus main: pending CI
  • Ratchet: pending CI

CI and review

  • CI of this HEAD: pending

  • Independent agent review of this HEAD: pending

  • Human merge click (operational, not code review): pending

  • Reviewed at current HEAD

  • Earlier review; HEAD has changed since (stale)

  • Pending

  • Unavailable

Coste de la tarea

  • Tests simulados: 109 UI (0 tokens externos)
  • Tests reales: N/A
  • Llamadas LLM externas: 0
  • Tokens de prompt: N/A
  • Tokens de respuesta: N/A
  • Tokens totales: N/A
  • Generaciones de imágenes/audio/vídeo: 0
  • Tiempo transcurrido: N/A
  • Proveedores/modelos: N/A

Notes and limitations

Follow-up work

Checklist

  • The executive summary is understandable without reading the code.
  • The detailed Summary/Overview has not been removed or shortened.
  • Tests and their actual results are recorded.
  • Generated assets, secrets and local-only files are not committed.
  • Required CI and Cursor/Bugbot review are complete, or the PR is clearly marked as waiting for them.

Note

Low Risk
Changes are localized classifier and persist fixes with broad unit tests; residual risk is edge-case Spanish/English phrasing still mis-routed as cancel or generate.

Overview
Bundles five UI fixes: Wizard intent classification, turn presentation, workflow CAS persistence, and Studio duration clamping.

Wizard / agent intent tightens when educational phrasing must not touch the GPU queue. isHowToGenerateQuestion gains broader EN/ES patterns and only inspects the first 240 characters so long follow-ups stay “how-to.” Video/image/audio/3D/resume classifiers and reconcileAgentTurnWithRequest now reject how-to turns (keeping navigation-only actions) and run comic/how-to handling earlier. Spanish cancel detection no longer treats preposition para in phrases like “pasos para generar un vídeo” as parar; imperative para is limited to sentence-start + job objects.

Wizard receipts normalize accents before allowsExplanation so Qué / por qué questions keep the model reply instead of a false “no action” receipt.

Wizard workflow runtime adds adoptPersistMerge on CAS retry so merged sibling workflows from another tab are adopted into the live collection advanceUnlocked mutates, avoiding the next persist in the same advance from dropping them.

Studio setDurationSeconds(0) is preserved for audio_only models with duration_slider.min === 0 (DramaBox auto duration); video models still floor at 1s.

Tests cover Spanish para, how-to vs generate, CAS siblings, TTS duration 0, and accented questions.

Reviewed by Cursor Bugbot for commit 6523bd7. Configure here.

cursoragent and others added 5 commits September 9, 2026 17:00
Pinning persist to the pre-open collection reused that snapshot for every
checkpoint in the same advance. A conflict retry only patched its revision,
so the next persist cloned the pre-merge list and dropped workflows the
merge had just adopted.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
…o 1s

setDurationSeconds used a video floor of 1s, so Wizard prepare and the
Advanced slider rewrote the TTS 0=auto sentinel into a one-second clip.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
Las preguntas "how do I launch the video?" y how-to largos (>240)
caían en resume/explicit generation y lanzaban un job de Studio.
Clasificar how-to antes de esos atajos y mirar la ventana inicial.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
El clasificador de cancel tomaba la preposición española "para" como el
imperativo de parar, así que "dime los pasos para generar un vídeo"
cancelaba la tarea GPU activa. Las paráfrasis how-to sin "how"
("tell me the steps to generate") encolaban prepare + start_generation.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
JS word boundaries are ASCII-only, so accented qué/por qué never matched
the informational-turn allowlist and the Wizard replaced the model answer
with a false empty-turn receipt. Fold diacritics before the classifier.

Co-authored-by: ignaciodelcano+dcl <ignaciodelcano+dcl@gmail.com>
@cursor

cursor Bot commented Sep 9, 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_fcd2f528-cd03-479e-b5be-0ba4bb36d68f)

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

PR Review — Loreframe Studio

Risk: low
Scope: 8 file(s); +347/-38; 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

  • modified: ui/src/features/agent/agentActions.ts, ui/src/features/agent/wizardTurnReport.ts, ui/src/features/agent/wizardWorkflowRuntime.ts, ui/src/stores/studioConfigurationSlice.ts, ui/tests/agentActions.test.mjs, ui/tests/architectureSlices.test.mjs, ui/tests/wizardTurnReport.test.ts, ui/tests/wizardWorkflowRuntime.test.mjs

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 9, 2026

Copy link
Copy Markdown

Code health

Quality score: 56.4/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% 55.0 -0.1
File concentration 25% 63.1 +0.1
Oversized-file debt 20% 39.1 +0.0
Modularity 10% 80.6 +0.0

Change vs PR base: +0.0 points.

Metric Value
Production LOC 270,223
Production files 785
Test LOC 99,512
Functions measured 17,908
Functions complexity ≥ 15 858
Maximum complexity 674
Policy code-health-policy-v1
HEAD c55472cff98711346226f92120345896cc793dc2
Base edf93aa6298b4e9cc2169f818a96beb5a2d7011a
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
674 app/wgp.py:7221 generate_video
381 ui/src/stores/useStore.ts:4084 Async method 'startGeneration'
355 app/_launch_runtime.py:23613 _run_generation
308 app/wgp.py:12363 generate_video_tab
268 ui/src/stores/useStore.ts:8636 Async method 'loadSettingsFromOutput'
262 ui/src/components/Sidebar/SceneAnimatorPanel.tsx:496 Function 'SceneAnimatorPanel'
258 app/services/director/planners/short_film.py:3433 ShortFilmPlanner._plan_story_driven
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:1150 Function 'parseAction'
226 app/services/director_pipeline.py:6541 update_comic_preview
225 ui/src/features/agent/agentActions.ts:2936 Async function 'executeAgentActions'

Trend vs baseline

Metric Δ
Production LOC +47
Test LOC +262
Functions ≥ 15 +1
Maximum complexity +0

Warnings

  • production LOC increased by +47
  • functions at complexity >= 15 increased by +1
  • hotspot ui/src/features/agent/agentActions.ts increased by +12 lines

Ratchet passed.

@IAnMove
IAnMove merged commit d88c85d into development Sep 9, 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.

2 participants