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)