Complete implementation of v1.2.0 "IndieWeb Features" release. ## Phase 1: Custom Slugs - Optional custom slug field in note creation form - Auto-sanitization (lowercase, hyphens only) - Uniqueness validation with auto-numbering - Read-only after creation to preserve permalinks - Matches Micropub mp-slug behavior ## Phase 2: Author Discovery + Microformats2 - Automatic h-card discovery from IndieAuth identity URL - 24-hour caching with graceful fallback - Never blocks login (per ADR-061) - Complete h-entry, h-card, h-feed markup - All required Microformats2 properties - rel-me links for identity verification - Passes IndieWeb validation ## Phase 3: Media Upload - Upload up to 4 images per note (JPEG, PNG, GIF, WebP) - Automatic optimization with Pillow - Auto-resize to 2048px - EXIF orientation correction - 95% quality compression - Social media-style layout (media top, text below) - Optional captions for accessibility - Integration with all feed formats (RSS, ATOM, JSON Feed) - Date-organized storage with UUID filenames - Immutable caching (1 year) ## Database Changes - migrations/006_add_author_profile.sql - Author discovery cache - migrations/007_add_media_support.sql - Media storage ## New Modules - starpunk/author_discovery.py - h-card discovery and caching - starpunk/media.py - Image upload, validation, optimization ## Documentation - 4 new ADRs (056, 057, 058, 061) - Complete design specifications - Developer Q&A with 40+ questions answered - 3 implementation reports - 3 architect reviews (all approved) ## Testing - 56 new tests for v1.2.0 features - 842 total tests in suite - All v1.2.0 feature tests passing ## Dependencies - Added: mf2py (Microformats2 parser) - Added: Pillow (image processing) Version: 1.2.0-rc.1 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
222 lines
7.4 KiB
Markdown
222 lines
7.4 KiB
Markdown
# StarPunk v1.X.X IndieWeb-Focused Release Options
|
|
|
|
*Created: 2025-11-28*
|
|
*Status: Options for architect review*
|
|
|
|
Based on analysis of current implementation gaps and IndieWeb specifications, here are three genuinely different paths forward for full IndieWeb protocol support.
|
|
|
|
---
|
|
|
|
## Option A: v1.2.0 "Conversation" - Webmention & Reply Context
|
|
|
|
**Focus:** Enable two-way conversations between IndieWeb sites
|
|
|
|
**What's Missing Now:**
|
|
- Zero Webmention support (no sending, no receiving)
|
|
- No reply context display (when replying to others)
|
|
- No backlinks/responses display
|
|
- No notification system for mentions
|
|
|
|
**What You'll Get:**
|
|
- **Webmention Sending** (W3C Webmention spec)
|
|
- Automatic endpoint discovery via HTTP headers/HTML links
|
|
- Send notifications when mentioning/replying to other sites
|
|
- Queue system for reliable delivery with retries
|
|
- **Webmention Receiving** (W3C Webmention spec)
|
|
- Advertise endpoint in HTML and HTTP headers
|
|
- Verify source mentions target
|
|
- Store and display incoming mentions (likes, replies, reposts)
|
|
- **Reply Context** (IndieWeb reply-context spec)
|
|
- Fetch and display content you're replying to
|
|
- Parse microformats2 from source
|
|
- Cache reply contexts locally
|
|
- **Response Display** (facepile pattern)
|
|
- Show likes/reposts as compact avatars
|
|
- Display full replies with author info
|
|
- Separate responses by type
|
|
|
|
**IndieWeb Specs:**
|
|
- W3C Webmention: https://www.w3.org/TR/webmention/
|
|
- Reply-context: https://indieweb.org/reply-context
|
|
- Response display: https://indieweb.org/responses
|
|
- Facepile: https://indieweb.org/facepile
|
|
|
|
**Completion Criteria:**
|
|
- Pass webmention.rocks test suite (21 tests)
|
|
- Successfully send/receive with 3+ IndieWeb sites
|
|
- Display reply contexts with proper h-cite markup
|
|
- Show incoming responses grouped by type
|
|
|
|
**User Value:**
|
|
Transform StarPunk from broadcast-only to conversational. Users can reply to other IndieWeb posts and see who's engaging with their content. Creates a decentralized comment system.
|
|
|
|
**Scope:** 8-10 weeks
|
|
|
|
---
|
|
|
|
## Option B: v1.3.0 "Studio" - Complete Micropub Media & Post Types
|
|
|
|
**Focus:** Full Micropub spec compliance with rich media and diverse post types
|
|
|
|
**What's Missing Now:**
|
|
- No media endpoint (can't upload images/audio/video)
|
|
- No update/delete via Micropub (create-only)
|
|
- No syndication targets
|
|
- Only supports notes (no articles, photos, bookmarks, etc.)
|
|
- No query support beyond basic config
|
|
|
|
**What You'll Get:**
|
|
- **Micropub Media Endpoint** (W3C Micropub spec section 3.7)
|
|
- Accept multipart uploads for images/audio/video
|
|
- Generate URLs for uploaded media
|
|
- Return media URL to client for embedding
|
|
- Basic image resizing/optimization
|
|
- **Micropub Updates/Deletes** (W3C Micropub spec sections 3.3-3.4)
|
|
- Replace/add/delete specific properties
|
|
- Full post deletion support
|
|
- JSON syntax for complex updates
|
|
- **Post Type Discovery** (IndieWeb post-type-discovery)
|
|
- Articles (with titles)
|
|
- Photos (image-centric posts)
|
|
- Bookmarks (link saving)
|
|
- Likes (marking favorites)
|
|
- Reposts (sharing others' content)
|
|
- Audio/Video posts
|
|
- **Syndication Targets** (Micropub syndicate-to)
|
|
- Configure external targets (Mastodon, Twitter bridges)
|
|
- POSSE implementation
|
|
- Return syndication URLs
|
|
|
|
**IndieWeb Specs:**
|
|
- W3C Micropub (complete): https://www.w3.org/TR/micropub/
|
|
- Post Type Discovery: https://indieweb.org/post-type-discovery
|
|
- POSSE: https://indieweb.org/POSSE
|
|
|
|
**Completion Criteria:**
|
|
- Pass micropub.rocks full test suite (not just create)
|
|
- Support all major post types with proper templates
|
|
- Successfully syndicate to 2+ external services
|
|
- Handle media uploads from mobile apps
|
|
|
|
**User Value:**
|
|
Use any Micropub client (Indigenous, Quill, etc.) with full features. Post photos from your phone, save bookmarks, like posts, all through standard clients. Syndicate to social media automatically.
|
|
|
|
**Scope:** 10-12 weeks
|
|
|
|
---
|
|
|
|
## Option C: v1.4.0 "Identity" - Complete Microformats2 & IndieAuth Provider
|
|
|
|
**Focus:** Become a full IndieWeb identity provider and improve content markup
|
|
|
|
**What's Missing Now:**
|
|
- Minimal h-entry markup (missing author, location, syndication)
|
|
- No h-card on pages (no author identity)
|
|
- No h-feed markup enhancements
|
|
- No rel=me verification
|
|
- Using external IndieAuth (not self-hosted)
|
|
- No authorization endpoint
|
|
- No token endpoint
|
|
|
|
**What You'll Get:**
|
|
- **Complete h-entry Microformats2** (microformats2 spec)
|
|
- Author h-card embedded in each post
|
|
- Location (p-location with h-geo/h-adr)
|
|
- Syndication links (u-syndication)
|
|
- In-reply-to markup (u-in-reply-to)
|
|
- Categories/tags (p-category)
|
|
- **Author h-card** (microformats2 h-card)
|
|
- Full profile page with h-card
|
|
- Representative h-card on homepage
|
|
- Contact info, bio, social links
|
|
- rel=me links for verification
|
|
- **Enhanced h-feed** (microformats2 h-feed)
|
|
- Feed name and author
|
|
- Pagination with rel=prev/next
|
|
- Feed photo/summary
|
|
- **IndieAuth Provider** (IndieAuth spec)
|
|
- Authorization endpoint (login to other sites with your domain)
|
|
- Token endpoint (issue access tokens)
|
|
- Client registration support
|
|
- Scope management
|
|
- Token revocation interface
|
|
|
|
**IndieWeb Specs:**
|
|
- Microformats2: http://microformats.org/wiki/microformats2
|
|
- h-card: http://microformats.org/wiki/h-card
|
|
- h-entry: http://microformats.org/wiki/h-entry
|
|
- IndieAuth: https://indieauth.spec.indieweb.org/
|
|
- rel=me: https://indieweb.org/rel-me
|
|
|
|
**Completion Criteria:**
|
|
- Pass IndieWebify.me full validation
|
|
- Successfully authenticate to 5+ IndieWeb services
|
|
- Parse correctly in all major microformats2 parsers
|
|
- Provide IndieAuth to other sites (eat your own dogfood)
|
|
|
|
**User Value:**
|
|
Your site becomes your identity across the web. Log into any IndieWeb service with your domain. Rich markup makes your content parse perfectly everywhere. No dependency on external auth services.
|
|
|
|
**Scope:** 6-8 weeks
|
|
|
|
---
|
|
|
|
## Recommendation Rationale
|
|
|
|
Each option represents a fundamentally different IndieWeb capability:
|
|
|
|
- **Option A (Conversation)**: Makes StarPunk social and interactive
|
|
- **Option B (Studio)**: Makes StarPunk a complete publishing platform
|
|
- **Option C (Identity)**: Makes StarPunk an identity provider
|
|
|
|
All three are essential for "full IndieWeb support" but focus on different protocols:
|
|
|
|
- A focuses on **Webmention** (W3C Recommendation)
|
|
- B focuses on **Micropub** completion (W3C Recommendation)
|
|
- C focuses on **Microformats2** & **IndieAuth** (IndieWeb specs)
|
|
|
|
## Current Implementation Gaps Summary
|
|
|
|
Based on code analysis:
|
|
|
|
### Micropub (`starpunk/micropub.py`)
|
|
✅ Create notes (basic)
|
|
✅ Query config
|
|
✅ Query source
|
|
❌ Media endpoint
|
|
❌ Updates (replace/add/delete)
|
|
❌ Deletes
|
|
❌ Syndication targets
|
|
❌ Query for syndicate-to
|
|
|
|
### Microformats (templates)
|
|
✅ Basic h-entry (content, published date, URL)
|
|
✅ Basic h-feed wrapper
|
|
❌ Author h-card
|
|
❌ Complete h-entry properties
|
|
❌ rel=me links
|
|
❌ h-feed metadata
|
|
|
|
### Webmention
|
|
❌ No implementation at all
|
|
|
|
### IndieAuth
|
|
✅ Client (using indielogin.com)
|
|
❌ No provider capability
|
|
|
|
### Post Types
|
|
✅ Notes
|
|
❌ Articles, photos, bookmarks, likes, reposts, etc.
|
|
|
|
---
|
|
|
|
## Decision Factors
|
|
|
|
Consider these when choosing:
|
|
|
|
1. **User Demand**: What are users asking for most?
|
|
2. **Ecosystem Value**: Which adds most value to IndieWeb network?
|
|
3. **Technical Dependencies**: Option C (Identity) might benefit A & B
|
|
4. **Market Differentiation**: Which makes StarPunk unique?
|
|
|
|
All three options are genuinely different approaches to "full IndieWeb support" - the choice depends on priorities. |