Extract email from session cookie and JWT claims. Store email in
cookie data. Needed for coop fragment composition (auth-menu).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Lightweight httpx-based client to fetch HTML fragments from coop apps
(nav-tree, auth-menu, cart-mini) using internal Docker URLs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Default actor_id to @username when not in token claims
- Support both artdag_session (base64 JSON) and auth_token (JWT) cookies
- Check both 'username' and 'sub' claims for username
- Check both 'actor_id' and 'actor' claims for actor_id
This fixes authentication when L2 tokens don't include actor_id.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Shared components for L1 and L2 servers:
- Jinja2 template system with base template and components
- Middleware for auth and content negotiation
- Pydantic models for requests/responses
- Utility functions for pagination, media, formatting
- Constants for Tailwind/HTMX/Cytoscape CDNs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>