Hello Clarence

Changelog

Everything we ship, newest first — generated straight from our commit log. We build in the open: every playbook, fix and feature lands here.

September (2026)

Features

  • changelog auto-generated from conventional commits (tkt-023) (4d82f65)
  • crm: tkt-026 crm-summary.js deterministic pipeline/outreach snapshot, wired into analytics-report (64ccce1)
  • TKT-066 structural PDF validation — prompt extraction manifest + 19/19 cross-check (ab91ad4)
  • PII audit viewer tab in admin (tkt-037) (d375dd8)
  • publish Jack-approved testimonials on home page, retire fabricated quote (tkt-075) (ec6c749)
  • marketing: tradie-ecosystem partner outreach pack v2 (7 verified targets) (e624e4e)
  • fix analytics-report.sh (db-direct, tkt-070) and add /tos page (tkt-074) (1d677cf)
  • load ADR board papers into review items as adr_board_paper (8314c94)
  • tabbed admin backend with lazy-loaded tabs + funnel charts (TKT-076, TKT-079) (55d8d2d)
  • admin allowlist management API for settings tab (TKT-076) (6bc5c15)
  • admin google login restricted to pre-authorised allowlist (TKT-077) (05e650e)
  • reviews & approvals hub — one pane of glass for outbound sign-off (ADR-0007) (37353c4)
  • add missed-call-textback + review-responder playbooks (8cb2538)
  • pii audit log for admin contact reads and exports (TKT-037) (6bc6802)
  • per-contact email feed in CRM timeline (sent + received) (84882e9)
  • gmail api reply poller via oauth (replaces imap app-password path) (b22d77f)
  • add imapflow dependency for reply poller (38bd768)
  • Spam-Act-compliant direct-email outreach infrastructure (c277dc2)
  • mark 3 catalog items premium and fix tier parsing in build (TKT-056) (1f3b643)
  • nightly scan wrapper with job-failure alert (TKT-049) (532bd4c)
  • route security alerts through openclaw gateway hook (TKT-048) (17ab1cc)
  • discord alert script for security scans (TKT-048) (81caba5)
  • login-aware chat booking button (TKT-018) (95f957f)
  • premium tier marking with rebuild-safe preservation (TKT-056) (0d7907b)
  • analytics reporting script + CEO shift wiring (TKT-070) (627658e)
  • analytics: first-party pageview + funnel dashboard (TKT-065) (1488dc2)
  • seo: sitemap.xml + robots.txt + JSON-LD schema + about/privacy stubs (TKT-068) (97f2c14)
  • rebrand Clem → Hello Clarence (618d5d5)
  • rebrand Offsider → Clem (9e4417a)
  • admin: tkt-036 password-gated /admin with catalog CRUD + CSV exports (e5ba43f)
  • catalog: tkt-016 popular badge for featured cards (349291c)
  • catalog: tkt-022 + tkt-014 surface PDF page count on cards (0696b03)
  • catalog: tkt-012 library rename + tkt-017 chat copy + tkt-020 4-col footer (4dec7dc)
  • catalog: add 3 final tkt-021 playbooks (artist, tradie) (b4046c2)
  • catalog: add 3 solo-operator playbooks for tkt-021 (cde8185)
  • home: hero H1 + nav reword + 4th archetype (TKT-010, 011, 015) (f2b7e39)
  • catalog: add kind-filter chip bar (TKT-013) (53cff24)
  • apply: expand practitioner form with 5 fields (TKT-019) (11cb021)
  • docs: codify brand voice guidelines (TKT-040) (38aba0a)

Fixes

  • biome lint for validate-pdf-prompts (cdd3676)
  • last 3 catalog card covers (artist-commission, solo-bookkeeping, solo-inbox) (cda9531)
  • generate missing catalog card covers (8 items + default fallback) (63185f1)
  • strip fabricated client claim from partner pack (no invented claims rule) (0e1e79a)
  • version-stamp admin shell assets at boot (stale-JS-proof deploys) (2b3a7a4)
  • el() array-flattening regression broke kanban; add reviews type/status filters (163aba7)
  • touch-drag kanban via Sortable, allowlist CF insights beacon in CSP (d09b7c5)
  • google-only admin auth, remove password login, harden hidden-view css (e3856aa)
  • allow paid/subscription contacts premium access without trial clock (6bcc0a8)
  • align target CSV headers with outreach runner, dedupe footer signature (931424d)
  • close two partial validation gaps in catalog prompts (tkt-066) (ca822c8)
  • only log 'alert posted' when an alert actually posts (70721f8)
  • analytics funnel query bug + synthetic traffic generator (b709109)
  • ux: ship 6 important UX fixes from heuristics audit (TKT-053) (98b9e96)
  • remove .env path leak from admin login, add manual contact creation (06f99b2)
  • 6 critical UX issues from heuristics audit (TKT-050) (557cb7f)
  • add HTTP security headers to server.js (TKT-051) (b537f55)
  • update PUBLIC_URL and meta tags to hello-clarence.com (2d5abbc)

Docs

  • tkt-030 hosting target adr-0008, progress log 2026-09-09 (cbbe2ec)
  • progress log 2026-09-09 05:2x shift, tkt-026 crm snapshot shipped (49040ae)
  • progress log 2026-09-09 01:2x shift, TKT-066 structural validation shipped (d7f7064)
  • resolve TKT-039 — Cloudflare HTML caching verified DYNAMIC, no page rule needed (149d43e)
  • progress log 2026-09-08 13:2x shift, tkt-037 closed (120e381)
  • TKT-037 scoping review — 105 prepared statements audited, 0 findings (4d758d6)
  • progress log 2026-09-08 09:2x shift, tkt-037 viewer done (078e4b6)
  • progress log 2026-09-08 shift (3ca1785)
  • progress log 2026-09-07 shift, mark TKT-073/074 done (999919f)
  • partner outreach retargets tradie ecosystem (bookkeepers rejected) (a03ac53)
  • ADR-0006 posting mechanics, supersede ADR-0002, loader re-review loop, batch-2 review item (81e6479)
  • shift log 2026-09-07 17:2x — paid-access paywall fix, analytics report (be8918d)
  • add outreach target list batch 2 (north-east suburbs, 45 rows) (1ede4ad)
  • adr-0006 marketing draft packs (fb, reddit, partner emails, testimonials) (f16984d)
  • tkt-037 pii audit progress + shift log 2026-09-07 (00fcce6)
  • progress log 2026-09-07 — paywall audit, analytics report (19385d2)
  • coburg/pascoe vale outreach target list (2e553c4)
  • mark TKT-071 done — outreach infrastructure built (dry, pre-first-send) (6dac021)
  • outreach runbook, DNS records, provider ADR-0007 (Resend) (9b819bd)
  • mark TKT-072 done (e4b0cce)
  • add reference businesses research for outreach credibility (ee8cf5b)
  • add Corella Digital to competitive landscape with analysis (3caea1f)
  • CEO shift log 2026-09-07 05:2x — tkt-066 partials fixed (2326ea0)
  • CEO shift log 2026-09-07 01:2x — paywall tier fix, premium marks (91bacbb)
  • ADR-0006 marketing strategy (organic-first, content-led) (7f91450)
  • CEO shift log 2026-09-06 21:2x — TKT-069 launch kit, paywall gate verified (b1340c5)
  • tkt-069 marketing launch kit with ready-to-post channel copy (1f249af)
  • CEO shift log 2026-09-06 17:2x — TKT-048 shipped, TKT-049 blocked on cron install (ead42cb)
  • CEO shift log 2026-09-06 13:21 — TKT-018 shipped (fcd4893)
  • mark TKT-018 done (317027f)
  • TKT-056 shift log + todo progress; commit TKT-066 validation evidence (54c2acf)
  • TKT-066 PDF validation report + analytics fix + synthetic traffic (2ec308e)
  • add growth/analytics/SEO/content validation todos (c49c881)
  • add CRM execution todos (TKT-057 through TKT-064) (e5b705a)
  • ADR-0005 v2 — trello kanban, gated content, api, export (2628eca)
  • update ADR-0004 to v2.2 — content paywall (free vs premium) (038fe8a)
  • update ADR-0004 to v2.1 (approved 3 tiers), add outstanding todos (6a9c4ff)
  • add market research + ADR-0004 archetype prioritisation and pricing v1 (43b4f74)
  • competitive landscape research for AU AI consulting market (60a0cad)
  • add security review todos TKT-047/048/049 (8cda659)
  • market: unit economics v1 — AU costs, CAC/LTV, break-even, sensitivity (3b3f3ad)
  • update rebrand todos with subagent status (d7204e6)
  • todos: log 17:21 ceo shift progress (596da32)
  • todos: log 13:21 ceo shift progress (4d5eb83)
  • todos: log 09:21 ceo shift progress (57c5b1e)
  • todos: log 05:21 ceo shift progress (dc17353)

Tests

  • e2e paywall gate coverage on throwaway DB (tkt-056) (b91105e)

Chores

  • todos: tkt-026 deterministic crm-summary half shipped (9ddaca7)
  • regenerate TKT-066 validation report on dev (4b3784b)
  • mark TKT-076 and TKT-079 done in todo board (fcf5b7e)
  • align catalog md frontmatter with carried-over premium tiers (8441d03)
  • progress: CEO shift log 2026-09-06 05:26 — TKT-065 analytics shipped (7b5c753)
  • progress: CEO shift log 2026-09-06 01:29 — TKT-068 shipped (SEO foundation) (49162a7)
  • progress: TKT-068 done (seo) (b65c9d2)
  • progress: CEO shift log 2026-09-05 21:21 — TKT-053 shipped (e80f75c)
  • todos: clear completed session pointer (8e3ba7b)
  • crm: mark TKT-055/057-062 done — pipeline shipped (dd4f403)
  • rename /opt/offsider → /opt/hello-clarence (d2e08b8)
  • todos: mark tkt-036 done (9c78fac)
  • todos: mark tkt-016 done (90af0a2)
  • todos: mark tkt-012/017/020 done (c3df317)
  • todos: mark tkt-021 done and log 01:21 ceo shift progress (9d0322c)
  • todos: mark tkt-021 done and log 21:21 ceo shift progress (ab54934)
  • todos: mark TKT-010/011/015 done + 17:21 CEO shift progress log (1f6a109)
  • todos: mark TKT-013 done + progress log 13:21 CEO shift (ed920ee)
  • todos: mark TKT-019 done after apply form merge to dev (13844df)
  • progress: log 2026-09-04 09:21 CEO shift (TKT-019 apply form fields) (ddc1782)
  • progress: log 2026-09-04 05:21 CEO shift (TKT-040 brand voice) (ac42e89)
  • todos: mark TKT-040 done after brand voice ADR merge (00966cd)
  • todos: mark TKT-033 done + add progress log (a3e2845)
  • seo: add meta description to thanks.html (5a11ed4)

August (2026)

Features

  • catalog: kill legacy seed-catalog.js, port all playbooks to markdown (a2fab71)
  • pdfbuild: T1 CSS + T2 block directives + T3 build QoL (efb27e3)
  • pdfbuild: local markdown-to-branded-PDF pipeline (35189c4)
  • scripts: add stats CLI for quick CRM activity reports (9e8a790)
  • home: replace generic How-it-works card images + add /chat and /apply banners (b94c23e)
  • cache: inject content-hash into <link>/<script> URLs (3ae5bd9)
  • brand: rust mark logo as favicon + nav, swap inline svg favicons (2db09b0)
  • images: wire catalog cards + item heroes + og:image + user avatar (781c5a9)
  • env: load .env via dotenv, surface oauth status, fix redirect URI (f9189ea)
  • html: add meta description to item, chat, apply pages (7fb4585)
  • ship MVP site — homepage, catalog, item, chat, apply, thanks (bbbcc92)

Fixes

  • pdfbuild: render co-located images + stronger formatting + Offsider-voice content (f9aa882)
  • tracking: single-fetch Calendly click; wire debounced search tracking (29e2da8)
  • css: strip leftover asset-versioning hash from 5 of 6 HTML files (dd0b72e)
  • css: drop broken asset-versioning hash on home.html (54f897b)
  • cache: no-cache on /static/* (css/js/img) so old assets don't shadow new HTML (2365677)
  • cache: no-cache headers on HTML responses so CDN/browser revalidate (ead3777)
  • images: use real <img> tags with onerror fallback (background-image unreliable) (56c6f9d)
  • css: add min-height + flex-shrink to card-img so bg always shows (3e0646d)
  • images: add missing catalog images for roster, stocktake, jobtracker, grant (f8c4cd0)
  • images: add card-img fallback to catalog/item JS + wire images on home (dffc758)
  • todos: rewrite parse_all in python, fix grep pattern doubling (2f60b87)
  • todos: ensure trailing newline before append in cmd_add (8a2b05d)

Docs

  • pdfbuild: document the one-shot HTTP server image loader (85b7c80)
  • image-prompts: 13 Gemini prompts + style anchors + readme for placeholders (ccd6d9a)
  • ADR-0002 brand placeholder Offsider + oauth ops runbook (c4ecfe2)

Chores

  • todos: mark TKT-038 done; document asset-hash incident under TKT-039 (b82312e)
  • todos: TKT-036 admin backend + TKT-037 row-level security (9763031)
  • todos: mark TKT-034 (brand=Offsider) and TKT-035 (oauth redirect uri) done (d4c8496)
  • gitignore .env-pending + tell biome to skip it (1a50a36)
  • clean up lint debt (forEach, escape shadowing, template literals) (4950830)
  • add hooks, verify script, todo CLI, ADR-0001, todo seed (7b8ec9c)
  • bootstrap biome lint + commit hooks + todo CLI (972b607)

Book a 15-min chat →