Thoughts on the release of PhoXoSee v1.5
It’s been just over two weeks since version 1.4 was released, and now here comes 1.5 — totally off my usual release schedule. Why the rush?
Well, after 1.4, I shifted all my enthusiasm to PhoXoEdit, After all, image editing is my true passion. PhoXoSee started as a side project, more like a happy accident. I’ve even come up with a slogan: “The fastest image viewer + the simplest image editor”. 😄
To make PhoXoEdit, I finally purchased a commercial MFC UI library — no more hand-coding Win32 UI by myself! It was such a relief I nearly cried. (By the way, this project is a total money sink. But whatever, some people love cars, others go fishing, I’m just into programming.)
Nowadays, SVG is almost a must-have in modern UI development. But Windows Explorer still can’t preview SVG files? I had to open them one by one in Edge — super annoying. At first, I thought I’d need to write a full WIC decoder to enable SVG previews in Explorer. But after digging into it, I realized that implementing a thumbnail handler interface was enough. Took only a bit over 100 lines of code and now it’s working beautifully. The code is up on my GitHub: https://github.com/phoxo/3rd. This tiny improvement already boosted my development efficiency a lot.
Some users have asked if I could release a macOS version. I’m truly sorry — PhoXo is a solo project, and I simply don’t have the time or resources to go cross-platform. Back in 2008, I tried making PhoXo cross-platform using libraries like FreeType and AGG. It turned out to be overwhelming. Even rendering a basic multilingual string like “你好 hello こんにちは” required manually breaking down and shaping each character. I gave up.
Cross-platform frameworks like Qt have matured in recent years, but after evaluating them, I found they still fall short in performance, memory usage, and native UI integration. In the end, I chose MFC. After all, Users don’t care what tech you use — they just want a good experience.
Last weekend, a friend messaged me about supporting AVIF and JXL — the two hottest next-gen image formats. Thankfully, modern development is like building with LEGO blocks: there are great open-source libraries for both, with clean APIs and easy integration. The real question was whether they made sense product-wise.
I spent half a day writing an AVIF decoder (see avif.h
and avif.cpp
in the repo), but after digging into JXL, I realized it has much more potential. AVIF feels like a transitional format. Just two months ago, Microsoft released WIC support for JXL, including animated decoding — and it’s fast. There’s a good chance it’ll become a standard part of Windows in future updates.
I still haven’t decided whether to ship libavif. Honestly, users can just install the free AV1 extension from the Microsoft Store and AVIF works fine.
I keep thinking about what this little app is really supposed to be. I don’t want it to compete with Photos or Paint — they’re not rivals, they’re teammates. My goal is to make the system better for users, not redo things that are already done well. So stuff like screenshots or slideshows? If Windows already does them nicely, I’d rather not reinvent the wheel.