Commit graph PrintToVeraeTimeStamp/internal
Author SHA1 Message Date
Cursor Agent
5ed87da68f
Keep the macOS receipts SMB share across reboots.
Some checks failed
installers / netprint (push) Has been cancelled
installers / macos-pkg (push) Has been cancelled
installers / publish (push) Has been cancelled
Save the installer choice as shareReceiptsSMB, recreate the share when it is missing, and show the live smb:// address on the receipts page.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 16:34:51 +00:00
Cursor Agent
970061d689
Register the menu-bar Objective-C methods with the selector type purego expects.
The status-item class was never registered, so the tray treated a failed setup as success. Smoke now fails closed until the class exists.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 16:23:23 +00:00
Cursor Agent
969415e5c6
Keep the Mac menu bar up and open the live receipts page.
Load AppKit on the main thread, log why the tray would exit, and fall back to an AppKit status item if NSApplication run returns. Open Receipts uses the status URL. Installers can share that folder read-only over SMB.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 16:18:24 +00:00
Cursor Agent
f96ade41bd
Ship the Mac menu bar as an app bundle and use one real stamp path.
The tray and AirDrop helper now live in Verae NetPrint.app so notifications can start, /api/stamp uses the same client as Print-Job and refuses mock receipts, and the default printer name includes the hostname with an mDNS rename when that name is taken.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 02:09:48 +00:00
Cursor Agent
e685b0241e
Build the macOS package with pkgbuild and leave CUPS localhost alone.
The arm64 pkg and the Swift AirDrop helper are built on a macos-14 runner, then checked with pkgutil and installer. Receipts move to /Users/Shared/Verae Receipts, and port 631 is bound only on LAN addresses.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 01:47:53 +00:00
Cursor Agent
a63ad55343
Skip the AirDrop helper compile unless swiftc is on macOS.
Linux CI has a Swift compiler that cannot import AppKit. The menu-bar app opens the share sheet itself when verae-airdrop is not in the package.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 01:29:53 +00:00
Cursor Agent
927229ab4f
AirDrop stamped PDFs from the macOS menu bar.
The menu-bar app, not the root daemon, opens the AirDrop share sheet for each finished job when the setting is on. The unsigned arm64 package installs the daemon and LaunchAgent, and Darwin DNSServiceRegister advertises the _universal and _print subtypes.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 01:27:23 +00:00
Cursor Agent
a7e42e6034
Return the stamped PDF to the device that sent it.
POST /api/stamp runs the print pipeline and responds with the certificate, or a zip of the original, the certificate, and the receipt. The receipts page links an iPhone shortcut, and mDNS advertises _verae._tcp without a second IPP name.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 01:07:27 +00:00
Cursor Agent
dcc987da6e
Mail stamped PDFs and serve a phone receipts page.
After a job is stored as completed, email the certificate, the original, and the receipt summary. A mail failure is logged and retried, and it does not fail the print. The SMTP password stays in DPAPI or a root-only file. Phones on Private and Domain networks can open /receipts for the stamped PDF.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 00:56:38 +00:00
Cursor Agent
17bb067010
Keep one IPP advertisement and accept link-local IPv6.
DnsServiceRegister stays the only owner of the _ipp._tcp instance. The shared UDP responder answers subtype PTRs only, so mDNS no longer renames a second copy to Name(1). The IPP port listens on IPv4 and on [::] with IPV6_V6ONLY, and the firewall rules allow fe80::/10, so a Mac connect to the host's link-local address completes.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 00:34:34 +00:00
Cursor Agent
e099cee78c
Fix Windows AirPrint discovery, media, PWG pages, tray lifetime, and Print-Job reads.
DnsServiceRegister publishes only the primary _ipp._tcp name. A shared UDP 5353 socket answers subtype PTRs that point at that name, plus SRV, TXT, and address records. PWG RaS2 headers are big-endian, IPP advertises letter and A4 media-col, Print-Job reads Content-Length after 100 Continue, and the tray starts once behind a mutex.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-05 00:15:02 +00:00
Cursor Agent
1d8dbac81a
Advertise AirPrint subtypes and keep job folders, formats, and the service log consistent.
Windows DnsServiceRegister now registers the Bonjour service-type form and the RFC subtype name so a Mac browse of _ipp._tcp,_universal can see the printer. document-format-supported matches the TXT pdl list, including JPEG. Job ids persist in next-job and job-N directories. The service log is written and flushed even when stderr fails. The tray is started by Task Scheduler or Explorer so setup is not its parent.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-04 22:16:54 +00:00
Cursor Agent
0808cdd781
Stop the network printer before replacing its binary on upgrade.
A silent Windows setup copied verae-print.exe while VeraeNetPrint and the tray still had the files open, skipped the locked copies, and left the old binary to reject the new flags. launch-tray on that binary then started a second server. Stop and wait, then copy, and abort if a file is still locked. macOS bootouts the LaunchDaemon before the payload is copied, and Debian stops the unit from preinst. launch-tray only starts the tray.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-04 22:00:24 +00:00
Cursor Agent
141abf5623
Advertise the Windows printer through DNS-SD and log the service.
VeraeNetPrint had no UDP sockets because Dnscache owns port 5353 and the bind error never reached a log or the status API. Register with DnsServiceRegister first, fall back to a shared UDP socket, write %ProgramData%\Verae\logs\netprint.log, and surface mDNS errors on /api/v1/status. The installer also starts the tray for the logged-in user, and Public networks plus a local queue stay off unless opted in.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-04 21:48:31 +00:00
Cursor Agent
2f7f7aa873
Keep the network printer off the driver helper port and install folder.
Use 8632 when 631 is taken, install standalone Windows and macOS builds beside the driver instead of over it, open the LAN firewall ports, and give silent NSIS dialogs a default plus an install log.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-04 19:51:03 +00:00
Cursor Agent
bc7b09061b
Add an optional LAN timestamp printer and tray control.
IPP Everywhere jobs reuse the existing Verae stamp path. Standalone installers and an off-by-default driver option share one service, config, and login-time tray, which talks to a loopback control API.

Co-authored-by: George Lambert <marchon@gmail.com>
2026-10-04 19:30:21 +00:00
179c974b60 sign-in: in-app password reset (emailed code) on Mac/Linux and Windows; v0.3.4
- auth.PasswordForgot / auth.PasswordReset (+ httptest tests); ErrResetUnavailable
  on 404/401/405/5xx so dialogs offer https://customer.verae.ai/portal/
- keyflow_gui: 'Forgot password?' on the password step and after a failed sign-in
- Windows: Forgot password? link, forgot/reset/unavailable forms
- bump HelperVersion, deb and pkg default VERSION to 0.3.4
2026-10-04 14:14:55 -04:00
George Lambert
133315ab53 Linux: zenity sign-in/key dialog; CUPS backend opens it in the user's session when a key is missing or rejected; apps-menu launcher; 0.3.3 2026-10-04 13:57:40 -04:00
Grok Bot (for George)
13ebc351f5 0.3.2: Save As filename prompt per print (Windows + macOS)
- promptForFilename setting (default true; env VERAE_PROMPT_FOR_FILENAME),
  'verae-print config --prompt-for-filename', last Save As folder in
  ~/.verae/state.json
- Windows helper: common file dialog (PDF filter, overwrite prompt, topmost
  owner) before stamping; macOS printer path: choose file name (NSSavePanel)
  via 'stamp -prompt-name -title'; cancel discards the job (no stamp/credit)
- job.Options.OutPath: original saved at the chosen path, certificate and
  .verae.json next to it with the chosen base name (never overwritten)
- held jobs keep the chosen path (pendingMeta.OutPath)
- installer: 'Ask for a file name for each print' checkbox; removed the
  'Open the user guide' finish-page checkbox; mac-key-setup asks too
- auth test no longer touches the real macOS keychain (VERAE_SKIP_KEYCHAIN)
- version 0.3.2
2026-10-03 20:00:56 -04:00
Grok Bot (for George)
e960883a0a 0.3.1: never overwrite outputs (seconds + -N suffix); OpenOnComplete (folder|pdf|none) on Windows+macOS; hold jobs on missing/invalid key (401/403) with one native sign-in prompt and auto-retry; macOS pkg in-installer key flow (mac-key-setup); Windows release installer (no debug naming, errors-only log, options page); VERAE_LOG_LEVEL=debug switch 2026-10-03 19:40:08 -04:00
Grok Bot (for George)
1317bea604 installer API: reference handler (internal/installapi), SMTP mailer with STARTTLS, plain+HTML code template, rate limits; verae-mailtest; user-token.ps1 validates via Go; stricter key masking 2026-10-03 19:20:28 -04:00
Grok Bot (for George)
6e76bc7b0e windows-debug: elevated GUI installer with Verae key pages (sign in / create account + email code / paste / skip), hidden scripts, per-step finish page, user-scoped key save + helper scheduled task; installer registration API spec 2026-10-03 19:14:49 -04:00
Grok Bot (for George)
fecc2ef201 auth test: skip unix perm check on Windows 2026-10-03 18:52:55 -04:00
Grok Bot (for George)
46fb92467d auth tests: set USERPROFILE so they pass on Windows 2026-10-03 18:52:16 -04:00
Grok Bot (for George)
468f5c0da5 winprint: IPP Everywhere conformance fixes (ipptool) 2026-10-03 18:50:49 -04:00
Grok Bot (for George)
dc37fa76dc windows-debug: IPP loopback printer helper, Print-to-PDF fallback, debug installer, diag script 2026-10-03 18:49:56 -04:00
4f1d90cf64 wip: registration PDF, auth setup, CLI, Windows/Linux installers 2026-10-03 18:35:27 -04:00
c6d998a16d fix: match Verae Timestamping.app registration PDF and receipt fields
Parse completedAt/certificate/result from Verae API; enrich merkle via
POST /api/verify (blockIndex). Generate certificate with the same jsPDF
layout as register.html export. Preserve original filename (e.g. .html).
2026-10-03 04:26:45 -04:00
38b902d5e7 fix(pdfcert): branded Registration Document without mcp.verae.ai
Match the official Verae Timestamp Registration Document layout (logo,
frames, field list, QR). Disclaimer: only the digest was submitted.
Lookup/footer use explorer.verae.ai — no mcp.verae.ai or “via MCP”.
2026-10-03 04:15:28 -04:00
46f2bcd43e feat(macos): PDF Services stamp helper with dual-channel Verae auth
Implements macOS v0: verae-print stamp + install-macos PDF menu items.
Saves {name}.pdf, {name}-verae-timestamp-{RECEIPTID}.pdf, and .verae.json.
Channels: verae (api.veraetime.net JWT) and zapier (zap.verae.ai xVerae- + attachPdf).
2026-10-03 03:56:27 -04:00