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"
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" />
<!-- Required license acceptance (Installer shows Agree / Disagree) -->
<license file="license.html" mime-type="text/html" />
<!-- RTF license → Installer.app Agree / Disagree buttons (HTML alone often only shows Continue) -->
<license file="license.rtf" mime-type="application/rtf" />
<!-- Explicit product identification sheet -->
<readme file="readme.html" mime-type="text/html" />

View file

@ -177,9 +177,10 @@ else
echo "→ SKIP_SIGN=1 — leaving app unsigned"
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/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/background.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)"
[[ -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
echo "error: product pkg missing installer resource: $need" >&2
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">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Install complete — Verae Print Stamp</title>
<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 {
margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff;
font: 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
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 {
margin-top: 14px; padding: 12px 14px; border-radius: 10px;
background: #F7EFF8; border: 1px solid #D9CCE3;
margin: 0 0 12px;
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>
</head>
<body>
<div class="wrap">
<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">
<strong>Next steps</strong>
<ul>
@ -35,9 +83,7 @@
<li>Docs &amp; downloads: <a href="https://printit.verae.ai/">printit.verae.ai</a></li>
</ul>
</div>
<p style="margin-top:14px;font-size:12px;color:#6C5B81;">
Thank you for choosing Verae.
</p>
<p class="thanks">Thank you for choosing Verae.</p>
</div>
</body>
</html>

View file

@ -2,23 +2,50 @@
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>License Agreement — Verae Print Stamp</title>
<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 {
margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff;
font: 12px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: var(--ink);
background: transparent;
}
.wrap { padding: 14px 18px; }
h1 { font-size: 16px; color: #531B59; margin: 0 0 8px 0; }
h2 { font-size: 13px; color: #3E1343; margin: 14px 0 6px 0; }
p, li { font-size: 12px; line-height: 1.45; margin: 0 0 8px 0; }
.wrap { padding: 12px 14px; }
h1 { font-size: 15px; color: var(--plum); margin: 0 0 6px; }
h2 { font-size: 12px; color: var(--plum); margin: 12px 0 4px; }
p, li { margin: 0 0 8px; color: var(--ink); }
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 {
border: 1px solid #D9CCE3; border-radius: 8px;
background: #F7EFF8; padding: 10px 12px; margin: 10px 0;
border: 1px solid var(--line);
border-radius: 8px;
background: var(--box-bg);
color: var(--box-fg);
padding: 10px 12px;
margin: 10px 0;
font-size: 12px;
font-weight: 600;
}
</style>
</head>
@ -27,16 +54,11 @@
<h1>Verae Print Stamp — End User License Agreement</h1>
<div class="meta">
Product: Verae Print Stamp (PrintIt) · ID: ai.verae.print-stamp<br/>
Copyright © Verae / FlightLookup Inc. / George Lambert<br/>
You must accept this agreement to continue installation.
Copyright © Verae / FlightLookup Inc. / George Lambert
</div>
<div class="box">
<strong>Accept to install.</strong> By clicking Agree / Continue in the macOS
Installer, you accept these terms. If you do not agree, click Agree is not
available until you review, or cancel the installer.
You must click <strong>Agree</strong> to install. If you do not agree, click Disagree or cancel the installer.
</div>
<h2>1. License</h2>
<p>
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
macOS computers you own or control, for timestamping documents with Verae.
</p>
<h2>2. What is sent to Verae</h2>
<p>
This software sends only a <strong>SHA-256 digest</strong> 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.
Document bytes remain on your computer.
</p>
<h2>3. Accounts and keys</h2>
<p>
Signing keys and customer tokens are tied to your Verae account. Keep keys
secret. Lost keys may prevent proving prior stamps. Portal:
https://customer.verae.ai/portal/
secret. Portal: https://customer.verae.ai/portal/
</p>
<h2>4. Restrictions</h2>
<ul>
<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 use the software to infringe others’ rights or violate law.</li>
<li>Do not misrepresent timestamp receipts or certificate contents.</li>
</ul>
<h2>5. Ownership</h2>
<h2>5. Disclaimer</h2>
<p>
The software, Verae marks, and documentation remain property of Verae and
its licensors. No trademark license is granted beyond normal use of the
installed product UI.
THE SOFTWARE IS PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND.
</p>
<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>
<h2>6. Limitation of liability</h2>
<p>
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.
LIABLE FOR INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES
ARISING FROM USE OF THE SOFTWARE.
</p>
<h2>8. Termination</h2>
<h2>7. Contact</h2>
<p>
This license ends if you breach it. On termination, stop using and uninstall
the software. Provisions that by nature should survive (ownership,
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
Downloads: https://printit.verae.ai/ · Support: https://verae.com<br/>
Product ID: ai.verae.print-stamp
</p>
</div>
</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">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Product identification — Verae Print Stamp</title>
<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 {
margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
color: #1D1534; background: #fff;
font: 12px/1.4 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
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 {
text-align: left; vertical-align: top;
padding: 6px 8px; border-bottom: 1px solid #EBD9EE;
text-align: left;
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>
</head>
<body>
@ -38,11 +78,11 @@
</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>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>
<p class="note">
This Read Me identifies the product for audit and support. It is not a
substitute for the License Agreement screen.
This Read Me identifies the product for audit and support.
Installation requires accepting the Software License Agreement.
</p>
</div>
</body>

View file

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

View file

@ -68,17 +68,23 @@ check readme-ref grep -qi 'readme' "$DIST_FILE"
check background-ref grep -qi 'background' "$DIST_FILE"
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 conclusion-html has_file conclusion.html
check background-png has_file background.png
WELCOME="$(find_one welcome.html)"
LICENSE="$(find_one license.html)"
LICENSE_RTF="$(find_one license.rtf)"
README="$(find_one readme.html)"
check welcome-branding grep -Eq '531B59|Verae branded|Product ID' "$WELCOME"
check license-accept grep -Eiq 'accept|Agree|License Agreement' "$LICENSE"
CONCLUSION="$(find_one conclusion.html)"
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-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 " installer-ui PASS=$pass FAIL=$fail"