this post was submitted on 11 Sep 2024
54 points (98.2% liked)

Arctic

376 readers
5 users here now

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

founded 1 year ago
MODERATORS
 

It's been several months since I released any updates for Arctic except for a single hot-fix released to address an issue with API changes. I've had a busy summer and have not had much time or energy to put towards development. In the last few weeks, I've finally gotten back into working on updates, and I couldn't be more excited. I'm currently recovering from back surgery, so I have some time off work for the next month at least. I plan to use this time to push out some updates for Arctic, and get back on a consistent release schedule.

The goal for this update was to have it ready before the last TestFlight build expired. Unfortunately, even though I managed to submit the update before the deadline, the review process took longer than usual, and the previous build expired before the update was released.

I've been working on this update for a couple of weeks now in my free time, and I had originally planned for it to just focus on some minor bug fixes. Well, I got a bit carried away and added a bunch of new features while I was at it. The feature I am most excited about in this update is support for embedding views in Markdown. Arctic can now load embedded images rather than appending them to the end of comments or posts. I've also added embedded Markdown tables, so I can add proper rendering for tables which were extremely basic in previous versions. Both of these features are still in an experimental phase and disabled by default in this release. If you'd like to try them out you can enable them in the Experimental section in settings.

Something else I'm super excited about is that Arctic is coming to MacOS soon. I've spent a lot of time during this update cycle working on refining the user experience on Mac. I've gotten nearly all the Mac specific bugs worked out, and now I'm working on refining the UI to better suit the desktop experience. With this, I am also working on the iPad layout and improving the UI on larger displays. I'm hoping that over the next month I can release a Mac build on TestFlight.

v0.4.2.0 Changelog

New Features


  • Added support for embedded markdown views:
    • Embedded images (experimental)
    • Embedded tables (experimental)
    • Embedded spoilers (stable)
  • Added support for disabling markdown features (post feeds will now display using limited features)
  • Added support for paragraphs in Markdown lists (note: this will not yet be rendered correctly in the markdown editor)
  • Added Alternate Sources for links, Haptic touch on any link to open the link using an alternate source
  • Added option for showing profile images in comment sections
  • Added support for clearing push notifications when marking them as read in Arctic
  • Added option to hide labels on the tab bar
  • Added option to adjust the thumbnail size in compact layouts
  • Added new filters to the profile tab, view liked or disliked posts and comments, as well as hidden posts
  • Added a new trending communities section to the search tab (trends are based on Lemmy suggestions, and currently they are mostly just new communities)
  • Added support for selecting multiple communities at once in the Multi-Community editor
  • Added descriptions to the Multi-Community editor to explain its usage
  • Added community icons to the Multi-Community editor
  • Added support for filtering by NSFW in Lemmy Explorer
  • Added support for tapping the search tab while it is open to focus the search bar
  • Added a settings section for migrating Subreddit subscriptions from Reddit. (Thanks to Voyager for this idea)
  • Added option to choose the default listing type in profile views
  • Added pinned section to the left side of the markdown editor toolbar for undo and redo actions
  • Added support for selection images for upload using Finder on Mac
  • Added support for swipe actions using a trackpad
  • Added option to disable swipe actions
  • Added option to use full screen navigation gestures (not compatible with swipe actions)
  • Added change log popup after updating Arctic 

Bug Fixes


  • Fixed a missing close button in the community notification editor
  • Fixed issue preventing a custom guest instance from being set
  • Fixed issue causing Top sorting modes to show twice in sorting menus
  • Fixed account and community settings editors not resizing text views while typing
  • Fixed issue where media previews would be loaded from post bodies even if the post is not a media post
  • Fixed issue allowing comment tags ("ME", "OP", "BOT", etc) to render incorrectly
  • Fixed an issue where the activation threshold for swipe actions was too high resulting in false swipes while scrolling
  • Fixed issue where images would fail to upload when using limited access mode for photos. (you will now be presented with an option to grant access to photos before selecting them for upload when using limited access mode. Note: For the best experience, it is recommended that you enable full access)
  • Fixed issue where links would not open in private messages and profile bios
  • Fixed authorization error when trying to delete images
  • Fixed issue where cells in the Reports section would render markdown incorrectly
  • Fixed issue that could cause crash alerts to show more than once
  • Fixed an issue making it difficult to grab cells for reordering accounts
  • Fixed highlighted cells in the subscriptions view on iPad and Mac
  • Fixed issue causing the tab bar to permanently disappear in some cases while Hide Bars On Scroll was enabled
  • Fixed positioning of labels in media previews on Mac
  • Fixed media gallery views not resizing properly on wide displays
  • Fixed issue where categories for the search tab may not show on some devices
  • Fixed layout issue with the profile header view

Arctic Push Notifications


  • Rewrote networking to improve performance and error handling
  • Improved logic to help prevent overlooking notifications, or sending duplicates
  • Updated with the latest API support
  • During these updates, you may have missed, or received duplicate notifications

Links

top 34 comments
sorted by: hot top controversial new old
[–] not_fond_of_reddit@lemm.ee 15 points 2 months ago (1 children)

You are a beast, back surgery and a feature list that long… please just don’t burn yourself out.

[–] CreatureSurvive@lemmy.world 5 points 2 months ago (1 children)

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.

[–] not_fond_of_reddit@lemm.ee 2 points 2 months ago* (last edited 2 months ago)

You are still the best… and a beast.

I stub my toe and I won’t look at a PR for two weeks.

[–] scytale@lemm.ee 6 points 2 months ago (1 children)

Great news! Thanks as always for the updates!

[–] CreatureSurvive@lemmy.world 1 points 2 months ago (1 children)

Always a pleasure, I’m excited to be working on Arctic again after such a long break!

[–] scytale@lemm.ee 2 points 2 months ago

And welcome back! I was worried for a second when the testflight version expired but saw your comment about the publish delay.

[–] JaymesRS 5 points 2 months ago (1 children)

When it downloaded earlier, I saw the release notes and was incredibly impressed with all of your work. Thank you so much for everything.

[–] CreatureSurvive@lemmy.world 4 points 2 months ago

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.

[–] Zachariah@lemmy.world 2 points 2 months ago (2 children)

Are you considering a dark theme that isn’t pure black?

[–] CreatureSurvive@lemmy.world 4 points 2 months ago (1 children)

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.

Dracula Theme

[–] Zachariah@lemmy.world 2 points 2 months ago

I can’t wait to see it!

[–] CreatureSurvive@lemmy.world 3 points 2 months ago (2 children)

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.

[–] genfood@feddit.org 4 points 2 months ago (1 children)

Maybe there could be an interface for the community to add themes. Maybe via an Import of json or what ever…

[–] CreatureSurvive@lemmy.world 4 points 2 months ago (1 children)

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.

[–] genfood@feddit.org 3 points 2 months ago (1 children)

What is your backend written in?

[–] CreatureSurvive@lemmy.world 4 points 2 months ago (1 children)

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.

[–] genfood@feddit.org 1 points 2 months ago (1 children)

Did you thought about opensourcing your code, maybe we can help you developing? 👀

[–] CreatureSurvive@lemmy.world 2 points 2 months ago (1 children)

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.

[–] genfood@feddit.org 2 points 2 months ago

I am not a Swift main but I know a bit of backend API design, let me know if I can help you.

[–] Zachariah@lemmy.world 2 points 2 months ago
[–] Scotty_Trees@lemmy.world 2 points 2 months ago

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!

[–] some_guy@lemmy.sdf.org 2 points 2 months ago (2 children)

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.

[–] CreatureSurvive@lemmy.world 3 points 2 months ago

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.

[–] genfood@feddit.org 2 points 2 months ago* (last edited 2 months ago) (1 children)

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.

[–] CreatureSurvive@lemmy.world 2 points 2 months ago* (last edited 2 months ago) (1 children)

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.

[–] genfood@feddit.org 1 points 2 months ago* (last edited 2 months ago) (1 children)

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.

[–] CreatureSurvive@lemmy.world 2 points 2 months ago (1 children)

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.

[–] genfood@feddit.org 1 points 2 months ago (1 children)

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.

[–] CreatureSurvive@lemmy.world 2 points 2 months ago (1 children)

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.

[–] genfood@feddit.org 1 points 2 months ago (1 children)
[–] CreatureSurvive@lemmy.world 2 points 2 months ago

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.

[–] Scotty_Trees@lemmy.world 1 points 1 month ago (1 children)

Any updates to this? Just really curious to know how things are going. Really looking forward to trying this out when it’s stable.

[–] CreatureSurvive@lemmy.world 2 points 1 month ago (1 children)

I have been working on the next update everyday. I have over a hundred bug fixes, enhancements, and new features for the next release. I know I had originally planned to release smaller, more frequent updates after the last one. However I started working on theming support, and this took several weeks to reach a stable point. Theming had much of the project in an unusable state during this time which made it difficult to release any smaller updates during that time.

I received several crash reports for the last release, all of which were related to the same issue. This issue has been a headache to resolve. I have it fixed now, but it has caused some unwanted effects I’m currently trying to resolve before rolling out the next update. On the other hand, fixing this issue also allowed me to make a lot of improvements to post processing resulting in more consistent post feeds.

I should hopefully have this ready in the next day or two.

[–] Scotty_Trees@lemmy.world 1 points 1 month ago

Oh wow thanks for the update! That all sounds wonderful, minus the troublesome bug work of course, but that's part of the process. Appreciate you getting back to my comment. I use Arctic everyday so I'm very grateful for all your hard work, it really does mean a lot. Take all the time you need to get things how you want and I look forward to trying it out in the near future. Have a great weekend man!