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: trueto 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:andblob:toscript-srcinnext.config.ts
Database Cleanup
- Deleted duplicate tenant
adam-384906f6(created milliseconds afteradam-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
/adminto RESERVED_PREFIXES in middleware.ts (was missing)