# duyet.net Knowledge Base URL: https://kb.duyet.net Sitemap: https://kb.duyet.net/sitemap.xml Raw Markdown: https://kb.duyet.net/k/.md 32 articles across 8 categories. ## Articles ### Dead Code Cleanup Workflow URL: https://kb.duyet.net/k/dead-code-cleanup Category: workflows Updated: 2026-05-26 Summary: Before removing a symbol, verify zero non-test references with rg; use git log --since to scope reviews to recent changes. ### Test Coverage by App URL: https://kb.duyet.net/k/test-coverage Category: workflows Updated: 2026-05-26 Summary: Test counts per package; agents leads at 142, libs at 117; total ~14 packages run in ~100ms cached via bun run test. ### Commit, Push, and Deploy Convention URL: https://kb.duyet.net/k/commit-push-deploy Category: workflows Updated: 2026-05-26 Summary: After every task: semantic commit, push to master, then background-deploy the changed app to Cloudflare Pages. ### Welcome to the Knowledge Base URL: https://kb.duyet.net/k/welcome Category: meta Updated: 2026-05-26 Summary: An introduction to the duyet.net knowledge base — what it covers, how it is organized, and how to navigate it. ### KB Content Conventions URL: https://kb.duyet.net/k/kb-content-conventions Category: meta Updated: 2026-05-26 Summary: Frontmatter schema, category slugs, tag rules, and article length guidelines for apps/kb/content articles. ### About This Knowledge Base URL: https://kb.duyet.net/k/about-this-kb Category: meta Updated: 2026-05-26 Summary: apps/kb stores durable monorepo knowledge as markdown articles with frontmatter; generated from agent memory, maintained by duyetbot. ### Autonomous Workflow Patterns URL: https://kb.duyet.net/k/autonomous-workflow Category: agents Updated: 2026-05-26 Summary: Patterns for running duyetbot autonomously — /loop for recurring tasks, background deploys, memory checkpoints before context compaction. ### Agent Memory System URL: https://kb.duyet.net/k/agent-memory-system Category: agents Updated: 2026-05-26 Summary: Agent memory lives in ~/.claude/projects/.../memory/ as point-in-time .md snapshots; the KB is the synthesized durable form. ### Data Sync Overview URL: https://kb.duyet.net/k/data-sync-overview Category: data-pipeline Updated: 2026-05-26 Summary: data-sync ingests external data; CCUsage feeds insights, LLM models sync via bun run sync, blog posts are local markdown files. ### Cloudflare Rocket Loader URL: https://kb.duyet.net/k/cloudflare-rocket-loader Category: infrastructure Updated: 2026-05-26 Summary: Rocket Loader rewrites type=module scripts, breaking Vite SPA initialization — the only fix is SSG or disabling it in the CF dashboard. ### Deploy Workflow URL: https://kb.duyet.net/k/deploy-workflow Category: infrastructure Updated: 2026-05-26 Summary: Apps deploy to Cloudflare Pages via cf-deploy-prod.sh; blog CI builds WASM first; run deploys in background to avoid blocking. ### Other Apps Overview URL: https://kb.duyet.net/k/other-apps Category: apps Updated: 2026-05-26 Summary: home, cv, photos, homelab, and ai-percentage — all TanStack Start SSG on Cloudflare Pages; home uses minimal token layer and warm palette. ### Blog App URL: https://kb.duyet.net/k/blog-app Category: apps Updated: 2026-05-26 Summary: apps/blog — TanStack Start SSG, 393 static pages, WASM markdown rendering, isomorphic data loading via readPublicJson. ### LLM Timeline App URL: https://kb.duyet.net/k/llm-timeline-app Category: apps Updated: 2026-05-26 Summary: apps/llm-timeline — 3700+ SSG pages, shadcn UI, semantic tokens, warm cream palette, Epoch AI + curated Google Sheets data. ### Insights App URL: https://kb.duyet.net/k/insights-app Category: apps Updated: 2026-05-26 Summary: apps/insights — TanStack Start SSG, 22 pages, AI usage analytics, CCUsage data; design refresh deferred from Cycle 10. ### Agents App URL: https://kb.duyet.net/k/agents-app Category: apps Updated: 2026-05-26 Summary: apps/agents — Vite SPA blocked from SSG by D1 Pages Functions; refactor underway covering sidebar, artifacts, and streaming. ### duyetbot Scope and Boundaries URL: https://kb.duyet.net/k/duyetbot-scope Category: agents Updated: 2026-05-25 Summary: duyetbot controls codebase, style, and deployment — not blog post content or LLM Timeline curated data; those belong to Duyet Le. ### Decision: Flat Design Adoption URL: https://kb.duyet.net/k/flat-design-adoption Category: decisions Updated: 2026-05-25 Summary: Hairline borders replace shadows across all surfaces; no chunky rounded boxes; xAI interface language is the reference. ### Flat Design Rules URL: https://kb.duyet.net/k/flat-design-rules Category: design-system Updated: 2026-05-25 Summary: Use hairline borders as the only elevation cue — no drop shadows, no chunky rounded boxes, no glow effects. ### Minimal Token Layer URL: https://kb.duyet.net/k/minimal-token-layer Category: design-system Updated: 2026-05-25 Summary: Third additive CSS layer in packages/components/styles.css adds --minimal-* tokens and utility classes used across four surfaces. ### Icon Standardization (lucide-react) URL: https://kb.duyet.net/k/icon-standardization Category: design-system Updated: 2026-05-25 Summary: Use lucide-react for all icons; migrate @phosphor-icons/react imports when touching files that use them. ### Blog WASM Prerender CI Dependency URL: https://kb.duyet.net/k/blog-wasm-prerender-ci Category: infrastructure Updated: 2026-05-15 Summary: WASM must be built before the blog step in CI — missing binary causes silent prerender failures; CF Pages serves homepage at every post URL. ### Decision: WASM Strategy URL: https://kb.duyet.net/k/wasm-strategy Category: decisions Updated: 2026-05-01 Summary: Only operations >1ms benefit from WASM; markdown-to-html (79x) justifies it; slower modules kept for future batch APIs. ### Rust/WASM Migration URL: https://kb.duyet.net/k/rust-wasm-migration Category: infrastructure Updated: 2026-05-01 Summary: 7 Rust crates compiled to WASM; markdown 79x faster, others parity or slower due to JS↔WASM marshaling cost. ### Blog Design & Dark Mode URL: https://kb.duyet.net/k/blog-design-dark-mode Category: design-system Updated: 2026-03-31 Summary: Blog uses white #ffffff background; dark mode uses 20% opacity tints for cards and inverted shade pairs for badges. ### LLM Timeline Data Sources URL: https://kb.duyet.net/k/llm-timeline-data Category: data-pipeline Updated: 2026-03-25 Summary: LLM Timeline sources 785 curated models from Google Sheets and 3156 from Epoch AI; total 3937 unique models covering 1950–2026. ### shadcn UI Migration URL: https://kb.duyet.net/k/shadcn-migration Category: design-system Updated: 2026-03-25 Summary: shadcn primitives (badge, button, input, card) added to llm-timeline in PR #1003; semantic CSS tokens replace all hardcoded color classes. ### Decision: TanStack Start Adoption URL: https://kb.duyet.net/k/tanstack-start-adoption Category: decisions Updated: 2026-03-24 Summary: Migrated from Vite SPA to TanStack Start SSG to survive Cloudflare Rocket Loader; agents deferred due to Pages Functions complexity. ### TanStack Start SSG Migration URL: https://kb.duyet.net/k/tanstack-start-ssg-migration Category: infrastructure Updated: 2026-03-24 Summary: All apps migrated from Vite SPA to TanStack Start static pre-rendering in March 2026 to survive Cloudflare Rocket Loader. ### Decision: Jekyll Slug Migration URL: https://kb.duyet.net/k/jekyll-slug-migration Category: decisions Updated: 2026-03-23 Summary: .html suffix stripped from all 297 blog post slugs at generation time during the March 2026 blog migration. ### Decision: Blog White Background URL: https://kb.duyet.net/k/blog-white-background Category: decisions Updated: 2026-03-23 Summary: Blog background changed from warm cream #fbf7f0 to white #ffffff on 2026-03-23 to give it a distinct editorial identity from other apps. ### Improvement Rotation Cycles URL: https://kb.duyet.net/k/improvement-cycles Category: workflows Updated: 2026-03-16 Summary: Nine improvement cycles completed as of March 2026 — ~155 total fixes across security, dead code, design, and test coverage.