The AP blueprint was consolidated but 4 references to the old
'actors.profile' endpoint remained, causing BuildError on social pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Webfinger, actor profile, inbox, outbox, and followers are now served
by the shared AP blueprint registered in create_base_app(). Federation
keeps identity + social blueprints for UI routes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Auth server responsibilities moved to account app.
Federation uses the shared OAuth client blueprint via factory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add OOB account page system with newsletters, widget pages,
and toggle routes. Update shared submodule for federation_url.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace single WebFinger lookup with paginated search across cached
remote actors and local profiles. New _search_results.html partial
with htmx infinite scroll sentinel. Form submits via hx-get for
seamless pagination.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Follower profile links now go to https://domain/@username (web profile)
instead of the AP actor URL which 404s
- Follow Back/Unfollow buttons update via HTMX without full page refresh
- Update shared submodule to decoupling branch with new protocol methods
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 6 new routes: following list, followers list, actor timeline (each
with HTMX infinite-scroll page endpoint)
- 4 new templates: following.html, followers.html, _actor_list_items.html,
actor_timeline.html
- Nav links for Following/Followers in base.html
- Follow/unfollow redirects back to referrer page
- Timeline items template handles actor timeline type
- Update shared submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Social blueprint with timeline, compose, search, follow/unfollow,
like/boost interactions, and notifications. Inbox handler extended
for Create/Update/Delete/Accept/Like/Announce with notification
creation. HTMX-powered infinite scroll and interaction buttons.
Nav updated with Timeline, Public, Search, and Notifications links.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Stable object IDs per source (no more duplicates)
- Dedup Update activities (Ghost double-webhook)
- Backfill: deliver recent Create activities to new follower inbox
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Mastodon requires OrderedCollection with a `first` page link to
consider the collection public. Without it, it shows "This user
has chosen to not make this information available."
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Accept activity now includes required 'id' field (uuid-based)
- Updated shared submodule: add_follower upserts to prevent IntegrityError
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix sign_request() call: parse URL into path/host (was passing 'url' kwarg that doesn't exist)
- Fix verify_request_signature() call to match actual function signature
- Add manuallyApprovesFollowers: false to actor JSON-LD so Mastodon auto-accepts follows
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 0+1 of AP integration. New 5th Quart microservice:
Blueprints:
- wellknown: WebFinger, NodeInfo 2.0, host-meta
- actors: AP actor profiles (JSON-LD + HTML), outbox, inbox, followers
- identity: username selection flow (creates ActorProfile + RSA keypair)
- auth: magic link login/logout (ported from blog, self-contained)
Services:
- Registers SqlFederationService (real impl) for federation domain
- Registers real impls for blog, calendar, market, cart
- All cross-domain via shared service contracts
Templates:
- Actor profiles, username selection, platform home
- Auth login/check-email (ported from blog)
Infrastructure:
- Dockerfile + entrypoint.sh (matches other apps)
- CI/CD via Gitea Actions
- shared/ as git submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>