English | 简体中文
Building developer tools and open-source projects with TypeScript and React.
I'm a frontend engineer based in Beijing. I enjoy turning complex problems into clear, reliable, and approachable products.
- I care about developer experience, type safety, maintainability, and thoughtful interface details.
- I mainly work with TypeScript, React, Vue, Vite, and Node.js.
Public repositories that are not forks or archived, ordered by their latest push. This section is refreshed automatically every day.
| Project | What it does | Links |
|---|---|---|
| codex-vscode-project-patch | Filter Codex VS Code task history by the active workspace. | — |
| vite-plugin-locator | One-call LocatorJS integration for Vite 5–8 and multiple UI frameworks | npm |
| vite-plugin-tailwind-merge | Automatically merge conflicting Tailwind CSS classes in Vite builds. | npm |
| url-join | A TypeScript utility for joining URL segments with null-safe filtering and query parameters | npm |
| sticker-ui | A source-first handbook sticker style React + Tailwind component registry. | Live preview |
| sprite-pet | A framework-agnostic browser runtime for animated web pets. | Live demo · npm |
| skills | Personal, opinionated Agent Skills for repeatable development workflows | Directory |
| nice-use-modal | A type-safe, headless React modal controller with explicit lifecycle APIs. | Live demo · npm |
| gerrit-cli | A safe local Git workflow CLI for Gerrit Code Review. | npm |
| codex-usage | Native macOS menu bar app for monitoring Codex usage, notifications, and widget snapshots. | Releases |
| codex-skin | A macOS Codex theming tool with wallpapers, main-panel scenes, and sidebar decorations. | Website |
| acer-almanac | A deterministic Chinese almanac workspace with a TypeScript package, Web Component, Chrome extension, and live preview. | Live demo · npm |



