* migrate: Vercel → Cloudflare Pages + Workers para reducir costos ($110 → ~$0-5/mes)
- Cambia adaptador Astro de @astrojs/vercel a @astrojs/cloudflare (mode: 'directory')
- Agrega dashboard/wrangler.toml con nodejs_compat para compatibilidad total
- Crea cloudflare-workers/crons/ Worker que reemplaza los cron jobs de Vercel
(claude-code-check cada 30min, health-check cada 1h en vez de cada 15min)
- Actualiza CI/CD: Vercel CLI → wrangler pages deploy (requiere CLOUDFLARE_API_TOKEN y CLOUDFLARE_ACCOUNT_ID en GitHub Secrets)
- Elimina crons duplicados del proyecto legacy aitmpl (root vercel.json)
- Quick win: agrega Cache-Control headers a components.json (86400s), plugins.json,
trending-data.json y claude-jobs.json para cortar el costo de bandwidth de $53
Próximos pasos manuales (ver PR description):
1. Crear proyecto en Cloudflare Pages
2. Agregar secrets de Cloudflare en GitHub
3. Migrar env vars de Vercel a Cloudflare Dashboard
4. Deployar cloudflare-workers/crons con wrangler
5. Apuntar dominios a Cloudflare Pages
* fix: nodejs_compat_v2 + react-dom/server.node alias para Cloudflare Workers
- Cambia compatibility_flags de nodejs_compat a nodejs_compat_v2
- Agrega alias vite react-dom/server → react-dom/server.node para evitar
MessageChannel error en module init time en Cloudflare Workers runtime
- Agrega ssr.noExternal para bundlear react-dom y aplicar el alias
* fix: revert compatibility_flags a nodejs_compat (estándar)
nodejs_compat_v2 no es el flag primario. El fix real del MessageChannel
error fue el alias vite react-dom/server → react-dom/server.node,
no el cambio de flag.
* fix: inject Cloudflare Pages runtime env into process.env via middleware
Add Astro middleware that copies context.locals.runtime.env (Cloudflare
Pages secrets) into process.env before each request, so API routes can
use process.env.X as a unified pattern without changing the call sites.
Also add || process.env.X fallbacks to all API routes/libs that were
using import.meta.env exclusively (build-time only in Vite).
Verified on staging: track-download-supabase, health-check,
claude-code-check, collections, github/token all return correct responses.
Reflects merged improvements to cli-tool/components/agents/ai-specialists/task-decomposition-expert.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/obsidian-ops-team/moc-agent.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/ai-specialists/search-specialist.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/ai-specialists/model-evaluator.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/ai-specialists/llms-maintainer.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/api-graphql/api-architect.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/programming-languages/javascript-pro.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/deep-research-team/research-synthesizer.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/ai-specialists/hackathon-ai-strategist.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Persistent local HTTP daemon (port 7878, 1h watchdog) that reads Claude Code
JSONL transcripts and renders a git-graph timeline in the browser — one column
per agent (main + subagents), tool nodes color-coded by type, context-window
sidebar with cache/input/output breakdown. Pure stdlib Python, zero pip deps.
Strip absolute home directory paths from tool_args_summary before
rendering in ToolTimeline. Affects historical data already stored in DB.
Also adds scripts/run-review-cycle.sh for manual cycle testing with
--test-hook and --check modes.
Reflects merged improvements to cli-tool/components/agents/ai-specialists/ai-ethics-advisor.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
Reflects merged improvements to cli-tool/components/agents/data-ai/data-scientist.md.
Automated by pr-verification cycle | Co-Authored-By: Claude Code <noreply@anthropic.com>
- Replace description with "The repeatable way to plan and ship quality software with AI."
- Change tagline from "AI Product Planner" to "Plan. Build. Verify. Repeat." in brand color (#c5e063)
- Increase description font size to 13px with font-light weight for better readability
Co-authored-by: Claude <claude@anthropic.com>
The sidebar counts depended on ComponentGrid or page-specific scripts
to emit a custom event. Pages without those (component detail, trending,
jobs) never received counts. Now the sidebar fetches /components.json
directly on load.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Convert SkillSlideView from Tailwind shorthands to CSS variable inline
syntax to match dark mode overhaul from PR #451
- Add gpt-tokenizer for token counting per slide and total
- Fixed slide height (32rem) with "Show full document" toggle
- Revert client:only back to client:load (styling was the real issue)
- Update deployer agent to reflect auto-deploy via GitHub Actions
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>