From 1fe67135917c763351a3e3e75379a5a708c4027a Mon Sep 17 00:00:00 2001 From: afterlifepro Date: Tue, 30 Sep 2025 23:59:57 +0100 Subject: [PATCH] appview/state,appview/pages/templates: add installable pwa support for tangled Signed-off-by: afterlifepro --- appview/pages/templates/layouts/base.html | 3 +++ .../pages/templates/user/completeSignup.html | 1 + appview/pages/templates/user/login.html | 1 + appview/pages/templates/user/signup.html | 1 + appview/state/router.go | 1 + appview/state/state.go | 23 +++++++++++++++++++ 6 files changed, 30 insertions(+) diff --git a/appview/pages/templates/layouts/base.html b/appview/pages/templates/layouts/base.html index 4fc18a81..4fe948f5 100644 --- a/appview/pages/templates/layouts/base.html +++ b/appview/pages/templates/layouts/base.html @@ -14,6 +14,9 @@ + + + diff --git a/appview/pages/templates/user/completeSignup.html b/appview/pages/templates/user/completeSignup.html index 542731dc..1f0e9744 100644 --- a/appview/pages/templates/user/completeSignup.html +++ b/appview/pages/templates/user/completeSignup.html @@ -20,6 +20,7 @@ content="complete your signup for tangled" /> + + login · tangled diff --git a/appview/pages/templates/user/signup.html b/appview/pages/templates/user/signup.html index 1edbf20b..dd4a8d73 100644 --- a/appview/pages/templates/user/signup.html +++ b/appview/pages/templates/user/signup.html @@ -8,6 +8,7 @@ + sign up · tangled diff --git a/appview/state/router.go b/appview/state/router.go index 3165f433..58c4a586 100644 --- a/appview/state/router.go +++ b/appview/state/router.go @@ -37,6 +37,7 @@ func (s *State) Router() http.Handler { router.Use(middleware.TryRefreshSession()) router.Get("/favicon.svg", s.Favicon) router.Get("/favicon.ico", s.Favicon) + router.Get("/pwa-manifest.json", s.PWAManifest) userRouter := s.UserRouter(&middleware) standardRouter := s.StandardRouter(&middleware) diff --git a/appview/state/state.go b/appview/state/state.go index 7fea71c9..cc0625af 100644 --- a/appview/state/state.go +++ b/appview/state/state.go @@ -198,6 +198,29 @@ func (s *State) Favicon(w http.ResponseWriter, r *http.Request) { s.pages.Favicon(w) } +// https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest +const manifestJson = `{ + "name": "tangled", + "description": "tightly-knit social coding.", + "icons": [ + { + "src": "/favicon.svg", + "sizes": "144x144" + } + ], + "start_url": "/", + "id": "org.tangled", + + "display": "standalone", + "background_color": "#111827", + "theme_color": "#111827" +}` + +func (p *State) PWAManifest(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "application/json") + w.Write([]byte(manifestJson)) +} + func (s *State) TermsOfService(w http.ResponseWriter, r *http.Request) { user := s.oauth.GetUser(r) s.pages.TermsOfService(w, pages.TermsOfServiceParams{ -- 2.43.0