- bookmark-import: find/create channel from first tag (no more fallback-only)
- bookmark-import: call notifyBlogroll() after creating feed so blogroll gets
its entries from microsub, not independently
- bookmark-import: store micropubPostUrl on feed for update/delete tracking
- bookmark-import: move feed when tag changes (delete old, create in new channel)
- feeds: add micropubPostUrl field to createFeed()
- feeds: add getFeedByMicropubPostUrl() for update hook lookup
- feeds: add deleteFeedById() for channel-agnostic removal
- index: pass full tags array (not just first) to importBookmarkAsFollow
- index: capture Location header as postUrl for tracking
- index: handle update action — detect tag change or bookmark-of removal
and call updateBookmarkFollow() accordingly
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When a Micropub bookmark-of post is created (HTTP 201/202), intercept
via contentNegotiationRoutes and subscribe the bookmarked URL as a feed
in the Microsub reader. Mirrors the blogroll bookmark-import pattern.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Stripped dedup skeletons and unread items older than 30 days are now
hard-deleted on startup. Previously, stripped skeletons accumulated
forever and unread items had no expiry, causing unbounded collection
growth.
Confab-Link: http://localhost:8080/sessions/4d40ef89-a713-48c1-b4ed-0ffafca25677
- Add actor profile page with outbox fetcher for viewing AP actor posts
- Add follow/unfollow buttons on actor profile (delegates to AP plugin)
- Add AP actor link on item cards for posts from ActivityPub sources
- Add ensureActivityPubChannel() for auto-creating Fediverse channel
- Add AP-aware item storage with dedup, attachments, and categories
- Add CSS styles for actor profile cards and AP-specific UI elements
- Bump version to 1.0.31
Add translations for de, es, es-419, fr, hi, id, it, nl, pl, pt, pt-BR, sr, sv, zh-Hans-CN
to match upstream Indiekit's supported locales. Also add missing localesDirectory getter.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Integrate updateFeedStatus into polling processor for health tracking
- Add feed management UI showing status (active/error), errors, actions
- Add edit feed URL feature to change non-RSS URLs to actual feeds
- Add rediscover feature to run feed discovery and update URL
- Add refresh button to force immediate poll
- Update UI to use Indiekit's badge/button classes (badge--green/red, button--warning)
- Add routes: /feeds/:feedId/edit, /feeds/:feedId/rediscover, /feeds/:feedId/refresh
Fixes broken feeds by allowing users to:
1. Edit URL directly to the RSS/Atom feed
2. Click "Rediscover" to auto-find the feed from a blog URL
3. View error details and consecutive error counts
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Runs cleanupAllReadItems on server startup to clean up accumulated
read items from all channels, keeping only the 30 most recent per
channel per user.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Restore the "Mark all as read" button functionality in channel view.
The button form posts to /api/mark-read but the route and controller
function were missing from the standalone repo.
- Add markAllRead function to reader controller
- Add /api/mark-read route to index.js
- Import markItemsRead from storage/items.js
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fork of @indiekit/endpoint-microsub with customizations.
Enables subscribing to feeds and reading content using the Microsub protocol.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>