Create PR here: https://github.com/lalomorales22/thinker/pull/new/claude/fix-models-page-display-01SHESTTeZ1rd4vhfwFEjLQo
Fix models page display, analytics dashboard, and button functionality
## Summary
This PR fixes critical issues with the models page, analytics dashboard, and implements full button functionality in the Models Library.
### Changes
**1. Models Not Showing After Training (Issue #1)**
- ✅ Training jobs now save model weights using Tinker SDK after completion
- ✅ Model metadata (checkpoint path, training config, metrics) stored in `saved_models`
- ✅ Models page fetches both trained and base models
- ✅ Trained models display at the top with "fine-tuned" badge
**2. Analytics Dashboard Empty (Issue #2)**
- ✅ Created new analytics API endpoints:
- `/api/analytics/summary` - aggregate metrics (total models, training jobs, success rate, GPU hours)
- `/api/analytics/training-runs` - historical training data
- ✅ Frontend fetches and displays analytics with auto-refresh every 5 seconds
- ✅ Shows real-time training job statistics and metrics
**3. Models Library Button Functionality (Issue #3)**
- ✅ **Test in Playground**: Navigates to Playground with model pre-selected
- ✅ **Export Model**: Copies checkpoint path to clipboard with toast notification
- ✅ **Delete Model**: Double-click confirmation with visual feedback (fine-tuned models only)
- ✅ All buttons work in both model card and details sidebar views
### Files Changed (7 files, +460 insertions, -39 deletions)
**Backend:**
- `backend/routes/training.py` - Save model weights after training completes
- `backend/routes/analytics.py` - New analytics endpoints (131 lines)
- `backend/main.py` - Register analytics router
**Frontend:**
- `frontend/src/views/ModelsLibrary.tsx` - Fetch trained models, implement button handlers
- `frontend/src/views/Analytics.tsx` - Fetch and display analytics data
- `frontend/src/views/Playground.tsx` - Support pre-selected models
- `frontend/src/store/useStore.ts` - Add selectedPlaygroundModel state
### Technical Details
**Model Persistence Flow:**
```python
# backend/routes/training.py:170-197
checkpoint_path = await training_client.save_weights_async(name=model_name)
saved_models.append({
"name": model_name,
"checkpoint_path": checkpoint_path,
"training_config": {
"rank": config.rank,
"learning_rate": config.learning_rate,
"num_steps": config.num_steps,
"training_type": config.training_type
},
"final_metrics": job["metrics"]
})Analytics Aggregation:
- Calculates success rate, GPU hours, model count from training jobs
- Transforms training jobs into display-friendly format
- Real-time updates via polling (5-second interval)
Button Event Handling:
// Proper event propagation handling
onClick={(e) => {
e.stopPropagation()
handleTestInPlayground(model)
}}Training → Models Flow:
Training Completes → Save Weights (Tinker SDK) → Add to saved_models →
Frontend Fetches /api/models/ → Displays in Models Library ✅
Analytics Flow:
Training Jobs → Aggregate Metrics → /api/analytics/summary →
Frontend Auto-refresh → Display Cards & Charts ✅
Playground Integration:
Click "Test in Playground" → Set selectedPlaygroundModel (Zustand) →
Navigate to Playground → Auto-select Model ✅
- Models appear in Models Library after training completes
- Analytics dashboard shows correct metrics and training runs
- "Test in Playground" button navigates and pre-selects model
- "Export Model" button copies checkpoint path to clipboard
- "Delete Model" button requires confirmation and removes model
- All buttons work in both list view and sidebar
- Console logging added for debugging
- No TypeScript/build errors
Models Page:
- Trained models appear with "fine-tuned" badge
- Base models listed below
- Performance metrics (loss) displayed
Analytics Dashboard:
- 4 metric cards: Total Models, Training Jobs, Success Rate, GPU Hours
- Training runs table with loss, steps, duration
- Auto-refreshes every 5 seconds
Button Functionality:
- Play button → Playground navigation
- Download button → Toast notification with checkpoint path
- Delete button → Red highlight on first click, deletion on second click
- a0db284 - Fix models page display and analytics dashboard
- c05a5e8 - Implement Models Library button functionalities
- f2e7f67 - Fix Models Library button click handlers
Fixes the following issues reported by user:
- Models not showing up after training completes
- Analytics dashboard showing no data
- Models Library buttons not functioning
All functionality has been implemented and tested. Ready for review! 🚀
---
## Branch Information
- **Source Branch:** `claude/fix-models-page-display-01SHESTTeZ1rd4vhfwFEjLQo`
- **Target Branch:** (default - likely main or master)
- **Commits:** 3 commits
- **Files Changed:** 7 files (+460, -39)