morse-code / index.html
RemiFabre
feat: Reachy Mini logo as app icon (PNG via Git LFS)
9355f7d
Raw
History Blame Contribute Delete
3.08 kB
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover" />
<title>Morse Code · Reachy Mini</title>
<meta name="description" content="Talk to Reachy Mini in Morse code — antenna taps and beeps, decoded live through the mic." />
<meta name="theme-color" content="#0d1117" />
<link rel="icon" type="image/png" href="public/icon.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="style.css" />
<!-- Modern host-shell SDK entries (standalone → host/auto = mountHost;
embedded iframe → host/embed = connectToHost). Pinned to the exact
tarball the Pollen reference apps + marionette-js ship against so
SDK / host / daemon stay in lockstep. Bumping it means editing these
two links AND the two import URLs in main.js AND lib/animation-helpers.js. -->
<link rel="modulepreload" href="https://cdn.jsdelivr.net/npm/@pollen-robotics/reachy-mini-sdk@1.8.0-rc1-main.dbe26af/host/dist/entry/auto.js" crossorigin />
<link rel="modulepreload" href="https://cdn.jsdelivr.net/npm/@pollen-robotics/reachy-mini-sdk@1.8.0-rc1-main.dbe26af/host/dist/entry/embed.js" crossorigin />
<!-- HF Spaces helper variables. In production (sdk: static + hf_oauth: true)
HF rewrites these placeholders at serve time and the SDK reads them off
window.huggingface.variables. Locally the placeholders stay raw (leading
__) so we drop the global and mountHost() falls back to the dev path. -->
<script>
(function () {
var clientId = "__OAUTH_CLIENT_ID__";
var scopes = "__OAUTH_SCOPES__";
var spaceHost = "__SPACE_HOST__";
var spaceId = "__SPACE_ID__";
var looksSubstituted = clientId && clientId.indexOf("__") !== 0;
if (looksSubstituted) {
window.huggingface = window.huggingface || {};
window.huggingface.variables = {
OAUTH_CLIENT_ID: clientId,
OAUTH_SCOPES: scopes && scopes.indexOf("__") !== 0 ? scopes : "openid profile",
SPACE_HOST: spaceHost && spaceHost.indexOf("__") !== 0 ? spaceHost : "",
SPACE_ID: spaceId && spaceId.indexOf("__") !== 0 ? spaceId : "",
};
}
})();
</script>
<!-- `process` shim: the CDN-loaded host bundle expects a bundler to have
substituted process.env.NODE_ENV; loaded raw it would throw. -->
<script>
globalThis.process ??= { env: {} };
globalThis.process.env ??= {};
globalThis.process.env.NODE_ENV ??= 'production';
</script>
</head>
<body>
<!-- Host shell mount point (standalone): sign-in, robot picker, top bar. -->
<div id="root"></div>
<!-- In-iframe app surface, revealed once connectToHost() resolves. -->
<div id="app" hidden></div>
<script type="module" src="main.js"></script>
</body>
</html>