Completes the error tracking rollout: aitmpl-dashboard and aitmpl-cli Sentry
projects now exist alongside aitmpl-workers, and all three are verified
end-to-end (manual test events returned HTTP 200 and appeared in each
project's Issues dashboard).
- Dashboard: SENTRY_DSN set as a Cloudflare Pages secret on aitmpl-dashboard
(production). No code change needed — error-tracking.ts already read it.
- CLI: the aitmpl-cli DSN is public by design (send-only), so it ships as
DEFAULT_SENTRY_DSN in error-reporting.js instead of requiring every user
to configure their own Sentry project. Reporting itself stays opt-in
(CCT_ERROR_REPORTING=true), unaffected by this change.
- .env.example and CLAUDE.md updated to match reality; removed a stale
Vercel Deployment block left over from the Cloudflare Pages migration.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Adds free-tier Sentry error reporting to close the biggest observability
gap: automated cron/worker failures were previously invisible (aitmpl-crons
had no error handling at all). Uses a dependency-free fetch()-based Sentry
envelope client (cloudflare-workers/*/sentry.js, dashboard error-tracking.ts,
cli-tool error-reporting.js) instead of the official SDKs, to keep the
zero-dependency worker style and avoid Cloudflare Pages SSR friction.
- Cloudflare Workers: report failures + Cron Monitor check-ins in crons,
pulse, and docs-monitor (complementing, not replacing, existing Telegram
alerts). Also drops the pulse Vercel collector (VERCEL_API/collectVercel),
since the dashboard no longer deploys to Vercel.
- Dashboard: captureApiError() wired into claude-code-check, health-check,
and the three track-* endpoints.
- CLI: opt-in only crash reporting (CCT_ERROR_REPORTING=true), always
deferring to the existing CCT_NO_TRACKING/CCT_NO_ANALYTICS/CI opt-outs.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Move VERCEL_ORG_ID, VERCEL_SITE_PROJECT_ID, and
VERCEL_DASHBOARD_PROJECT_ID to .env. Deploy script and deployer
agent now read from environment variables instead of hardcoding.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Move Google API keys to .env file (not tracked by git)
- Update generate_blog_images.py to use dotenv
- Update generate_blog_images_v2.py to use dotenv
- Add GOOGLE_API_KEY to .env.example
- Add critical security section to CLAUDE.md about never hardcoding secrets
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Database schema for tracking Claude Code versions in Neon
- Automated parser for CHANGELOG.md with change classification
- Discord webhook integration with formatted embeds
- Vercel Cron job running every 4 hours
- Supports detection of features, fixes, improvements, and breaking changes
Endpoints:
- /api/claude-code-check - Main endpoint for version checking and notification
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>