v0.1.0
Started out by setting up the project structure and got the astra command working globally. Then I hooked up the NASA APOD API pretty easily.
The first real challenge was getting images to actually render in the terminal. I tried using the term-image library but the latest version on pypi didn’t have a sixel renderer, so I ended up building my own from scratch. Centering the image was tricky too, ANSI cursor positioning doesn’t work with SIXEL, so I had to create a full width canvas in pillow and paste the image centered on it.
Performance was a big problem early on. The pure python SIXEL encoder was taking 30-80 seconds. So I brought in numpy.
Added a terminal greeter feature so you can have today’s APOD show up automatically when you open your shell.
Found a timezone bug where the once per day check was comparing NASA’s publication date against local time, so it was showing the APOD on every terminal open. Fixed it by tracking when the greeter last ran instead.
Tested on my Linux machine with ghostty and discovered it doesn’t support SIXEL and it uses the Kitty protocol instead. So I built a third renderer. Kitty was actually way simpler than SIXEL.
Published to PyPI as astra-apod.