← Commit history

Delete readme.html

John Lauer ·c39d062f6b · ·parent afcd52b
1 file changed −200
readme.htmldeleted−200
@@ -1,200 +0,0 @@-<!doctype html>-<!---  Rich sandboxed README for adom-browser-extension.-  Served at /readme/john/app/adom-browser-extension inside a SANDBOXED iframe-  (CSP: sandbox allow-scripts allow-downloads — opaque origin, no cookies/parent-  access). Renders ABOVE the required README.md. Assets are referenced by-  ABSOLUTE /blob URLs because the opaque origin can't resolve relative paths.-  Auto-resizes by posting {type:"readme-height",height} to the parent (see app.js).--->-<html lang="en">-<head>-<meta charset="utf-8">-<meta name="viewport" content="width=device-width, initial-scale=1">-<title>Adom Browser Extension — showcase</title>-<link rel="preconnect" href="https://api.fontshare.com">-<link href="https://api.fontshare.com/v2/css?f[]=familjen-grotesk@700,600&f[]=satoshi@400,500,700&display=swap" rel="stylesheet">-<style>-  :root{-    --bg:#0a0e14; --panel:#0d1117; --panel2:#11161f; --border:#222b38;-    --text:#e6edf3; --muted:#9aa6b5; --teal:#00b8b1; --teal-bright:#00e6dc;-    --blue:#39b8ff; --purple:#8c6bf7; --green:#34d17e; --yellow:#ffcf4d;-  }-  *{box-sizing:border-box}-  html,body{margin:0;padding:0;background:var(--bg);color:var(--text);-    font-family:'Satoshi',system-ui,Segoe UI,Arial,sans-serif;line-height:1.5;-    -webkit-font-smoothing:antialiased}-  .wrap{max-width:1020px;margin:0 auto;padding:30px 22px 14px}-  h1,h2,h3{font-family:'Familjen Grotesk',system-ui,Arial,sans-serif;letter-spacing:-.02em;line-height:1.08}-  a{color:var(--teal-bright);text-decoration:none}-  .lede{font-size:clamp(26px,4vw,42px);font-weight:700;margin:0 0 12px;-    background:linear-gradient(100deg,#00e6dc,#39b8ff 58%,#8c6bf7);-    -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}-  .sub{color:var(--muted);font-size:16px;max-width:740px;margin:0 0 26px}-  .sub b{color:var(--text);font-weight:700}--  .rail{display:flex;align-items:center;gap:10px;margin:44px 0 16px}-  .rail h2{font-size:25px;margin:0}-  .rail .ln{flex:1;height:1px;background:linear-gradient(90deg,var(--border),transparent)}-  .pill{display:inline-block;font-family:'Familjen Grotesk',sans-serif;font-size:11px;font-weight:600;-    letter-spacing:.06em;text-transform:uppercase;color:var(--teal-bright);-    border:1px solid rgba(0,184,177,.35);background:rgba(0,184,177,.07);border-radius:999px;padding:3px 11px}--  /* use-case cards — full-width Chrome-framed shot + value paragraph */-  .ucs{display:flex;flex-direction:column;gap:22px}-  .uc{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--panel);-    box-shadow:0 18px 50px rgba(0,0,0,.45)}-  .uc .shot{display:block;width:100%;height:auto;background:#eceef1;border-bottom:1px solid var(--border)}-  .uc .body{padding:18px 22px 20px}-  .uc .tag{font-family:'Familjen Grotesk',sans-serif;font-size:11px;font-weight:600;letter-spacing:.06em;-    text-transform:uppercase;color:var(--blue);margin:0 0 7px}-  .uc h3{font-size:20px;margin:0 0 8px}-  .uc p{margin:0;color:var(--muted);font-size:15px}-  .uc p b{color:var(--text);font-weight:700}--  /* permission table */-  .perm{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:12px;overflow:hidden;font-size:14px}-  .perm th{background:var(--panel2);color:var(--text);text-align:left;font-family:'Familjen Grotesk',sans-serif;-    font-weight:600;font-size:13px;padding:11px 14px;border-bottom:1px solid var(--border)}-  .perm td{padding:11px 14px;border-bottom:1px solid var(--border);color:var(--muted);vertical-align:top}-  .perm tr:last-child td{border-bottom:none}-  .perm code{color:var(--teal-bright);font-family:'Satoshi',ui-monospace,monospace;font-size:13px;white-space:nowrap}-  .perm td b{color:var(--text)}-  .note{color:var(--muted);font-size:13.5px;margin:14px 2px 0}-  .note b{color:var(--text)}--  .chk{display:flex;gap:10px;align-items:flex-start;font-size:14.5px;margin:11px 0;color:var(--text);max-width:820px}-  .chk .b{color:var(--green);font-weight:800;flex:0 0 auto}-  .chk span b{color:var(--text)}-  .chk .m{color:var(--muted)}-  .foot{color:var(--muted);font-size:13px;margin:34px 2px 4px;text-align:center}-  .foot b{color:var(--text)} .foot code{color:var(--teal)}-</style>-</head>-<body>-<div class="wrap">--  <span class="pill">Chrome &amp; Edge Extension</span>-  <div class="lede" style="margin-top:14px">Your AI's hands in your real browser.</div>-  <p class="sub">Adom is an <b>AI electronics-prototyping development environment</b>. This extension lets your-  AI assistant <b>build, drive, and test web software</b> — web oscilloscopes, EDA &amp; CAD tools, and apps-  that drive real circuit boards — right inside the <b>Chrome or Edge you're already signed into</b>. It is the-  <b>same category of capability as the Claude browser extension</b>: the AI agent's hands inside your own-  browser, acting only on the commands you give it.</p>--  <!-- USE CASES -->-  <div class="rail"><h2>What it does for you</h2><span class="ln"></span><span class="pill">in real Chrome</span></div>-  <p class="sub" style="margin-bottom:20px">Three real apps from the Adom ecosystem — each shown running-  <b>in a Chrome window the extension drives</b> (note the <b>"Adom driving"</b> badge in the toolbar), and-  how it helps you get the work done.</p>--  <div class="ucs">--    <div class="uc">-      <img class="shot" src="https://wiki.adom.inc/blob/app/adom-browser-extension/screenshots/usecase-oscilloscope.png" alt="A web-based oscilloscope running in a Chrome window driven by the Adom extension">-      <div class="body">-        <p class="tag">Web-based oscilloscope</p>-        <h3>Verify an instrument UI without clicking through every iteration</h3>-        <p>You're bringing up a browser-based scope and need to confirm the trigger and timebase behave against-        real signals. Instead of clicking through it by hand each pass, your AI assistant drives the live app in-        your own Chrome — sets the timebase, drags the trigger to <b>CH1-rising</b>, reads the measurements back,-        and screenshots the result. You stay in flow while it verifies the instrument and flags a regression the-        moment one appears.</p>-      </div>-    </div>--    <div class="uc">-      <img class="shot" src="https://wiki.adom.inc/blob/app/adom-browser-extension/screenshots/usecase-eda.png" alt="A browser EDA/CAD tool — CAN-bus schematic with 3D / PCB / Schematic tabs — running in a Chrome window driven by the Adom extension">-      <div class="body">-        <p class="tag">Web-based EDA &amp; CAD</p>-        <h3>Try a design change and see it routed — hands-free</h3>-        <p>Mid-design, you want to try a change and see it routed. Your AI opens the EDA tool in the browser-        you're already signed into, <b>fills the schematic, re-runs the autorouter, and inspects the nets</b> —-        turning "try this and tell me what breaks" into something it just does, in the same session where your-        part libraries and logins already live.</p>-      </div>-    </div>--    <div class="uc">-      <img class="shot" src="https://wiki.adom.inc/blob/app/adom-browser-extension/screenshots/usecase-board.png" alt="A 3D PCB rendered in a browser CAD viewer running in a Chrome window driven by the Adom extension">-      <div class="body">-        <p class="tag">Apps that drive real circuit boards</p>-        <h3>Hardware-in-the-loop, in your actual browser session</h3>-        <p>When a board-control app talks to real hardware, the AI needs your <b>actual</b> browser — your device-        session, your USB permissions, your dashboard login. The extension gives it exactly that: it drives the-        live page, flashes and operates the board, and reports back — so hardware-in-the-loop testing runs-        hands-free instead of you babysitting every flash.</p>-      </div>-    </div>--  </div>--  <!-- PERMISSIONS -->-  <div class="rail"><h2>Every permission, justified</h2><span class="ln"></span><span class="pill">why we ask</span></div>-  <p class="sub">A development environment has to operate the browser the way a developer does. Each permission-  maps to a concrete action the user asks for — to deliver the features above, never to collect data.</p>-  <table class="perm">-    <tr><th>Permission</th><th>What the user-requested feature needs it for</th></tr>-    <tr><td><code>debugger</code></td><td>Drive, inspect, screenshot, and <b>debug the live page</b> via the DevTools protocol — exactly what building and testing a web app requires. Attached only while a command runs, detached when idle.</td></tr>-    <tr><td><code>host: &lt;all_urls&gt;</code></td><td>A dev environment must work on <b>whatever app you're building or testing</b> — there is no fixed allow-list for "the whole web." Exercised only per command, never to crawl.</td></tr>-    <tr><td><code>cookies</code></td><td>Use your <b>existing signed-in dev tools and services</b> without forcing a re-login. Used to perform your task, never collected.</td></tr>-    <tr><td><code>nativeMessaging</code></td><td>The core transport — connects the extension to <b>your local Adom Desktop</b> so your AI session can send commands and receive results.</td></tr>-    <tr><td><code>tabs</code> · <code>scripting</code> · <code>webNavigation</code></td><td>Open/switch/reload the tabs you operate, read the DOM and fill fields, and run each command at the right moment (e.g. "navigate, then screenshot").</td></tr>-    <tr><td><code>downloads</code></td><td>Save files you ask to download — exports, CAD/3D assets, datasheets — into your own profile.</td></tr>-    <tr><td><code>tabCapture</code> · <code>desktopCapture</code></td><td>Record a walkthrough of <b>your own page</b> when you explicitly ask for one.</td></tr>-    <tr><td><code>storage</code> · <code>alarms</code></td><td>Remember your session-to-window map and keep the connection alive — minimal local state only.</td></tr>-  </table>-  <p class="note"><b>No remotely-hosted code.</b> All logic ships in the package; it evaluates JavaScript only on-  the page you point it at, via the debugger/scripting APIs — never by loading external scripts.</p>--  <!-- CONTROL / TRANSPARENCY -->-  <div class="rail"><h2>You're always in control</h2><span class="ln"></span><span class="pill">transparent</span></div>-  <div class="chk"><span class="b">✓</span><span><b>It acts only on your command.</b> Every action is initiated by you, or by your Adom AI session working on your behalf — nothing happens on its own.</span></div>-  <div class="chk"><span class="b">✓</span><span><b>It's visible when it's driving.</b> Chrome's <span class="m">"started debugging this browser"</span> bar appears whenever a debugger-using command runs; the extension lazy-attaches and idle-detaches after a few seconds, so the bar is only up while it's actually working.</span></div>-  <div class="chk"><span class="b">✓</span><span><b>Idle by default.</b> It does nothing unless your Adom Desktop and an Adom session are connected — and you can remove it at any time to end all access.</span></div>--  <!-- PRIVACY -->-  <div class="rail"><h2>Privacy</h2><span class="ln"></span><span class="pill">your data, your tasks</span></div>-  <p class="sub">The extension runs inside your own browser and acts on the commands you give it. The pages and-  screenshots it reads go to <b>your own Adom session</b> to carry out the task you asked for, and it works-  through your existing signed-in sessions so your tools just work. <b>Adom's business is selling-  electronics-prototyping and development tools — not data</b>; your browsing and the contents of your work stay-  yours, and aren't used for advertising. Full policy:-  <a href="https://wiki.adom.inc/john/adom-browser-extension/files/PRIVACY.md">Privacy Policy (Markdown)</a> ·-  <a href="https://wiki.adom.inc/john/adom-browser-extension/files/privacy.html">HTML version</a>.</p>--  <!-- HOW IT WORKS -->-  <div class="rail"><h2>How it works</h2><span class="ln"></span><span class="pill">architecture</span></div>-  <p class="sub">The extension connects through a Chrome <b>native-messaging host on your own computer</b> to your-  local <b>Adom Desktop</b> app; commands flow to the extension and results flow back to your active Adom session.-  The host↔bridge link is a <b>loopback (127.0.0.1) connection pinned to this extension's exact identity</b>, so-  no random page or other extension can drive it. Cloud containers, Hydrogen Desktop, and the Adom CLI reach it-  through the same <code>relay → adom-desktop → bridge</code> path they already use. Full technical docs, the-  verb surface, and the sub-skills are in the README below.</p>--  <p class="foot">Try it: <b>"open my web scope and set a 1&micro;s trigger on CH1"</b> &nbsp;·&nbsp;-  <code>adompkg install adom-browser-extension</code> &nbsp;·&nbsp; full docs in the README below.</p>--</div>--<script>-  // Auto-resize: tell the parent our content height so the sandboxed iframe fits-  // without scrollbars. Parent (static/app.js) listens for {type:"readme-height",height}-  // and clamps to [120,4000]. Identity is checked by source there, so origin="null" is fine.-  (function(){-    "use strict";-    var last=0;-    function post(){-      var h=Math.ceil(document.documentElement.scrollHeight);-      if(h && Math.abs(h-last)>2){ last=h; try{ parent.postMessage({type:"readme-height",height:h},"*"); }catch(e){} }-    }-    window.addEventListener("load",post);-    window.addEventListener("resize",post);-    document.querySelectorAll("img").forEach(function(im){ im.addEventListener("load",post); im.addEventListener("error",post); });-    if(window.ResizeObserver){ new ResizeObserver(post).observe(document.body); }-    var n=0,iv=setInterval(function(){ post(); if(++n>12) clearInterval(iv); },250);-    post();-  })();-</script>-</body>-</html>