Refactor data fetching architecture from centralized App state to
component-local data management for improved maintainability and
data freshness guarantees.
Changes:
- SettingsModal: Fetch config data on modal open
- RecipePanel: Fetch recipe list on panel open
- IOMonitorPage: Fetch IO list on page mount with real-time updates
- Remove unnecessary props drilling through component hierarchy
- Simplify App.tsx by removing centralized config/recipes state
New feature:
- Add InitializeModal for sequential axis initialization (X, Y, Z)
- Each axis initializes with 3-second staggered start
- Progress bar animation for each axis
- Auto-close on completion
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Backend changes (C#):
- Add CopyRecipe method to MachineBridge
- Generates new GUID for copied recipe
- Returns new recipe with current timestamp
- Add DeleteRecipe method to MachineBridge
- Prevents deletion of currently selected recipe
- Returns success/failure status
- Add COPY_RECIPE and DELETE_RECIPE handlers in WebSocketServer
Frontend changes (React/TypeScript):
- Add CopyRecipe and DeleteRecipe to Window interface types
- Add copyRecipe and deleteRecipe methods to communication layer
- Implement handleCopy in RecipePage
- Prompts user for new name
- Adds copied recipe to list
- Selects newly copied recipe
- Implement handleDelete in RecipePage
- Shows confirmation dialog
- Removes recipe from list
- Selects next available recipe
- Connect Copy and Delete buttons with handlers
- Disable buttons when no recipe is selected
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>