Beyond coding. We forge.
Find a file
Gusted a9c97110f9 feat: add configurable cooldown to claim usernames (#6422)
Add a new option that allows instances to set a cooldown period to claim
old usernames. In the context of public instances this can be used to
prevent old usernames to be claimed after they are free and allow
graceful migration (by making use of the redirect feature) to a new
username. The granularity of this cooldown is a day. By default this
feature is disabled and thus no cooldown period.

The `CreatedUnix` column is added the `user_redirect` table, for
existing redirects the timestamp is simply zero as we simply do not know
when they were created and are likely already over the cooldown period
if the instance configures one.

Users can always reclaim their 'old' user name again within the cooldown
period. Users can also always reclaim 'old' names of organization they
currently own within the cooldown period.

Creating and renaming users as an admin user are not affected by the
cooldown period for moderation and user support reasons.

To avoid abuse of the cooldown feature, such that a user holds a lot of
usernames, a new option is added `MAX_USER_REDIRECTS` which sets a limit
to the amount of user redirects a user may have, by default this is
disabled. If a cooldown period is set then the default is 5. This
feature operates independently of the cooldown period feature.

Added integration and unit testing.

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6422
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
2025-01-24 04:16:56 +00:00
.devcontainer Update ghcr.io/devcontainers/features/git-lfs Docker tag to v1.2.3 2024-10-01 10:02:11 +00:00
.forgejo Update dependency go to v1.23.5 (forgejo) (#6590) 2025-01-21 15:22:41 +00:00
assets Update module github.com/go-git/go-git/v5 to v5.13.2 (forgejo) (#6659) 2025-01-23 12:32:39 +00:00
build chore(i18n): user/label translations in danish/latvian 2024-12-26 09:40:21 +01:00
cmd Refactor env var related code (#33075) 2025-01-05 13:46:19 +00:00
contrib branding: update contrib/legal 2024-12-19 18:55:20 +05:00
custom/conf Use 8 as default value for git lfs concurrency (#32421) 2024-12-06 00:17:57 +01:00
docker Update code.forgejo.org/oci/alpine Docker tag to v3.21 (followup) 2024-12-30 15:22:42 +00:00
models feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
modules feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
options feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
public chore(security): update security.txt with new expiration date (#6655) 2025-01-23 16:20:04 +00:00
release-notes Release-note and file rename for Alt Linux Apt-RPM support (#6656) 2025-01-23 07:22:05 +00:00
release-notes-published Squash translation updates 2025-01-15 07:40:18 +00:00
releases/images [DOCS] RELEASE-NOTES.md 2024-02-05 14:44:32 +01:00
routers feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
services feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
templates feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
tests feat: add configurable cooldown to claim usernames (#6422) 2025-01-24 04:16:56 +00:00
tools Initial support for localization and pluralization with go-i18n-JSON-v2 format 2025-01-17 11:21:28 +01:00
web_src Alt Linux Apt-Rpm repository support for Forgejo packages. (#6351) 2025-01-22 14:01:49 +00:00
.air.toml Reduce air verbosity (#31417) 2024-06-23 12:30:09 +02:00
.deadcode-out Initial support for localization and pluralization with go-i18n-JSON-v2 format 2025-01-17 11:21:28 +01:00
.dockerignore chore: update ignores 2025-01-03 14:41:34 +01:00
.editorconfig fixed indentation style in editorconfig for go.mod 2024-05-14 00:24:18 +02:00
.envrc.example Make direnv optional to let developers use their own direnv configuration 2024-11-06 20:34:49 +01:00
.gitattributes Add interface{} to any replacement to make fmt, exclude *.pb.go (#30461) 2024-04-15 20:01:36 +02:00
.gitignore chore(e2e): simplify authentication setup (#6400) 2025-01-05 05:17:04 +00:00
.gitmodules cleanup(tests): remove manual testing submodule 2024-04-21 10:13:51 +02:00
.gitpod.yml Remove sqlite-viewer and using database client (#31223) 2024-06-09 11:13:39 +02:00
.golangci.yml Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v1.62.0 (forgejo) (#5911) 2024-11-11 13:02:01 +00:00
.ignore Add /options/license and /options/gitignore to .ignore (#30219) 2024-04-07 15:40:31 +02:00
.mailmap Add .mailmap with aliases for Unknwon (github.com/Unknwon) 2024-08-14 08:26:16 -04:00
.markdownlint.yaml Update JS dependencies (#28537) 2023-12-30 05:29:03 +00:00
.npmrc Upgrade to npm lockfile v3 and explicitely set it (#23561) 2023-03-18 19:38:10 +01:00
.release-notes-assistant.yaml chore(release-notes): no need to specify they are draft 2024-10-22 06:54:27 +02:00
.spectral.yaml Add spectral linter for Swagger (#20321) 2022-07-11 18:07:16 -05:00
.yamllint.yaml fully replace drone with actions (#27556) 2023-10-11 06:39:32 +00:00
BSDmakefile Fix build errors on BSD (in BSDMakefile) (#27594) 2023-10-13 15:38:27 +00:00
build.go chore: remove unused dependency from build.go 2024-12-23 16:23:28 +01:00
CODEOWNERS docs(e2e): Update e2e test instructions for changed file patterns 2024-10-04 15:15:10 +02:00
CONTRIBUTING.md docs: replace Developer Guide link with the new Contributor Guide one. 2024-08-26 13:22:39 +03:00
DCO Remove address from DCO (#22595) 2023-01-24 18:52:38 +00:00
Dockerfile Update code.forgejo.org/oci/alpine Docker tag to v3.21 (followup) 2024-12-30 15:22:42 +00:00
Dockerfile.rootless Update code.forgejo.org/oci/alpine Docker tag to v3.21 2024-12-29 16:04:55 +00:00
eslint.config.mjs tests(e2e): Refactor various tests 2024-11-13 13:15:37 +01:00
flake.lock Update nixpkgs version in flake 2024-12-08 13:03:16 +01:00
flake.nix install go and gopls in nix flake devShell 2024-12-08 13:04:22 +01:00
go.mod Update module google.golang.org/grpc to v1.69.4 (forgejo) (#6560) 2025-01-23 18:33:24 +00:00
go.sum Update module google.golang.org/grpc to v1.69.4 (forgejo) (#6560) 2025-01-23 18:33:24 +00:00
LICENSE Forgejo v9.0 is GPLv3+ 2024-08-22 09:09:29 +02:00
main.go [RELEASE] decouple the release name from the version number 2024-02-17 15:27:35 +01:00
Makefile Update renovate Docker tag to v39.115.4 (forgejo) (#6606) 2025-01-18 14:56:11 +00:00
package-lock.json Lock file maintenance (forgejo) (#6630) 2025-01-20 21:33:56 +00:00
package.json Update postcss (forgejo) (#6562) 2025-01-18 06:39:17 +00:00
playwright.config.ts tests(e2e): Prepare for visual regression testing 2024-12-10 18:12:36 +01:00
poetry.lock Update dependency djlint to v1.36.4 (forgejo) (#6365) 2024-12-25 00:37:19 +00:00
poetry.toml Clean up pyproject.toml and package.json, fix poetry options (#25327) 2023-06-18 18:13:08 +00:00
pyproject.toml Update dependency djlint to v1.36.4 (forgejo) (#6365) 2024-12-25 00:37:19 +00:00
README.md start of the v10.0 development branch 2024-09-25 11:11:41 +02:00
release-notes-assistant.sh chore(release-notes-assistant): security fix / features come first 2024-11-17 20:03:11 +01:00
RELEASE-NOTES.md chore(release-notes): keep release notes in release-notes-published 2024-12-05 17:46:14 +01:00
renovate.json chore(renovate): fix self-update config [skip-ci] 2025-01-18 15:19:53 +01:00
stylelint.config.js Merge pull request 'Port "Enable declaration-block-no-redundant-longhand-properties (#30950)' (#3769) from beowulf/gitea-port-pull-30950 into forgejo 2024-05-14 22:23:54 +00:00
tailwind.config.js fix: Do not scan all Go files for tailwind classes 2024-08-24 15:45:50 +02:00
tsconfig.json Add typescript 2024-10-29 18:15:09 +01:00
vitest.config.ts Add typescript 2024-10-29 18:15:09 +01:00
webpack.config.js Add typescript 2024-10-29 18:15:09 +01:00

Welcome to Forgejo

Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo (/for'd͡ʒe.jo/ inspired by forĝejo the Esperanto word for forge) has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality.

Forgejo was created in 2022 because we think that the project should be owned by an independent community. If you second that, then Forgejo is for you! Our promise: Independent Free/Libre Software forever!

What does Forgejo offer?

If you like any of the following, Forgejo is literally meant for you:

  • Lightweight: Forgejo can easily be hosted on nearly every machine. Running on a Raspberry? Small cloud instance? No problem!
  • Project management: Besides Git hosting, Forgejo offers issues, pull requests, wikis, kanban boards and much more to coordinate with your team.
  • Publishing: Have something to share? Use releases to host your software for download, or use the package registry to publish it for docker, npm and many other package managers.
  • Customizable: Want to change your look? Change some settings? There are many config switches to make Forgejo work exactly like you want.
  • Powerful: Organizations & team permissions, CI integration, Code Search, LDAP, OAuth and much more. If you have advanced needs, Forgejo has you covered.
  • Privacy: From update checker to default settings: Forgejo is built to be privacy first for you and your crew.
  • Federation: (WIP) We are actively working to connect software forges with each other through ActivityPub, and create a collaborative network of personal instances.

Learn more

Dive into the documentation, subscribe to releases and blog post on our website, find us on the Fediverse or hop into our Matrix room if you have any questions or want to get involved.

License

Forgejo is distributed under the terms of the GPL version 3.0 or any later version.

The agreement for this license was documented in June 2023 and implemented during the development of Forgejo v9.0. All Forgejo versions before v9.0 are distributed under the MIT license.

Get involved

If you are interested in making Forgejo better, either by reporting a bug or by changing the governance, please take a look at the contribution guide.