mirror of
https://github.com/go-gitea/gitea.git
synced 2026-07-24 08:34:04 -05:00
Enhancement: Align Gavatar and Federated Avatars options to be Enable #15014
Open
opened 2025-11-02 11:28:01 -06:00 by GiteaMirror
·
5 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
No labels
type/proposal
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#15014
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @markbrown87 on GitHub (Oct 11, 2025).
Feature Description
Admin settings for
Picture and Avatar ConfigurationunderConfigurationare misaligned. Meaning, Gravatar isDisable Gravatarand Federate Avatars isEnable Federated Avatars. The proposed enhancement is a small refactor to align the two to be Enable for both (see screenshot).Since this was a fast refactor, I implemented the approach of changing the naming and logic for disable gravatar to enable gravatar locally. However, I am not certain how the Gitea team would want to handle the database entry and migration from older instances to this proposed state. I assume there are standard procedures for migrating database entry names.
The alternative approach would be to keep all
disable gravatarnaming in the backend and flip the boolean when the control sends the value to the frontend. Of course, that comes with the confusion of the UI usingEnableand the backend usingDisablefor naming convention for Gravatar.Screenshots
@wxiaoguang commented on GitHub (Oct 11, 2025):
Well, open-source and crowd-contributed.
You can see there are a lot of "DISABLE_xxx" https://github.com/go-gitea/gitea/blob/main/custom/conf/app.example.ini, most of them were added without careful design or thinking ....
@wxiaoguang commented on GitHub (Oct 11, 2025):
If your change is compatible with existing settings (won't break existing users: either by database migration, or flip the boolean in the fly) and could also help more "DISABLE_xxx" cases in the future (flip the boolean), I think it would be pretty good.
By the way, I think we can completely drop
libravatarhttps://github.com/go-gitea/gitea/issues/34284#issuecomment-2830150121
It's really questionable any one is really using it
@markbrown87 commented on GitHub (Oct 11, 2025):
Though what I did locally was quick and dirty, targeting Gravatar exclusively, I will work on expanding it for others. I will put some time in removing libravatar as well.
@wxiaoguang commented on GitHub (Oct 11, 2025):
Thank you very much.
My initial idea is to add a
FlipBooleanfield toconfig.Value, then it can use "enable" key in database and work with "disable" key in the legacy INI. Haven't really looked into it and thought more.I think it doesn't need to be in this issue's scope. Maybe it can be a separate PR, in case some people have feedbacks and they still need it. (maybe wait for more feedbacks: https://github.com/go-gitea/gitea/issues/34284#issuecomment-3392767372)
@markbrown87 commented on GitHub (Oct 12, 2025):
I spent some time yesterday modifying the config.Value such that the value was flipped whenever retrieved. This was accomplished by specifying
.Invert()in the init function.However, the frontend sets based on input check box which required a flip there as well.
This meant the retrieval control flow and the setting control flow would both need to be flipped to accomplish flipping on the fly. This is the commit on my forked repo to flip on the fly, which is more confusing, in my opinion. It does, however, retain backwards compatibility for
picture.disable_gravatarwithout requiring a database migration for the value.I did spend the majority of my available time attempting to convert based on a composed "MigrateFrom" function such as
But found the use case of migrating from the old key value would cause for both
picture.disable_gravatarandpicture.enable_gravatarto be present in the database. This made it trickier to do purely from config.Value as the database would need to be updated only ifpicture.disable_gravatarwas present at startup.I am not familiar enough with the codebase, so I didn't make it far before shutting down for the night. Do you have any suggestions or pointers where I could begin implementing or using a database get, delete, and set? I feel it's more extensible if config.Value was composed with a setting to migrate the old dynKey to a new dynKey over flipping the value when retrieving or setting.
The link to the commit above does accomplish this ticket, but I feel it just serves to be more confusing when working in the code base and it's not very extensible.