# TrayHop

> TrayHop is an independent local printing connector, browser SDK, and loopback API for approved web applications that print PDFs, shipping labels, barcodes, receipts, and operational documents to workstation printers.

TrayHop is a private alpha built by Zenith Web Services LLC. The first intended pilot is Stitchin Heaven Command Center. It is not a QZ Tray fork and includes no QZ source.

## What TrayHop does

- Connects browser code to a workstation agent at `http://127.0.0.1:18181`.
- Requires a local operator to approve one exact website origin and selected printer IDs.
- Supports PDF submission with exact millimeter dimensions, copies, duplex, saved printer profiles, and preview-first setup.
- Persists idempotency records before asynchronous printer work.
- Treats lost acknowledgements conservatively and provides read-only lookup by the original job key.
- Keeps operator management separate from website printing credentials.
- Includes offline licensing and a local enrollment foundation; hosted billing and customer administration remain future work.

## Current status

Version `0.23.0-alpha.1` adds a fail-closed Windows Authenticode release workflow that verifies an exact code-signing certificate, SHA-256 signature, RFC 3161 timestamp, Windows trust result and the executable extracted from the final ZIP before an artifact can claim signed status. Windows and Apple signing credentials are not configured yet, so current private pilot artifacts remain unsigned. The tested product also includes the loopback-aware browser SDK, authenticated status route, hosted workstation compatibility check, desktop package, preview workflow, experimental native adapters, printer profiles, calibration, job review, diagnostics, pilot reports, and verifiable private pilot bundles. Broad hardware qualification, full supported-browser acceptance, signed installers, automatic updates, hosted commercial licensing and the first completed signed release remain release gates.

An `accepted` job means the operating system acknowledged submission. It does not prove that paper or a label physically printed. TrayHop never automatically retries after native dispatch may have begun.

## Integration

- [Developer guide](https://trayhop.com/developers/): Human-readable integration documentation.
- [Agent-readable integration guide](https://trayhop.com/developers/index.md): Canonical Markdown for coding agents.
- [OpenAPI 3.1](https://trayhop.com/developers/openapi.json): Loopback HTTP API description.
- [Integration manifest](https://trayhop.com/developers/integration.json): Machine-readable capabilities and invariants.
- [Browser SDK manifest](https://trayhop.com/sdk/0.23/manifest.json): Version, module, TypeScript declarations, and SHA-256.
- [Workstation compatibility check](https://trayhop.com/connect/): Pair from the production HTTPS site and inspect approved local resources without sending a print.
- [Feedback contract](https://trayhop.com/api/feedback): Bounded API for product and integration feedback.

## Feedback

People can use the feedback form at [trayhop.com/#feedback](https://trayhop.com/#feedback). Agents can read `GET https://trayhop.com/api/feedback` and submit the documented JSON only after the user reviews and authorizes the message. Never include credentials, customer data, documents, pairing codes, job keys, private URLs, or license material.
