diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index fbad18dc..4b305bdf 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -52,7 +52,7 @@ Plans: **Design decision**: Separate nodes for image vs video generation (GenerateVideo added in Phase 6) Plans: -- [ ] 03-01: Rename NanoBanana to GenerateImage, add model selector (image models only) +- [x] 03-01: Rename NanoBanana to GenerateImage, add model selector (image models only) - [ ] 03-02: Provider-specific execution in generate API route - [ ] 03-03: Backward compatibility for existing workflows @@ -98,7 +98,7 @@ Phases execute in numeric order: 1 → 2 → 3 → 4 → 5 → 6 |-------|----------------|--------|-----------| | 1. Provider Infrastructure | 2/2 | Complete | 2026-01-09 | | 2. Model Discovery | 3/3 | Complete | 2026-01-09 | -| 3. Generate Node Refactor | 0/3 | Not started | - | +| 3. Generate Node Refactor | 1/3 | In progress | - | | 4. Model Search Dialog | 0/2 | Not started | - | | 5. Image URL Server | 0/2 | Not started | - | | 6. Video & Polish | 0/4 | Not started | - | diff --git a/.planning/STATE.md b/.planning/STATE.md index 6d8051ae..338fbe8e 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -10,18 +10,18 @@ See: .planning/PROJECT.md (updated 2026-01-09) ## Current Position Phase: 3 of 6 (Generate Node Refactor) -Plan: 0 of 3 in current phase -Status: Ready to start Phase 3 -Last activity: 2026-01-09 - Completed 02-03-PLAN.md (Model caching) +Plan: 1 of 3 in current phase +Status: In progress +Last activity: 2026-01-09 - Completed 03-01-PLAN.md (Rename NanoBanana to GenerateImage) -Progress: [=================================] 33% (5/15 plans) +Progress: [======================================] 40% (6/15 plans) ## Performance Metrics **Velocity:** -- Total plans completed: 5 -- Average duration: 6 min -- Total execution time: 0.5 hours +- Total plans completed: 6 +- Average duration: 5.5 min +- Total execution time: 0.55 hours **By Phase:** @@ -29,9 +29,10 @@ Progress: [=================================] 33% (5/15 plans) |-------|-------|-------|----------| | 1. Provider Infrastructure | 2/2 | 14 min | 7 min | | 2. Model Discovery | 3/3 | 14 min | 4.7 min | +| 3. Generate Node Refactor | 1/3 | 5 min | 5 min | **Recent Trend:** -- Last 5 plans: 2 min, 4 min, 5 min, 5 min +- Last 5 plans: 4 min, 5 min, 5 min, 5 min - Trend: stable ## Accumulated Context @@ -53,6 +54,9 @@ Recent decisions affecting current work: - fal.ai category maps directly to ModelCapability (no inference) - 10-minute cache TTL for model lists - Unified API at /api/models with header-based auth +- Provider dropdown shows Gemini always, others only if API key configured +- Aspect ratio/resolution controls shown only for Gemini provider +- Backward compatibility via aliases: NanoBananaNode, saveNanoBananaDefaults ### Deferred Issues @@ -65,6 +69,6 @@ None. ## Session Continuity Last session: 2026-01-09 -Stopped at: Completed Phase 2 (02-03-PLAN.md) +Stopped at: Completed 03-01-PLAN.md (GenerateImageNode with provider/model selector) Resume file: None -Next action: Plan Phase 3 (03-01-PLAN.md - Rename NanoBanana to Generate) +Next action: Execute 03-02-PLAN.md (Provider-specific execution in generate API route) diff --git a/.planning/phases/03-generate-node-refactor/03-01-SUMMARY.md b/.planning/phases/03-generate-node-refactor/03-01-SUMMARY.md new file mode 100644 index 00000000..796fea3e --- /dev/null +++ b/.planning/phases/03-generate-node-refactor/03-01-SUMMARY.md @@ -0,0 +1,102 @@ +--- +phase: 03-generate-node-refactor +plan: 01 +subsystem: ui +tags: [react, generate-image, provider-selector, multi-provider] + +# Dependency graph +requires: + - phase: 02-model-discovery + provides: /api/models endpoint, ProviderModel interface +provides: + - GenerateImageNode component with multi-provider UI + - SelectedModel type for tracking provider/model selection + - Provider dropdown with enabled provider detection + - Model dropdown filtered to image capabilities +affects: [03-02, 03-03, 04-model-search-dialog] + +# Tech tracking +tech-stack: + added: [] + patterns: [provider-selector-ui, model-filtering-by-capability] + +key-files: + created: + - src/components/nodes/GenerateImageNode.tsx + modified: + - src/types/index.ts + - src/components/nodes/index.ts + - src/store/workflowStore.ts + - src/components/WorkflowCanvas.tsx + +key-decisions: + - "Provider dropdown shows Gemini always, others only if API key configured" + - "Aspect ratio/resolution controls shown only for Gemini provider" + - "Backward compatibility via aliases: NanoBananaNode, saveNanoBananaDefaults" + +patterns-established: + - "Provider-aware UI: detect enabled providers via provider registry" + - "Model filtering: query /api/models with capabilities parameter" + +issues-created: [] + +# Metrics +duration: 5 min +completed: 2026-01-09 +--- + +# Phase 03 Plan 01: Rename NanoBanana to GenerateImage Summary + +**GenerateImageNode component with provider dropdown and model selector filtering to image-capable models only** + +## Performance + +- **Duration:** 5 min +- **Started:** 2026-01-09T06:45:47Z +- **Completed:** 2026-01-09T06:50:50Z +- **Tasks:** 3 +- **Files modified:** 5 + +## Accomplishments +- Created GenerateImageNode component with provider/model selection UI +- Added SelectedModel type for tracking selected provider and model +- Provider dropdown shows Gemini (always) plus Replicate/fal.ai (if configured) +- Model dropdown fetches from /api/models and filters to image capabilities +- Aspect ratio/resolution controls conditionally shown for Gemini only + +## Task Commits + +Each task was committed atomically: + +1. **Task 1: Add SelectedModel type and update NanoBananaNodeData** - `d3bc29c` (feat) +2. **Task 2: Create GenerateImageNode with provider/model selector** - `977b5f5` (feat) +3. **Task 3: Update store and canvas references** - `cec11f2` (feat) + +**Plan metadata:** `4cc69a7` (docs: complete plan) + +## Files Created/Modified +- `src/components/nodes/GenerateImageNode.tsx` - New component with provider/model selector +- `src/types/index.ts` - Added SelectedModel interface, updated NanoBananaNodeData +- `src/components/nodes/index.ts` - Export GenerateImageNode with NanoBananaNode alias +- `src/store/workflowStore.ts` - Renamed helper functions with aliases, updated defaults +- `src/components/WorkflowCanvas.tsx` - Updated nodeTypes to use GenerateImageNode + +## Decisions Made +- Provider dropdown shows Gemini always (env-based), others only if API key configured in localStorage +- Aspect ratio and resolution controls only shown for Gemini provider (other providers handle this differently) +- Backward compatibility maintained: NanoBananaNode alias, saveNanoBananaDefaults alias + +## Deviations from Plan + +None - plan executed exactly as written. + +## Issues Encountered +None + +## Next Phase Readiness +- GenerateImageNode UI complete, ready for execution logic +- Next plan 03-02 will add provider-specific execution in /api/generate route + +--- +*Phase: 03-generate-node-refactor* +*Completed: 2026-01-09*