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.
164 lines
11 KiB
HTML
164 lines
11 KiB
HTML
<!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 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 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 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 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 & 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>
|