diff --git a/app/public/icon-180.png b/app/public/icon-180.png new file mode 100644 index 0000000..bbd67fc Binary files /dev/null and b/app/public/icon-180.png differ diff --git a/app/public/icon-192.png b/app/public/icon-192.png new file mode 100644 index 0000000..08d157e Binary files /dev/null and b/app/public/icon-192.png differ diff --git a/app/public/icon-512.png b/app/public/icon-512.png new file mode 100644 index 0000000..35d4a91 Binary files /dev/null and b/app/public/icon-512.png differ diff --git a/app/public/manifest.json b/app/public/manifest.json new file mode 100644 index 0000000..8c34168 --- /dev/null +++ b/app/public/manifest.json @@ -0,0 +1,16 @@ +{ + "name": "GTD", + "short_name": "GTD", + "description": "Capture, clarify, do.", + "start_url": "/today", + "scope": "/", + "display": "standalone", + "orientation": "portrait", + "background_color": "#F7F7F9", + "theme_color": "#F7F7F9", + "icons": [ + { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" }, + { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" }, + { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } + ] +} diff --git a/app/src/app/+html.tsx b/app/src/app/+html.tsx new file mode 100644 index 0000000..4345fb1 --- /dev/null +++ b/app/src/app/+html.tsx @@ -0,0 +1,49 @@ +// The HTML shell for the web build. +// +// The web export is the iPhone story — there is no iOS binary, so Safari's "Add +// to Home Screen" has to produce something that opens full-screen and looks +// installed rather than a bookmark with a browser chrome on top. That takes the +// manifest, the apple-* meta tags and a viewport that covers the notch; none of +// them are reachable from app.json, so the shell is written out by hand. +import { ScrollViewStyleReset } from "expo-router/html"; +import type { PropsWithChildren } from "react"; + +// Match the app background on both schemes so the status bar and the rubber-band +// overscroll never flash white against a dark list. +const background = ` +:root { color-scheme: light dark; } +body { background-color: #F7F7F9; overscroll-behavior-y: none; } +@media (prefers-color-scheme: dark) { body { background-color: #0C0C0F; } } +`; + +export default function Root({ children }: PropsWithChildren) { + return ( + + + + + {/* viewport-fit=cover lets the layout run under the notch; disabling + user scaling stops iOS zooming in every time a title field focuses. */} + + + + + + + + {/* "default" keeps the iOS status bar legible over a light header. */} + + + + + + +