Skip to content
曾亮懿 ZengLiangYi Blog
All posts

Blog

Notes on frontend engineering and AI coding: problems, implementation choices and lessons learned.

Fixing 1px Carousel Seams: Subpixel Layout and Scale Fixes

Debug 1px mobile carousel seams caused by subpixel rounding. Compare negative margins, CSS translation, and scale transforms to eliminate rendering gaps.

曾亮懿 曾亮懿
5 min read
#CSS #Web Development #Swiper #Performance

Google Indexing in Astro: Incremental Cache-Driven Submissions

How to fix Google indexing deadlocks in static Astro sites using incremental cache-driven API submissions, Git SHA hashing, and sitemap lastmod timestamps.

曾亮懿 曾亮懿
4 min read
#Astro #SEO #Google #Automation

AI Conversation Formats: JSONL Events vs SQLite Snapshots

Compare 5 AI adapter formats: separate JSONL events from SQLite keys, and inspect indexed, orphan, and unknown-version chat transcripts in memory stores.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #SQLite

How Claude Code, Cursor, Copilot, and Trae Store Chats on Disk

Compare Claude Code, Cursor, Copilot, and Trae storage paths. Distinguish raw copies from exports, and verify migration retention with test manifests.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #SQLite

Five AI conversation parsers: retained fields and loss boundaries

Build an acceptance matrix from Claude Code, Codex, Cursor, Trae, and Copilot parsers, checking tool flags, thinking, order, and snapshot coverage.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #TypeScript #Node.js

AI SDK Provider Abstraction: Capabilities and Protocols

Test 7 ChatCrystal providers and AI SDK factories with offline mocks for Responses, Chat Completions, embeddings, and structured output rejection.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #TypeScript

Bulk import with 1000 conversations: cost and performance checks

Separate parsing, SQL writes, WASM export, and summary queues; use synthetic inputs to check retention and data equivalence.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #SQLite #Performance

CLI knowledge workflows: exits, JSON contracts, and final states

Check current CLI commands and JSON shapes; reject false success with synthetic process and per-ID state checks before scheduling and recovery.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #CLI #Automation

Review AI coding conversations: denominators, quality, and reuse

Audit source and length denominators, false accepts and rejects, and empty samples; separate current filtering, summaries, and measured reuse.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Knowledge management #Evaluation

Fastify and Electron: Desktop Startup & Shutdown Boundaries

Trace ChatCrystal local, cloud, and onboarding modes, verify CommonJS loading and port contention, and inspect window and shutdown boundaries.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Node.js #Electron

Graph-Assisted Refactoring: Turning Relational Clues into Checks

Turn note and code graph relations into verifiable fault checks: trace candidate edges, check dependencies, and avoid treating links as proof.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Knowledge graph #Testing

MCP Boundaries: Discovery, Identity, and Call Permissions

Examine Model Context Protocol boundaries: tool discovery, server instance tracking, and execution permissions in reviewable developer environments.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #MCP #Node.js

From writing to code

Explore ChatCrystal, developer tools and daily learning notes on my GitHub. Questions about the implementation are welcome.