Work Note: Stream for Mac
Another slow start to the day. I’ve hit a point in my todo list of items I don’t want to do. 😄 That’s always a good sign. It means I’m getting to the end of what I’d like to do to get a 1.0 out the door.
Today I covered three things.
J and K Navigation
I like the way Reeder and Unread use the J and K keys to navigate between feed items, so I added that. I need to figure out if I want to add it to blog navigation as well.
Persist and Restore Window Positions
This was a lot easier than I expected! Thank you Interface Builder! I was able to set a couple properties and it’s taken care of for me.
BUG: Fix Feed Item Refresh
I had an ugly bug that would cause the feed items table view to not refresh properly. I was final able to find the set of properties I needed to tweak to make this do what I wanted. Now the middle column — feed items — now updates properly. Bug squashed.
What Next?
Well, I still have a list of things I’d like to do and I need to work on polishing up how the app feels. When redrawing feed item cells the associated favicon image doesn’t fill in as quickly as I’d like. I’ll just cache all of them so hopefully we won’t have that issue any longer.
I also added a new container type for blog display — leftmost column — so I can add static type items in the column. I need at least to column headers; Articles and Subscriptions, so I can have an All Articles item and have all of the blogs display under Subscriptions for a bit of separation. The All Articles item will behave the same way as Cmd+A and display all feed items mixed together in the middle column. It’s also where I’ll place the items saved to “Read Later” but that may not be a 1.0 item, we’ll see how it goes.
I also need to make sure to get my Action Extension “Subscribe in Stream” working on the Mac so folks will be able to subscribe right from Safari.
Oh, one other annoying thing. I created a separate target for the Mac build and I had to name it Stream-macOS because Xcode wouldn’t let me have two Stream Targets. I suspect this was a mistake and to fix it I’ll have to add a new Target to the existing Target. I know, that may sound weird, but there is a way to do it and I didn’t know about it until I read up on it today. That will be a real pain in the butt to fix because of file inclusion per target. Ack! Not looking forward to that! 🤣
This got me thinking about my choice to use SwiftUI for the table view cells. One thing about that choice is cell reuse is kind of strange. The only way I’ve been able to get them to draw properly is to make a new view, just the SwiftUI part, so it gets laid out properly. I’m fairly certain I could get this working by using SwiftUI’s state mechanism but I decided to try doing a proper cell using AppKit and hook up the constraints manually. I have the cell put together and was working on constraints when I ran out of time for the day.
I have a small list of things to do before making a 1.0 release. Once I get those items completed I’ll put together a limited beta and collect some feedback. I need to do a lot of polishing. My tables flicker too much during updates because I reload everything and force the UI to render. Yeah, very heavy handed. If I can minimize the flicker I may ship it like that. Once the Mac version is out I can focus on catching it up to the iOS version and start adding new things to both at the same time. I have so much work ahead of me but that’s perfectly fine!
Worked on
I want to get back to the Mac version but it feels like so much work. I need to get my table view cells to behave properly. Perhaps I’ll punt on having the date attached to the right side of the cell and put it somewhere on the left just to make some progress today. 🤔
I’ve neglected