ecc340e7b1
Dark mode: CSS custom properties + .dark class toggled via Redux/localStorage, with a theme toggle in the Header and Settings page. Foundation didn't exist yet despite prior assumption, so it was built from scratch. SQLite: new DB_ENGINE=mongo|sqlite env var selects the metadata backend at runtime (Mongo stays default, no behavior change unless opted in). File/thumbnail bytes continue to use the existing fs/S3 storage path. Implemented via a shared DB interface (dbTypes.ts) with parallel mongoDB/ and sqliteDB/ implementations, selected through dbFactory.ts, with JWT/encryption logic extracted into userCrypto.ts so both engines share it.
30 lines
923 B
HTML
30 lines
923 B
HTML
<!DOCTYPE html>
|
|
|
|
<html>
|
|
<head>
|
|
<title>myDrive</title>
|
|
<link rel="icon" href="/images/icon.png" />
|
|
<link rel="shortcut icon" type="image/png" href="/images/icon.png" />
|
|
<link rel="shortcut icon" sizes="192x192" href="/images/icon.png" />
|
|
<link rel="apple-touch-icon" href="/images/icon.png" />
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<script>
|
|
(function () {
|
|
var stored = localStorage.getItem("theme");
|
|
var isDark =
|
|
stored === "dark" ||
|
|
(stored !== "light" &&
|
|
window.matchMedia("(prefers-color-scheme: dark)").matches);
|
|
if (isDark) document.documentElement.classList.add("dark");
|
|
})();
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="app"></div>
|
|
<script type="module" src="/src/app.tsx"></script>
|
|
</body>
|
|
</html>
|