---
title: Blog — Page 4
description: "Page 4 of 6: articles on frontend engineering, AI coding and open-source practice."
image: "https://zengliangyi.com/og/default.png"
---

Page 4 of 6

# Blog

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

[Newest posts](/en/blog)

- [#ChatCrystal](/en/blog/tag/chatcrystal)

- [#Node.js](/en/blog/tag/node-js)

- [#TypeScript](/en/blog/tag/typescript)

- [#SQLite](/en/blog/tag/sqlite)

- [#AI](/en/blog/tag/ai)

- [#Data parsing](/en/blog/tag/data-parsing)

- [#Knowledge management](/en/blog/tag/knowledge-management)

- [#MCP](/en/blog/tag/mcp)

- [#Claude Code](/en/blog/tag/claude-code)

- [#Electron](/en/blog/tag/electron)

[##  Tailwind CSS v4 and Vite: Compiling Utilities and Variables

Check ChatCrystal’s two-package installation, Vite plugin, and CSS variable themes while separating build-time utilities from runtime values.          曾亮懿       October 4, 2026      3 min read

#ChatCrystal

#Tailwind CSS

#Vite](/en/blog/tailwind-v4-vite-setup)    [##  Getting started with ChatCrystal: install, import, and search

Verify installation, the local service, both model configurations, import, summarization, and search with the actual ChatCrystal 0.6.1 CLI.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Node.js

#Knowledge management](/en/blog/chatcrystal-getting-started)    [##  Set up ChatCrystal MCP: make Claude Code calls reviewable

Connect ChatCrystal to Claude Code with a project-scoped stdio server, then verify its seven tools, HTTP backend, approvals, and request path.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#MCP

#Claude Code](/en/blog/chatcrystal-mcp-setup)    [##  Importing Claude Code history: paths, parsing, and verification

Check history paths, JSONL filtering, incremental import, and watcher limitations against the current ChatCrystal adapter.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Claude Code

#Data parsing](/en/blog/claude-code-conversation-import)    [##  Filtering Claude Code JSONL: Events, Blocks, and Omissions

Follow ChatCrystal relevance checks, content extraction, and tag cleanup to distinguish top-level filtering from nested thinking and tool flags.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Claude Code

#JSONL

#Data parsing](/en/blog/claude-code-jsonl-noise-filter)    [##  Claude Code memory workflow: recall, verify, then write back

Use recall_for_task, validate_task_memory, and write_task_memory as an auditable workflow without treating MCP configuration as an automatic-memory guarantee.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#MCP

#Claude Code](/en/blog/claude-code-memory-workflow)    [##  Configuring Cloud LLMs: Providers, Endpoints, and Summaries

Follow ChatCrystal provider registrations to configure remote generation and check native APIs, gateways, persisted settings, credentials, and test boundaries.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#LLM

#Configuration](/en/blog/cloud-llm-configuration)    [##  Importing Codex, Trae, and Copilot: verify each history format

Check source directories, event extraction, and snapshot boundaries in ChatCrystal, then verify each adapter against a conversation you know.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Data parsing

#Knowledge management](/en/blog/codex-trae-copilot-import)    [##  Memory Budgets for Large Chat Imports: Measure Before Batching

Profile memory peaks in large chat imports with sql.js and task queues. Size batches from reproducible benchmarks instead of arbitrary fixed thresholds.          曾亮懿       October 3, 2026      6 min read

#ChatCrystal

#Import

#Performance](/en/blog/conversation-import-memory-budget)    [##  Importing Cursor history: workspace metadata and global messages

Trace how ChatCrystal joins Cursor SQLite data, discovers orphan sessions, and extracts messages, then verify the import with a known conversation.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Cursor

#SQLite

#Data parsing](/en/blog/cursor-conversation-import)    [##  Parsing Cursor SQLite: Debugging Missing Messages Across Tables

Check paired databases, key prefixes, unknown versions, and orphan discovery to distinguish unreadable data, parsing omissions, and absent records.          曾亮懿       October 3, 2026      4 min read

#ChatCrystal

#Cursor

#SQLite

#Data parsing](/en/blog/cursor-sqlite-parser-pitfalls)    [##  Configuring Embeddings: Model Selection and Rebuilding

Check task support, actual embedding inputs, and index compatibility, then accept model settings and changes with known notes and no-answer queries.          曾亮懿       October 3, 2026      3 min read

#ChatCrystal

#Embedding

#Vector search](/en/blog/embedding-model-configuration)

##  From writing to code

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

[Visit my GitHub](https://github.com/ZengLiangYi)

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "ZengLiangYi Blog",
  "alternateName": [
    "Zeng Liangyi",
    "ZengLiangYi",
    "zengliangyi.com"
  ],
  "url": "https://zengliangyi.com",
  "description": "曾亮懿的个人网站。记录 AI Native 探索、开发者工具与全栈产品实践。"
}
```
