1
0
Fork
You've already forked forgejo
0
forked from forgejo/forgejo
Beyond coding. We forge.
  • Go 74.2%
  • go-html-template 11.2%
  • JavaScript 5%
  • Roff 4.6%
  • CSS 3.1%
  • Other 1.7%
Find a file
0ko 2382b74526 feat(ui): add MIME types for generated archives ( #6959 )
* add MIME types `application/zip` and `application/gzip` to anchors of automatically generated archives.
* add testing for that, and also for forgejo/forgejo#2899
## Why
Many instances are struggling with crawlers that are fetching these links, causing archives to be generated. The content is actually never downloaded.
[MDN describes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#type) this attribute as a "hint". So this hint can help a client to decide against fetching the href contents. I don't believe this change will actually improve the situation, however, I think this attribute is nice to have.
## MIME types
It was a bit difficult to determine which are the right ones for this use case.
[IANA lists](https://www.iana.org/assignments/media-types/media-types.xhtml) both `application/zip` and `application/gzip`.
`application/zip` refers to [RFC6713](https://datatracker.ietf.org/doc/html/rfc6713) and `application/gzip` doesn't refer to an RFC directly. It also has [detailed information](https://www.iana.org/assignments/media-types/application/zip) about zip. [gzip is less detailed](https://www.iana.org/assignments/media-types/application/gzip).
* [`application/zip`](https://www.iana.org/assignments/media-types/application/zip):
 > ZIP files are binary data and thus should be encoded for MIME mail
transmission.
 This was written in 1993, but probably applies to the more modern web as well.
* [`application/gzip`](https://datatracker.ietf.org/doc/rfc6713):
 > The 'application/gzip' media type describes a block of data that is
 compressed using gzip [RFC1952] compression. The data is a stream of
 bytes as described in RFC 1952.
 [RFC1952](https://datatracker.ietf.org/doc/rfc1952/) is a "GZIP file format specification", but there's a warning: "This RFC is not endorsed by the IETF and has no formal standing in the IETF standards process.". Anyway, I consider it as the right way to mark .tar.gz files too.
Additional stuff that I read while researching:
* https://stackoverflow.com/questions/2110269/add-mime-type-to-html-link
Reviewed-on: forgejo/forgejo#6959
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025年02月16日 12:59:28 +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 renovate to v39.164.1 (forgejo) ( #6874 ) 2025年02月10日 07:23:56 +00:00
assets Update module github.com/minio/minio-go/v7 to v7.0.86 (forgejo) ( #6945 ) 2025年02月15日 12:44:33 +00:00
build chore: teach lint-locale about locale_next ( #6800 ) 2025年02月06日 11:16:19 +00:00
cmd chore: teach set module about iter.Seq ( #6676 ) 2025年01月24日 16:45:46 +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 fix: forgejo migrations numbering in comments and rename latest migration file ( #6957 ) 2025年02月16日 08:17:33 +00:00
modules feat: add pronoun privacy option ( #6773 ) 2025年02月15日 13:07:15 +00:00
options i18n: translation updates from Gitea ( #6958 ) 2025年02月16日 09:38:39 +00:00
public chore(security): update security.txt with new expiration date ( #6655 ) 2025年01月23日 16:20:04 +00:00
release-notes chore(release-notes): notes for the week 2025-06 weekly cherry pick 2025年02月02日 12:05:46 +01:00
release-notes-published chore(release-notes): fix Forgejo v10.0.1 & v7.0.13 blog post URL (again) [skip ci] ( #6857 ) 2025年02月08日 13:17:25 +00:00
releases/images [DOCS] RELEASE-NOTES.md 2024年02月05日 14:44:32 +01:00
routers feat: add pronoun privacy option ( #6773 ) 2025年02月15日 13:07:15 +00:00
services feat: add pronoun privacy option ( #6773 ) 2025年02月15日 13:07:15 +00:00
templates feat(ui): add MIME types for generated archives ( #6959 ) 2025年02月16日 12:59:28 +00:00
tests feat(ui): add MIME types for generated archives ( #6959 ) 2025年02月16日 12:59:28 +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 fix(ui): hide extra PR property labels on title edit ( #6898 ) 2025年02月12日 08:31:20 +00:00
.air.toml Reduce air verbosity ( #31417 ) 2024年06月23日 12:30:09 +02:00
.deadcode-out [gitea] week 2025-07 cherry pick (gitea/main -> forgejo) ( #6865 ) 2025年02月11日 16:22:58 +00: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
.release-notes-assistant.yaml chore(release-notes): no need to specify they are draft 2024年10月22日 06:54:27 +02:00
.spectral.yaml
.yamllint.yaml
BSDmakefile
build.go chore: remove unused dependency from build.go 2024年12月23日 16:23:28 +01:00
CODEOWNERS [skip ci] chore: adjust i18n entries in CODEOWNERS ( #6667 ) 2025年01月26日 07:37:50 +00:00
CONTRIBUTING.md docs: replace Developer Guide link with the new Contributor Guide one. 2024年08月26日 13:22:39 +03:00
DCO
Dockerfile fix: FromAsCasting warning from Dockerfile ( #6769 ) 2025年02月04日 07:09:21 +00:00
Dockerfile.rootless enable ssh mirrors in rootless images ( #6896 ) 2025年02月11日 20:41:01 +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 github.com/minio/minio-go/v7 to v7.0.86 (forgejo) ( #6945 ) 2025年02月15日 12:44:33 +00:00
go.sum Update module github.com/minio/minio-go/v7 to v7.0.86 (forgejo) ( #6945 ) 2025年02月15日 12:44:33 +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 to v39.164.1 (forgejo) ( #6874 ) 2025年02月10日 07:23:56 +00:00
package-lock.json Update dependency happy-dom to v17 (forgejo) ( #6950 ) 2025年02月15日 15:03:05 +00:00
package.json Update dependency happy-dom to v17 (forgejo) ( #6950 ) 2025年02月15日 15:03:05 +00:00
playwright.config.ts tests(e2e): Prepare for visual regression testing 2024年12月10日 18:12:36 +01:00
poetry.lock Lock file maintenance (forgejo) ( #6877 ) 2025年02月10日 07:28:08 +00:00
poetry.toml
pyproject.toml Pin dependency codespell to 2.4.1 (forgejo) ( #6776 ) 2025年02月04日 06:18:46 +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: fix typos, decap a few i18n strings ( #6666 ) 2025年01月24日 05:41:59 +00:00
renovate.json chore: consistent docker image and action references ( #6703 ) 2025年01月28日 15:41:11 +00: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.