尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
ChatLens analyses a chat export from WhatsApp, Instagram or Messenger and shows who talks more, when you talk, how fast you reply, how long your streaks run and a few playful scores. All of the work happens in your browser. The site is static, has no backend, and your chat file is never uploaded anywhere.
Live demo: https://chatlens.somansh.in
Sample analysis without uploading anything: https://chatlens.somansh.in/?demo查看完整 README ↗ChatLens analyses a chat export from WhatsApp, Instagram or Messenger and shows who talks more, when you talk, how fast you reply, how long your streaks run and a few playful scores. All of the work happens in your browser. The site is static, has no backend, and your chat file is never uploaded anywhere.
Live demo: https://chatlens.somansh.in Sample analysis without uploading anything: https://chatlens.somansh.in/?demo
connect-src 'none', so the browser refuses the page's own network calls (fetch, XHR, WebSocket and beacon). It also sets form-action 'none' and default-src 'self'. The policy is in next.config.mjs. It is applied to production builds only, because the dev server needs a WebSocket for hot reload.You do not have to take this on trust:
Content-Security-Policy response header, or run curl -I https://chatlens.somansh.in.| Platform | File | Notes |
|---|---|---|
.txt export | Android style (15/10/25, 14:17 - Name: text) and iPhone style ([10/15/25, 2:17:39 PM] Name: text). Multi-line messages are joined; system notices and "media omitted" lines are skipped. | |
.json | Accepted by the parser. | |
message_*.json | Upload every message_*.json file from the chat folder; they are merged. | |
| Messenger | message_*.json | Same as Instagram. |
| Discord | Listed in the UI as coming soon. Not usable yet. |
At least 10 messages are needed to produce an analysis.
.txt file.messages/inbox/.messages/inbox/.Menu names change from time to time; the in-app hint for each platform is the shortest version. For Instagram and Messenger, upload all message_*.json files in the chat folder, since long chats are split across several files.
Requires Node.js 20 or newer.
npm install
npm run dev # development server on http://localhost:3000
npm run build # production build
npm run start # serve the production build
npm run typecheck # tsc --noEmit
npm run check # parser self-check
npm run check runs lib/process-chat.check.ts, which feeds sample Android and iPhone WhatsApp exports through the parser and asserts on the result. The production build also fails on type errors.
lib/process-chat.ts): each platform has a parser that turns the file into a flat list of { sender, content, timestamp }. WhatsApp text is matched line by line with a regular expression that accepts both export styles and several date separators. Instagram and Messenger JSON is read from the messages array; call records are pulled out separately.Next.js 16, React 19, Tailwind CSS v4, lucide-react icons. Charts are drawn by hand in SVG and CSS, so there is no charting library.
No licence has been chosen yet, so by default all rights are reserved.