A chat export is thousands of lines of text. What I find more interesting in a conversation between two people is its timing: who is up at midnight, who writes on the train, the week it went quiet. So I built ChitWeave, which turns a two-person LINE export into a woven picture and never needs the words.
Counts first, pictures second
The parser reads the export and keeps one number per person, per day, per hour. Message text and names are used only to find the structure and are then dropped. That table is also the file format. The renderer accepts nothing else, which makes the privacy claim easy to check: there is no code path that could draw a message.
Making counts look like cloth
Each day is a row and each hour is a cell. Person A gets a horizontal thread through the cell and person B a vertical one. At every crossing one thread lies on top, and which one alternates like a plain weave. Thickness follows log1p(count) divided by log1p(max), where the maximum is the busiest cell of either person, so both people share one scale and a single burst does not flatten everything else.
The first version put 90 days in one tall column and looked like noise, because each row was nine pixels high. Folding anything over a month into two side by side panels made the cells close to square, and only then did it read as fabric.
Keeping it in the browser
The page is one HTML file with a Content Security Policy inside it that blocks every outgoing request. A browser test tries a fetch from the page and expects it to fail, then imports a file and saves a picture while counting requests. It counts zero.
What is rough
I could only test on made-up exports in the layouts other LINE analyzers document, so a real file may be refused. Safari is untested. It reads two-person chats only. If your export fails, the page lists the line numbers it could not read.
Try it at arthur031221.github.io/ChitWeave, or weave the sample from a terminal with npx github:Arthur031221/ChitWeave --sample -o weave.svg.

Top comments (0)