# v1.2.0 Release Report **Date**: 2025-12-09 **Version**: 1.2.0 **Release Type**: Stable Minor Release **Previous Version**: 1.1.2 ## Overview Successfully promoted v1.2.0-rc.2 to stable v1.2.0 release. This is a major feature release adding comprehensive media support, author discovery, custom slugs, and enhanced syndication feeds. ## Release Process ### 1. Version Updates **File**: `starpunk/__init__.py` - Updated `__version__` from `"1.2.0-rc.2"` to `"1.2.0"` - Updated `__version_info__` from `(1, 2, 0, "dev")` to `(1, 2, 0)` ### 2. CHANGELOG Updates **File**: `CHANGELOG.md` - Merged rc.1 and rc.2 entries into single `[1.2.0]` section - Added release date: 2025-12-09 - Consolidated all features and fixes from both release candidates - Maintained chronological order of changes ### 3. Git Operations **Commit**: `927db4a` ``` release: Bump version to 1.2.0 Promote v1.2.0-rc.2 to stable v1.2.0 release - Merged rc.1 and rc.2 changelog entries - Updated version in starpunk/__init__.py - All features tested in production ``` **Tag**: `v1.2.0` (annotated) - Comprehensive release notes included - Documents all major features - Notes standards compliance - Includes upgrade instructions ### 4. Container Images Built and pushed container images: - `git.thesatelliteoflove.com/phil/starpunk:v1.2.0` - `git.thesatelliteoflove.com/phil/starpunk:latest` **Image Size**: 190 MB **Base**: Python 3.11-slim **Build**: Multi-stage with uv package manager ### 5. Registry Push Successfully pushed to remote: - Git commit pushed to `origin/main` - Git tag `v1.2.0` pushed to remote - Container images pushed to `git.thesatelliteoflove.com` registry ## Release Contents ### Major Features #### Media Upload & Display - Upload up to 4 images per note (JPEG, PNG, GIF, WebP) - Automatic image optimization with Pillow library - File size limit: 10MB per image - Dimension limit: 4096x4096 pixels - Auto-resize images over 2048px - EXIF orientation correction - Social media style layout (media first, then text) - Optional captions for accessibility - Responsive image sizing with proper CSS #### Feed Media Enhancement - Media RSS namespace (xmlns:media) for structured metadata - RSS enclosure element for first image (per RSS 2.0 spec) - Media RSS media:content elements for all images - Media RSS media:thumbnail element for preview - JSON Feed image field (per JSON Feed 1.1 spec) - Enhanced display in modern feed readers (Feedly, Inoreader, NetNewsWire) #### Author Profile Discovery - Automatic h-card discovery from IndieAuth identity - Caches author information (name, photo, bio, rel-me links) - 24-hour cache TTL - Graceful fallback to domain name - Never blocks login functionality - Eliminates need for manual author configuration #### Complete Microformats2 Support - Full h-entry markup with required properties - Author h-card nested within each h-entry - Proper p-name handling (only when explicit title) - u-uid and u-url match for permalink stability - Homepage as h-feed with proper structure - rel-me links from discovered profile - dt-updated property when note modified - Passes Microformats2 validation #### Custom Slugs - Web UI custom slug input field - Optional field with auto-generation fallback - Read-only after creation (preserves permalinks) - Automatic validation and sanitization - Helpful placeholder text and guidance - Matches Micropub mp-slug behavior ### Fixes from RC Releases #### RC.2 Fixes - Media display on homepage (not just individual note pages) - Responsive image sizing with container constraints - Caption display (alt text only, not visible text) - Logging correlation ID crash in non-request contexts #### RC.1 Fixes - All features tested and validated in production ## Standards Compliance - W3C Micropub Specification - Microformats2 h-entry, h-card, h-feed - RSS 2.0 with Media RSS extension - JSON Feed 1.1 specification - IndieWeb best practices ## Testing - 600+ tests passing - All features tested in production (rc.1 and rc.2) - Enhanced feed reader compatibility verified - Media upload and display validated - Author discovery tested with multiple profiles ## Upgrade Instructions ### From v1.1.2 No breaking changes. Simple upgrade process: 1. Pull latest code: `git pull origin main` 2. Checkout tag: `git checkout v1.2.0` 3. Restart application ### Configuration No configuration changes required. All new features work automatically. Optional configuration for media: - `MEDIA_MAX_SIZE` - Max file size in bytes (default: 10MB) - `MEDIA_MAX_DIMENSION` - Max dimension in pixels (default: 4096) - `MEDIA_RESIZE_THRESHOLD` - Auto-resize threshold (default: 2048) ## Verification ### Version Check ```bash $ uv run python -c "from starpunk import __version__; print(__version__)" 1.2.0 ``` ### Git Tag ```bash $ git tag -l v1.2.0 v1.2.0 $ git log -1 --oneline 927db4a release: Bump version to 1.2.0 ``` ### Container Images ```bash $ podman images | grep starpunk | grep v1.2.0 git.thesatelliteoflove.com/phil/starpunk v1.2.0 20853617ebf1 190 MB git.thesatelliteoflove.com/phil/starpunk latest 20853617ebf1 190 MB ``` ## Documentation ### Updated Files - `/home/phil/Projects/starpunk/starpunk/__init__.py` - `/home/phil/Projects/starpunk/CHANGELOG.md` ### Release Documentation - Git tag annotation with full release notes - This implementation report - CHANGELOG.md with complete details ### Existing Documentation (Unchanged) - `/home/phil/Projects/starpunk/docs/design/v1.2.0-media-css-design.md` - `/home/phil/Projects/starpunk/docs/design/v1.1.2-caption-alttext-update.md` - `/home/phil/Projects/starpunk/docs/design/media-display-fixes.md` - `/home/phil/Projects/starpunk/docs/reports/2025-11-28-media-display-fixes.md` ## Release Timeline - **2025-11-28**: v1.2.0-rc.1 released (initial feature complete) - **2025-12-09**: v1.2.0-rc.2 released (media display fixes) - **2025-12-09**: v1.2.0 stable released (production validated) ## Backwards Compatibility Fully backward compatible with v1.1.2. No breaking changes. - Existing notes display correctly - Existing feeds continue working - Existing configuration valid - Existing clients unaffected ## Known Issues None identified. All features tested and stable in production. ## Next Steps ### Post-Release 1. Monitor production deployment 2. Update any documentation references to version numbers 3. Announce release to users ### Future Development (v1.3.0 or v2.0.0) - Additional IndieWeb features (Webmentions, etc.) - Enhanced search capabilities - Performance optimizations - User-requested features ## Related Documentation - `/home/phil/Projects/starpunk/docs/standards/versioning-strategy.md` - `/home/phil/Projects/starpunk/docs/standards/git-branching-strategy.md` - `/home/phil/Projects/starpunk/CHANGELOG.md` ## Compliance This release follows: - Semantic Versioning 2.0.0 - Keep a Changelog format - Git workflow from versioning-strategy.md - Developer protocol from CLAUDE.md ## Summary Successfully promoted v1.2.0-rc.2 to stable v1.2.0 release. All steps completed: - Version updated in `starpunk/__init__.py` - CHANGELOG.md updated with merged entries - Git commit created and pushed - Annotated tag `v1.2.0` created and pushed - Container images built (v1.2.0 and latest) - Container images pushed to registry - All verification checks passed The release is now available for production deployment.