feat(lotus): load avatar decorations from chat.lotusguild.org (matrix #22) #425

Merged
jared merged 1 commits from feat/decorations-host into lotus 2026-10-19 13:43:55 -04:00
Owner

Part of LotusGuild/matrix#22.

  • DECORATION_CDN → https://chat.lotusguild.org/decorations. It used to be Nextcloud's public DAV: a new PHP session (four cookies) per image and no cache headers. The new files are static, from the versioned avatar-decorations package (matrix #35), with a one-week cache and no cookies. All 629 images are byte-identical to the Nextcloud copies. The URL is absolute, so the desktop app (img-src https:) and the fork's origin allowlist both work. The web CSP already allows 'self'.
  • Pins @lotusguild/element-call-embedded 0.25.0-lotus.26: call tiles accept the new origin (EC #56).
  • LOTUS_FEATURES.md: where the files come from and how to update them.

Verified

  • Unit tests pass (12/12).
  • scripts/syncDecorations.mjs against the new host: every decoration exists. It refused to prune when the server's rate limit answered 503, as designed; that's what led to matrix #36.
  • Browser, local stack: the Settings → Account picker loaded 13 images, all from chat.lotusguild.org, all 200, none broken.

Merge after matrix #36 (per-client rate limits, plus a separate budget for /decorations/).

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

Part of LotusGuild/matrix#22. - `DECORATION_CDN` → `https://chat.lotusguild.org/decorations`. It used to be Nextcloud's public DAV: a new PHP session (four cookies) per image and no cache headers. The new files are static, from the versioned `avatar-decorations` package (matrix #35), with a one-week cache and no cookies. All 629 images are byte-identical to the Nextcloud copies. The URL is absolute, so the desktop app (`img-src https:`) and the fork's origin allowlist both work. The web CSP already allows `'self'`. - Pins `@lotusguild/element-call-embedded` **0.25.0-lotus.26**: call tiles accept the new origin (EC #56). - `LOTUS_FEATURES.md`: where the files come from and how to update them. **Verified** - Unit tests pass (12/12). - `scripts/syncDecorations.mjs` against the new host: every decoration exists. It refused to prune when the server's rate limit answered 503, as designed; that's what led to matrix #36. - Browser, local stack: the Settings → Account picker loaded 13 images, all from chat.lotusguild.org, all 200, none broken. **Merge after matrix #36** (per-client rate limits, plus a separate budget for `/decorations/`). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 1 commit 2026-10-19 12:54:27 -04:00
feat(lotus): load avatar decorations from chat.lotusguild.org (matrix #22)
CI / Build & Quality Checks (pull_request) Successful in 1m43s
CI / Trigger Desktop Build (pull_request) Skipped
CI / Docker image build & smoke test (pull_request) Skipped
CI / Secret scan (gitleaks) (pull_request) Successful in 9s
CI / Playwright smoke (e2e) (pull_request) Successful in 13m27s
62c9ac8436
DECORATION_CDN moves from Nextcloud's public DAV (a PHP session and four
cookies per image, no cache headers) to https://chat.lotusguild.org/decorations,
static files from the versioned avatar-decorations package with a one-week
cache. Pin @lotusguild/element-call-embedded 0.25.0-lotus.26, whose call
tiles accept the new origin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared merged commit 0eccf9bea9 into lotus 2026-10-19 13:43:55 -04:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LotusGuild/cinny#425