Manifest + hand-authored icons (any + maskable) + iOS meta tags, so it can be added to a phone's home screen and opened without browser chrome. No service worker - explored as a possible route to automatic Picture-in-Picture on backgrounding, but confirmed (by actually calling requestPictureInPicture() from a real visibilitychange listener) that install state doesn't change that API's fresh-gesture requirement, so this is a standalone feature rather than a fix for that limitation. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
38 lines
1.8 KiB
HTML
38 lines
1.8 KiB
HTML
<!doctype html>
|
|
<html lang="fr">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Watch Party</title>
|
|
|
|
<!-- PWA - see docs/architecture.md's "Progressive Web App" section.
|
|
theme-color/background_color both come straight from base.css's
|
|
--bg-header/--bg (the manifest can't read CSS custom properties,
|
|
so these are duplicated by hand - if that palette ever changes,
|
|
update manifest.webmanifest to match). -->
|
|
<link rel="manifest" href="manifest.webmanifest" />
|
|
<meta name="theme-color" content="#221d24" />
|
|
<link rel="icon" type="image/png" href="icons/favicon.png" />
|
|
|
|
<!-- iOS ignores the manifest above for installed-app chrome - Safari
|
|
needs its own separate meta tags/link for the equivalent
|
|
standalone/home-screen-icon behavior. -->
|
|
<link rel="apple-touch-icon" href="icons/apple-touch-icon.png" />
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
|
<meta name="apple-mobile-web-app-title" content="Watch Party" />
|
|
|
|
<link rel="stylesheet" href="app.css" />
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.5.17/hls.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.7.5/socket.io.min.js"></script>
|
|
<!-- Google Cast (Chromecast) sender SDK - see client/src/cast.ts. Not on
|
|
cdnjs/versioned like the two above: Google only ever serves this from
|
|
its own gstatic host, calling window.__onGCastApiAvailable once ready
|
|
rather than being usable synchronously right after load. -->
|
|
<script src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js?loadCastFramework=1" async></script>
|
|
</head>
|
|
<body>
|
|
<div id="app"></div>
|
|
<script type="module" src="app.js"></script>
|
|
</body>
|
|
</html>
|