Skip to content
曾亮懿 ZengLiangYi Blog
Page 3 of 6

Blog

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

TanStack Query Data Flow: Keys, Invalidation, and Queries

Trace ChatCrystal hooks and API, verify parameterized query keys and prefix invalidation, and distinguish accepted requests from background refreshes.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #React #TypeScript

Testing Strategy: Counterexamples for SQL, Functions & APIs

Check ChatCrystal’s Node test entry points, practice dependency isolation, SQL rollback, and Fastify inject offline, and state what those tests do not cover.

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

TypeScript monorepo configuration: types and runtime boundaries

Check ChatCrystal’s shared types, server, Vite client, and Electron settings, then reproduce an alias failure that passes compilation but fails at runtime.

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

Vectra local search: fixed vectors, filters, and persistence

Run a deterministic Vectra 0.15.0 exercise in a temporary directory to check cosine scores, metadata filters, reopening, and canceled updates.

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

AI SDK structured notes: adapters, schemas, and business checks

Read ChatCrystal’s AI SDK 7 calls, distinguish provider adaptation from output shape and factual validity, and test description limits with offline Zod.

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

Electron tray and window state: hide, restore, and quit

Read ChatCrystal’s mode-aware tray, saved window bounds, and shutdown flow, including what persistence restores and which failures still need testing.

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

Fastify production files: one port, SPA fallback, and failures

Check ChatCrystal’s build outputs and static-root discovery, then use isolated inject exercises to distinguish pages, unknown APIs, and missing assets.

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

Electron Basics: Main Process, WebPages, and Bounded IPC

Follow ChatCrystal’s modes, BrowserWindow, preload, and Fastify startup to understand desktop permissions and lifecycle boundaries.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Electron #Desktop Apps

Evaluate embedding retrieval with fixed notes and labeled queries

Compare local and cloud embeddings with labeled queries and separate indexes, checking rebuild completion, retrieval quality, and resource costs.

曾亮懿 曾亮懿
3 min read
#ChatCrystal #Embedding #Evaluation

Learn Fastify from ChatCrystal: plugins, validation, and failures

Read the actual createServer and route boundaries, then use an isolated inject exercise to check success, invalid input, and missing routes.

曾亮懿 曾亮懿
3 min read
#ChatCrystal #Fastify #Node.js

Comparing LLM Summaries: Fixed Inputs and Verifiable Evidence

Evaluate local vs cloud LLM summarization on identical transcripts, field review, and failure logs, separating model quality from app pipelines.

曾亮懿 曾亮懿
3 min read
#ChatCrystal #LLM #Evaluation

sql.js Practice: In-Memory SQLite, Foreign Keys, and Saves

Read ChatCrystal’s loading, transaction, and export boundaries, then verify foreign keys, rollback, and reload with an isolated exercise.

曾亮懿 曾亮懿
3 min read
#ChatCrystal #SQLite #WebAssembly

From writing to code

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