Browse Source
Phase 26: Template Preview Rendering - 1 plan created - 3 tasks defined (2 auto + 1 human-verify) - Ready for execution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>handoff-20260429-1057
1 changed files with 160 additions and 0 deletions
@ -0,0 +1,160 @@ |
|||
--- |
|||
phase: 26-template-preview-rendering |
|||
plan: 01 |
|||
type: execute |
|||
subsystem: ui |
|||
--- |
|||
|
|||
<objective> |
|||
Create visual preview of workflow templates showing node layout and connections before loading. |
|||
|
|||
Purpose: Help users understand template structure at a glance, making it easier to select the right workflow. |
|||
Output: WorkflowPreview component integrated into TemplateCard showing miniature node graph. |
|||
</objective> |
|||
|
|||
<execution_context> |
|||
@~/.claude/get-shit-done/workflows/execute-phase.md |
|||
@~/.claude/get-shit-done/templates/summary.md |
|||
@~/.claude/get-shit-done/references/checkpoints.md |
|||
</execution_context> |
|||
|
|||
<context> |
|||
@.planning/PROJECT.md |
|||
@.planning/ROADMAP.md |
|||
@.planning/STATE.md |
|||
|
|||
# Phase 25 context (template explorer foundation): |
|||
@.planning/phases/25-template-explorer-ui/25-01-SUMMARY.md |
|||
@.planning/phases/25-template-explorer-ui/25-02-SUMMARY.md |
|||
|
|||
# Key source files: |
|||
@src/components/quickstart/TemplateCard.tsx |
|||
@src/components/quickstart/TemplateExplorerView.tsx |
|||
@src/lib/quickstart/templates.ts |
|||
@src/components/WorkflowCanvas.tsx |
|||
|
|||
**Tech stack available:** |
|||
- @xyflow/react v12.9.3 (React Flow) for node graph rendering |
|||
- Tailwind CSS for styling |
|||
- Existing template system with workflow data (nodes, edges) |
|||
|
|||
**Established patterns:** |
|||
- onWheelCapture for isolating modal scroll from React Flow canvas |
|||
- Templates have full workflow data available via PRESET_TEMPLATES |
|||
- Category color coding: blue=product, purple=style, green=composition, amber=community |
|||
|
|||
**Constraining decisions:** |
|||
- Phase 25-01: TemplateCard accepts previewImage prop, shows static thumbnail |
|||
- Phase 25-02: Templates already have workflow.nodes and workflow.edges available |
|||
- Node types have consistent colors in minimap (WorkflowCanvas.tsx) |
|||
</context> |
|||
|
|||
<tasks> |
|||
|
|||
<task type="auto"> |
|||
<name>Task 1: Create WorkflowPreview component</name> |
|||
<files>src/components/quickstart/WorkflowPreview.tsx</files> |
|||
<action> |
|||
Create a reusable WorkflowPreview component that renders a miniature, non-interactive React Flow visualization. |
|||
|
|||
Implementation details: |
|||
1. Accept `workflow` prop with nodes and edges arrays |
|||
2. Create simplified preview nodes - just colored rectangles based on node type (no internal content): |
|||
- imageInput: green-500 |
|||
- annotation: yellow-500 |
|||
- prompt: blue-500 |
|||
- nanoBanana: orange-500 (generate nodes) |
|||
- generateVideo: purple-500 |
|||
- llmGenerate: cyan-500 |
|||
- splitGrid: pink-500 |
|||
- output: gray-500 |
|||
3. Use React Flow with these props for non-interactive mode: |
|||
- nodesDraggable={false} |
|||
- nodesConnectable={false} |
|||
- elementsSelectable={false} |
|||
- panOnDrag={false} |
|||
- zoomOnScroll={false} |
|||
- zoomOnPinch={false} |
|||
- zoomOnDoubleClick={false} |
|||
- fitView={true} |
|||
- fitViewOptions={{ padding: 0.2 }} |
|||
4. Create a custom PreviewNode component that renders a simple colored rectangle with rounded corners |
|||
5. Use simplified edges (just lines, no labels or interaction) |
|||
6. No Background, Controls, or MiniMap - keep it minimal |
|||
7. Container should accept width/height or use aspect-ratio |
|||
|
|||
Key considerations: |
|||
- DO NOT try to render full node content - just colored shapes representing node types |
|||
- Use ReactFlowProvider wrapper since this is a standalone React Flow instance |
|||
- Keep component lightweight - it will be rendered multiple times in the grid |
|||
</action> |
|||
<verify>npm run build passes without errors, component exports correctly</verify> |
|||
<done>WorkflowPreview component created with non-interactive React Flow rendering simplified node shapes</done> |
|||
</task> |
|||
|
|||
<task type="auto"> |
|||
<name>Task 2: Integrate WorkflowPreview into TemplateCard</name> |
|||
<files>src/components/quickstart/TemplateCard.tsx, src/components/quickstart/TemplateExplorerView.tsx</files> |
|||
<action> |
|||
Replace the static thumbnail image in TemplateCard with the WorkflowPreview component. |
|||
|
|||
Implementation details: |
|||
1. Update TemplateCard props: |
|||
- Change `previewImage?: string` to `workflow?: { nodes: Node[]; edges: Edge[] }` |
|||
- Import WorkflowPreview component |
|||
2. In the thumbnail area (currently aspect-[4/3] div): |
|||
- If workflow is provided, render WorkflowPreview |
|||
- Keep the loading spinner state unchanged |
|||
- Remove the fallback icon (the workflow preview IS the preview) |
|||
3. Update TemplateExplorerView: |
|||
- Instead of passing previewImage, pass the workflow from PRESET_TEMPLATES |
|||
- Each preset template already has workflow.nodes and workflow.edges |
|||
4. Consider adding a subtle semi-transparent overlay on hover for better UX |
|||
|
|||
Remove the previewImages useMemo from TemplateExplorerView since we won't need static images anymore. |
|||
</action> |
|||
<verify>npm run build passes, template cards show workflow previews instead of static images</verify> |
|||
<done>TemplateCard shows WorkflowPreview, TemplateExplorerView passes workflow data to cards</done> |
|||
</task> |
|||
|
|||
<task type="checkpoint:human-verify" gate="blocking"> |
|||
<what-built>Workflow preview rendering in template explorer cards</what-built> |
|||
<how-to-verify> |
|||
1. Run: npm run dev |
|||
2. Open browser to http://localhost:3000 |
|||
3. Click "Browse templates" or similar to open template explorer |
|||
4. Verify each template card shows a miniature node graph: |
|||
- Colored rectangles representing different node types |
|||
- Lines/edges connecting the nodes |
|||
- Layout matches the actual template structure |
|||
5. Verify the preview is non-interactive (can't drag/zoom) |
|||
6. Verify scrolling still works in the template gallery (onWheelCapture from Phase 25) |
|||
7. Verify hover/click states still work on cards |
|||
</how-to-verify> |
|||
<resume-signal>Type "approved" to continue, or describe issues to fix</resume-signal> |
|||
</task> |
|||
|
|||
</tasks> |
|||
|
|||
<verification> |
|||
Before declaring phase complete: |
|||
- [ ] `npm run build` succeeds without errors |
|||
- [ ] WorkflowPreview component renders node graphs correctly |
|||
- [ ] Template cards show workflow structure visually |
|||
- [ ] Previews are non-interactive (no drag, zoom, or pan) |
|||
- [ ] Scrolling in template explorer still works |
|||
- [ ] No performance issues with multiple previews in grid |
|||
</verification> |
|||
|
|||
<success_criteria> |
|||
|
|||
- All tasks completed |
|||
- All verification checks pass |
|||
- No errors or warnings introduced |
|||
- Template cards show meaningful workflow previews |
|||
- Phase 26 complete |
|||
</success_criteria> |
|||
|
|||
<output> |
|||
After completion, create `.planning/phases/26-template-preview-rendering/26-01-SUMMARY.md` using summary.md template. |
|||
</output> |
|||
Loading…
Reference in new issue