OverviewFilesCommitsIssuesDocsReleasesPeers

p2pbuilders / web / index.html

45 lines · html ref:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>p2pbuilders — peer-to-peer hacker news</title>
  <meta name="description" content="Permissionless peer-to-peer Hacker News for anons who build P2P. No servers, no accounts. Posts are proof-of-work gated and reputation-weighted; communities, comments and votes replicate directly between peers. A PearBrowser P2P site.">
  <link rel="icon" type="image/svg+xml" href="icon.svg">
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="boot">
    <div class="boot-mark">Y</div>
    <div class="boot-name">p2pbuilders</div>
    <div class="boot-sub">connecting to peers…</div>
  </div>
  <script>
    // Boot watchdog (classic script: runs even when module loading is blocked).
    // Browsers refuse ES modules on file:// — the app never starts and the
    // splash would sit there forever. Explain instead of hanging.
    (function () {
      var explain = function (html) {
        var sub = document.querySelector('.boot .boot-sub')
        if (sub) sub.innerHTML = html
      }
      if (location.protocol === 'file:') {
        setTimeout(function () {
          if (!document.querySelector('.boot')) return
          explain('this app can&#39;t run from a file:// URL (browsers block module scripts).<br>' +
            'serve it instead:<br><code>cd web &amp;&amp; node dev-server.mjs</code><br>' +
            'then open <code>http://localhost:8778</code> — or open the hyper:// link in PearBrowser.')
        }, 1500)
      } else {
        setTimeout(function () {
          if (!document.querySelector('.boot')) return
          explain('still starting… this usually means a script failed to load.<br>' +
            'check the browser console (F12) for errors, then hard-refresh.')
        }, 10000)
      }
    })()
  </script>
  <script type="module" src="js/app.js"></script>
</body>
</html>