# Website to enquiry — tested local walkthrough

The preferred-date/photo gap recorded in this historical v0.18 walkthrough is addressed by the [v0.19 enquiry checkpoint](ENQUIRY-DATE-AND-PHOTOS.md) for PNG/JPEG/WebP within its stated limits. HEIC/HEIF, broader gallery rehearsal and other listed gaps remain open.

Version 0.18, completed 29 October 2026. This checkpoint is suitable for further local testing with invented data. It is not production approval or full SHS parity. The original SHS code, live service and preserved owner-review session were unchanged.

## Owner steps that were checked

1. Sign in to the intended empty fictional business. Open **Website → Business**; enter a business name, contact wording, colours, logo and enquiry success message. Save and reopen. The rehearsal used Willow Test Works, with a synthetic logo and shelf illustration; its fixed URL remained `/site/oak-and-vale`.
2. Edit the homepage. Add a custom page, menu label and service with a description, image and alternative text. Save. Unpublished items stay private even at a known URL. A reserved `admin` page slug was rejected without losing the draft text.
3. Open the saved preview and inspect the intended page. It may show unpublished content but cannot submit an enquiry. Sign-out now clears an already-open private preview. A normal valid-session check leaves the loaded content alone.
4. Choose **Publish locally** deliberately after reviewing the saved draft. This is one explicit publishing action; there is no separate publish-confirmation dialog. The reviewed home, custom page, service, navigation, logo and service image become available on this local site.
5. Save later text without publishing. The visitor still sees the prior publication. A stale save from another owner window is rejected with its entered text retained. **Reload saved draft** offers Keep my edits or deliberate discard/reload.
6. Hide a page and service, then publish. Fresh public menus omit them and their routes return a branded **Page not found** with HTTP 404. The service image is no longer public. **History → Restore** copies an earlier publication to the draft only; inspect it before explicitly republishing.

The Website leave dialog blocked background controls and Keep editing retained unsaved work. Signing out in another same-origin owner window now clears the old editor, including private unsaved text. Ordinary valid-session refresh was checked separately and retained that text. The earlier nested customer-transfer modal remains a separate pending check.

## Visitor and saved record checks

The signed-out visitor opened **Shelf planning & fitting → Ask about this service**. The Contact form now prefills the canonical title from that exact published service. Unknown or hidden service queries do not supply a value. The visitor may change the wording; saved enquiries keep a text snapshot.

Required-name and whitespace-message errors retained entered values. A double-click submission saved one enquiry. **Try another enquiry** cleared contacts/message and retained the service. A deliberate second enquiry using the same invented contact details saved a distinct job and customer. Matching names or emails did not create portal access or merge records.

| Saved fact | Enquiry A | Enquiry B |
| --- | --- | --- |
| Job reference prefix | `813235ef` | `68b4bb23` |
| Customer reference prefix | `84eeec7e` | `d1e84fdf` |
| Service | Shelf planning & fitting | Shelf planning & fitting |
| Distinct message | Two shelves for a fictional 1200 mm alcove; mornings easiest | A separate enquiry for a different fictional room |
| Contact | Alex Fictional, alex@website-test.example | Same contact text, separate customer identity |

The owner reopened both exact jobs, including after reload, and checked full contacts/service/messages. Harbour Homeworks remained empty; separate API probes denied exact foreign-job and foreign-asset access. The visitor success view showed the saved owner wording and no-email notice. The existing API receipt is opaque and grants no private access; it is not displayed as a job link.

## Repairs and evidence

| Observed issue | Result after repair |
| --- | --- |
| Service selection lost on Contact | Exact published service prefilled and saved with both enquiries |
| Private preview remained after logout | Preview and title cleared without reload; late results cannot revive it |
| Missing/unpublished route displayed raw JSON | Branded page-not-found view with real HTTP 404 and safe metadata |
| Other owner window retained private editor | Same-origin sign-out cleared private state; valid refresh kept edits |

There are 77 external evidence files, including 18 actual browser screenshots. The [milestone checks](website-journey-milestone-checks.json) separate browser observations from HTTP/API, structural renders and recovery evidence. At 689 × 751 CSS pixels, keyboard focus was visible on Services, Return opened it, images loaded and page width matched the viewport. This is a bounded layout check, not phone or accessibility certification.

All **612 backend tests, 113 client tests, 81 render checks and the production build** passed. Existing TestClient/image-fixture warnings and the main JavaScript bundle size advisory remain. No dependency, schema or recovery-format change was made.

## Recovery and final state

The final saved V3 footer and metadata remained private; public content stayed at the deliberately restored/reviewed V1 publication. Four publication entries, two website assets and both distinct enquiries/customers survived a stopped backup and fresh restore on this Mac. All 78 tables per business were compared, allowing only documented identity revocation and recovery audit changes. Images matched byte for byte. Old sessions/passwords were rejected; new owner access and public projections were checked through test APIs. A second backup also verified. See [recovery evidence](website-journey-recovery-check.json).

The QA server on `localhost:8789` is stopped, its four extra tabs closed, and the fictional source/recovery datasets retained outside the code ZIP. Normal data is unchanged and unmigrated. The preserved owner review at `127.0.0.1:8788` still runs frozen v0.12.1 with unchanged data and sessions; it is not this new build.

## Still open

- Original enquiry preferred-date and up-to-five-photo fields; they are not silently treated as complete.
- Full gallery/job-photo permission and public-project journey, wider editor sections/order, rich formatting, themes and redirects.
- Real legal/consent wording, domains, delivery, production identity, deployment and a complete source/rights review.
- Restored-browser and second-machine installation/recovery, wider owner expiry/private-document clearing, cross-device/background timing, phone/touch/screen-reader/PWA checks and load testing.

The fixture contains no restricted job photos or testimonials; their restore/non-revival rules have separate full-suite evidence. All 45 capabilities remain tracked and all 14 original SHS findings remain OPEN. The next bounded recommended rehearsal is private job-photo permission through deliberate public-gallery publication.
