diff --git a/CLAUDE.md b/CLAUDE.md index 62359fb..43232c6 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -139,8 +139,8 @@ This is a fork with UX improvements. Issues are tracked on the Gitea instance ab | 11 | Slicer Integration / Print Jobs | ✅ DONE | | 12 | Redesign Home Page Dashboard | ✅ DONE | | 13 | Batch Operations (Multi-Select Edit) | ✅ DONE | -| 14 | Extra Weight Field (DryPods, etc.) | **Open** | -| 15 | Spool Count per Filament in List | **Open** | +| 14 | Extra Weight Field (DryPods, etc.) | ✅ DONE | +| 15 | Spool Count per Filament in List | ✅ DONE | ### Other Features (not tracked in Gitea) - ✅ Theme Colors (5 options) @@ -148,6 +148,9 @@ This is a fork with UX improvements. Issues are tracked on the Gitea instance ab - ✅ QR Code Size Setting - ✅ Parse Temps from Comments - ✅ Prev/Next Navigation on Edit Pages +- ✅ Price/Cost Tracking (remaining value, inventory value) +- ✅ Print History on Spool Detail +- ✅ Usage Analytics Dashboard - ✅ Color Column in Spool List (with filter) ### Issue #1 Complete - Inline Creation Modals @@ -411,6 +414,67 @@ Multi-select spools with bulk archive/delete/move actions. - Archive, unarchive, delete, move to location - Confirmation modals for all destructive actions +### Issue #14 Complete - Extra Weight Field + +Track extra weight from DryPods, custom spool holders, or other accessories. + +**Backend:** +- `spoolman/database/models.py` - Added `extra_weight` column to Spool model +- `spoolman/database/spool.py` - Updated `measure()` to account for extra weight +- `spoolman/api/v1/spool.py` - Added `extra_weight` to create/update parameters +- `migrations/versions/2025_01_21_0200-*.py` - Migration for extra_weight column + +**Frontend:** +- `client/src/pages/spools/create.tsx` - Added extra_weight form field +- `client/src/pages/spools/edit.tsx` - Added extra_weight form field +- Weight calculations updated to include extra_weight in gross weight + +**Features:** +- Optional field for tracking additional weight on spool +- Automatically subtracted when measuring spool weight +- Useful for DryPods, custom spool holders, reel adapters + +### Issue #15 Complete - Spool Count per Filament + +Already implemented - filament list shows `spool_count` and `total_remaining_weight` columns. + +### Price & Cost Tracking + +Track spool purchase price and calculate remaining value. + +**Backend:** +- `spoolman/api/v1/models.py` - Added `remaining_value` computed field +- Formula: `remaining_value = (remaining_weight / initial_weight) * price` +- Price falls back to filament price if not set on spool + +**Frontend:** +- `client/src/pages/spools/list.tsx` - Added remaining_value column (hidden by default) +- `client/src/pages/home/components/QuickStats.tsx` - Added "Inventory Value" stat + +### Print History on Spool Detail + +Show print job history on the spool detail page. + +**Frontend:** +- `client/src/pages/spools/show.tsx` - Added collapsible print history table +- Fetches print jobs filtered by spool_id +- Shows: Created date, Filename, Filament Used, Status, Finished date + +### Usage Analytics Dashboard + +Time-series charts showing filament consumption trends. + +**Backend:** +- `spoolman/api/v1/other.py` - New analytics endpoints: + - `GET /analytics/usage?days=N` - Daily usage from SpoolAdjustments + - `GET /analytics/by-material?days=N` - Usage breakdown by material + +**Frontend:** +- `client/src/pages/home/components/UsageAnalytics.tsx` - New component +- Area chart showing daily consumption (recharts) +- Period selector: 7, 30, or 90 days +- Material breakdown cards showing usage by filament type + --- ## Deployment