fix(macos-pkg): dark-mode contrast, RTF Agree, sidebar brand clip

Screenshots (Desktop 5.25–5.27 AM) showed:
- Light purple/white chips and table headers unreadable on dark Installer WebKit
- License page only Continue (HTML license); no Agree/Disagree
- Left background text truncated ("Verae Print Stam", cut tagline)

Fixes:
- welcome/readme/conclusion/license HTML: color-scheme + prefers-color-scheme dark,
  high-contrast chips/tables/boxes (no white-on-white)
- license.rtf primary in Distribution (Installer Agree/Disagree)
- background.png / background-dark.png: left plum column + logo, short labels only
- smoke-installer-ui.sh checks RTF + dark-mode CSS (19 PASS)

Rebuild: SKIP_SIGN=1 ./platform/macos/pkg/build-pkg.sh
This commit is contained in:
George Lambert 2026-10-14 05:31:07 -04:00
commit d82d0a59cf
10 changed files with 272 additions and 133 deletions

View file

@ -24,11 +24,11 @@
alignment="bottomleft" alignment="bottomleft"
scaling="proportional"/> scaling="proportional"/>
<!-- Welcome with product ID and brand --> <!-- Welcome with product ID and brand (HTML is dark-mode safe) -->
<welcome file="welcome.html" mime-type="text/html" /> <welcome file="welcome.html" mime-type="text/html" />
<!-- Required license acceptance (Installer shows Agree / Disagree) --> <!-- RTF license → Installer.app Agree / Disagree buttons (HTML alone often only shows Continue) -->
<license file="license.html" mime-type="text/html" /> <license file="license.rtf" mime-type="application/rtf" />
<!-- Explicit product identification sheet --> <!-- Explicit product identification sheet -->
<readme file="readme.html" mime-type="text/html" /> <readme file="readme.html" mime-type="text/html" />

View file

@ -177,9 +177,10 @@ else
echo "→ SKIP_SIGN=1 — leaving app unsigned" echo "→ SKIP_SIGN=1 — leaving app unsigned"
fi fi
echo "→ Preparing installer GUI resources (welcome / license / readme / branding)" echo "→ Preparing installer GUI resources (welcome / license RTF Agree / readme / branding)"
cp -f "$RES_SRC/welcome.html" "$RES_STAGE/" cp -f "$RES_SRC/welcome.html" "$RES_STAGE/"
cp -f "$RES_SRC/license.html" "$RES_STAGE/" cp -f "$RES_SRC/license.html" "$RES_STAGE/" 2>/dev/null || true
cp -f "$RES_SRC/license.rtf" "$RES_STAGE/"
cp -f "$RES_SRC/conclusion.html" "$RES_STAGE/" cp -f "$RES_SRC/conclusion.html" "$RES_STAGE/"
cp -f "$RES_SRC/background.png" "$RES_STAGE/" cp -f "$RES_SRC/background.png" "$RES_STAGE/"
cp -f "$RES_SRC/background-dark.png" "$RES_STAGE/" cp -f "$RES_SRC/background-dark.png" "$RES_STAGE/"
@ -255,7 +256,7 @@ has_expand_file() {
f="$(find "$EXPAND" -name "$1" -print -quit 2>/dev/null || true)" f="$(find "$EXPAND" -name "$1" -print -quit 2>/dev/null || true)"
[[ -n "$f" && -s "$f" ]] [[ -n "$f" && -s "$f" ]]
} }
for need in Distribution welcome.html license.html readme.html conclusion.html background.png; do for need in Distribution welcome.html license.rtf readme.html conclusion.html background.png; do
if ! has_expand_file "$need"; then if ! has_expand_file "$need"; then
echo "error: product pkg missing installer resource: $need" >&2 echo "error: product pkg missing installer resource: $need" >&2
fail=1 fail=1

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Before After
Before After

View file

@ -2,30 +2,78 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Install complete — Verae Print Stamp</title> <title>Install complete — Verae Print Stamp</title>
<style> <style>
:root {
color-scheme: light dark;
--ink: #1D1534;
--muted: #5A4E6E;
--plum: #531B59;
--line: #CDBFD4;
--box-bg: #F7EFF8;
--box-fg: #1D1534;
--link: #531B59;
}
@media (prefers-color-scheme: dark) {
:root {
--ink: #F4EEF8;
--muted: #C9BFD6;
--plum: #D7B4DE;
--line: #5A4A6A;
--box-bg: #2A1A30;
--box-fg: #F4EEF8;
--link: #D7B4DE;
}
}
html, body { html, body {
margin: 0; padding: 0; margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; font: 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff; color: var(--ink);
background: transparent;
}
.wrap { padding: 14px 16px; }
h1 {
margin: 0 0 4px;
font-size: 18px;
color: var(--plum);
}
.sub {
margin: 0 0 12px;
font-size: 12px;
color: var(--muted);
} }
.wrap { padding: 18px 22px; }
h1 { margin: 0; font-size: 20px; color: #531B59; }
.sub { margin: 4px 0 12px 0; font-size: 12px; color: #6C5B81; }
p, li { font-size: 13px; line-height: 1.45; }
ul { margin: 8px 0 0 18px; padding: 0; color: #5A4E6E; }
.next { .next {
margin-top: 14px; padding: 12px 14px; border-radius: 10px; margin: 0 0 12px;
background: #F7EFF8; border: 1px solid #D9CCE3; padding: 12px 14px;
border-radius: 10px;
border: 1px solid var(--line);
background: var(--box-bg);
color: var(--box-fg);
}
.next strong {
display: block;
margin-bottom: 6px;
color: var(--plum);
}
ul {
margin: 0 0 0 18px;
padding: 0;
color: var(--box-fg);
}
li { margin: 5px 0; }
a { color: var(--link); }
.thanks {
margin-top: 8px;
font-size: 12px;
color: var(--muted);
} }
.next strong { color: #3E1343; }
a { color: #531B59; }
</style> </style>
</head> </head>
<body> <body>
<div class="wrap"> <div class="wrap">
<h1>Verae Print Stamp is installed</h1> <h1>Verae Print Stamp is installed</h1>
<div class="sub">Product ID ai.verae.print-stamp · branded Verae installer</div> <p class="sub">Product ID ai.verae.print-stamp · branded Verae installer</p>
<div class="next"> <div class="next">
<strong>Next steps</strong> <strong>Next steps</strong>
<ul> <ul>
@ -35,9 +83,7 @@
<li>Docs &amp; downloads: <a href="https://printit.verae.ai/">printit.verae.ai</a></li> <li>Docs &amp; downloads: <a href="https://printit.verae.ai/">printit.verae.ai</a></li>
</ul> </ul>
</div> </div>
<p style="margin-top:14px;font-size:12px;color:#6C5B81;"> <p class="thanks">Thank you for choosing Verae.</p>
Thank you for choosing Verae.
</p>
</div> </div>
</body> </body>
</html> </html>

View file

@ -2,23 +2,50 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>License Agreement — Verae Print Stamp</title> <title>License Agreement — Verae Print Stamp</title>
<style> <style>
/* Kept as fallback; Distribution prefers license.rtf for Agree/Disagree. */
:root {
color-scheme: light dark;
--ink: #1D1534;
--muted: #5A4E6E;
--plum: #531B59;
--line: #CDBFD4;
--box-bg: #EBD9EE;
--box-fg: #1D1534;
}
@media (prefers-color-scheme: dark) {
:root {
--ink: #F4EEF8;
--muted: #C9BFD6;
--plum: #D7B4DE;
--line: #5A4A6A;
--box-bg: #3A2342;
--box-fg: #F4EEF8;
}
}
html, body { html, body {
margin: 0; padding: 0; margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; font: 12px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff; color: var(--ink);
background: transparent;
} }
.wrap { padding: 14px 18px; } .wrap { padding: 12px 14px; }
h1 { font-size: 16px; color: #531B59; margin: 0 0 8px 0; } h1 { font-size: 15px; color: var(--plum); margin: 0 0 6px; }
h2 { font-size: 13px; color: #3E1343; margin: 14px 0 6px 0; } h2 { font-size: 12px; color: var(--plum); margin: 12px 0 4px; }
p, li { font-size: 12px; line-height: 1.45; margin: 0 0 8px 0; } p, li { margin: 0 0 8px; color: var(--ink); }
ul { margin: 0 0 8px 18px; padding: 0; } ul { margin: 0 0 8px 18px; padding: 0; }
.meta { font-size: 11px; color: #6C5B81; margin-bottom: 12px; } .meta { font-size: 11px; color: var(--muted); margin-bottom: 10px; }
.box { .box {
border: 1px solid #D9CCE3; border-radius: 8px; border: 1px solid var(--line);
background: #F7EFF8; padding: 10px 12px; margin: 10px 0; border-radius: 8px;
background: var(--box-bg);
color: var(--box-fg);
padding: 10px 12px;
margin: 10px 0;
font-size: 12px; font-size: 12px;
font-weight: 600;
} }
</style> </style>
</head> </head>
@ -27,16 +54,11 @@
<h1>Verae Print Stamp — End User License Agreement</h1> <h1>Verae Print Stamp — End User License Agreement</h1>
<div class="meta"> <div class="meta">
Product: Verae Print Stamp (PrintIt) · ID: ai.verae.print-stamp<br/> Product: Verae Print Stamp (PrintIt) · ID: ai.verae.print-stamp<br/>
Copyright © Verae / FlightLookup Inc. / George Lambert<br/> Copyright © Verae / FlightLookup Inc. / George Lambert
You must accept this agreement to continue installation.
</div> </div>
<div class="box"> <div class="box">
<strong>Accept to install.</strong> By clicking Agree / Continue in the macOS You must click <strong>Agree</strong> to install. If you do not agree, click Disagree or cancel the installer.
Installer, you accept these terms. If you do not agree, click Agree is not
available until you review, or cancel the installer.
</div> </div>
<h2>1. License</h2> <h2>1. License</h2>
<p> <p>
UNLICENSED — all rights reserved unless otherwise agreed in writing with Verae. UNLICENSED — all rights reserved unless otherwise agreed in writing with Verae.
@ -44,65 +66,37 @@
non-transferable license to install and use Verae Print Stamp on Apple non-transferable license to install and use Verae Print Stamp on Apple
macOS computers you own or control, for timestamping documents with Verae. macOS computers you own or control, for timestamping documents with Verae.
</p> </p>
<h2>2. What is sent to Verae</h2> <h2>2. What is sent to Verae</h2>
<p> <p>
This software sends only a <strong>SHA-256 digest</strong> of your document This software sends only a <strong>SHA-256 digest</strong> of your document
(and related registration metadata) to Verae for timestamp registration. (and related registration metadata) to Verae for timestamp registration.
Document bytes remain on your computer. You are responsible for network Document bytes remain on your computer.
access, account credentials (including xVerae- keys), and lawful use.
</p> </p>
<h2>3. Accounts and keys</h2> <h2>3. Accounts and keys</h2>
<p> <p>
Signing keys and customer tokens are tied to your Verae account. Keep keys Signing keys and customer tokens are tied to your Verae account. Keep keys
secret. Lost keys may prevent proving prior stamps. Portal: secret. Portal: https://customer.verae.ai/portal/
https://customer.verae.ai/portal/
</p> </p>
<h2>4. Restrictions</h2> <h2>4. Restrictions</h2>
<ul> <ul>
<li>Do not reverse engineer except where mandatory law allows.</li> <li>Do not reverse engineer except where mandatory law allows.</li>
<li>Do not remove Verae branding, copyright, or product identification.</li> <li>Do not remove Verae branding, copyright, or product identification.</li>
<li>Do not use the software to infringe others’ rights or violate law.</li>
<li>Do not misrepresent timestamp receipts or certificate contents.</li> <li>Do not misrepresent timestamp receipts or certificate contents.</li>
</ul> </ul>
<h2>5. Disclaimer</h2>
<h2>5. Ownership</h2>
<p> <p>
The software, Verae marks, and documentation remain property of Verae and THE SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND.
its licensors. No trademark license is granted beyond normal use of the
installed product UI.
</p> </p>
<h2>6. Limitation of liability</h2>
<h2>6. Disclaimer</h2>
<p>
THE SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
NON-INFRINGEMENT. TIMESTAMPING DEPENDS ON NETWORK, ACCOUNT, AND UPSTREAM
SERVICES.
</p>
<h2>7. Limitation of liability</h2>
<p> <p>
TO THE MAXIMUM EXTENT PERMITTED BY LAW, VERAE AND ITS SUPPLIERS ARE NOT TO THE MAXIMUM EXTENT PERMITTED BY LAW, VERAE AND ITS SUPPLIERS ARE NOT
LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES
DAMAGES, OR LOSS OF DATA, PROFITS, OR BUSINESS, ARISING FROM USE OF THE ARISING FROM USE OF THE SOFTWARE.
SOFTWARE.
</p> </p>
<h2>7. Contact</h2>
<h2>8. Termination</h2>
<p> <p>
This license ends if you breach it. On termination, stop using and uninstall Downloads: https://printit.verae.ai/ · Support: https://verae.com<br/>
the software. Provisions that by nature should survive (ownership, Product ID: ai.verae.print-stamp
disclaimer, liability) survive termination.
</p>
<h2>9. Contact</h2>
<p>
Downloads: https://printit.verae.ai/<br/>
Support: https://verae.com<br/>
Product ID: ai.verae.print-stamp · Bundle: Verae Print Stamp.app
</p> </p>
</div> </div>
</body> </body>

View file

@ -0,0 +1,40 @@
{\rtf1\ansi\deff0
{\fonttbl{\f0 Helvetica;}}
\f0\fs22
{\b Verae Print Stamp \endash End User License Agreement}\par
\par
Product: Verae Print Stamp (PrintIt)\par
Product ID: ai.verae.print-stamp\par
Copyright \'a9 Verae / FlightLookup Inc. / George Lambert\par
\par
{\b You must click Agree to install this software.}\par
\par
{\b 1. License}\par
UNLICENSED \endash all rights reserved unless otherwise agreed in writing with Verae. Subject to this agreement, Verae grants you a limited, non-exclusive, non-transferable license to install and use Verae Print Stamp on Apple macOS computers you own or control, for timestamping documents with Verae.\par
\par
{\b 2. What is sent to Verae}\par
This software sends only a SHA-256 digest of your document (and related registration metadata) to Verae for timestamp registration. Document bytes remain on your computer. You are responsible for network access, account credentials (including xVerae- keys), and lawful use.\par
\par
{\b 3. Accounts and keys}\par
Signing keys and customer tokens are tied to your Verae account. Keep keys secret. Portal: https://customer.verae.ai/portal/\par
\par
{\b 4. Restrictions}\par
Do not reverse engineer except where mandatory law allows. Do not remove Verae branding, copyright, or product identification. Do not use the software to infringe others\'92 rights or violate law. Do not misrepresent timestamp receipts or certificate contents.\par
\par
{\b 5. Ownership}\par
The software, Verae marks, and documentation remain property of Verae and its licensors.\par
\par
{\b 6. Disclaimer}\par
THE SOFTWARE IS PROVIDED \'93AS IS\'94 WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.\par
\par
{\b 7. Limitation of liability}\par
TO THE MAXIMUM EXTENT PERMITTED BY LAW, VERAE AND ITS SUPPLIERS ARE NOT LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR LOSS OF DATA, PROFITS, OR BUSINESS, ARISING FROM USE OF THE SOFTWARE.\par
\par
{\b 8. Termination}\par
This license ends if you breach it. On termination, stop using and uninstall the software.\par
\par
{\b 9. Contact}\par
Downloads: https://printit.verae.ai/\par
Support: https://verae.com\par
Product ID: ai.verae.print-stamp\par
}

View file

@ -2,23 +2,63 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Product identification — Verae Print Stamp</title> <title>Product identification — Verae Print Stamp</title>
<style> <style>
:root {
color-scheme: light dark;
--ink: #1D1534;
--muted: #5A4E6E;
--plum: #531B59;
--line: #CDBFD4;
--th-bg: #EBD9EE;
--th-fg: #3E1343;
}
@media (prefers-color-scheme: dark) {
:root {
--ink: #F4EEF8;
--muted: #C9BFD6;
--plum: #D7B4DE;
--line: #5A4A6A;
--th-bg: #3A2342;
--th-fg: #F4EEF8;
}
}
html, body { html, body {
margin: 0; padding: 0; margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; font: 12px/1.4 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff; color: var(--ink);
background: transparent;
}
.wrap { padding: 12px 14px; }
h1 {
margin: 0 0 10px;
font-size: 16px;
color: var(--plum);
}
table {
border-collapse: collapse;
width: 100%;
} }
.wrap { padding: 14px 18px; }
h1 { font-size: 16px; color: #531B59; margin: 0 0 10px 0; }
table { border-collapse: collapse; width: 100%; font-size: 12px; }
th, td { th, td {
text-align: left; vertical-align: top; text-align: left;
padding: 6px 8px; border-bottom: 1px solid #EBD9EE; vertical-align: top;
padding: 7px 8px;
border: 1px solid var(--line);
color: var(--ink);
background: transparent;
}
th {
width: 36%;
font-weight: 600;
background: var(--th-bg);
color: var(--th-fg);
}
.note {
margin-top: 12px;
font-size: 11px;
color: var(--muted);
} }
th { width: 38%; color: #3E1343; font-weight: 600; background: #F7EFF8; }
td { color: #1D1534; }
.note { margin-top: 12px; font-size: 11px; color: #6C5B81; }
</style> </style>
</head> </head>
<body> <body>
@ -38,11 +78,11 @@
</td></tr> </td></tr>
<tr><th>Brand</th><td>Verae plum #531B59 · printit.verae.ai</td></tr> <tr><th>Brand</th><td>Verae plum #531B59 · printit.verae.ai</td></tr>
<tr><th>Support</th><td>https://verae.com · https://printit.verae.ai/</td></tr> <tr><th>Support</th><td>https://verae.com · https://printit.verae.ai/</td></tr>
<tr><th>License</th><td>Must accept EULA in this installer before files are installed</td></tr> <tr><th>License</th><td>Click <strong>Agree</strong> on the License page to continue installation</td></tr>
</table> </table>
<p class="note"> <p class="note">
This Read Me identifies the product for audit and support. It is not a This Read Me identifies the product for audit and support.
substitute for the License Agreement screen. Installation requires accepting the Software License Agreement.
</p> </p>
</div> </div>
</body> </body>

View file

@ -2,67 +2,79 @@
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Welcome — Verae Print Stamp</title> <title>Welcome — Verae Print Stamp</title>
<style> <style>
/* Installer WebKit: dark + light. No light-on-light boxes. */
:root { :root {
--plum: #531B59; color-scheme: light dark;
--plum-d: #3E1343;
--plum-mid: #6C5B81;
--ink: #1D1534; --ink: #1D1534;
--muted: #5A4E6E; --muted: #5A4E6E;
--bg: #F7EFF8; --plum: #531B59;
--line: #CDBFD4;
--chip-bg: #EBD9EE;
--chip-fg: #3E1343;
}
@media (prefers-color-scheme: dark) {
:root {
--ink: #F4EEF8;
--muted: #C9BFD6;
--plum: #D7B4DE;
--line: #5A4A6A;
--chip-bg: #3A2342;
--chip-fg: #F4EEF8;
}
} }
html, body { html, body {
margin: 0; padding: 0; margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif; font: 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: var(--ink); color: var(--ink);
background: #fff; background: transparent;
}
.wrap { padding: 18px 22px 12px 22px; }
.brand {
display: flex; align-items: center; gap: 12px;
margin-bottom: 14px;
}
.mark {
width: 36px; height: 36px; border-radius: 8px;
background: var(--plum);
color: #fff; font-weight: 700; font-size: 14px;
display: flex; align-items: center; justify-content: center;
} }
.wrap { padding: 14px 16px 10px; }
h1 { h1 {
margin: 0; font-size: 22px; font-weight: 700; color: var(--plum); margin: 0 0 4px;
letter-spacing: -0.02em; font-size: 20px; font-weight: 700;
color: var(--plum);
} }
.product-id { .pid {
margin: 2px 0 0 0; font-size: 12px; color: var(--plum-mid); margin: 0 0 10px;
font-size: 12px;
color: var(--muted);
} }
.tag { .chip {
display: inline-block; margin-top: 10px; display: inline-block;
padding: 3px 10px; border-radius: 999px; margin: 0 0 12px;
background: var(--bg); color: var(--plum-d); padding: 3px 10px;
font-size: 11px; font-weight: 600; letter-spacing: 0.04em; border-radius: 999px;
background: var(--chip-bg);
color: var(--chip-fg);
font-size: 11px;
font-weight: 700;
letter-spacing: 0.03em;
text-transform: uppercase; text-transform: uppercase;
} }
p { font-size: 13px; line-height: 1.45; color: var(--ink); margin: 12px 0 0 0; } p { margin: 0 0 10px; color: var(--ink); }
ul { margin: 10px 0 0 18px; padding: 0; font-size: 13px; line-height: 1.5; color: var(--muted); } ul {
margin: 0 0 12px 18px;
padding: 0;
color: var(--ink);
}
li { margin: 4px 0; } li { margin: 4px 0; }
.foot { .foot {
margin-top: 16px; padding-top: 10px; margin-top: 12px;
border-top: 1px solid #EBD9EE; padding-top: 10px;
font-size: 11px; color: var(--plum-mid); border-top: 1px solid var(--line);
font-size: 11px;
color: var(--muted);
} }
</style> </style>
</head> </head>
<body> <body>
<div class="wrap"> <div class="wrap">
<div class="brand"> <h1>Verae Print Stamp</h1>
<div class="mark">V</div> <p class="pid">Product ID: ai.verae.print-stamp · PrintIt for macOS</p>
<div> <span class="chip">Verae branded installer</span>
<h1>Verae Print Stamp</h1>
<div class="product-id">Product ID: ai.verae.print-stamp · PrintIt for macOS</div>
</div>
</div>
<span class="tag">Verae branded installer</span>
<p> <p>
This installer sets up <strong>Verae Print Stamp</strong> (PrintIt) so you can This installer sets up <strong>Verae Print Stamp</strong> (PrintIt) so you can
timestamp PDFs and print jobs with a Verae-backed cryptographic receipt. timestamp PDFs and print jobs with a Verae-backed cryptographic receipt.
@ -76,7 +88,7 @@
</ul> </ul>
<p>Click Continue to review the license agreement, then install.</p> <p>Click Continue to review the license agreement, then install.</p>
<div class="foot"> <div class="foot">
Publisher: Verae / FlightLookup Inc. · https://printit.verae.ai/ · https://verae.com Publisher: Verae / FlightLookup Inc. · printit.verae.ai · verae.com
</div> </div>
</div> </div>
</body> </body>

View file

@ -68,17 +68,23 @@ check readme-ref grep -qi 'readme' "$DIST_FILE"
check background-ref grep -qi 'background' "$DIST_FILE" check background-ref grep -qi 'background' "$DIST_FILE"
check welcome-html has_file welcome.html check welcome-html has_file welcome.html
check license-html has_file license.html check license-rtf has_file license.rtf
check readme-html has_file readme.html check readme-html has_file readme.html
check conclusion-html has_file conclusion.html check conclusion-html has_file conclusion.html
check background-png has_file background.png check background-png has_file background.png
WELCOME="$(find_one welcome.html)" WELCOME="$(find_one welcome.html)"
LICENSE="$(find_one license.html)" LICENSE_RTF="$(find_one license.rtf)"
README="$(find_one readme.html)" README="$(find_one readme.html)"
check welcome-branding grep -Eq '531B59|Verae branded|Product ID' "$WELCOME" CONCLUSION="$(find_one conclusion.html)"
check license-accept grep -Eiq 'accept|Agree|License Agreement' "$LICENSE" check welcome-branding grep -Eq 'Verae branded installer|Product ID' "$WELCOME"
check welcome-darkmode grep -q 'prefers-color-scheme: dark' "$WELCOME"
check license-agree grep -Eiq 'Agree|License Agreement' "$LICENSE_RTF"
check readme-product-id grep -q 'ai.verae.print-stamp' "$README" check readme-product-id grep -q 'ai.verae.print-stamp' "$README"
check readme-darkmode grep -q 'prefers-color-scheme: dark' "$README"
check conclusion-darkmode grep -q 'prefers-color-scheme: dark' "$CONCLUSION"
# Distribution must point at RTF license (Agree/Disagree), not HTML-only
check dist-license-rtf grep -q 'license.rtf' "$DIST_FILE"
echo "════════════════════════════════" echo "════════════════════════════════"
echo " installer-ui PASS=$pass FAIL=$fail" echo " installer-ui PASS=$pass FAIL=$fail"