Per-service locale override: effective locale chain, PATCH /me validation
users.locale is now purely the per-service override chosen in settings;
the auth-derived default lives in users.profile.locale and is never
written back over the override by login or the webhook. PATCH /me
normalizes language tags (en-US -> en), accepts auto to clear, and
rejects unsupported locales with 422. UserRead gains locale_effective
(override -> profile -> en) which the web UI and the extension use as
their UI language. The validation error handler strips non-serializable
pydantic ctx.

Co-Authored-By: Claude Code <noreply@anthropic.com>
1 parent fd338e4 commit 04c2a4bfb2dac0d1a8a68183180bfdebbb6ac607
@Eugene Sukhodolskiy Eugene Sukhodolskiy authored 13 hours ago
Showing 7 changed files
View
gnexus_creds/api.py
View
gnexus_creds/errors.py
View
gnexus_creds/oauth.py
View
gnexus_creds/schemas.py
View
gnexus_creds/services.py
View
tests/test_api.py
View
tests/test_auth.py