verae-mcp-timestamping-server/site/macos.html
George Lambert 1ca834900e feat: site WIP — downloads, explorer, hasher, TestFlight enroll
Commit restored mcp.verae.ai site pages (app, register, macos, windows,
explorer), hasher/download artifacts, index/sample/hasher updates, ledger
and global_client improvements, NATS stamp helper, and TestFlight enroll
service. Ignore debug-trace/ and editor backups. Standard Readme for
download and enroll docs.
2026-09-29 11:18:59 -04:00

164 lines
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>macOS downloads — Verae Timestamping</title>
<meta name="description" content="Download Verae Timestamping for macOS: Developer ID signed and Apple-notarized universal .app zip. No TestFlight required. Quarantine / Gatekeeper notes and CLI alternative.">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,500;9..144,600&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<link rel="icon" href="assets/VeraeFullLogo.png">
<style>
:root {
--ink: oklch(0.21 0.020 310); --ink-soft: oklch(0.42 0.018 310); --ink-mute: oklch(0.60 0.014 310);
--paper: oklch(0.992 0.004 90); --soft: oklch(0.972 0.008 85); --hair: oklch(0.90 0.010 80);
--purple: oklch(0.32 0.110 310); --purple-mid: oklch(0.42 0.130 312); --purple-wash: oklch(0.96 0.020 312);
--gold: oklch(0.80 0.090 85); --dark: oklch(0.19 0.022 312); --ok: oklch(0.55 0.12 145);
--warn: oklch(0.55 0.14 70); --warn-wash: oklch(0.96 0.04 85);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Inter, -apple-system, BlinkMacSystemFont, sans-serif; color: var(--ink); background: var(--paper); line-height: 1.55; }
a { color: var(--purple); }
header { display: flex; align-items: center; justify-content: space-between; max-width: 1100px; margin: 0 auto; padding: 28px 28px 0; flex-wrap: wrap; gap: 12px; }
.brand img { height: 46px; width: auto; display: block; }
nav { display: flex; gap: 22px; font-size: 14px; font-weight: 600; flex-wrap: wrap; }
nav a { color: var(--ink-soft); text-decoration: none; }
nav a:hover, nav a.active { color: var(--purple); }
.hero { max-width: 1100px; margin: 0 auto; padding: 48px 28px 12px; }
.eyebrow { font-size: 13px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--purple-mid); }
h1 { font-family: Fraunces, Georgia, serif; font-weight: 560; font-size: clamp(34px, 5vw, 56px); line-height: 1.08; letter-spacing: -0.03em; margin: 12px 0 18px; max-width: 18ch; }
.lede { max-width: 46rem; font-size: 18px; color: var(--ink-soft); margin: 0; }
.wrap { max-width: 1100px; margin: 0 auto; padding: 12px 28px 80px; }
h2.section { font-family: Fraunces, Georgia, serif; font-size: 30px; font-weight: 560; margin: 48px 0 8px; }
.section-note { color: var(--ink-soft); max-width: 48rem; margin-top: 0; }
.gold { height: 3px; width: 72px; background: var(--gold); border: 0; margin: 28px 0; }
.btn-row { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin: 18px 0; }
.btn { display: inline-flex; align-items: center; gap: 8px; background: var(--purple); color: white; text-decoration: none; border: 0; border-radius: 999px; padding: 12px 18px; font: inherit; font-weight: 600; font-size: 14px; }
.btn.secondary { background: white; color: var(--purple); border: 1px solid var(--hair); }
.meta { font-size: 13px; color: var(--ink-mute); margin-top: 10px; }
.card { background: white; border: 1px solid var(--hair); border-radius: 16px; padding: 22px; margin-top: 18px; }
.okbox { background: color-mix(in oklch, var(--ok) 12%, white); border: 1px solid color-mix(in oklch, var(--ok) 35%, var(--hair)); border-radius: 14px; padding: 16px 18px; margin: 18px 0; }
.okbox strong { color: var(--ok); }
.warnbox { background: var(--warn-wash); border: 1px solid oklch(0.88 0.06 85); border-radius: 14px; padding: 16px 18px; margin: 18px 0; }
.warnbox strong { color: var(--warn); }
table.artifacts { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 14px; }
table.artifacts th, table.artifacts td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--hair); vertical-align: top; }
table.artifacts th { color: var(--ink-mute); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: 0.06em; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.92em; }
pre { background: var(--dark); color: oklch(0.95 0.01 90); border-radius: 14px; padding: 16px 18px; overflow: auto; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; line-height: 1.5; margin: 12px 0 0; }
ol.steps { padding-left: 1.2rem; max-width: 48rem; }
ol.steps li { margin: 0.55rem 0; }
footer { border-top: 1px solid var(--hair); padding: 28px; color: var(--ink-mute); font-size: 14px; }
footer .inner { max-width: 1100px; margin: 0 auto; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
@media (max-width: 800px) { nav { gap: 14px; } }
</style>
</head>
<body>
<header>
<a class="brand" href="https://www.verae.com/"><img src="assets/VeraeFullLogo.png" alt="Verae"></a>
<nav>
<a href="index.html">Install</a>
<a href="ways.html">Ways to use</a>
<a href="macos.html" class="active">macOS</a>
<a href="explorer.html">Explorer</a>
<a href="windows.html">Windows</a>
<a href="app.html">Browser app</a>
<a href="register.html">Register docs</a>
<a href="sample.html">Sample</a>
<a href="hasher.html">Hasher</a>
</nav>
</header>
<section class="hero">
<div class="eyebrow">macOS universal · v0.2.1 (7) · 2026-09-28</div>
<h1>Verae Timestamping for macOS</h1>
<p class="lede">Native SwiftUI app — <strong>no TestFlight required</strong>. Developer ID signed by FlightLookup Inc., Apple-notarized and stapled. Hash locally; register or verify digests against <code>https://mcp.verae.ai/mcp</code>.</p>
<div class="btn-row">
<a class="btn" href="/downloads/macos/VeraeTimestamping-macos-universal.zip">Download .app zip (~546&nbsp;KiB)</a>
<a class="btn secondary" href="/downloads/macos/SHA256SUMS">SHA256SUMS</a>
<a class="btn secondary" href="ways.html#testflight">Prefer TestFlight?</a>
</div>
<p class="meta">Stable URL <code>/downloads/macos/VeraeTimestamping-macos-universal.zip</code> · universal x86_64+arm64 · macOS&nbsp;14+</p>
</section>
<div class="wrap">
<hr class="gold">
<div class="okbox">
<strong>Gatekeeper: accepted.</strong>
This build is signed with <em>Developer ID Application: FlightLookup Inc. (G8CKY7VMZC)</em> and notarized by Apple (<code>spctl</code> source: <em>Notarized Developer ID</em>). A normal double-click first launch should work after unzip. This is <em>not</em> a Mac App Store / TestFlight build.
</div>
<h2 class="section" id="artifacts">Artifacts</h2>
<div class="card">
<table class="artifacts">
<thead>
<tr><th>File</th><th>Size</th><th>SHA-256</th><th>What it is</th></tr>
</thead>
<tbody>
<tr>
<td><a href="/downloads/macos/VeraeTimestamping-macos-universal.zip"><code>VeraeTimestamping-macos-universal.zip</code></a></td>
<td>546&nbsp;KiB</td>
<td><code style="font-size:11px;word-break:break-all">0067ac8767942b4b657f0856c5b9a1389aaa61a3d998459dd7ea30669bb603d8</code></td>
<td>Stable “latest” zip containing <strong>Verae Timestamping.app</strong> (universal, notarized).</td>
</tr>
<tr>
<td><a href="/downloads/macos/VeraeTimestamping-0.2.1-macos-universal.zip"><code>VeraeTimestamping-0.2.1-macos-universal.zip</code></a></td>
<td>546&nbsp;KiB</td>
<td><code style="font-size:11px;word-break:break-all">0067ac8767942b4b657f0856c5b9a1389aaa61a3d998459dd7ea30669bb603d8</code></td>
<td>Same bytes, versioned filename.</td>
</tr>
</tbody>
</table>
<p class="meta">Checksums: <a href="/downloads/macos/SHA256SUMS">/downloads/macos/SHA256SUMS</a> · notes: <a href="/downloads/macos/README.md">README.md</a></p>
</div>
<h2 class="section" id="install">Install &amp; first launch</h2>
<ol class="steps">
<li><strong>Download</strong> the zip from the button above (or the versioned URL).</li>
<li><strong>Unzip</strong> (double-click in Finder, or <code>unzip VeraeTimestamping-macos-universal.zip</code>).</li>
<li>Drag <strong>Verae Timestamping.app</strong> to <code>/Applications</code> (optional but recommended).</li>
<li><strong>Open</strong> the app (double-click). First launch should clear Gatekeeper because the ticket is stapled.</li>
<li>If macOS still says the app “can’t be opened because it was not downloaded from the App Store” or is damaged/blocked, clear quarantine then open again:
<pre>xattr -dr com.apple.quarantine "/Applications/Verae Timestamping.app"
open "/Applications/Verae Timestamping.app"</pre>
Or Finder: <em>right-click → Open → Open</em> (one-time allow).
</li>
<li>In the app, confirm MCP URL <code>https://mcp.verae.ai/mcp</code> and scope <code>global</code>. Sandboxed receipts live under Application Support inside the app container; the CLI uses <code>~/.verae</code>.</li>
</ol>
<div class="warnbox">
<strong>Unsigned / Development builds.</strong>
Local Xcode “Apple Development” or ad-hoc builds are <em>not</em> Gatekeeper-clean. Those need right-click Open or <code>xattr -dr com.apple.quarantine</code>. Do not confuse them with this notarized zip. MAS / TestFlight packages use Apple Distribution and only install via TestFlight or the Mac App Store — they are not for direct website download.
</div>
<h2 class="section" id="cli">CLI alternative (no .app)</h2>
<p class="section-note">Prefer terminal? Run the Python client from source with <code>uv</code> / <code>pip</code> — same MCP endpoint, digests only.</p>
<pre>cd verae-mcp-timestamping-client
uv sync
uv run verae-timestamp set-defaults --url https://mcp.verae.ai/mcp --scope global --output text
uv run verae-timestamp register ./document.pdf
uv run verae-timestamp verify ./document.pdf
# or one-shot when the package is on an index:
uvx verae-mcp-timestamping-client --url https://mcp.verae.ai/mcp --scope global ./document.pdf</pre>
<p class="meta">Dev GUI without the Swift app: <code>uv run verae-timestamp --gui</code> (tkinter).</p>
<h2 class="section" id="testflight">TestFlight still available</h2>
<p class="section-note">Want the Mac App Store–style sandboxed beta via Apple’s TestFlight? Use the invite form or public join link on <a href="ways.html#testflight">Ways to use → TestFlight</a>.</p>
<div class="btn-row">
<a class="btn secondary" href="ways.html#testflight">Request TestFlight invite</a>
<a class="btn secondary" href="https://testflight.apple.com/join/dsHsyx2Z">Public join link</a>
</div>
</div>
<footer>
<div class="inner">
<span>Verae timestamping · <a href="https://www.verae.com/">verae.com</a></span>
<span><a href="ways.html">Ways to use</a> · <a href="macos.html">macOS</a> · <a href="windows.html">Windows</a> · <a href="https://testflight.apple.com/join/dsHsyx2Z">TestFlight</a></span>
</div>
</footer>
</body>
</html>