AT Mot — a bilingual (EN/FR) daily word game native to the AT Protocol.
0

Configure Feed

Select the types of activity you want to include in your feed.

Wire manifest, apple-touch-icon, and web-app meta tags into index.html

Add the PWA <link>/<meta> tags to index.html so the document is fully
installable, with a regression test asserting they are present.

Also add "node" to the tsconfig types array so the PWA test file's
node:fs / node:url imports typecheck — these imports were introduced in
the icons task but the tsconfig was never updated, leaving npm run
typecheck failing on tests/pwa.test.ts.

+22 -1
+5
index.html
··· 12 12 <meta name="theme-color" content="#f7f8fa" media="(prefers-color-scheme: light)" /> 13 13 <meta name="theme-color" content="#0e1116" media="(prefers-color-scheme: dark)" /> 14 14 <link rel="icon" href="/icon.svg" type="image/svg+xml" /> 15 + <link rel="manifest" href="/manifest.webmanifest" /> 16 + <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 17 + <meta name="mobile-web-app-capable" content="yes" /> 18 + <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 19 + <meta name="apple-mobile-web-app-title" content="AT Mot" /> 15 20 <link 16 21 rel="preload" 17 22 href="/fonts/OverusedGrotesk-VF.woff2"
+16
tests/pwa.test.ts
··· 50 50 } 51 51 }); 52 52 }); 53 + 54 + describe('index.html PWA wiring', () => { 55 + const html = readFileSync(p('index.html'), 'utf8'); 56 + 57 + it('links the manifest and apple-touch-icon', () => { 58 + expect(html).toContain('rel="manifest"'); 59 + expect(html).toContain('href="/manifest.webmanifest"'); 60 + expect(html).toContain('rel="apple-touch-icon"'); 61 + expect(html).toContain('href="/apple-touch-icon.png"'); 62 + }); 63 + 64 + it('declares mobile-web-app capability and iOS app title', () => { 65 + expect(html).toContain('name="mobile-web-app-capable"'); 66 + expect(html).toContain('name="apple-mobile-web-app-title"'); 67 + }); 68 + });
+1 -1
tsconfig.json
··· 4 4 "module": "ESNext", 5 5 "moduleResolution": "bundler", 6 6 "lib": ["ES2022", "DOM", "DOM.Iterable"], 7 - "types": ["vite/client", "@atcute/atproto", "@atcute/bluesky"], 7 + "types": ["vite/client", "@atcute/atproto", "@atcute/bluesky", "node"], 8 8 "strict": true, 9 9 "noUnusedLocals": true, 10 10 "noUnusedParameters": true,