Front-end developer in Beijing. I build small local tools for my own workflow — Markdown tooling, typing drills. Mostly TypeScript, Next.js and Vue.
- viewmd: a local server that renders any project's Markdown the way GitHub does, with a directory tree, sidebar search, Mermaid, and several projects open in separate tabs at once. Next.js and React, with a vitest suite and a PM2 config for running it as a daemon.
- learn-en: a typing trainer that drills English in phrase chunks instead of grammar rules. It parses Markdown notes into a category tree, tracks WPM and accuracy, and has an admin console for editing the chunk library. Next.js, Prisma, SQLite.
Both are tools I use daily rather than products: no releases, no support.
| Project | Contribution |
|---|---|
| Varlet | prevent-auto-fill for ui/input: the prop and its behaviour, docs in both locales, and an example page. |
| vue-i18n | Filled a gap in the Chinese interpolation guide. |
| DefinitelyTyped | Corrected the OBB type definition for three.js. |
| Project | Report |
|---|---|
| Vuetify | VDateInput cleared its value when Enter was pressed on a range selection. Fixed by #21249, which added an updateOn prop. |
| pm2 | No way to keep pm2 from writing stdout and stderr files. The maintainer took the request up on the thread; pm2 ships --disable-logs today. |
TypeScript / JavaScript · Vue, React, Next.js · Tailwind CSS, Prisma, SQLite · Node.js, PM2
Chinese · English