# StarPunk v1.0.1 Hotfix Release Plan ## Bug Description **Issue**: Micropub Location header returns URL with double slash - **Severity**: Medium (functional but aesthetically incorrect) - **Impact**: Micropub clients receive malformed redirect URLs - **Example**: `https://starpunk.thesatelliteoflove.com//notes/slug-here` ## Version Information - **Current Version**: v1.0.0 (released 2025-11-24) - **Fix Version**: v1.0.1 - **Type**: PATCH (backward-compatible bug fix) - **Branch Strategy**: hotfix/1.0.1-micropub-url ## Root Cause SITE_URL configuration includes trailing slash (required for IndieAuth), but Micropub handler adds leading slash when constructing URLs, resulting in double slash. ## Fix Implementation ### Code Changes Required #### 1. File: `starpunk/micropub.py` **Line 311** - In `handle_create` function: ```python # BEFORE: permalink = f"{site_url}/notes/{note.slug}" # AFTER: permalink = f"{site_url}notes/{note.slug}" ``` **Line 381** - In `handle_query` function: ```python # BEFORE: "url": [f"{site_url}/notes/{note.slug}"], # AFTER: "url": [f"{site_url}notes/{note.slug}"], ``` ### Files to Update 1. **starpunk/micropub.py** - Fix URL construction (2 locations) 2. **starpunk/__init__.py** - Update version to "1.0.1" 3. **CHANGELOG.md** - Add v1.0.1 entry 4. **tests/test_micropub.py** - Add regression test for URL format ## Implementation Steps ### For Developer (using agent-developer) 1. **Create hotfix branch**: ```bash git checkout -b hotfix/1.0.1-micropub-url v1.0.0 ``` 2. **Apply the fix**: - Edit `starpunk/micropub.py` (remove leading slash in 2 locations) - Add comment explaining SITE_URL has trailing slash 3. **Add regression test**: - Test that Location header has no double slash - Test URL in Microformats2 response has no double slash 4. **Update version**: - `starpunk/__init__.py`: Change `__version__ = "1.0.0"` to `"1.0.1"` - Update `__version_info__ = (1, 0, 1)` 5. **Update CHANGELOG.md**: ```markdown ## [1.0.1] - 2025-11-25 ### Fixed - Micropub Location header no longer contains double slash in URL - Microformats2 query response URLs no longer contain double slash ### Technical Details - Fixed URL construction in micropub.py to account for SITE_URL trailing slash - Added regression tests for URL format validation ``` 6. **Run tests**: ```bash uv run pytest tests/test_micropub.py -v uv run pytest # Run full test suite ``` 7. **Commit changes**: ```bash git add . git commit -m "Fix double slash in Micropub URL construction - Remove leading slash when constructing URLs with SITE_URL - SITE_URL already includes trailing slash per IndieAuth spec - Fixes malformed Location header in Micropub responses Fixes double slash issue reported after v1.0.0 release" ``` 8. **Tag release**: ```bash git tag -a v1.0.1 -m "Hotfix 1.0.1: Fix double slash in Micropub URLs Fixes: - Micropub Location header URL format - Microformats2 query response URL format See CHANGELOG.md for details." ``` 9. **Merge to main**: ```bash git checkout main git merge hotfix/1.0.1-micropub-url --no-ff ``` 10. **Push changes**: ```bash git push origin main git push origin v1.0.1 ``` 11. **Clean up**: ```bash git branch -d hotfix/1.0.1-micropub-url ``` 12. **Update deployment**: - Pull latest changes on production server - Restart application - Verify fix with Micropub client ## Testing Checklist ### Pre-Release Testing - [ ] Micropub create returns correct Location header (no double slash) - [ ] Micropub query returns correct URLs (no double slash) - [ ] Test with actual Micropub client (e.g., Quill) - [ ] Verify with different SITE_URL configurations - [ ] All existing tests pass - [ ] New regression tests pass ### Post-Release Verification - [ ] Create post via Micropub client - [ ] Verify redirect URL is correct - [ ] Check existing notes still accessible - [ ] RSS feed still works correctly - [ ] No other URL construction issues ## Time Estimate - **Code changes**: 5 minutes - **Testing**: 15 minutes - **Documentation updates**: 10 minutes - **Release process**: 10 minutes - **Total**: ~40 minutes ## Risk Assessment - **Risk Level**: Low - **Rollback Plan**: Revert to v1.0.0 tag if issues arise - **No database changes**: No migration required - **No configuration changes**: No user action required - **Backward compatible**: Existing data unaffected ## Additional Considerations ### Future Prevention 1. **Document SITE_URL convention**: Add clear comments about trailing slash 2. **Consider URL builder utility**: For v2.0, consider centralized URL construction 3. **Review other URL constructions**: Audit codebase for similar patterns ### Communication - No urgent user notification needed (cosmetic issue) - Update project README with latest version after release - Note fix in any active discussions about the project ## Alternative Approaches (Not Chosen) 1. Strip trailing slash at usage - Adds unnecessary processing 2. Change config format - Breaking change, not suitable for hotfix 3. Add URL utility function - Over-engineering for hotfix ## Success Criteria - Micropub clients receive properly formatted URLs - No regression in existing functionality - Clean git history with proper version tags - Documentation updated appropriately --- **Release Manager Notes**: This is a straightforward fix with minimal risk. The key is ensuring both locations in micropub.py are updated and properly tested before release.