Update alert!
James Downs just released version 1.17 of Kagi News!
Release notes
- Added caching based on Batch ID to avoid unnecessary network requests
- Network connectivity is still always required
- Reduced app memory footprint
James Downs just released version 1.17 of Kagi News!
- Added caching based on Batch ID to avoid unnecessary network requests
- Network connectivity is still always required
- Reduced app memory footprint
As I inch ever closer to my dream of Aplite support, I was able to rip out 11K from the memory footprint of the app.
Aplite can now be built to, but since the app uses 23/24K, it immediately uses too much memory. The next goal is to bring the app size down to maybe 18K for Aplite and then drastically optimize the bridge between the phone and watch to ensure only the most minimal data is going over the bridge and remaining on the watch. This will require a better API than I’m using to request data from the phone on the chance the watch has decided to unload it from the back stack.
Also, max categories (including the Small Web feed) is now 20. I can’t imagine anyone wants more than 20 news categories at once. And the app started to break in interesting ways around 30. If someone sees this and uses more than 20 let me know.
James Downs just released version 1.18 of Kagi News!
- Updated action button to confirm to system and content size more accurately
James Downs just released version 1.19 of Kagi News!
- Critical fix: Fix endpoint that queries latest batch ID, allowing app to work again
Kagi News generates a press summary “daily at 12 UTC” but that fact is non-deterministic. While they attempt to so, the time at which it completes, or if it happens at all, is not set in stone.
What happens then is, the /api/batches endpoint, which defaults to showing you batches in the last 24 hours, is an empty array, which is why this issue happened. While I was testing, this endpoint always had a batch, and it was just by circumstance that the very next day, the batch time was missed. I require a success state on this endpoint (meaning just having data) to continue as even though there is a cache now, the app really wants Kagi News to up to present anything and avoid having to manage half-cached state.
I switched to using the /api/batches/latest endpoint instead which just always gives me back the latest batch (any batch ID can be used) regardless of how out of date it is. This was probably always the right answer and I was just using the other endpoint improperly.
At least this broke right away so I could catch it quickly.
James Downs just released version 1.20 of Kagi News!
- Sort stories by unique article domain / publisher count, descending
James Downs just released version 1.21 of Kagi News!
- Update available category list
- Support requesting all LTR languages for content
- Follow watch language when Default is selected for interface language
- Invalidate network cache when the app version changes
This started out with me just updating how I am dealing with message keys by auto generating them from some weird script and then I realized I probably should update the categories which I haven’t done in a while.
Categories that no longer exist have been removed. Categories that are new are now added. I still look forward to a future where I can get all of this including the localization of the category names from the API, but that won’t be until at least the next update.
I also just added all the LTR languages that Kagi’s content supports. I did not go ahead and add these to interface languages, but I’m not going to restrict someone that wants to read the content in one of those languages from doing so just because I haven’t localized the static strings yet. Hopefully full localization will come when I start requesting this stuff from the API, but I don’t think that’s my main priority yet versus just not having to do these updates going forward.
I wasn’t pulling the system language correctly at all. I erroneously thought I could pull the phone language with navigator in the PKJS client but that is not how that works. Instead I am just checking Pebble.getActiveWatchInfo() for the language if I can and using that for interface strings. Content isn’t impacted because that just uses the original language of the content when default is set.
That plus a few other things this time. Like I said above, hopefully the next update is one that will mean I don’t have to push these updates for categories anymore since it’ll get retrieved at start up.
James Downs just released version 1.22 of Kagi News!
- Add Tension Index display when index is over 50
- This can be toggled off in Settings
- Associate app messages to a session ID to prevent receiving messages from stale sessions
- Fix crash when reading read stories into array after app crash
I have had to re-implement a lot of stuff that I would normally get for free from the OS features for this.
To get Tension Index working the way I wanted I had to:
These two are among having to handle drawing the text manually to deal with up to 4 lines and scaled text among a lot of other things. I stray further and further from something that my brain is keeping track of.
Overall, this was a bit of a hacky change to try to bypass some of my view hierarchies to support a pseudo-category TensionIndex. I will look at making this more robust in the future.
Additionally:
James Downs just released version 1.23 of Kagi News!
- Fix start up crashes when configuration changes
James Downs just released version 1.24 of Kagi News!
- Dynamically retrieve categories and category translations from Kagi News API so they are always up to date
- Improve render performance of story title lists
Big big big. I was able to use the /api/categories/metadata endpoint to retrieve the categories from the API as well as the available translations. This means maybe some translations that Kagi doesn’t support are missing but generally they are all equally as available as my hardcoded ones.
I should no longer have to keep up on adding and removing categories. These are cached with your given batch so a category won’t appear or disappear on your until the batch is refreshed (or you delete the cache), but otherwise the configuration in Clay will always use the up to date category list.
If you end up with an out of date category long time, I filter out any categories that have 0 stories anyway, so you’ll just never see it again, though it does waste an API call so it might be good to drop unsupported categories from storage in the future.
Next up is going to be trying to fix the performance of scrolling through the menus because it is really bad on my Pebble 2 Duo when I am looking at the short titles of stories. I am doing a lot of custom rendering to be able to display multiple lines at multiple text sizes, so I imagine I just need to dig into that and actually optimize code instead of adding more forever.
James Downs just released version 1.25 of Kagi News!
- Add loading bar to splash screen
James Downs just released version 1.25.1 of Kagi News!
- Adjust UI of loading bar on B&W displays
I thought I was going to be fine with the loading bar on black and white going from black to white when fully loaded but I wasn’t so I fixed that.
Most of this was work I was trying to do to set up a GitHub Action that’d inject the patch version from my bump version commit message back into the appinfo.json and write releases to GitHub.
Notes:
.pebble-versions file that specifies the pebble-tool and pebble-sdk versions for the project that can be used as part of this. I think it’s neatif: steps.version.outputs.should_release == 'true' everywhere which seems wrong but it works and I’m not bothering to learn more right nowI want to figure out how to share this between projects without copy and pasting and I think that means I have to push this to a different repo on GitHub then do uses: to that repo which sounds stupid but might be the answer.
James Downs just released version 1.25.2 of Kagi News!
- Fix categories without stories appearing, misaligning story content to categories
James Downs just released version 1.25.3 of Kagi News!
- Config storage and retrieval optimizations
- Business logic clean up
- Hopefully you notice nothing changed
James Downs just released version 1.26.0 of Kagi News!
- Add basic touch scrolling on menus and text screen