GetProfile returned the theme from the JWT-claims context stub, which carries only id/email/username/role — user.Theme was always empty, so the profile response omitted the field and the app's account-theme read-back (SERVER sync mode) could never see the stored theme. GetProfile now loads the full user row by id (h.db.GetUser).