9 Commits

Author SHA1 Message Date
svemagie
f5a62b966d feat: auto-create Microsub source to keep blogroll in sync
When the Microsub plugin is detected and no microsub source exists in
blogrollSources, automatically create one on startup so the periodic
sync picks up all Microsub feed subscriptions without manual config.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-18 10:37:16 +01:00
svemagie
381b0397a5 feat: guard bookmark hook when microsub is available, update category on tag change
- index: skip direct bookmark import when microsub plugin is present;
  microsub handles the flow and notifies blogroll via notifyBlogroll()
  to avoid duplicate entries
- bookmark-import: when blog already exists and category differs, update it
  instead of skipping (handles tag changes on existing bookmark posts)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-12 09:33:42 +01:00
svemagie
66bc404f03 feat: pass bookmark post category through to blogroll entry 2026-03-10 19:53:46 +01:00
svemagie
34739735e7 feat: integrate bookmark→blogroll hook via contentNegotiationRoutes
Uses res.on('finish') middleware mounted at '/' to detect successful
micropub bookmark creations and auto-import the bookmarked site's feed
into the blogroll. Self-contained within the plugin — no external patch
scripts required.
2026-03-10 19:23:44 +01:00
Ricardo
129dc78e09 feat: add FeedLand source type for blogroll
Adds FeedLand (feedland.com or self-hosted) as a new source type alongside
OPML and Microsub. Syncs subscriptions via FeedLand's public OPML endpoint
with optional category filtering and AJAX category discovery in the admin UI.
2026-02-17 13:54:19 +01:00
Ricardo
8ace76f8c2 feat: Add Microsub integration with reference-based data approach
- Add Microsub source type to sync subscriptions from Microsub channels
- Use reference-based approach to avoid data duplication:
  - Blogs store microsubFeedId reference instead of copying data
  - Items for Microsub blogs are queried from microsub_items directly
  - No duplicate storage or retention management needed
- Add channel filter and category prefix options for Microsub sources
- Add webhook endpoint for Microsub subscription change notifications
- Update scheduler to skip item fetching for Microsub blogs
- Update items storage to combine results from both collections
- Bump version to 1.0.7

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 12:35:52 +01:00
Ricardo
4a53f74bbc feat: add feed auto-discovery to blog add form
- Add feed-discovery.js utility that discovers RSS/Atom/JSON feeds from website URLs
- Add /api/discover endpoint for frontend feed discovery
- Update blog edit form with discovery UI (enter website URL, discover feeds)
- Auto-populate feedUrl, title, and siteUrl from discovery results
- Handle multiple feed options (let user choose)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 15:37:23 +01:00
Ricardo
8d3cde4eb2 fix: add missing viewsDirectory getter for Indiekit to find templates 2026-02-07 11:22:59 +01:00
Ricardo
8344a59b76 feat: initial blogroll endpoint plugin
OPML/RSS aggregator for IndieWeb blogroll management:
- Multiple source types: OPML URL, OPML file, manual entry
- Background sync scheduler with configurable intervals
- 7-day item retention for fresh content discovery
- MongoDB storage for sources, blogs, items
- Admin UI for sources and blogs management
- Public JSON API endpoints for frontend consumption
- OPML export by category

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-07 09:55:53 +01:00