After about 2/3 weeks of working on it, Iâm shipping CLI-Inbox!!
Itâs a Gmail client that runs in your terminal. You can read full email threads, write and send emails with a proper terminal text editor, reply, forward, manage drafts, search, create and manage labels, download attachments, attach files when composing, and switch between multiple Gmail accounts.
I thought I didnât have much time, but then Flavortown got extended so I took it easier lol (so yeah, I thought this to be my last ft project, but now I donât think so, hihi).
IMAP is genuinely one of the messiest things bruh (I mean, this protocol has so many quirks and edge cases uhh, all the ID issuessss aaaaaa), also the Label handling was painful because they depend on the language of your gmail account, then thread handling also caused a lot of problems (there was a bug with message IDs and label targeting when fetching threads), THEN THE DEMO MODE was genuinely harder than I expected⊠making it behave like a real IMAP/SMTP backend without actually connecting to anything required monkey patching, which I had never done before [If youâre trying the project, please just use a real account, the demo is more of a âlook what the UI looks likeâ thing than a perfect simulation].
The last devlog was almost entirely bug fixes and stuff, omg, this was so annoying aaah, Iâm sure that there are some other bugs, so please find them and tell meee, uhhh.
Anyway, I discovered the ârichâ library, I found it kind of by accident when I was trying to figure out how to make a decent table layout in the terminal, it works fine yeah, and itâs pretty easy to use (Iâve also seen Textual now, which is basically ârichâ but for full TUI applicationssss! ).
Also, email as a format is way more complex than it looks from the outside: HTML emails, multipart messages, attachments encoded in base64, quoted-printable encoding, timezone differences, threads linked by message IDs, etc. thereâs a lot going on behind an email lol, that was interesting to discover :)
Iâm proud of, uhm, just that it works, it actually works, thatâs pretty enough for me, hah, there are all the basic features of an email client and itâs usable, so thatâs what makes me proud. I also tried to keep the codebase clean which made it easier to keep building without getting too lost (unlike my first ft project, where I got completely lost in the codebaseâŠ).
Oh and last thing, maybe someday I will add an Outlook support, I wanted to add it but honestly Gmail was already enough complexity, so yeahhhh, maybe Iâm just lazyyy.
Anyway, time to ship it nowwww :D