forgejo/forgejo
107
3.5k
Fork
You've already forked forgejo
602

WIP: feat: Add Gists #6125

Draft
JakobDev wants to merge 21 commits from JakobDev/forgejo:gists into forgejo
pull from: JakobDev/forgejo:gists
merge into: forgejo:forgejo
forgejo:forgejo
forgejo:renovate/v14.0/forgejo-patch-golang-packages
forgejo:renovate/v11.0/forgejo-patch-golang-packages
forgejo:v14.0/forgejo
forgejo:v11.0/forgejo
forgejo:v13.0/forgejo
forgejo:bp-v14.0/forgejo-82624a2
forgejo:renovate/forgejo-code.forgejo.org-forgejo-runner-v11-11.x
forgejo:bp-v13.0/forgejo-dc0a63e
forgejo:bp-v13.0/forgejo-fb9839f
forgejo:bp-v13.0/forgejo-e7ef2eb
forgejo:bp-v13.0/forgejo-ed605a7
forgejo:v12.0/forgejo
forgejo:bp-v12.0/forgejo-cf1fda8-a511e37
forgejo:bp-v11.0/forgejo-85e839e-7bf7c0c
forgejo:bp-v12.0/forgejo-772bb20
forgejo:bp-v11.0/forgejo-b52cec7
forgejo:bp-v12.0/forgejo-dd3f24d
forgejo:v7.0/forgejo
forgejo:v10.0/forgejo
forgejo:v9.0/forgejo
forgejo:v8.0/forgejo
forgejo:v1.21/forgejo
forgejo:v1.20/forgejo
forgejo:v1.19/forgejo
forgejo:v1.18/forgejo
forgejo:v1.17/forgejo

This PR adds Gist support to Forgejo. Gists are small Git Repos. They are used to share Codesnipets.

Implementation:

  • Each Gist has it's own random UUID (e.g. 7f4d4b2b). They can be accessed using the /gists/{gistuuid} route.
  • You can have multiple Gists with the same Name (e.g. Log)
  • Gist Repos can't contain binary files
  • Gist Repos can't contain directories
  • Gist are only allowed to have a main branch.
  • Gist can only have a Owner, which has write permission. There is no way to give others Permissions like with Repos.
  • Gist don't have Issues or Pull Requests (Comments might be added in a follow up PR)
  • A Gist has one of 3 visibility levels:
    • Public: The Gist can be seen be anyone
    • Hidden: The Gist can be seen by anyone but does not appear in the Search
    • Private: The Gist can only be seen be the Owner
  • Gists are saved in a diffrent directory than normal Repos
  • Gists are saved independently to Repos in the Database

Screenshots:

grafik
grafik
grafik
grafik

Why W.I.P.

  • This PR is currently missing tests
  • Some Bugs are still there
  • Some polish is needed

The Feature itself is fully finished and can be reviewed.

Implements #1069

Checklist

The contributor guide contains information that will be helpful to first time contributors. There also are a few conditions for merging Pull Requests in Forgejo repositories. You are also welcome to join the Forgejo development chatroom.

Tests

  • I added test coverage for Go changes...
    • in their respective *_test.go for unit tests.
    • in the tests/integration directory if it involves interactions with a live Forgejo server.
  • I added test coverage for JavaScript changes...

Documentation

  • I created a pull request to the documentation to explain to Forgejo users how to use this change.
  • I did not document these changes and I do not expect someone else to do it.

Release notes

  • I do not want this change to show in the release notes.
  • I want the title to show in the release notes with a link to this pull request.
  • I want the content of the release-notes/<pull request number>.md to be be used for the release notes instead of the title.
This PR adds Gist support to Forgejo. Gists are small Git Repos. They are used to share Codesnipets. ### Implementation: - Each Gist has it's own random UUID (e.g. `7f4d4b2b`). They can be accessed using the `/gists/{gistuuid}` route. - You can have multiple Gists with the same Name (e.g. Log) - Gist Repos can't contain binary files - Gist Repos can't contain directories - Gist are only allowed to have a `main` branch. - Gist can only have a Owner, which has write permission. There is no way to give others Permissions like with Repos. - Gist don't have Issues or Pull Requests (Comments might be added in a follow up PR) - A Gist has one of 3 visibility levels: - Public: The Gist can be seen be anyone - Hidden: The Gist can be seen by anyone but does not appear in the Search - Private: The Gist can only be seen be the Owner - Gists are saved in a diffrent directory than normal Repos - Gists are saved independently to Repos in the Database ### Screenshots: <details> ![grafik](/attachments/549ebae1-33de-4827-b65d-154e13907706) ![grafik](/attachments/997714e0-98bf-4f77-982f-5436e20a17a2) ![grafik](/attachments/92bc063b-c6c3-49b5-947f-9b338b98bd0c) ![grafik](/attachments/25d2c326-c0f9-4832-8623-2743dfa5f6c2) </details> ### Why W.I.P. - This PR is currently missing tests - Some Bugs are still there - Some polish is needed The Feature itself is fully finished and can be reviewed. Implements #1069 ## Checklist The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org). ### Tests - I added test coverage for Go changes... - [ ] in their respective `*_test.go` for unit tests. - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server. - I added test coverage for JavaScript changes... - [ ] in `web_src/js/*.test.js` if it can be unit tested. - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)). ### Documentation - [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change. - [x] I did not document these changes and I do not expect someone else to do it. ### Release notes - [ ] I do not want this change to show in the release notes. - [x] I want the title to show in the release notes with a link to this pull request. - [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.
Add Gists
Some checks failed
issue-labels / info (pull_request) Successful in 2s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m2s
testing / backend-checks (pull_request) Failing after 1m43s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
Integration tests for the release process / release-simulation (pull_request) Successful in 4m34s
4fb2a5da9b
@ -77,3 +78,2 @@
// ServCommand returns information about the provided keyid
funcServCommand(ctx*context.PrivateContext){
// servCommandGist handels ServCommand for Gists
Contributor
Copy link

handles

handles
JakobDev marked this conversation as resolved
Contributor
Copy link

I think this needs to be ENABLED=false by default, at lease for the first time it appears in a major release. It should be advertised as experimental and subject to breaking changes with no warning. The UI and UX for such a new feature is very difficult to get right the first time and you don't want to be stuck with people who rely on it thinking it is final... before it actually is final.

For these reasons, the UI must display a warning so it serves as a reminder.

Does that sound reasonable?

There is a longer discussion related to this suggestion at forgejo/discussions#246

I think this needs to be `ENABLED=false` by default, at lease for the first time it appears in a major release. It should be advertised as experimental and subject to breaking changes with no warning. The UI and UX for such a new feature is very difficult to get right the first time and you don't want to be stuck with people who rely on it thinking it is final... before it actually is final. For these reasons, the UI must display a warning so it serves as a reminder. Does that sound reasonable? There is a longer discussion related to this suggestion at https://codeberg.org/forgejo/discussions/issues/246

Ooh, exciting feature! I pulled down the branch to play around and have some feedback from experimental testing:

  • When a Gist is created in the UI with a filename that contains a path separator (in this case, dir/path.rs) , a 500 Internal Server error occurs; I assume this isn't intended to be supported as creating a directory (especially since it's blocked in the pre-receive hook if you do it through the repo), but the error is unhandled:

     CreateGist, open /tmp/3123603247/dir/path.rs: no such file or directory
    
  • Attempting to edit a Gist through the web UI seems to consistently encounter an error ParseGistForm, form has no files. I created a Gist with the name "Basic", public, with the filename "Basic" and the contents "Basic", and when I edited the Gist and added an extra word to the "File content" of "Basic" and hit "Save", I received this error. It looks to me like the <textarea> and <input> for the file are missing name attributes and so they aren't being posted. (This testing was with Firefox, and, to be fair, I merged the forgejo branch in as my DB schema level was higher than this branch; so this could be an artifact of that)

  • When creating a new Gist and having the button options "Add file" and "Add" at the bottom seem a little too-similar and confusing (subjective). I get the difference but only after thinking about it a bit. If the button on the right was "Save" (like it is on edit), or maybe "Create Gist", it would feel a little clearer to me which button I need to press to continue forward.

  • There doesn't seem to be a mechanism to delete a file from the Gist edit UI. Not a big deal, but thought I would mention it in case it was an oversight; certainly could be added later if there's a real need.

  • Gists aren't linked/listed on the user's dashboard along with other repositories. I'm not sure if this is where most people would feel their navigation workflow would go through, but it seemed to make sense to me. With them not being present there, I thought that I might have lost the links to my Gists until I found them on Explore > Gists... I don't think I feel that "Explore" is where I'm going for my own contents typically?

  • I wonder whether changing a Gist from "Public" to "Hidden" might have a subtle security risk; the URL for the Gist has already been exposed on the public Explore page, and it somewhat violates the expectation of "Hidden" (only available to those who you share the URL with) because it was previously public. Would it be possible for a change Public -> Hidden to regenerate the Gist's UUID? That would make it actually hidden.

  • The web UI doesn't contain any access to the history of the gist. At first I was thinking, that's a reasonable thing to leave out, especially in a first revision. But since history is accessible from the git repo, I wonder if there might be a mismatch in expectations leading to a security risk - - I make a gist, put an access toke in it, realize it was a mistake, edit it - - but because the UI doesn't show "vers. 2" or access to v1 I might think I've removed the mistake and not realize it is still around in the repo. (This is pretty obscure... Just a thought... Maybe not worth much more thought)

  • Calling the Gist's identifier a "UUID" when it is a truncated UUID feels a little surprising, particularly in the API definitions where it is exposed to developers -- when I saw gistuuid as an API parameter in the Swagger, I expected it really required a UUID and was confused that the search API didn't provide one. My thought would be, either truncate it and call it an ID (or identifier, locator, etc.), or, use a full UUID.

  • A 2^32 search space on the truncated ID, global for the entire instance, seems a little on the small side to me for keeping hidden gists secret -- (削除) at 66 requests per second (ref. codeberg rate limits Codeberg/Community#425 (comment)) I can enumerate the entire search space in 2 years and extract all hidden gists. (2**32 / 66 / 3600 / 24 / 365 -> 2.063 yrs) (削除ここまで) Pardon me, made a calculation error in here as the rate limit is 1/10th of what I calculated here 😑, making it not as bad, but the security of the hidden gists would arguably be reliant on rate limiting.

Ooh, exciting feature! I pulled down the branch to play around and have some feedback from experimental testing: - When a Gist is created in the UI with a filename that contains a path separator (in this case, `dir/path.rs`) , a `500 Internal Server` error occurs; I assume this isn't intended to be supported as creating a directory (especially since it's blocked in the pre-receive hook if you do it through the repo), but the error is unhandled: ``` CreateGist, open /tmp/3123603247/dir/path.rs: no such file or directory ``` - Attempting to edit a Gist through the web UI seems to consistently encounter an error `ParseGistForm, form has no files`. I created a Gist with the name "Basic", public, with the filename "Basic" and the contents "Basic", and when I edited the Gist and added an extra word to the "File content" of "Basic" and hit "Save", I received this error. It looks to me like the `<textarea>` and `<input>` for the file are missing `name` attributes and so they aren't being posted. (This testing was with Firefox, and, to be fair, I merged the `forgejo` branch in as my DB schema level was higher than this branch; so this could be an artifact of that) - When creating a new Gist and having the button options "Add file" and "Add" at the bottom seem a little too-similar and confusing (subjective). I get the difference but only after thinking about it a bit. If the button on the right was "Save" (like it is on edit), or maybe "Create Gist", it would feel a little clearer to me which button I need to press to continue forward. - There doesn't seem to be a mechanism to delete a file from the Gist edit UI. Not a big deal, but thought I would mention it in case it was an oversight; certainly could be added later if there's a real need. - Gists aren't linked/listed on the user's dashboard along with other repositories. I'm not sure if this is where most people would feel their navigation workflow would go through, but it seemed to make sense to me. With them not being present there, I thought that I might have lost the links to my Gists until I found them on Explore > Gists... I don't think I feel that "Explore" is where I'm going for my own contents typically? - I wonder whether changing a Gist from "Public" to "Hidden" might have a subtle security risk; the URL for the Gist has already been exposed on the public Explore page, and it somewhat violates the expectation of "Hidden" (only available to those who you share the URL with) because it was previously public. Would it be possible for a change Public -> Hidden to regenerate the Gist's UUID? That would make it actually hidden. - The web UI doesn't contain any access to the history of the gist. At first I was thinking, that's a reasonable thing to leave out, especially in a first revision. But since history is accessible from the git repo, I wonder if there might be a mismatch in expectations leading to a security risk - - I make a gist, put an access toke in it, realize it was a mistake, edit it - - but because the UI doesn't show "vers. 2" or access to v1 I might think I've removed the mistake and not realize it is still around in the repo. (This is pretty obscure... Just a thought... Maybe not worth much more thought) - Calling the Gist's identifier a "UUID" when it is a truncated UUID feels a little surprising, particularly in the API definitions where it is exposed to developers -- when I saw `gistuuid` as an API parameter in the Swagger, I expected it really required a UUID and was confused that the search API didn't provide one. My thought would be, either truncate it and call it an ID (or identifier, locator, etc.), or, use a full UUID. - A 2^32 search space on the truncated ID, global for the entire instance, seems a little on the small side to me for keeping hidden gists secret -- ~~at 66 requests per second (ref. codeberg rate limits https://codeberg.org/Codeberg/Community/issues/425#issuecomment-947051) I can enumerate the entire search space in 2 years and extract all hidden gists. (2**32 / 66 / 3600 / 24 / 365 -> 2.063 yrs)~~ Pardon me, made a calculation error in here as the rate limit is 1/10th of what I calculated here 😑, making it not as bad, but the security of the hidden gists would arguably be reliant on rate limiting.

Found one other thing that is a little more critical than some of those other points: CreateGist is vulnerable to a directory traversal attack which allows writes to arbitrary files. I put the file name ../../../../../../../../home/mfenniak/Dev/forgejo/test.txt in, and it exited the /tmp directory and performed the os.WriteFile to my arbitrary file. The addition to the git repo failed with an error, but the file was populated:

$ pwd
/home/mfenniak/Dev/forgejo
$ cat test.txt
abc

Later error, but the arbitrary file write is already done:

CreateGist, exit status 128 - fatal: ../../../../../../../../home/mfenniak/Dev/forgejo/test.txt: '../../../../../../../../home/mfenniak/Dev/forgejo/test.txt' is outside repository at '/tmp/1660668797'
Found one other thing that is a little more critical than some of those other points: `CreateGist` is vulnerable to a directory traversal attack which allows writes to arbitrary files. I put the file name `../../../../../../../../home/mfenniak/Dev/forgejo/test.txt` in, and it exited the /tmp directory and performed the `os.WriteFile` to my arbitrary file. The addition to the git repo failed with an error, but the file was populated: ``` $ pwd /home/mfenniak/Dev/forgejo $ cat test.txt abc ``` Later error, but the arbitrary file write is already done: ``` CreateGist, exit status 128 - fatal: ../../../../../../../../home/mfenniak/Dev/forgejo/test.txt: '../../../../../../../../home/mfenniak/Dev/forgejo/test.txt' is outside repository at '/tmp/1660668797' ```
Author
Member
Copy link

Thanks @mfenniak for the detailed feedback.

I assume this isn't intended to be supported as creating a directory

I forgot to check it there. I will add it.

Attempting to edit a Gist through the web UI seems to consistently encounter an error

Looks like I accidentally broke this somehow. I will fix it.

or maybe "Create Gist"

I will rename the Button.

There doesn't seem to be a mechanism to delete a file from the Gist edit UI.

I will add that.

I'm not sure if this is where most people would feel their navigation workflow would go through, but it seemed to make sense to me

They are currently linked on the Profile and the Explore Page. I'm not sure, if I should add them to the Dashboard in this PR.

I wonder whether changing a Gist from "Public" to "Hidden" might have a subtle security risk;

Hidden is not meant to be perfectly save, It is more meant for things that are not interested for the public e.g. a Log that you want to share. There is no guarantee that it will not be indexed by a search engine.

But since history is accessible from the git repo, I wonder if there might be a mismatch in expectations leading to a security risk

History will not be part of this PR. I'm not sure if this should be added at all, as I never felt the need to browse the History of a Gist.

Calling the Gist's identifier a "UUID" when it is a truncated UUID feels a little surprising

At first it was a normal UUID, but I felt like this is to long for a URL, so I truncated it. Not sure, how I should call it instead, as ID is already a existing field.

CreateGist is vulnerable to a directory traversal attack which allows writes to arbitrary files.

This will be fixed, when add a check to ensure there is no directory in the name.

I think this needs to be ENABLED=false by default, at lease for the first time it appears in a major release.

I'm not so sure about that. If people want to test it, they can just use the Code from this PR.

Thanks @mfenniak for the detailed feedback. > I assume this isn't intended to be supported as creating a directory I forgot to check it there. I will add it. > Attempting to edit a Gist through the web UI seems to consistently encounter an error Looks like I accidentally broke this somehow. I will fix it. > or maybe "Create Gist" I will rename the Button. > There doesn't seem to be a mechanism to delete a file from the Gist edit UI. I will add that. > I'm not sure if this is where most people would feel their navigation workflow would go through, but it seemed to make sense to me They are currently linked on the Profile and the Explore Page. I'm not sure, if I should add them to the Dashboard in this PR. > I wonder whether changing a Gist from "Public" to "Hidden" might have a subtle security risk; Hidden is not meant to be perfectly save, It is more meant for things that are not interested for the public e.g. a Log that you want to share. There is no guarantee that it will not be indexed by a search engine. > But since history is accessible from the git repo, I wonder if there might be a mismatch in expectations leading to a security risk History will not be part of this PR. I'm not sure if this should be added at all, as I never felt the need to browse the History of a Gist. > Calling the Gist's identifier a "UUID" when it is a truncated UUID feels a little surprising At first it was a normal UUID, but I felt like this is to long for a URL, so I truncated it. Not sure, how I should call it instead, as ID is already a existing field. > CreateGist is vulnerable to a directory traversal attack which allows writes to arbitrary files. This will be fixed, when add a check to ensure there is no directory in the name. > I think this needs to be `ENABLED=false` by default, at lease for the first time it appears in a major release. I'm not so sure about that. If people want to test it, they can just use the Code from this PR.
Update
Some checks failed
Integration tests for the release process / release-simulation (pull_request) Successful in 5m20s
issue-labels / info (pull_request) Successful in 2s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Has been skipped
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m14s
testing / backend-checks (pull_request) Failing after 2m25s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
d825ba5fc5
Fix Lint
Some checks failed
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / info (pull_request) Successful in 3s
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Has been skipped
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m1s
testing / backend-checks (pull_request) Failing after 1m46s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
Integration tests for the release process / release-simulation (pull_request) Successful in 5m0s
a4190f4311
Author
Member
Copy link

I have now pushed the first Update to this PR:

  • You can now edit Gists in the Web UI
  • It is no longer possible to use a filename with a path separator
  • Some Bugs were fixed
  • A Sitemap has been added
  • Tests were added wich already cover a lot of code. More will follow.
I have now pushed the first Update to this PR: - You can now edit Gists in the Web UI - It is no longer possible to use a filename with a path separator - Some Bugs were fixed - A Sitemap has been added - Tests were added wich already cover a lot of code. More will follow.
Merge branch 'forgejo' into gists
Some checks failed
issue-labels / info (pull_request) Successful in 2s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 48s
testing / backend-checks (pull_request) Failing after 1m41s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
06ecb67499
Another attempt to fix lint
Some checks failed
issue-labels / info (pull_request) Successful in 1s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 47s
testing / backend-checks (pull_request) Failing after 2m52s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
b3a3b58ba8
Run make fmt
Some checks failed
issue-labels / info (pull_request) Successful in 1s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 47s
testing / backend-checks (pull_request) Failing after 3m3s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
24938be27a
Update Swagger
Some checks failed
issue-labels / info (pull_request) Successful in 2s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / info (pull_request_target) Successful in 2s
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 59s
testing / backend-checks (pull_request) Successful in 4m12s
testing / test-unit (pull_request) Failing after 8m25s
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / test-e2e (pull_request) Failing after 13m39s
testing / test-mysql (pull_request) Failing after 23m17s
testing / test-sqlite (pull_request) Failing after 24m33s
testing / test-pgsql (pull_request) Failing after 30m7s
testing / security-check (pull_request) Has been skipped
b2d3747ea3
Merge branch 'forgejo' into gists
Some checks failed
issue-labels / info (pull_request) Successful in 2s
issue-labels / end-to-end (pull_request) Has been skipped
issue-labels / backporting (pull_request) Has been skipped
issue-labels / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request) Has been skipped
issue-labels / end-to-end (pull_request_target) Has been skipped
issue-labels / info (pull_request_target) Successful in 3s
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / merge-conditions (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m26s
testing / backend-checks (pull_request) Successful in 3m47s
testing / test-unit (pull_request) Failing after 7m57s
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / test-e2e (pull_request) Failing after 13m39s
testing / test-mysql (pull_request) Failing after 23m0s
testing / test-sqlite (pull_request) Failing after 24m16s
testing / test-pgsql (pull_request) Failing after 29m50s
testing / security-check (pull_request) Has been skipped
5a9c768e49
Merge branch 'forgejo' into gists
Some checks failed
requirements / merge-conditions (pull_request) Failing after 3s
/ release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 2m1s
testing / backend-checks (pull_request) Successful in 5m7s
testing / test-unit (pull_request) Failing after 8m54s
testing / test-e2e (pull_request) Failing after 9m58s
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / test-mysql (pull_request) Failing after 25m50s
testing / test-sqlite (pull_request) Failing after 26m48s
testing / test-pgsql (pull_request) Failing after 31m16s
testing / security-check (pull_request) Has been skipped
ac2ded0ccd
Update
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 46s
testing / backend-checks (pull_request) Failing after 1m33s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
Integration tests for the release process / release-simulation (pull_request) Successful in 4m44s
69faaaf097
Author
Member
Copy link

The latest Commit adds the following:

  • Gists are now deleted when their Owner is deleted
  • Gists can now be manged from the Admin Interface
The latest Commit adds the following: - Gists are now deleted when their Owner is deleted - Gists can now be manged from the Admin Interface
Merge branch 'forgejo' into gists
Some checks failed
requirements / merge-conditions (pull_request) Failing after 3s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m5s
testing / backend-checks (pull_request) Failing after 1m35s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
a13422520a
Run make lint
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 47s
testing / backend-checks (pull_request) Failing after 1m42s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
c328a775e3
Run make generate-swagger
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 52s
testing / backend-checks (pull_request) Successful in 3m4s
testing / test-unit (pull_request) Failing after 5m26s
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / test-e2e (pull_request) Failing after 9m52s
testing / test-mysql (pull_request) Failing after 20m26s
testing / test-sqlite (pull_request) Successful in 21m38s
testing / test-pgsql (pull_request) Failing after 25m3s
testing / security-check (pull_request) Has been skipped
347af6d8b1
Try to fix tests
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 49s
testing / backend-checks (pull_request) Failing after 3m32s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
91cac56468
Remove comment
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 47s
testing / backend-checks (pull_request) Failing after 1m35s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
Integration tests for the release process / release-simulation (pull_request) Successful in 4m24s
aa553d0db2
Member
Copy link

Maybe dont use the Gist branding for the Gists tab, looks out of place tbh

Maybe dont use the Gist branding for the Gists tab, looks out of place tbh
Author
Member
Copy link

Maybe dont use the Gist branding for the Gists tab,

The problem is that I don't have any other Icon

> Maybe dont use the Gist branding for the Gists tab, The problem is that I don't have any other Icon
Owner
Copy link

I couldn't find any evidence of Gist(s) being a GitHub trademark, not that I looked a lot, but it must be in the icon pack for a good reason, just like the copilot one.

This is one more reason I would suggest to rename the entire thing to Snippets.

I think you will be fine using https://primer.style/foundations/icons/file-code-16 or https://primer.style/foundations/icons/code-square-16 for an icon.

I couldn't find any evidence of Gist(s) being a GitHub trademark, not that I looked a lot, but it must be in the icon pack for a good reason, just like the `copilot` one. This is one more reason I would suggest to rename the entire thing to Snippets. I think you will be fine using https://primer.style/foundations/icons/file-code-16 or https://primer.style/foundations/icons/code-square-16 for an icon.
Member
Copy link

This is one more reason I would suggest to rename the entire thing to Snippets.

I also think that a more general, freer name is good. And Snippets is already known (from GitLab).
Alternatively, I would also be happy with Pastes (Sourcehut) - but I prefer Snippets.

> This is one more reason I would suggest to rename the entire thing to Snippets. I also think that a more general, freer name is good. And Snippets is already known (from GitLab). Alternatively, I would also be happy with Pastes (Sourcehut) - but I prefer Snippets.
Author
Member
Copy link

I'd like to keep the name Gists for the following reasons:

  • The name is git related. Gist is just git with a extra s.
  • The name is already well known and also used outside GitHub (e.g. Opengist)
  • I don't need to change a lot of code
I'd like to keep the name Gists for the following reasons: - The name is git related. Gist is just git with a extra s. - The name is already well known and also used outside GitHub (e.g. [Opengist](https://github.com/thomiceli/opengist)) - I don't need to change a lot of code
Merge branch 'forgejo' into gists
Some checks failed
requirements / merge-conditions (pull_request) Failing after 5s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m26s
testing / backend-checks (pull_request) Failing after 1m49s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
ef1217da0c
Update
Some checks failed
requirements / merge-conditions (pull_request) Failing after 2s
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Failing after 21s
testing / backend-checks (pull_request) Failing after 2m38s
testing / test-unit (pull_request) Has been skipped
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
testing / test-pgsql (pull_request) Has been skipped
testing / test-sqlite (pull_request) Has been skipped
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
b45d35419f
Update
Some checks failed
requirements / merge-conditions (pull_request) Successful in 3s
issue-labels / backporting (pull_request_target) Has been skipped
issue-labels / cascade (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
testing / frontend-checks (pull_request) Successful in 1m5s
testing / backend-checks (pull_request) Successful in 2m49s
testing / test-unit (pull_request) Failing after 5m4s
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / test-e2e (pull_request) Failing after 11m21s
testing / test-mysql (pull_request) Successful in 17m25s
testing / test-sqlite (pull_request) Successful in 19m6s
testing / test-pgsql (pull_request) Failing after 2h0m28s
testing / security-check (pull_request) Has been skipped
4d38119574
Update
Some checks failed
testing / frontend-checks (pull_request) Successful in 1m30s
testing / backend-checks (pull_request) Successful in 3m19s
testing / test-e2e (pull_request) Failing after 7m35s
testing / test-unit (pull_request) Successful in 7m41s
testing / test-remote-cacher (redis) (pull_request) Successful in 1m48s
testing / test-remote-cacher (valkey) (pull_request) Successful in 1m48s
testing / test-remote-cacher (garnet) (pull_request) Successful in 1m38s
testing / test-remote-cacher (redict) (pull_request) Successful in 1m39s
testing / test-mysql (pull_request) Successful in 22m18s
testing / test-sqlite (pull_request) Successful in 21m38s
testing / test-pgsql (pull_request) Successful in 27m41s
testing / security-check (pull_request) Successful in 1m30s
requirements / merge-conditions (pull_request) Successful in 2s
issue-labels / cascade (pull_request_target) Has been skipped
issue-labels / release-notes (pull_request_target) Has been skipped
issue-labels / backporting (pull_request_target) Has been skipped
milestone / set (pull_request_target) Has been skipped
c61645c236
JakobDev changed title from (削除) WIP: feat: Add Gists (削除ここまで) to feat: Add Gists 2025年01月02日 14:29:30 +01:00
First-time contributor
Copy link

Random user here—other than disagreement on the name, is there anything blocking this?

Random user here—other than disagreement on the name, is there anything blocking this?
Contributor
Copy link

Marked as WIP: as it is not actively worked on at the moment.

Marked as WIP: as it is not actively worked on at the moment.
earl-warren changed title from (削除) feat: Add Gists (削除ここまで) to WIP: feat: Add Gists 2025年05月03日 12:31:52 +02:00
Contributor
Copy link

This pull request contains good code but it has not seen any activity in a long time. In order to unclutter the queue and help reviewers focus on those that are actively worked on, it is now closed. Feel free to re-open it as soon as you want. It is also marked with the label valuable code so it can conveniently be found later and not confused with pull requests closed for other reasons.

This pull request contains good code but it has not seen any activity in a long time. In order to unclutter the queue and help reviewers focus on those that are actively worked on, it is now closed. Feel free to re-open it as soon as you want. It is also marked with the label `valuable code` so it can conveniently be found later and not confused with pull requests closed for other reasons.
earl-warren 2025年06月14日 22:40:15 +02:00
Author
Member
Copy link

@earl-warren I'm interested in continue this. What is exactly needed to merge this (at least in an experimental state)?

@earl-warren I'm interested in continue this. What is exactly needed to merge this (at least in an experimental state)?
Contributor
Copy link

Since you're asking, working on the design of this new feature should be done before implementing it. There are a lot of moving parts and diving right into code may not be the best approach. Consider just this question: "What is the designed UX for a Gist feature"?

If you wonder what I mean by "design", this is an example.

Since you're asking, working on the design of this new feature should be done before implementing it. There are a lot of moving parts and diving right into code may not be the best approach. Consider just this question: "What is the designed UX for a Gist feature"? If you wonder what I mean by "design", [this is an example](https://codeberg.org/forgejo/design/issues/52).
Author
Member
Copy link

working on the design of this new feature should be done before implementing it

It's already implemented since almost a year

> working on the design of this new feature should be done before implementing it It's already implemented since almost a year
Contributor
Copy link

I really appreciate you have put a lot of energy into it and it is kind of disappointing to contemplate the prospect of not having it done.

How do you know the UX is good? You imagined it and thought about it by yourself, which is not an easy task. I'm sure it will be a perfect match for you. But how do you know it will also be a good match for most of the Forgejo users? That is one of the difficult questions that working on design can clarify.

I really appreciate you have put a lot of energy into it and it is kind of disappointing to contemplate the prospect of not having it done. How do you know the UX is good? You imagined it and thought about it by yourself, which is not an easy task. I'm sure it will be a perfect match for you. But how do you know it will also be a good match for most of the Forgejo users? That is one of the difficult questions that working on design can clarify.
Author
Member
Copy link

But how do you know it will also be a good match for most of the Forgejo users?

The UI is already there and working. Everyone can just test it and give feedback.

> But how do you know it will also be a good match for most of the Forgejo users? The UI is already there and working. Everyone can just test it and give feedback.
First-time contributor
Copy link

I'd be happy to apply and test it on my 13.0.2, but the patch as it stands does not seem to apply cleanly to that version (perhaps entirely unsurprisingly). What's the best way of going about testing it?

I fully understand and value the approach of designing a feature prior to implementing it. That said, perhaps in some cases the design proces could be permitted to be informed by working code and practical experimentation?

This is a feature I am greatly missing. The size of this contribution seems rather significant, and it seems a shame that it's not accepted as a WIP feature, at the very least.

I'd be happy to apply and test it on my 13.0.2, but the patch as it stands does not seem to apply cleanly to that version (perhaps entirely unsurprisingly). What's the best way of going about testing it? I fully understand and value the approach of designing a feature prior to implementing it. That said, perhaps in some cases the design proces could be permitted to be informed by working code and practical experimentation? This is a feature I am greatly missing. The size of this contribution seems rather significant, and it seems a shame that it's not accepted as a WIP feature, at the very least.
Author
Member
Copy link

@ltning I have updated the branch, so you can test it.

@ltning I have updated the branch, so you can test it.
JakobDev reopened this pull request 2025年11月18日 18:25:37 +01:00
Owner
Copy link

I know you refused rename the feature a year ago but in case you are up for reconsiderations:

  • it is not well translatable, you can pretty much expect translators to either not translate it at all, leaving a meaningless name as is for their language, or that they will translate another word like "snippet", or "paste" or whatever else is popular
  • in explore tabs, the gist icon is literally next to the word "gist". Neither icon nor the text give any idea to what the tab is about. The tab just says "Gist Gists". There are much more meaningful octicons available like file-code and log
  • even if the the name Gist is referencing Git, it's not easily perceivable. It also doesn't need to be related to Git as the primary feature is quick saving of text snippets with less complexity than repositories have, not versioning
I know you [refused](https://codeberg.org/forgejo/forgejo/pulls/6125#issuecomment-2543757) rename the feature a year ago but in case you are up for reconsiderations: * it is not well translatable, you can pretty much expect translators to either not translate it at all, leaving a meaningless name as is for their language, or that they will translate another word like "snippet", or "paste" or whatever else is popular * in explore tabs, the `gist` icon is literally next to the word "gist". Neither icon nor the text give any idea to what the tab is about. The tab just says "Gist Gists". There are much more meaningful octicons available like `file-code` and `log` * even if the the name Gist is referencing Git, it's not easily perceivable. It also doesn't need to be related to Git as the primary feature is quick saving of text snippets with less complexity than repositories have, not versioning
Some checks failed
testing / frontend-checks (pull_request) Successful in 1m43s
Required
Details
testing / backend-checks (pull_request) Failing after 2m20s
Required
Details
testing / test-unit (pull_request) Has been skipped
Required
Details
testing / test-e2e (pull_request) Has been skipped
testing / test-mysql (pull_request) Has been skipped
Required
Details
testing / test-pgsql (pull_request) Has been skipped
Required
Details
testing / test-sqlite (pull_request) Has been skipped
Required
Details
testing / test-remote-cacher (redis) (pull_request) Has been skipped
testing / test-remote-cacher (valkey) (pull_request) Has been skipped
testing / test-remote-cacher (garnet) (pull_request) Has been skipped
testing / test-remote-cacher (redict) (pull_request) Has been skipped
testing / security-check (pull_request) Has been skipped
Required
Details
This pull request has changes conflicting with the target branch.
  • routers/api/v1/swagger/options.go
  • templates/base/head.tmpl
  • templates/swagger/v1_json.tmpl
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u gists:JakobDev-gists
git switch JakobDev-gists
Sign in to join this conversation.
No reviewers
Labels
Clear labels
arch
riscv64

Archived

backport/v1.19

Scheduled for backport to Forgejo v1.19

Archived

backport/v1.20

Scheduled for backport to Forgejo v1.20

Archived

backport/v1.21/forgejo

Scheduled for backport to Forgejo v1.21

Archived

backport/v10.0/forgejo

Automated backport to v10.0

Archived

backport/v11.0/forgejo

Automated backport to v11.0
backport/v12.0/forgejo

Automated backport to v12.0

Archived

backport/v13.0/forgejo

Automated backport to v13.0

Archived

backport/v14.0/forgejo

Automated backport to v14.0
backport/v7.0/forgejo

Scheduled for backport to Forgejo v7.0

Archived

backport/v8.0/forgejo

Scheduled for backport to Forgejo v8.0

Archived

backport/v9.0/forgejo

Scheduled for backport to Forgejo v9.0

Archived

breaking

The release containing this change is not backward compatible
bug

Something is not working

Archived

bug
confirmed

it can be reproduced
bug
duplicate

bug has already been reported in the Forgejo tracker
bug
needs-more-info

the information provided does not contain enough details
bug
new-report

bug has just been reported and need triage (default label on issue creation)
bug
reported-upstream

bug cannot be fixed within Forgejo easily, it has been reported upstream
code/actions

Forgejo Actions feature
code/api

API
code/auth

Forgejo Authentication
code/auth/faidp

Forgejo as Identity Provider (in OAuth/OIDC flow)
code/auth/farp

Forgejo as Relying Party / Client (in OAuth/OIDC flow)
code/email

Everything related to email in Forgejo
code/federation

Federation
code/git

Related to the Git backend in Forgejo
code/migrations

Migration between Git forges (i.e. for GitHub, GitLab, Gitea, Forgejo, etc.). NOT for database migrations.
code/packages

Forgejo package and container registry
code/wiki
database
MySQL

https://www.mysql.com/
database
PostgreSQL

https://www.postgresql.org/
database
SQLite

https://sqlite.org/
dependency-upgrade

https://codeberg.org/forgejo/forgejo/issues/2779
dependency
certmagic

github.com/caddyserver/certmagic

Archived

dependency
chart.js

https://github.com/chartjs/Chart.js

Archived

dependency
Chi

https://github.com/go-chi/chi/

Archived

dependency
Chroma

https://github.com/alecthomas/chroma/

Archived

dependency
citation.js

https://github.com/larsgw/citation.js/

Archived

dependency
codespell

https://github.com/codespell-project/codespell

Archived

dependency
css-loader

https://github.com/webpack-contrib/css-loader

Archived

dependency
devcontainers

https://github.com/devcontainers/cli

Archived

dependency
dropzone

https://github.com/dropzone/dropzone

Archived

dependency
editorconfig-checker

https://github.com/editorconfig-checker/editorconfig-checker

Archived

dependency
elasticsearch

https://www.elastic.co/elasticsearch

Archived

dependency
enmime

https://github.com/jhillyerd/enmime

Archived

dependency
F3

https://f3.forgefriends.org/
dependency
ForgeFed

https://forgefed.org
dependency
garage

https://git.deuxfleurs.fr/Deuxfleurs/garage
dependency
Git

https://git-scm.com/

Archived

dependency
git-backporting

https://github.com/kiegroup/git-backporting

Archived

dependency
Gitea

https://github.com/go-gitea/gitea
dependency
gitignore

https://github.com/github/gitignore

Archived

dependency
go-ap

https://github.com/go-ap/activitypub

Archived

dependency
go-enry

https://github.com/go-enry/go-enry

Archived

dependency
go-gitlab

https://github.com/xanzy/go-gitlab

Archived

dependency
Go-org

https://github.com/niklasfasching/go-org

Archived

dependency
go-rpmutils

https://github.com/sassoftware/go-rpmutils

Archived

dependency
go-sql-driver mysql

https://github.com/go-sql-driver/mysql/

Archived

dependency
go-swagger

github.com/go-swagger/go-swagger

Archived

dependency
go-version

https://github.com/hashicorp/go-version

Archived

dependency
go-webauthn

https://github.com/go-webauthn/webauthn

Archived

dependency
gocron

https://github.com/go-co-op/gocron

Archived

dependency
Golang

https://go.dev/
dependency
goldmark

https://github.com/yuin/goldmark

Archived

dependency
goquery

github.com/PuerkitoBio/goquery

Archived

dependency
Goth

https://github.com/markbates/goth/

Archived

dependency
grpc-go

https://github.com/grpc/grpc-go

Archived

dependency
happy-dom

https://github.com/capricorn86/happy-dom

Archived

dependency
Helm

https://helm.sh/

Archived

dependency
image-spec

https://github.com/opencontainers/image-spec

Archived

dependency
jsonschema

https://github.com/santhosh-tekuri/jsonschema

Archived

dependency
KaTeX

https://github.com/KaTeX/KaTeX

Archived

dependency
lint

All linting tools and libraries

Archived

dependency
MariaDB

https://mariadb.com/

Archived

dependency
Mermaid

https://github.com/mermaid-js/mermaid/

Archived

dependency
minio-go

https://github.com/minio/minio-go/

Archived

dependency
misspell

github.com/golangci/misspell/cmd/misspell

Archived

dependency
Monaco

https://github.com/microsoft/monaco-editor

Archived

dependency
PDFobject

https://pdfobject.com/

Archived

dependency
playwright

https://playwright.dev/

Archived

dependency
postcss

https://github.com/postcss/postcss

Archived

dependency
postcss-plugins

https://github.com/csstools/postcss-plugins

Archived

dependency
pprof

https://github.com/google/pprof

Archived

dependency
prometheus client_golang

https://github.com/prometheus/client_golang

Archived

dependency
protobuf

https://google.golang.org/protobuf

Archived

dependency
relative-time-element

https://github.com/github/relative-time-element

Archived

dependency
renovate

https://github.com/renovatebot/renovate

Archived

dependency
reply

https://code.forgejo.org/forgejo/reply

Archived

dependency
ssh

https://github.com/gliderlabs/ssh

Archived

dependency
swagger-ui

https://github.com/swagger-api/swagger-ui

Archived

dependency
tailwind

https://tailwindcss.com/

Archived

dependency
temporal-polyfill

https://github.com/fullcalendar/temporal-polyfill

Archived

dependency
terminal-to-html

github.com/buildkite/terminal-to-html

Archived

dependency
tests-only

Undifferentiated dependencies used for testing only

Archived

dependency
text-expander-element

https://github.com/github/text-expander-element

Archived

dependency
urfave

https://github.com/urfave/cli

Archived

dependency
vfsgen

https://github.com/lunny/vfsgen

Archived

dependency
vite

https://vitejs.dev/

Archived

dependency
Woodpecker CI

https://woodpecker-ci.org/

Archived

dependency
x tools

https://golang.org/x/tools

Archived

dependency
XORM

https://gitea.com/xorm/xorm

Archived

Discussion
duplicate

This issue or pull request already exists
enhancement/feature

New feature
forgejo/accessibility

Accessibility (a11y)
forgejo/branding

Branding (logo, name, tagline etc.)
forgejo/ci

Forgejo Actions CI configuration
forgejo/commit-graph

The commit graph feature and page.
forgejo/documentation
forgejo/furnace cleanup

Keeping Forgejo in sync with its dependencies and contributing back to them

Archived

forgejo/i18n

t9n/translation, l10n/localization, and i18n/internationalization of Forgejo
forgejo/interop

Interoperability with other services: Webhooks, bridges, integrations
forgejo/moderation

Moderation
forgejo/privacy

Privacy first
forgejo/release

Release management
forgejo/scaling

Performance and scaling
forgejo/security

Security (please disclose responsibly)
forgejo/ui

User interface
Gain
High

User research provides indicators that this would be good to have, interested contributors are encouraged to pick this.
Gain
Nice to have

This is likely worth having, but the assumption is not backed by user research data (it might benefit a small amount of users only.) Unlikely to receive much attention, but feel free to pick.
Gain
Undefined

Not enough information to assess the request's benefits. This issue may be closed if no gain is established: You can help by giving us more input.
Gain
Very High

User research indicates that this is an important improvement for Forgejo users. Contributions very welcome!
good first issue

Optimal for first-timers! Make sure to look for further explanations and ask for help if needed. If you want, you can consider the person who added this label as a point of contact.
i18n/backport-stable

This PR needs to be backported to stable branch of Forgejo safely and manually, using a migration script.
impact
large

Large impact: Potential data loss, many users affected, major degradation in UX.
impact
medium

Medium impact: Several users affected, degradation in UX, workarounds might be available but inconvenient.
impact
small

Small impact: No data loss, workarounds might be available, affects few users.
impact
unknown

Report was not yet triaged to assess impact.
Incompatible license

This pull request contains changes that are not (yet) compatible with the current Forgejo license
issue
closed

The issue was resolved in the repository of the dependency
issue
do-not-exist-yet

An issue should be created in the respository of the dependency
issue
open

An open issue exists in the upstream repository of the dependency
manual test

Pull requests that have been merged with a manual test

Archived

Manually tested during feature freeze

The manual test instructions were followed
OS
FreeBSD

Specific to the FreeBSD Operating System
OS
Linux

Specific to (GNU/)Linux Operating Systems
OS
macOS

Specific to the MacOS Operating System
OS
Windows

Specific to the Windows Operating System
problem

A user report about a problem. Needs to be triaged to find potential solutions.
QA
regression

found in the version of the milestone and not before
release blocker

Issues that must be fixed before the release can be published
Release Cycle
Feature Freeze

Only bug fixes with automated tests (except for CSS/JavaScript)
release-blocker
v7.0

Issues that must be fixed before Forgejo v7.0 can be released 17 April 2024

Archived

release-blocker
v7.0.1

Issues that must be fixed before Forgejo v7.0.1 can be released

Archived

release-blocker
v7.0.2

Issues that must be fixed before Forgejo v7.0.2 can be released

Archived

release-blocker
v7.0.3

Issues that must be fixed before Forgejo v7.0.3 can be released

Archived

release-blocker
v7.0.4

Issues that must be fixed before Forgejo v7.0.4 can be released

Archived

release-blocker
v8.0.0

Issues that must be fixed before Forgejo v8.0.0 can be released

Archived

release-blocker/v9.0.0

Issues that must be fixed before Forgejo v9.0.0 can be released

Archived

run-all-playwright-tests

Add this label to a PR to run all playwright tests manually.
run-end-to-end-tests

Trigger additional tests on the PR when it is ready to be merged
test
manual

manual testing has been documented
test
needed

test should be added
test
needs-help

help needed to add a test
test
not-needed

no additional test is needed
test
present

test has been added
untested

Pull requests that have been merged with no test and submitted as is to the dependency where they belong

Archived

User research - time-tracker

Time tracking feature for issues and the JS stopwatch.
valuable code

This PR was closed because the implementation is incomplete
worth a release-note

Add this PR to the release notes
User research - Accessibility

Requires input about accessibility features, likely involves user testing.
User research - Blocked

Do not pick as-is! We are happy if you can help, but please coordinate with ongoing redesign in this area.
User research - Community

Community features, such as discovering other people's work or otherwise feeling welcome on a Forgejo instance.
User research - Config (instance)

Instance-wide configuration, authentication and other admin-only needs.
User research - Errors

How to deal with errors in the application and write helpful error messages.
User research - Filters

How filter and search is being worked with.
User research - Future backlog

The issue might be inspiring for future design work.
User research - Git workflow

AGit, fork-based and new Git workflow, PR creation etc
User research - Labels

Active research about Labels
User research - Moderation

Moderation Featuers for Admins are undergoing active User Research
User research - Needs input

Use this label to let the User Research team know their input is requested.
User research - Notifications/Dashboard

Research on how users should know what to do next.
User research - Rendering

Text rendering, markup languages etc
User research - Repo creation

Active research about the New Repo dialog.
User research - Repo units

The repo sections, disabling them and the "Add more" button.
User research - Security
User research - Settings (in-app)

How to structure in-app settings in the future?
No labels
arch
riscv64
backport/v1.19
backport/v1.20
backport/v1.21/forgejo
backport/v10.0/forgejo
backport/v11.0/forgejo
backport/v12.0/forgejo
backport/v13.0/forgejo
backport/v14.0/forgejo
backport/v7.0/forgejo
backport/v8.0/forgejo
backport/v9.0/forgejo
breaking
bug
bug
confirmed
bug
duplicate
bug
needs-more-info
bug
new-report
bug
reported-upstream
code/actions
code/api
code/auth
code/auth/faidp
code/auth/farp
code/email
code/federation
code/git
code/migrations
code/packages
code/wiki
database
MySQL
database
PostgreSQL
database
SQLite
dependency-upgrade
dependency
certmagic
dependency
chart.js
dependency
Chi
dependency
Chroma
dependency
citation.js
dependency
codespell
dependency
css-loader
dependency
devcontainers
dependency
dropzone
dependency
editorconfig-checker
dependency
elasticsearch
dependency
enmime
dependency
F3
dependency
ForgeFed
dependency
garage
dependency
Git
dependency
git-backporting
dependency
Gitea
dependency
gitignore
dependency
go-ap
dependency
go-enry
dependency
go-gitlab
dependency
Go-org
dependency
go-rpmutils
dependency
go-sql-driver mysql
dependency
go-swagger
dependency
go-version
dependency
go-webauthn
dependency
gocron
dependency
Golang
dependency
goldmark
dependency
goquery
dependency
Goth
dependency
grpc-go
dependency
happy-dom
dependency
Helm
dependency
image-spec
dependency
jsonschema
dependency
KaTeX
dependency
lint
dependency
MariaDB
dependency
Mermaid
dependency
minio-go
dependency
misspell
dependency
Monaco
dependency
PDFobject
dependency
playwright
dependency
postcss
dependency
postcss-plugins
dependency
pprof
dependency
prometheus client_golang
dependency
protobuf
dependency
relative-time-element
dependency
renovate
dependency
reply
dependency
ssh
dependency
swagger-ui
dependency
tailwind
dependency
temporal-polyfill
dependency
terminal-to-html
dependency
tests-only
dependency
text-expander-element
dependency
urfave
dependency
vfsgen
dependency
vite
dependency
Woodpecker CI
dependency
x tools
dependency
XORM
Discussion
duplicate
enhancement/feature
forgejo/accessibility
forgejo/branding
forgejo/ci
forgejo/commit-graph
forgejo/documentation
forgejo/furnace cleanup
forgejo/i18n
forgejo/interop
forgejo/moderation
forgejo/privacy
forgejo/release
forgejo/scaling
forgejo/security
forgejo/ui
Gain
High
Gain
Nice to have
Gain
Undefined
Gain
Very High
good first issue
i18n/backport-stable
impact
large
impact
medium
impact
small
impact
unknown
Incompatible license
issue
closed
issue
do-not-exist-yet
issue
open
manual test
Manually tested during feature freeze
OS
FreeBSD
OS
Linux
OS
macOS
OS
Windows
problem
QA
regression
release blocker
Release Cycle
Feature Freeze
release-blocker
v7.0
release-blocker
v7.0.1
release-blocker
v7.0.2
release-blocker
v7.0.3
release-blocker
v7.0.4
release-blocker
v8.0.0
release-blocker/v9.0.0
run-all-playwright-tests
run-end-to-end-tests
test
manual
test
needed
test
needs-help
test
not-needed
test
present
untested
User research - time-tracker
valuable code
worth a release-note
User research - Accessibility
User research - Blocked
User research - Community
User research - Config (instance)
User research - Errors
User research - Filters
User research - Future backlog
User research - Git workflow
User research - Labels
User research - Moderation
User research - Needs input
User research - Notifications/Dashboard
User research - Rendering
User research - Repo creation
User research - Repo units
User research - Security
User research - Settings (in-app)
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
8 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo/forgejo!6125
Reference in a new issue
forgejo/forgejo
No description provided.
Delete branch "JakobDev/forgejo:gists"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?