Skip to content

feat: switch avatar provider from Crafatar to VZGE#1762

Merged
confuser merged 1 commit intomasterfrom
feat/switch-avatar-provider-to-vzge
Apr 4, 2026
Merged

feat: switch avatar provider from Crafatar to VZGE#1762
confuser merged 1 commit intomasterfrom
feat/switch-avatar-provider-to-vzge

Conversation

@confuser
Copy link
Copy Markdown
Member

@confuser confuser commented Apr 4, 2026

Summary

  • Replace Crafatar with VZGE for all Minecraft avatar/body renders. Crafatar has become unreliable and frequently goes down.
  • Add unoptimized to Next.js <Image> to let the browser fetch directly from VZGE (which already serves optimized WebP/JXL formats), avoiding User-Agent issues with server-side fetching.
  • Adjust body render dimensions to match VZGE's 8:13 aspect ratio across all components.
  • Fix docker-compose.yml for MySQL 8.4 compatibility (default-authentication-plugin was removed).
  • Fix seed script to encrypt server password before DB insert (matching what the test setup does).

Test plan

  • Verified face avatars load on homepage (search panel, nav bar)
  • Verified full body render loads on player profile page (PlayerAvatar with gradient background)
  • Verified full body render loads on account panel (homepage, logged in)
  • Verified docker-compose.yml starts MySQL 8.4 without errors
  • Verified seed script creates data and server starts without crypto errors
  • Verify OG card generation at /api/opengraph/player/<uuid> renders avatar correctly
  • Verify push notification icons load (requires VAPID keys configured)

Crafatar has become unreliable. VZGE (vzge.me) is a well-established
alternative that has been running since 2015 with support for optimized
formats (WebP/JXL), 3D renders, and proper caching.

- Replace all Crafatar URLs with VZGE equivalents (face/full endpoints)
- Add `unoptimized` to Next.js Image to bypass server-side fetching,
  since VZGE already serves optimized formats and requires non-generic
  User-Agent headers for server-side requests
- Add custom User-Agent header to the server-side OG card avatar fetch
- Adjust body render dimensions to match VZGE's 8:13 aspect ratio
- Remove unused `scale` prop from Avatar component
- Fix docker-compose.yml for MySQL 8.4 compatibility
  (default-authentication-plugin removed in 8.4)
- Fix seed script to encrypt server password before inserting
@cypress
Copy link
Copy Markdown

cypress Bot commented Apr 4, 2026

BanManager-WebUI    Run #10139

Run Properties:  status check passed Passed #10139  •  git commit 116b3188b9 ℹ️: Merge f39327c31e3e4bae940bcb8b79c01fc773f3106d into 1fb830ddf04243f43edeb8cb62ed...
Project BanManager-WebUI
Branch Review feat/switch-avatar-provider-to-vzge
Run status status check passed Passed #10139
Run duration 00m 43s
Commit git commit 116b3188b9 ℹ️: Merge f39327c31e3e4bae940bcb8b79c01fc773f3106d into 1fb830ddf04243f43edeb8cb62ed...
Committer James Mortemore
View all properties for this run ↗︎

Test results
Tests that failed  Failures 0
Tests that were flaky  Flaky 0
Tests that did not run due to a developer annotating a test with .skip  Pending 0
Tests that did not run due to a failure in a mocha hook  Skipped 0
Tests that passed  Passing 26
View all changes introduced in this branch ↗︎

@confuser confuser merged commit 83eac83 into master Apr 4, 2026
6 checks passed
@confuser confuser deleted the feat/switch-avatar-provider-to-vzge branch April 4, 2026 12:42
@cypress
Copy link
Copy Markdown

cypress Bot commented Apr 4, 2026

BanManager-WebUI    Run #10141

Run Properties:  status check passed Passed #10141  •  git commit 83eac83d64: feat: switch avatar provider from Crafatar to VZGE (#1762)
Project BanManager-WebUI
Branch Review master
Run status status check passed Passed #10141
Run duration 00m 45s
Commit git commit 83eac83d64: feat: switch avatar provider from Crafatar to VZGE (#1762)
Committer James Mortemore
View all properties for this run ↗︎

Test results
Tests that failed  Failures 0
Tests that were flaky  Flaky 0
Tests that did not run due to a developer annotating a test with .skip  Pending 0
Tests that did not run due to a failure in a mocha hook  Skipped 0
Tests that passed  Passing 26
View all changes introduced in this branch ↗︎

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant