309 lines
7.5 KiB
Markdown
309 lines
7.5 KiB
Markdown
# BREEDR v0.4.0 Release Notes
|
||
|
||
**Release Date:** March 9, 2026
|
||
**Branch:** `docs/clean-schema-and-roadmap-update`
|
||
**Focus:** Clean Database Schema & Documentation Overhaul
|
||
|
||
---
|
||
|
||
## 🆕 What's New
|
||
|
||
### Clean Database Architecture
|
||
|
||
We've completely overhauled the database design for simplicity and correctness:
|
||
|
||
- **✅ NO MORE MIGRATIONS** - Fresh init creates correct schema automatically
|
||
- **✅ Removed weight/height columns** - Never implemented, now gone
|
||
- **✅ Added litter_id column** - Proper linking of puppies to litters
|
||
- **✅ Parents table approach** - NO sire/dam columns in dogs table
|
||
- **✅ Normalized relationships** - Sire/dam stored in separate parents table
|
||
|
||
### Why This Matters
|
||
|
||
The old schema had:
|
||
- Migration scripts trying to fix schema issues
|
||
- `sire_id` and `dam_id` columns causing "no such column" errors
|
||
- Complex migration logic that could fail
|
||
|
||
The new schema:
|
||
- ✅ Clean initialization - always correct
|
||
- ✅ Normalized design - proper relationships
|
||
- ✅ Simple maintenance - no migration tracking
|
||
- ✅ Better logging - see exactly what's happening
|
||
|
||
---
|
||
|
||
## 🛠️ Technical Changes
|
||
|
||
### Database
|
||
|
||
**Removed:**
|
||
- `dogs.weight` column (never implemented)
|
||
- `dogs.height` column (never implemented)
|
||
- `dogs.sire_id` column (moved to parents table)
|
||
- `dogs.dam_id` column (moved to parents table)
|
||
- `server/db/migrations.js` (no more migrations)
|
||
|
||
**Added:**
|
||
- `dogs.litter_id` column with foreign key to litters
|
||
- `parents` table for sire/dam relationships
|
||
- Clean `server/db/init.js` as single source of truth
|
||
|
||
### API Changes
|
||
|
||
**server/routes/dogs.js:**
|
||
- Fixed parent handling - properly uses parents table
|
||
- Added detailed logging for relationship creation
|
||
- Removed schema detection logic
|
||
- Cleaner error messages
|
||
|
||
**server/index.js:**
|
||
- Removed migrations import and execution
|
||
- Simplified startup - just calls initDatabase()
|
||
- Better console output with status indicators
|
||
|
||
### Documentation
|
||
|
||
**New Files:**
|
||
- `DATABASE.md` - Complete schema reference
|
||
- `CLEANUP_NOTES.md` - Lists outdated files to remove
|
||
- `RELEASE_NOTES_v0.4.0.md` - This file
|
||
|
||
**Updated Files:**
|
||
- `README.md` - Current features and setup instructions
|
||
- `ROADMAP.md` - Accurate progress tracking and version history
|
||
|
||
**Outdated Files (Manual Deletion Required):**
|
||
- `DATABASE_MIGRATIONS.md`
|
||
- `DEPLOY_NOW.md`
|
||
- `FEATURE_IMPLEMENTATION.md`
|
||
- `FRONTEND_FIX_REQUIRED.md`
|
||
- `IMPLEMENTATION_PLAN.md`
|
||
- `SPRINT1_PEDIGREE_COMPLETE.md`
|
||
- `migrate-now.sh`
|
||
|
||
See `CLEANUP_NOTES.md` for details.
|
||
|
||
---
|
||
|
||
## 🚀 Upgrade Instructions
|
||
|
||
### For Fresh Installs
|
||
|
||
No action needed! The database will initialize correctly:
|
||
|
||
```bash
|
||
git clone https://git.alwisp.com/jason/breedr.git
|
||
cd breedr
|
||
git checkout docs/clean-schema-and-roadmap-update
|
||
docker-compose up -d
|
||
```
|
||
|
||
### For Existing Installations
|
||
|
||
**Important:** This update requires starting with a fresh database.
|
||
|
||
1. **Backup your data:**
|
||
```bash
|
||
cp data/breedr.db data/breedr.db.backup
|
||
```
|
||
|
||
2. **Stop the application:**
|
||
```bash
|
||
docker-compose down
|
||
```
|
||
|
||
3. **Delete old database:**
|
||
```bash
|
||
rm data/breedr.db
|
||
```
|
||
|
||
4. **Pull latest code:**
|
||
```bash
|
||
git pull origin docs/clean-schema-and-roadmap-update
|
||
```
|
||
|
||
5. **Rebuild and restart:**
|
||
```bash
|
||
docker-compose up -d --build
|
||
```
|
||
|
||
6. **Verify database:**
|
||
```bash
|
||
docker exec -it breedr sqlite3 /app/data/breedr.db ".schema dogs"
|
||
```
|
||
|
||
You should see `litter_id` but **NO** `sire_id`, `dam_id`, `weight`, or `height` columns.
|
||
|
||
### Data Migration Notes
|
||
|
||
**Parent Relationships:**
|
||
- Cannot be automatically migrated due to schema change
|
||
- You'll need to re-enter sire/dam relationships for existing dogs
|
||
- Use the dog edit form or litter linking feature
|
||
|
||
**All Other Data:**
|
||
- Basic dog info (name, breed, sex, etc.) can be re-entered
|
||
- Photos will need to be re-uploaded
|
||
- Consider this a fresh start with a clean, correct schema
|
||
|
||
---
|
||
|
||
## 🐛 Bug Fixes
|
||
|
||
- ✅ **Fixed:** "no such column: sire" errors
|
||
- ✅ **Fixed:** "no such column: weight" errors
|
||
- ✅ **Fixed:** "no such column: height" errors
|
||
- ✅ **Fixed:** Parent relationships not saving properly
|
||
- ✅ **Fixed:** Schema detection failures on startup
|
||
- ✅ **Fixed:** Migration system complexity
|
||
|
||
---
|
||
|
||
## 📚 Documentation Updates
|
||
|
||
### DATABASE.md
|
||
|
||
Comprehensive database documentation including:
|
||
- Schema design principles
|
||
- All table structures with SQL
|
||
- API usage examples
|
||
- Query examples for relationships
|
||
- Fresh install instructions
|
||
- Troubleshooting guide
|
||
|
||
### README.md
|
||
|
||
Updated with:
|
||
- Current feature list
|
||
- Clean schema explanation
|
||
- Fresh install vs upgrade instructions
|
||
- Troubleshooting for common errors
|
||
- Links to documentation
|
||
|
||
### ROADMAP.md
|
||
|
||
Updated with:
|
||
- Phase 1-3 marked complete
|
||
- v0.4.0 release notes
|
||
- Current sprint focus recommendations
|
||
- Version history
|
||
|
||
---
|
||
|
||
## 🧐 Developer Notes
|
||
|
||
### New Development Workflow
|
||
|
||
**For database changes:**
|
||
1. Edit `server/db/init.js` only
|
||
2. Test with fresh database: `rm data/breedr.db && npm run dev`
|
||
3. Update `DATABASE.md` documentation
|
||
4. No migrations needed!
|
||
|
||
**For API changes involving parents:**
|
||
- Use `parents` table for sire/dam relationships
|
||
- Check `server/routes/dogs.js` for examples
|
||
- Log relationship creation for debugging
|
||
|
||
### Testing
|
||
|
||
Test these scenarios:
|
||
1. Fresh install - database created correctly
|
||
2. Add dog with sire/dam - parents table populated
|
||
3. Add dog via litter - litter_id set, parents auto-linked
|
||
4. View dog details - parents and offspring shown correctly
|
||
5. Pedigree view - multi-generation tree displays
|
||
|
||
---
|
||
|
||
## 📊 What's Next
|
||
|
||
### Recommended Next Features
|
||
|
||
1. **Trial Pairing Simulator** (4-6 hours)
|
||
- Uses existing COI calculator backend
|
||
- High value for breeding decisions
|
||
- Relatively quick to implement
|
||
|
||
2. **Health Records System** (6-8 hours)
|
||
- Important for breeding decisions
|
||
- Vaccination tracking
|
||
- Document management
|
||
|
||
3. **Heat Cycle Management** (6-8 hours)
|
||
- Natural extension of litter management
|
||
- Calendar functionality
|
||
- Breeding planning
|
||
|
||
See `ROADMAP.md` for full details.
|
||
|
||
---
|
||
|
||
## ℹ️ Support
|
||
|
||
**Documentation:**
|
||
- [DATABASE.md](DATABASE.md) - Schema reference
|
||
- [README.md](README.md) - Project overview
|
||
- [ROADMAP.md](ROADMAP.md) - Development plan
|
||
- [CLEANUP_NOTES.md](CLEANUP_NOTES.md) - File cleanup guide
|
||
|
||
**Common Issues:**
|
||
- "no such column" errors → Delete database and restart
|
||
- Parents not saving → Check server logs for relationship creation
|
||
- Schema looks wrong → Verify with `.schema dogs` command
|
||
|
||
**Logs:**
|
||
```bash
|
||
docker logs breedr
|
||
```
|
||
|
||
---
|
||
|
||
## 🎉 Credits
|
||
|
||
Clean schema design and implementation by the BREEDR development team.
|
||
|
||
Special thanks for thorough testing and validation of the new database architecture.
|
||
|
||
---
|
||
|
||
## 📝 Changelog Summary
|
||
|
||
### Added
|
||
- Clean database initialization system
|
||
- `dogs.litter_id` column
|
||
- `parents` table for relationships
|
||
- DATABASE.md documentation
|
||
- Detailed logging for debugging
|
||
- CLEANUP_NOTES.md
|
||
- RELEASE_NOTES_v0.4.0.md
|
||
|
||
### Changed
|
||
- Database init is now single source of truth
|
||
- Parent relationships use parents table
|
||
- README.md updated
|
||
- ROADMAP.md updated
|
||
- Simplified server startup
|
||
|
||
### Removed
|
||
- Migration system (`server/db/migrations.js`)
|
||
- `dogs.weight` column
|
||
- `dogs.height` column
|
||
- `dogs.sire_id` column
|
||
- `dogs.dam_id` column
|
||
- Schema detection logic
|
||
- Outdated documentation (marked for deletion)
|
||
|
||
### Fixed
|
||
- "no such column" errors
|
||
- Parent relationship saving
|
||
- Schema consistency issues
|
||
- Migration failures
|
||
|
||
---
|
||
|
||
**Full Diff:** [Compare branches on Gitea](https://git.alwisp.com/jason/breedr/compare/feature/enhanced-litters-and-pedigree...docs/clean-schema-and-roadmap-update)
|
||
|
||
**Next Release:** v0.5.0 - Trial Pairing Simulator (planned)
|