Skip to content
曾亮懿 ZengLiangYi Blog
Tag

#Node.js

26 posts tagged "Node.js".

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

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

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

SourceAdapter internals: identity, content hashes, and reimport

Trace ChatCrystal’s registry, importer, and remote payload to verify identity, canonical hashes, metadata shortcuts, and parser-version boundaries.

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

sql.js WASM Persistence: Memory, Exports & Nested Savepoints

Trace ChatCrystal’s database lifecycle with sql.js 1.14.2 fixtures, separating SQL commits, exports, file writes, foreign-key restoration, and nested rollback.

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

Vectra Vector Search: Metadata, Updates, and Local Cache

Inspect Vectra 0.15.0 query and storage paths with temporary indexes, observing external metadata, files left after cancellation, and instance-cache boundaries.

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

Building an Embedding Service: Text, Chunks, and Commits

Read ChatCrystal’s actual embedding pipeline, separate text selection, soft chunking, vector validation, and commits, and verify boundaries offline.

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

Code tooling: the actual roles of Biome, ESLint, and formatting

Read ChatCrystal’s scripts and Flat Config, verify ESLint diagnostics offline, and distinguish syntax rules, type checking, formatting, and CI gates.

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

A Minimal MCP Server: Register Tools & Verify Stdio Calls

Build an offline addition tool with TypeScript SDK, verify protocol discovery and calls, and inspect ChatCrystal adapter integration boundaries.

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

Conversation Parsing: JSONL, Events, and SQLite Read Boundaries

Trace ChatCrystal parsers with offline fixtures to test line framing and SQLite snapshots, separating decoding from message normalization guarantees.

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

Release Engineering: npm, Electron, and Tag-Driven CI

Trace ChatCrystal release workflows, verify tag plans, package fixtures, and failure exits offline, identifying steps that still require acceptance.

曾亮懿 曾亮懿
5 min read
#ChatCrystal #Node.js #GitHub Actions

p-queue tasks: boundaries of limits, retries, and cancellation

Read ChatCrystal’s queue and tracker, distinguish task starts from model requests, and verify offline that clearing waiting work does not interrupt active work.

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

SourceAdapter design: separate discovery, scanning, and parsing

Read ChatCrystal’s adapter and import contracts, verify selective parsing with fixtures, and check registration, enablement, identity, and version boundaries.

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

Structured JSON Prompts: Field Design & Verifiable Evidence

Use ChatCrystal’s summaries and relations to define fields, visible evidence, and counterexamples, then distinguish shape and evidence checks with offline Zod.

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

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

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

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.

曾亮懿 曾亮懿
4 min read
#ChatCrystal #Node.js #Knowledge management

Exporting ChatCrystal Notes to Obsidian

Export every page of ChatCrystal notes, build Obsidian links with stable IDs, and distinguish a readable snapshot from editing and incremental synchronization.

曾亮懿 曾亮懿
6 min read
#ChatCrystal #Obsidian #Node.js #Knowledge management

From writing to code

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