Why: Codex stop-time review #3 flagged "Type 0 component handling is incomplete". The earlier C1 fix (orchestrator-plan-classify helper + isMobileFullScreen heuristic) covered the orchestrator path, but four more places still bucketed narrow widths (≤480 / ≤500) as mobile and mishandled component-shaped plans. What: - agent-tool-executor.ts: replace `width<=500 ? 375 : 1200` bucket on setGenerationCanvasWidth with the inserted node's actual width — a 400-wide profile card now estimates text against 400, not 375. - design-type-presets.ts: add 'component' to DesignType union with width=400, height=0, and a single-section default. detectDesignType matches "X card / X badge / X chip / ..." prompts BEFORE the mobile / dashboard check, so the parse-failure fallback returns a 400px component instead of a 1200px landing-page for "design a profile card". Disqualified when prompt also names a screen / page. - orchestrator-prompt-optimizer.ts: 3 spots — platform selection now uses preset.type==='mobile-screen' (component groups with webapp, not mobile, since it has no status bar / bottom nav); compact prompt rules and subtask hint get a component branch ("Use width=400 height=0, exactly 1 subtask, no chrome"); fallback height map gives components a single 200px region instead of 800. - orchestrator-planning.ts: buildFallbackHeights treats narrow + auto-height plans as component-shape and emits 200px sections, preventing the prior "812 / 1 = 812-tall card" output. 2 new tests pin: (a) "design a clean profile card" → 400×0 single "Component" subtask with 200px region; (b) "design a card screen page" must NOT shortcut to component (screen/page disqualifier holds). |
||
|---|---|---|
| .. | ||
| public | ||
| server | ||
| src | ||
| CLAUDE.md | ||
| components.json | ||
| dev.ts | ||
| package.json | ||
| tsconfig.json | ||
| vite.config.ts | ||