Zion Boggan
repos/Oversight/integrations/outlook/taskpane.html
zionboggan.com ↗
65 lines · html
History for this file →
1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
  <meta charset="utf-8">
5
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
6
  <meta name="viewport" content="width=device-width, initial-scale=1">
7
  <title>Oversight Inspector</title>
8
 
9
 
10
  <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
11
 
12
  <link rel="stylesheet" href="https://oversightprotocol.dev/css/style.css">
13
  <style>
14
    body { font-family: 'Inter', system-ui, sans-serif; padding: 12px; font-size: 14px; }
15
    h1 { font-size: 16px; margin: 0 0 8px; }
16
    .badge { display:inline-block; padding:2px 8px; border-radius:4px; font-size:12px; font-weight:600; }
17
    .badge.ok   { background: rgba(60,180,100,0.15);  color:#2ea870; }
18
    .badge.bad  { background: rgba(220,80,80,0.15);   color:#cc4444; }
19
    .badge.wait { background: rgba(150,150,150,0.15); color:#666; }
20
    .row { margin: 8px 0; }
21
    .kv { display:grid; grid-template-columns: 110px 1fr; gap:4px 8px; font-size:12px; }
22
    .kv span:nth-child(odd) { color:#666; }
23
    .kv code { word-break: break-all; }
24
    button { padding:6px 12px; border-radius:4px; border:1px solid #ccc; background:#fafafa; cursor:pointer; }
25
    button:disabled { opacity:0.5; cursor:not-allowed; }
26
    textarea { width:100%; min-height:60px; font-family: monospace; font-size:11px; }
27
    .err { color:#cc4444; font-size:12px; margin-top:8px; }
28
    .info { color:#666; font-size:12px; margin-top:8px; }
29
  </style>
30
</head>
31
<body>
32
  <h1>Oversight Inspector</h1>
33
 
34
  <div id="status" class="badge wait">waiting for message</div>
35
 
36
  <div class="row" id="attachment-row" style="display:none;">
37
    <label for="attachment-select"><strong>Sealed attachment:</strong></label>
38
    <select id="attachment-select" style="width:100%;margin-top:4px;"></select>
39
    <button id="btn-load" style="margin-top:6px;">Load + verify</button>
40
  </div>
41
 
42
  <div class="row" id="manifest-row" style="display:none;">
43
    <h2 style="font-size:14px;margin-top:12px;">Manifest</h2>
44
    <div class="kv" id="manifest-kv"></div>
45
  </div>
46
 
47
  <div class="row" id="decrypt-row" style="display:none;">
48
    <h2 style="font-size:14px;margin-top:12px;">Decrypt</h2>
49
    <p class="info">Paste your <code>identity.json</code>. Private keys stay in this task pane and are never sent to a server.</p>
50
    <textarea id="identity-text" placeholder='{"x25519_priv":"...","x25519_pub":"..."} (hybrid identities also include mlkem_priv/mlkem_pub)'></textarea>
51
    <div style="margin-top:6px;">
52
      <button id="btn-decrypt">Decrypt</button>
53
    </div>
54
    <div id="plaintext-out" style="display:none;margin-top:8px;">
55
      <strong>Plaintext SHA-256 matches manifest:</strong>
56
      <pre id="plaintext-preview" style="max-height:140px;overflow:auto;font-size:11px;background:#f6f6f6;padding:6px;border-radius:4px;"></pre>
57
      <button id="btn-download">Download plaintext</button>
58
    </div>
59
  </div>
60
 
61
  <div id="error" class="err" style="display:none;"></div>
62
 
63
  <script type="module" src="taskpane.js"></script>
64
</body>
65
</html>