gitforge/modules
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
..
actions feat(actions): make GITHUB_WORKFLOW_REF available (#10276) 2025-12-17 23:15:26 +01:00
activitypub chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
analyze
assetfs
auth feat: allow sync quota groups with oauth2 auth source (#8554) 2025-12-01 14:12:00 +01:00
avatar
base
cache fix: prevent Remove(key)...Get*(key) from returning a value computed before the Remove(key) 2025-11-16 08:53:37 -07:00
card
charset
container
csv
emoji
eventsource
forgefed log instrumentation & test package (#10371) 2025-12-09 15:37:50 +01:00
generate chore: unify the usage of CryptoRandomString (#10110) 2025-11-15 13:24:53 +01:00
git feat: add support to opt-in for fuzzy search (#10378) 2025-12-17 13:51:48 +01:00
gitrepo Update module github.com/golangci/golangci-lint/v2/cmd/golangci-lint to v2.6.1 (forgejo) (#10053) 2025-11-11 07:04:35 +01:00
graceful
hcaptcha
highlight
hostmatcher
html
httpcache
httplib
indexer chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
issue/template
json
keying feat: use keying for webhook secrets (#10059) 2025-12-22 15:51:37 +01:00
label
lfs
log
markup fix(ui): improve rendering of commit links (#10530) 2025-12-28 17:18:51 +01:00
mcaptcha
metrics
migration
nosql
optional
options
packages
paginator
pprof
private feat: show link to pull requests targeting a non-default branch when pushing (#10079) 2025-11-19 14:59:13 +01:00
process
proxy
proxyprotocol
public
queue test: fix modules/queue tests to use TEST_REDIS_SERVER when present (#10139) 2025-11-16 21:51:32 +01:00
recaptcha
references
regexplru
repository chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
secret
session
setting 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
sitemap
ssh feat: ensure only expected ssh public keys are in authorized_keys file (#10010) 2025-11-09 01:06:04 +01:00
storage
structs feat: Add header annotations for accurate API documentation (#9380) 2026-01-06 10:29:15 +01:00
svg
sync
system
templates chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
test fix(ui): document token validity in key verification view (#9002) 2025-11-14 23:40:03 +01:00
testimport chore: move all test blank imports in a single package (#10662) 2026-01-02 05:32:32 +01:00
testlogger
timeutil
translation chore(test): separate and move around i18n testing (#10539) 2025-12-23 04:39:26 +01:00
turnstile
typesniffer
updatechecker
uri
user
util feat(issue-search): support query syntax (#9109) 2025-11-19 16:05:42 +01:00
validation feat: allow sync quota groups with oauth2 auth source (#8554) 2025-12-01 14:12:00 +01:00
web fix: issues and pulls route permitted extra characters (#10185) 2025-12-10 01:21:38 +01:00
webhook
zstd