Spaces:
Running
Running
| <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> | |