You are a beast, back surgery and a feature list that long… please just don’t burn yourself out.
Arctic
Arctic is a Lemmy client for iOS built on pure Swift. It currently supports iOS 15+ and Lemmy v0.17+
Get the latest version on TestFlight, or check it out on the AppStore.
If you would like to support Arctic’s development, feel free to Buy Me A Coffee
To be fair, that feature list was completed before the surgery. I just had surgery on Monday. I figure if I’m going to be mostly bed bound for the next month, I could put that to some use and work on Arctic.
I definitely burnt myself out towards the beginning of summer, that’s what started my taking a break from development. Then between work, summer heat, and my injury, it took me a while to get back into the groove.
You are still the best… and a beast.
I stub my toe and I won’t look at a PR for two weeks.
Great news! Thanks as always for the updates!
Always a pleasure, I’m excited to be working on Arctic again after such a long break!
And welcome back! I was worried for a second when the testflight version expired but saw your comment about the publish delay.
When it downloaded earlier, I saw the release notes and was incredibly impressed with all of your work. Thank you so much for everything.
My pleasure! I did not plan on such a long list of changes, I got a little carried away. I had a list of issues I had noticed over the last couple of months, and I was just planning to address those with this update. After such a long break from the project, I wasn’t in a huge rush to release this update. That gave me the time to work on bigger features like Mac support, and embedded content.
It may interest you to know that this post got me to download the app. Been hanging with Memmy after their team dropped it. The features and changes persuaded me that this might be a good fit. Best of health wishes.
That’s great to hear, and I hope you’re enjoying Arctic so far. I actually started out using Memmy as well, it was one of the first apps available with a good set of features. I hadn’t realized that support had ended for the project though, That’s a shame.
And you are able to watch videos in the feed!! I wish videos would get more attention on Lemmy in general, I am really into posting videos but they usually do not get a lot of attention.
This has always been a goal for Arctic. Most direct links to videos will play in the feed without issue. There is also a setting in the Media options to embed YouTube videos, this is not very reliable and will fail on a lot of videos. There is another option to convert YouTube videos to Piped, this tends to work better, but can also fail. YouTube specifically is a struggle do to how much effort they put into preventing 3rd party access to content.
Now for videos posted directly to lemmy, they are re-encoded as vp9 and packaged in a mp4. Now this is a big issue for Apple devices. vp9 is the same encoding used for webm, and for whatever reason, apple does not offer any decoders for this format except in Safari, or if you’re YouTube. I’ve looked into integrating VLCKit to play these videos, I may end up adding this as an option, but it’ll be bad for battery life. It would be nice if we could get videos in a different format. Even if we could get an HLS stream in the same format, apple devices have no problem playing vp9 if its in a HLS stream.
It would be super cool if you pull add a 3rd party upload option for videos. Currently I am always open pixelfed, upload the video, copy the link and paste it to Lemmy. This is a bit lengthy :D
An easier solution directly added into the app, with maybe an pixelfed, or PeerTune instance of the users choice would be nice.
Also Pixelfed does not support Apple codec as far as I understand.
This is a great idea! I rewrote most of the image upload handling today and I added support for uploading to catbox.moe as an alternative to Lemmy.
I’ve been planning to implement the PeerTube API to support viewing PeerTube videos in the feed, I might take it a bit further and add support for uploading there as an alternative.
PixelFed a little fragile at the moment. I looked through their API and it seems to be completely undocumented. I think I understand how to add support for uploads there, but I’m not sure how frequently they may push breaking changes to the API. I’ll have to look into this further. On the other hand, Arctic does support playing videos on PixelFed, they are hosted as H.264 .mp4 which is fine.
Anyway, thanks for the suggestion, I’ll be adding more hosting providers soon.
Also, I just noticed that I disallowed selecting videos for upload in Arctic, since playback is not supported for videos hosted by Lemmy. I’ll enable selecting videos, though I suggest using Catbox or another service to host them on for now.
The future is bright 😁 I also think that an easy click and upload procedure for PeerTube would be cool, but I guess you have to add PeerTube account handling in some way…
Could catbox.moe also be used as an alternative uploader for images? I used to have problems on one instance long time ago, and it could be beneficial to have an fallback host.
Yeah, I’ll be adding some new settings to log into different upload services. I added an option for catbox.moe today (you can still use it without logging in, but you won’t be able to deleted the image latter). I also added an option for choosing your upload destination. So you can choose where your media is uploaded. This includes an option to ask each time so that if you want, you can choose the destination every time you upload something.
PeerTube shouldn’t be hard to manage, they have a well documented API, so it should be simple to add support for this.
Also, yes you can use catbox.moe for uploading images as well as videos.
🚀🚀🚀
I actually just managed to fix video playback for videos hosted on Lemmy. Turns out it was not due to the video codec, but rather the server not responding correctly, so video players on Apple devices never realize the video finished downloading. Really dumb issue, but I have it fixed now.
Also I added support for PeerTube playback (no uploads yet). It works well, however it’s a little difficult to determine what links are PeerTube links, so it does not catch all PeerTube videos. Right now I have a large list of PeerTube instances that I check against, but that is a little impractical. I’m looking into better ways to handle this.
Are you considering a dark theme that isn’t pure black?
A little update on this, I spent most of yesterday working on theme support, and I made a lot of progress. I have everything working, just a few details left to polish, and some work left on the editor.
I can’t wait to see it!
I hadn’t really thought about it before, But it only took about 5 minutes to add support for a lighter variant of dark mode. I’ll include this in the next release.
I am however working on customizable theme support. It’ll allow for creating custom themes and changing just about any color you want in the app. This is taking me some time to build though, and it likely won’t be ready for a while.
Maybe there could be an interface for the community to add themes. Maybe via an Import of json or what ever…
Exactly, I was actually planning to add a theme browser. I’m going to setup a service on Arctic’s website to host themes. Then you’ll be able to browse community themes in Arctic, and install them. I’ll also setup a community for arctic themes, so users can share their themes with screenshots etc.
What is your backend written in?
It’s written in Swift. Originally I had planned to write it in Go, but I decided to try out Swift as a backend since I had never used Swift for web development. This allows me to share the same Lemmy API library and networking between both Arctic, and it’s notification server.
Did you thought about opensourcing your code, maybe we can help you developing? 👀
This is a longer term goal. I definitely want to go open source, but I’m holding out until I do some major refactoring, things are a bit messy in here right now. I never planned on Arctic becoming such a big project, and it’s grown a bit out of hand. I’m planning to do some major rewriting before open sourcing.
I am not a Swift main but I know a bit of backend API design, let me know if I can help you.
Awesome!
Dude I can’t wait to have this update! The quality of life improvements and new features will be huge! Also best of luck in your back recovery and thank you so so very much for making the best Lemmy iOS app!