giles
25ac3db644
Add artdag_url() helper for cross-app navigation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 23:26:10 +00:00
giles
dfc41ada7d
Make account the OAuth authorization server instead of federation
...
All client apps (including federation) now redirect to account for OAuth.
Factory excludes account from OAuth client blueprint registration.
SSO logout chains through account instead of federation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 11:53:34 +00:00
giles
46f44f6171
OAuth SSO infrastructure + account app support
...
- OAuthCode model + migration for authorization code flow
- OAuth client blueprint (auto-registered for non-federation apps)
- Per-app first-party session cookies (fixes Safari ITP)
- /oauth/authorize endpoint support in URL helpers
- account_url() helper + Jinja global
- Templates: federation_url('/auth/...') → account_url('/...')
- Widget registry: account page links use account_url
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 09:55:27 +00:00
giles
bd18d0befc
Route auth to federation: login_url default, logout URL, federation_url global
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 08:41:18 +00:00
giles
798087de9a
Rename coop to blog throughout codebase
...
- coop_url() → blog_url(), AUTH_APP default → "blog"
- Session cookie: coop_session → blog_session
- Config keys: coop_root/coop_title → market_root/market_title
- All Jinja templates: coop_url → blog_url, coop_title → market_title
- Template blocks: coop-child-header → blog-child-header
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-23 08:32:46 +00:00
giles
1c1ab3576f
Pass cart_sid through login URL for cross-app cart adoption
...
When login_url() is called from a different app (e.g. cart), the
anonymous cart_sid is in that app's session cookie. Pass it as a
query parameter so the auth app can store it and use it for adoption.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-22 17:46:08 +00:00
giles
8850a0106a
Add federation/ActivityPub models, contracts, and services
...
Phase 0+1 of ActivityPub integration:
- 6 ORM models (ActorProfile, APActivity, APFollower, APInboxItem, APAnchor, IPFSPin)
- FederationService protocol + SqlFederationService implementation + stub
- 4 DTOs (ActorProfileDTO, APActivityDTO, APFollowerDTO, APAnchorDTO)
- Registry slot for federation service
- Alembic migration for federation tables
- IPFS async client (httpx-based)
- HTTP Signatures (RSA-2048 sign/verify)
- login_url() now uses AUTH_APP env var for flexible auth routing
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-21 15:10:08 +00:00
giles
3aa1aadd0b
Add market_product_url helper for correct product URLs
...
market_url('/product/...') was missing the /<page_slug>/<market_slug>/
prefix required by the market app's route structure. New helper
market_product_url() resolves the prefix from request context
(g.post_slug/g.market_slug in market app, g.page_slug + market_place
in cart app).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-18 18:19:36 +00:00
giles
ef806f8fbb
feat: extract shared infrastructure from shared_lib
...
Phase 1-3 of decoupling plan:
- Shared DB, models, infrastructure, browser, config, utils
- Event infrastructure (domain_events outbox, bus, processor)
- Structured logging
- Generic container concept (container_type/container_id)
- Alembic migrations for all schema changes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-11 12:45:56 +00:00