2026-03-09 Session Notes

Chainlog (better_changelog) Major Updates

Infrastructure Changes

  • New domain: chainlog.tech (formerly changelog.someshovels.com)
  • New Vercel project: chainlog-v2 (old “chainlog” project deleted)
  • Git repo: Chaoticonomist/better_changelog (unchanged)
  • Vercel project settings: Root directory = apps/web, Git integration enabled

Features Implemented Today

1. Flexible Categories/Taxonomy System

  • New tables: taxonomy_axes, taxonomy_values, entry_taxonomy_values
  • Categories management UI at /dashboard/settings/categories
  • Dynamic category dropdowns in entry form (multi-select or single)
  • Public changelog filter dropdowns per category
  • Each category can be marked required or optional per tenant

2. Admin Panel (/admin)

  • Lists all orgs with: name, slug, created date, member count, entry count, last activity
  • Expandable to show members with email, role, last login
  • Change plan: Free/Pro/Enterprise with optional expiry date
  • Delete org with slug confirmation (GDPR)
  • Admin access limited to: adam@someshovels.com, roberts.john.adam@gmail.com
  • Config in: /tmp/better_changelog/apps/web/src/lib/admin-auth.ts

3. Email Domain Slug Generation

  • Business emails (e.g., adam@calwizz.com) → slug “calwizz”
  • Generic emails (gmail, yahoo, hotmail, etc.) → uses username
  • Covers 20+ generic domains in GENERIC_EMAIL_DOMAINS set
  • Logic in: /tmp/better_changelog/apps/web/src/lib/auth.ts

Bug Fixes

  • RSS feed routing (feed paths weren’t being rewritten due to static asset detection)
  • Middleware: Main domain ”/” shows landing page, tenant domains ”/” shows changelog
  • Entry form: Added shouldDirty: true to Select setValue calls for proper form tracking
  • Docs code blocks: Dark background for better contrast
  • Feed routes: Changed fallback tenant from “demo” to “adam”

Database Schema Additions

  • tenants.subscription_expires_at (TIMESTAMPTZ)
  • users.last_login_at (TIMESTAMPTZ)

Known Issues / Pending

  • Google OAuth: Needs redirect URIs updated in Google Cloud Console for chainlog.tech
  • CalWizz redirect chain: http://calwizz.com → https://calwizz.com → https://www.calwizz.com (should be single redirect, fix in Cloudflare)
  • True Baby Cost .html redirects: Working correctly, Google just needs to recrawl

Notion Task Created

  • “Rotate Chainlog API keys (Clerk, Resend) before client demo” - keys were briefly exposed in git history

Other Notes

  • Removed adam@calwizz.com from Chainlog database (user wanted fresh signup for CalWizz testing)
  • Major upstream updates pulled: AI drafts, integrations (GitHub/GitLab/Jira/Linear), widget system, signing/verification, analytics

Session Update (22:17 UTC)

Dashboard Error Fix

  • Problem: “Application error: server-side exception” on /dashboard when logging in with adam@calwizz.com
  • Root cause: Content Security Policy blocking Clerk’s web workers (blob: URLs)
  • Fix: Added worker-src 'self' blob: and blob: to script-src in next.config.ts

Database Cleanup

  • Deleted duplicate tenant adam-384906f6 (created milliseconds after adam-4102a31c)
  • adam@calwizz.com now has single tenant: adam-4102a31c
  • Remaining tenants: adam (main, 3 members, 2 entries), adam-4102a31c (CalWizz test, 1 member, 0 entries)

Middleware Update

  • Added /admin to RESERVED_PREFIXES in middleware.ts (was missing)