# Development log — Queue North Website ``` Status: Current Owner: _null Last reviewed: 2026-08-18 Governs: the dated record of what happened Review trigger: Nothing. This file is appended to, never revised. ``` ## How to use this Newest first. **One entry per work session**, written before you stop — that is step 6 of `docs/WORK_CYCLE.md`, and the two lines it insists on are `Next action` and `Blockers`. Those two are not decoration. The next session starts by reading the top of this file, and a session that ended without saying what came next hands the one after it a re-derivation instead of a starting point — which is where drift enters. Neither line competes with anything: the live next action is the field on the project at privacyllc.dev and the live blockers are issues in the tracker, while these say what both were **at this date**. A record of then never disagrees with a record of now. **Append-only by convention.** Correcting an old entry rewrites the record of what was known at the time, which is the one thing this file is for. If an entry turns out to be wrong, add a later entry saying so; do not edit the first. Note the Review trigger above says "nothing", deliberately. A dated log cannot rot the way a description of current state can — the entries were true when written and stay true. It is exempt from review for the same reason a receipt is. ## Where the entries below came from Everything from `v0.7.1` down predates this repository adopting the template, and arrived from two root-level files that were merged here on 2026-08-18 — the gitignored `HISTORY.md` (a version-by-version changelog) and the gitignored `DEVELOPMENT_LOG.md` (an agent-activity log). Both are reproduced **verbatim**. They are kept as two blocks rather than interleaved by date, deliberately. The changelog carries three duplicated version headings — two `v0.5.2`, two `v0.5.3` and two `v0.5.4`, written by different agents on the same day — so merging the two streams into one date order would have required choosing an order the record does not actually support. Two labelled blocks say what is known; one merged sequence would have implied more. ## Entries ### 2026-08-18 — Adopted the project template Placeholder — replaced at the end of this session with the real entry, which carries Next action and Blockers. --- ## From `HISTORY.md` — the version changelog, verbatim > Migrated 2026-08-18. Newest first, as written. Not edited. ## v0.7.1 — Low-Priority Fixes (6 issues, batches 10.0–10.2) — 2026-05-18 ### Batch 10.0: Backend Cleanup (Neo) - **#128:** Removed React Query dependency (~45KB bundle savings) — replaced with simple async fetch - **#127:** Added HTTP→HTTPS redirect middleware for production (x-forwarded-proto) - **#129:** Added CSP connectSrc comment documenting Zoho server-to-server calls ### Batch 10.1: Image Optimization & UX (Scarlett) - **#97:** Converted 5 large PNGs to WebP (95-96% size reduction each, total ~11MB → ~511KB) - **#130:** Added loading spinner animation to Contact and Support form submit buttons ### Batch 10.2: Accessibility (Scarlett + Ripley) - **#101:** Added aria-labels to interactive elements across Header, Footer, MobileNav, Home, Contact, Support - Fixed JSX template literal syntax bug where aria-label and className both used `${}` on same element - Fixed Footer.jsx template literal aria-labels that would render as literal text - Fixed Home.jsx duplicated aria-label text fragment ## v0.7.0 — Audit Bug Fixes (44 issues, batches 9.0–9.9) — 2026-05-18 ### Batch 9.0: Backend Security (Neo) - **#120:** Added UNIQUE constraint on leads.email + migration script - **#121:** Fixed Docker healthcheck — process.exit(1) on DB failure instead of always returning 200 - **#123:** Removed world-writable chmodSync on SQLite DB file ### Batch 9.1: UI Fixes (Scarlett) - **#104:** Header CTA visibility — changed from invisible navy-on-navy to cyan-on-navy - **#89:** Added ScrollToTop component for route navigation - **#88:** Created 404 NotFound page with catch-all route ### Batch 9.2: UI Fixes (Scarlett) - **#91:** 8x8 white logo visibility on Trust Bar — added `brightness-0 invert` CSS filter - **#94:** Industries page now uses dynamic icons instead of hardcoded building SVG - **#125:** Added Building2 fallback for missing industry icons - **#92:** Industry cards use homeDesc with fallback text - **#93:** Removed redundant shortDesc from Home page service cards ### Batch 9.3: Navigation Fixes (Scarlett) - **#109:** Desktop nav now has hover dropdown menus for Services and Industries - **#102:** Replaced all `