This release transforms PING into a sophisticated newspaper-style digital
publication with enhanced readability and professional presentation.
Major Features:
- New FeaturedPostHero component with full-width newspaper design
- Completely redesigned homepage with responsive newspaper grid layout
- Enhanced PostCard component with refined typography and spacing
- Improved mobile-first responsive design (mobile → tablet → desktop → 2XL)
- Archive section with multi-column layout for deeper content discovery
Technical Improvements:
- Enhanced blog post validation and error handling in lib/blog.ts
- Better date handling and normalization for scheduled posts
- Improved Dockerfile with correct content volume mount paths
- Fixed port configuration (3025 throughout stack)
- Updated Tailwind config with refined typography and newspaper aesthetics
- Added getFeaturedPost() function for hero selection
UI/UX Enhancements:
- Professional newspaper-style borders and dividers
- Improved dark mode styling throughout
- Better content hierarchy and visual flow
- Enhanced author bylines and metadata presentation
- Refined color palette with newspaper sophistication
Documentation:
- Added DESIGN_BRIEF_NEWSPAPER_LAYOUT.md detailing design principles
- Added TESTING_RESULTS_25_POSTS.md with test scenarios
This release establishes PING as a premium publication platform for
AI orchestration and contextual intelligence thought leadership.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Root cause: publishDate was set for future dates (Aug 28/29) when current time is Aug 27
- Fixed by updating publishDate to Aug 27 09:00 UTC (in the past)
- Scheduled post now appears correctly on blog homepage and RSS feed
- Blog v1.1.1 successfully deployed with working scheduled publishing
Issue resolved:
✅ "Why On-prem GPUs Still Matter for AI" now live at blog.chorus.services
✅ Post appears on homepage in Recent Posts section
✅ Post included in RSS feed with full content
✅ Direct post URL accessible: /posts/2025-08-29-on-prem-gpus
✅ Timezone handling working correctly with UTC publishDate
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated blog version to 1.1.0 in package.json
- Built and pushed chorus-blog:v1.1.0 Docker image
- Updated docker-compose.swarm.yml to use new versioned image
- Deployed to production via Docker service update
- RSS feed now live at https://blog.chorus.services/rss.xml
- Scheduled publishing system active for future posts
Production Status:
✅ Blog running on chorus-blog:v1.1.0
✅ RSS feed accessible and generating proper XML
✅ Scheduled posts will auto-publish when dates arrive
✅ No downtime during deployment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Created /rss.xml API route that generates valid RSS 2.0 XML
- RSS feed integrates with scheduled publishing system automatically
- Includes full post content, proper metadata, and CDATA encoding
- Added RSS feed link to HTML metadata for auto-discovery
- RSS link already exists in blog footer navigation
- 1-hour caching with error handling and fallback RSS
- Feed updates automatically when new posts go live
Features:
✅ Works with scheduled posts (future posts excluded)
✅ Proper XML escaping and CDATA content encoding
✅ Rich metadata including author, categories, publish dates
✅ Auto-discovery via HTML <link> tags
✅ Graceful error handling with fallback feed
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced blog library to read from both posts/ and scheduled/ directories
- Added publishDate filtering with real-time checking (no cron jobs needed)
- Support for draft posts and recursive directory scanning
- Posts automatically appear when publishDate is reached
- Containerized solution that works without external scheduling
- Added publishDate field to blog types and updated existing scheduled post
Tested and verified:
✅ Past-dated posts appear automatically
✅ Future-dated posts remain hidden until publish time
✅ Draft posts are excluded regardless of date
✅ Maintains existing functionality for regular posts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Content and scheduled post directories will be managed separately
as Docker volume mounts for easier content management.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Next.js 14 blog application with theme support
- Docker containerization with volume bindings
- Traefik integration with Let's Encrypt SSL
- MDX support for blog posts
- Theme toggle with localStorage persistence
- Scheduled posts directory structure
- Brand guidelines compliance with CHORUS colors
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>