forgejo/modules/setting
Mai-Lapyst ed63f06d79 Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384)
This PR does three things:
- First it moves the inline web app manifest into its own route `/manifest.json`
- Secondly, it add a setting `pwa.STANDALONE` that can be set to `true` if one wants users to be allowed to "install" forgejo as an pwa into their browser. This usually means an "install app" button, which essentially just creates an shortcut to use a single-tab window for browsing the app / forgejo.
- Thirdly since we have now an extra route, it checks if someone placed a `public/manifest.json` in forgejo's custom path; if yes, it's content is served instead. This allows more customization without the need on our side to completly implement every nuance of web app manifests.

This closes issue #2638

### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.

### Documentation

- [x] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs/pulls/1669) to explain to Forgejo users how to use this change.

### 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.
- [x] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Features
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/5384): <!--number 5384 --><!--line 0 --><!--description W2FsbG93IGZvcmdlam8gdG8gcnVuIGFzIGEgcHdhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gJiBvdmVycmlkZSBvZiB0aGUgd2ViYXBwIG1hbmlmZXN0Lmpzb24gdmlhIHRoZSBhIGN1c3RvbSBmaWxlIGluIGBwdWJsaWMvbWFuaWZlc3QuanNvbmBdKGh0dHBzOi8vY29kZWJlcmcub3JnL2Zvcmdlam8vZm9yZ2Vqby9wdWxscy81Mzg0KQ==-->[allow forgejo to run as a pwa standalone application & override of the webapp manifest.json via the a custom file in `public/manifest.json`](https://codeberg.org/forgejo/forgejo/pulls/5384)<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/5384
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Lucas <sclu1034@noreply.codeberg.org>
Co-authored-by: Mai-Lapyst <mai-lapyst@noreply.codeberg.org>
Co-committed-by: Mai-Lapyst <mai-lapyst@noreply.codeberg.org>
2026-01-09 17:49:29 +01:00
..
config chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
actions.go feat: increase default limit of dispatch inputs to 100 (#10563) 2025-12-23 17:49:47 +01:00
actions_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
admin.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
admin_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
api.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
asset_dynamic.go Use a general approach to access custom/static/builtin assets (#24022) 2023-04-12 18:16:45 +08:00
asset_static.go Use a general approach to access custom/static/builtin assets (#24022) 2023-04-12 18:16:45 +08:00
attachment.go feat: Make AVIF Images work with Forgejo 2024-11-13 19:09:40 +01:00
attachment_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
badges.go [GITEA] Add support for shields.io-based badges 2024-02-05 16:09:42 +01:00
cache.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
camo.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
config.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
config_env.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
config_env_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
config_provider.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
config_provider_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
cors.go Fix settings not being loaded at CLI (#26402) 2025-01-05 12:13:48 +00:00
cron.go Replace interface{} with any (#25686) 2023-07-04 18:36:08 +00:00
cron_test.go fix: LFS GC is never running because of a bug in the parsing of the INI file (#9202) 2025-09-09 22:32:49 +02:00
database.go feat: Add support for loading db password from file via PASSD_URI (#10421) 2025-12-18 20:55:56 +01:00
database_sqlite.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
database_test.go feat: Add support for loading db password from file via PASSD_URI (#10421) 2025-12-18 20:55:56 +01:00
disposable_email_domain_data.go feat: add setting to block disposable emails 2024-11-20 23:17:37 -06:00
f3.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
federation.go feat(activitiypub): enable HTTP signatures on all ActivityPub endpoints (#7035) 2025-04-03 15:24:15 +00:00
forgejo_storage_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
git.go chore: remove two Git settings (#9815) 2025-10-23 00:38:47 +02:00
git_test.go chore: QoL improvements to tests (#7917) 2025-05-21 15:45:56 +02:00
highlight.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
i18n.go fix(UI): i18n: improve naming (#7539) 2025-04-15 05:48:19 +00:00
incoming_email.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
incoming_email_test.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
indexer.go feat: add support to opt-in for fuzzy search (#10378) 2025-12-17 13:51:48 +01:00
indexer_test.go Update module github.com/golangci/golangci-lint/v2/cmd/golangci-lint to v2.5.0 (forgejo) (#9563) 2025-10-08 13:15:33 +02:00
lfs.go chore(sec): unify usage of crypto/rand.Read (#7453) 2025-04-04 03:31:37 +00:00
lfs_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
log.go feat(log): better parseable and configurable ssh-logs (#9056) 2025-09-11 18:59:24 +02:00
log_test.go feat(log): better parseable and configurable ssh-logs (#9056) 2025-09-11 18:59:24 +02:00
mailer.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
mailer_test.go feat: add _URI entries for mail config (#8116) 2025-07-09 23:15:26 +02:00
markup.go Set MERMAID_MAX_SOURCE_CHARACTERS to 50000 (#34152) 2025-04-14 15:47:37 +02:00
metrics.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
migrations.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
mime_type_map.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
mirror.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
moderation.go feat: add configurable timeout for automatically removing resolved reports (#7940) 2025-07-28 14:52:13 +02:00
oauth2.go chore(sec): unify usage of crypto/rand.Read (#7453) 2025-04-04 03:31:37 +00:00
oauth2_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
other.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
packages.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
packages_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
path.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
path_test.go [BRANDING] alias {FORGEJO,GITEA}_{CUSTOM,WORK_DIR} 2024-02-05 16:05:01 +01:00
picture.go Fix all possible setting error related storages and added some tests (#23911) 2023-06-14 11:42:38 +08:00
project.go Refactor the setting to make unit test easier (#22405) 2023-02-20 00:12:01 +08:00
proxy.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
pwa.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
queue.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
quota.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
quota_test.go fix: [quota.default].TOTAL config setting supports unit suffixes (#9252) 2025-09-12 00:44:09 +02:00
repository.go feat: configurable default units for mirrors (#7902) 2025-06-03 08:12:29 +02:00
repository_archive.go Fix all possible setting error related storages and added some tests (#23911) 2023-06-14 11:42:38 +08:00
repository_archive_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
repository_test.go feat(sec): Add SSH signing support for instances (#6897) 2025-04-11 13:25:35 +00:00
security.go feat: replace cross origin protection (#9830) 2025-10-29 22:43:22 +01:00
server.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
server_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
service.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
service_test.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
session.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
setting.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
setting_test.go Move web app manifest to a own cache-able route and add a setting to set "display": "standalone"; Closes #2638 (#5384) 2026-01-09 17:49:29 +01:00
ssh.go feat: ensure only expected ssh public keys are in authorized_keys file (#10010) 2025-11-09 01:06:04 +01:00
storage.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
storage_test.go Update module github.com/golangci/golangci-lint/cmd/golangci-lint to v2 (forgejo) (#7367) 2025-03-28 22:22:21 +00:00
task.go handle deprecated settings (#22992) 2023-02-20 16:18:26 -06:00
time.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00
ui.go chore: remove not working PREFERRED_TIMESTAMP_TENSE setting (#9490) 2025-10-01 15:16:01 +02:00
webhook.go chore: branding import path (#7337) 2025-03-27 19:40:14 +00:00