Commit Graph

23 Commits

Author SHA1 Message Date
Paul Huliganga 87ee00dcb5 Task 4: Add local phase update queue (JSONL) with event schema, helper functions, orchestrator emission, and tests. Integrates phase_started, phase_succeeded, phase_failed, workflow_completed events; helper functions for reading pending and marking sent. All tests passing. See tests/phase-updates-queue-README.md for usage. 2026-03-26 13:42:26 -04:00
Paul Huliganga f54468e471 Task 3: Implement robust SequentialOrchestrator + WorkflowStatusManager integration with atomic status file writes, correct status fields, and phase boundary tracking. Fix logic, fully restore run method, ensure all orchestrator status tests pass. 2026-03-26 13:39:54 -04:00
Paul Huliganga 2288849f66 feat(orchestrator): add phase progress JSONL logging with failureReason and nextAction; reader helper and robust tests for Task 2 2026-03-26 13:34:37 -04:00
Paul Huliganga 1c3d697af7 fix(harness): stabilize orchestrator resume semantics and checkpoint test behavior 2026-03-26 13:33:24 -04:00
Paul Huliganga 8afac385b0 Fix resume test: assert orchestrator checkpoint and retry semantics correctly for mid-run resumes (Task 1 remediation) 2026-03-26 13:31:06 -04:00
Paul Huliganga c434733f0c feat(harness): sequential orchestrator with checkpoint/retry/restart, tests + docs
- Add SequentialOrchestrator service for ordered phase execution, per-phase retry/backoff, and restart-safe checkpointing
- Persist phase attempt metadata (success/fail, attempts, timestamp, error)
- Expose importable callable interface
- Add full coverage unit tests for execution order, retry, checkpoint, and resume scenarios
- Update docs and README for usage and dev guidance
2026-03-26 13:28:19 -04:00
Paul Huliganga 14c0cbb94c Unify backend/frontend recipe search+tag filtering: backend search matches title, ingredient, tag; frontend list page has unified search input and tag filter bar wired to backend; tests for combined/ingredient/tag search; preserves existing features. 2026-03-25 14:17:45 -04:00
Paul Huliganga 055c7ddd1f fix(recipe-repo): normalize SQL params to avoid undefined binds 2026-03-25 11:09:25 -04:00
Paul Huliganga 3248e52057 Refactor backend to normalized ingredients/steps schema, remove tag color, update types/routes/services/tests. Blocking TS build error: all SQL params must be string|null; remaining bug is undefined may leak in RecipeRepository ingredient/step creation. See code for status. In-progress commit to checkpoint work. 2026-03-25 10:33:37 -04:00
Paul Huliganga fa2cceddc3 [migration] Normalize schema to MVP target: split recipes into ingredients and steps tables, drop JSON columns, adjust tags, update migration docs. WARNING: Tests fail until API and tests are refactored for new structure. 2026-03-25 10:25:45 -04:00
Paul Huliganga 272ce1d2f0 feat(mission-control): add live harness progress status panel 2026-03-25 00:46:21 -04:00
Paul Huliganga 9f49223df3 Add import telemetry logging for success and failure reasons 2026-03-25 00:07:38 -04:00
Paul Huliganga 1ca21889ca Add URL import retry/timeout handling and friendly failure messaging 2026-03-24 23:54:23 -04:00
Paul Huliganga d3eeeb2833 feat(import): add heuristic fallback parser for recipe URL imports 2026-03-24 23:43:41 -04:00
Paul Huliganga 87e9181e11 test(import): add malformed JSON-LD endpoint case 2026-03-24 22:02:10 -04:00
Paul Huliganga 3987083e46 feat(import): normalize parsed recipe into internal draft format 2026-03-24 21:47:27 -04:00
Paul Huliganga 64a1229ff0 feat(import): implement Schema.org Recipe JSON-LD parser and draft normalization for import endpoint 2026-03-24 20:37:46 -04:00
Paul Huliganga 146dc3325a feat(backend): add URL import endpoint foundation 2026-03-24 20:25:35 -04:00
Paul Huliganga afdc915aa2 fix(backend): remove require() usage in ESM database saver
Use writeFileSync import instead of require('fs') to avoid runtime
ReferenceError in Node ESM mode during periodic DB saves.
2026-03-24 20:04:28 -04:00
Paul Huliganga dbdbcf43fa feat(tags): implement tag management with create, assign, and display functionality
Backend:
- Add Tag type definitions (Tag, CreateTagInput, UpdateTagInput)
- Implement TagRepository with CRUD and recipe assignment methods
- Implement TagService with business logic and validation
- Create tag API routes (GET, POST, PUT, DELETE /api/tags)
- Add recipe-tag assignment endpoints (POST/DELETE /api/tags/recipes/:id/tags)
- Write 18 integration tests for tag functionality (all passing)
- Mount tag routes in main Express app

Frontend:
- Extend API client with tag CRUD and assignment methods
- Create useTags hook for tag state management
- Create TagSelector component for tag selection with inline tag creation
- Update RecipeForm to accept initialTags and pass selected tags to onSubmit
- Update RecipeDetailPage to fetch, display, and manage recipe tags
- Update RecipeCard to display tags with custom colors
- Add tag filter UI to RecipeListPage (note: backend filtering pending)
- Display tags in recipe detail view with color styling

Testing:
- All 34 backend tests passing (16 recipe + 18 tag tests)
- Frontend builds successfully with TypeScript strict mode
- Tag assignment and removal working end-to-end

Note: Tag filtering in recipe list shows UI but doesn't filter results yet.
Backend support for tag-based filtering can be added in future iteration.
2026-03-24 04:02:51 -04:00
Paul Huliganga e2599b81f4 feat(api): implement recipe CRUD API endpoints
- Add Recipe type definitions (Recipe, CreateRecipeInput, UpdateRecipeInput)
- Implement RecipeRepository for database operations (CRUD + search)
- Implement RecipeService with business logic validation
- Create Express routes with Zod validation schemas
- Add database initialization module with auto-save functionality
- Implement comprehensive integration tests (16 tests, all passing)
- Support pagination, search filtering, and proper error handling
- Follow layered architecture pattern (Routes → Services → Repositories)

All tests passing (16/16). TypeScript strict mode enabled.
2026-03-24 00:13:58 -04:00
Paul Huliganga 394aa22df1 feat(db): enable schema migration using sql.js and export to data/recipes.db 2026-03-24 00:01:41 -04:00
Paul Huliganga ed1f4f88be feat(backend): initialize Node.js project with Express 2026-03-23 23:40:36 -04:00