+3
appview/pages/templates/layouts/base.html
+3
appview/pages/templates/layouts/base.html
···
15
15
<link rel="preconnect" href="https://avatar.tangled.sh" />
16
16
<link rel="preconnect" href="https://camo.tangled.sh" />
17
17
18
+
<!-- pwa manifest -->
19
+
<link rel="manifest" href="/pwa-manifest.json" />
20
+
18
21
<!-- preload main font -->
19
22
<link rel="preload" href="/static/fonts/InterVariable.woff2" as="font" type="font/woff2" crossorigin />
20
23
+1
appview/pages/templates/user/completeSignup.html
+1
appview/pages/templates/user/completeSignup.html
+1
appview/pages/templates/user/login.html
+1
appview/pages/templates/user/login.html
···
8
8
<meta property="og:url" content="https://tangled.org/login" />
9
9
<meta property="og:description" content="login to for tangled" />
10
10
<script src="/static/htmx.min.js"></script>
11
+
<link rel="manifest" href="/pwa-manifest.json" />
11
12
<link rel="stylesheet" href="/static/tw.css?{{ cssContentHash }}" type="text/css" />
12
13
<title>login · tangled</title>
13
14
</head>
+1
appview/pages/templates/user/signup.html
+1
appview/pages/templates/user/signup.html
···
8
8
<meta property="og:url" content="https://tangled.org/signup" />
9
9
<meta property="og:description" content="sign up for tangled" />
10
10
<script src="/static/htmx.min.js"></script>
11
+
<link rel="manifest" href="/pwa-manifest.json" />
11
12
<link rel="stylesheet" href="/static/tw.css?{{ cssContentHash }}" type="text/css" />
12
13
<title>sign up · tangled</title>
13
14
+1
appview/state/router.go
+1
appview/state/router.go
+23
appview/state/state.go
+23
appview/state/state.go
···
219
219
w.Write([]byte(robotsTxt))
220
220
}
221
221
222
+
// https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest
223
+
const manifestJson = `{
224
+
"name": "tangled",
225
+
"description": "tightly-knit social coding.",
226
+
"icons": [
227
+
{
228
+
"src": "/favicon.svg",
229
+
"sizes": "144x144"
230
+
}
231
+
],
232
+
"start_url": "/",
233
+
"id": "org.tangled",
234
+
235
+
"display": "standalone",
236
+
"background_color": "#111827",
237
+
"theme_color": "#111827"
238
+
}`
239
+
240
+
func (p *State) PWAManifest(w http.ResponseWriter, r *http.Request) {
241
+
w.Header().Set("Content-Type", "application/json")
242
+
w.Write([]byte(manifestJson))
243
+
}
244
+
222
245
func (s *State) TermsOfService(w http.ResponseWriter, r *http.Request) {
223
246
user := s.oauth.GetUser(r)
224
247
s.pages.TermsOfService(w, pages.TermsOfServiceParams{