Broken Promises
Jul 9, 2018Sometime last week (or perhaps the week before that), I made some minor changes to how RSS feeds are polled. This made the “engine” more efficient by running in period bursts so as to not block your requests from taking priority.
I did however change something: The older variant used a callback system while the newer variant used Promises. I did not have an integration test to check how this change worked with the WebSub mechanism.
Earlier today when I published the Public Beta 3 notes, I was wondering why I did not receive a push notification. Almost 6 hours later I hit my, “ah ha!” moment.
I have patched the issue and now have an integration test for this incase I break it in the future.
If you are subscribed to Push Notifications for the Elytra blog, you should have received one. If you didn’t, you should totally subscribe.
Public Beta - Round 3
Jul 9, 2018Elytra Build 104 is now available on Testflight and I’ve added another batch 100 testers to the list. If you still haven’t received your invite, this could be the week.
I spent a small part of the weekend fine tuning things on the server side so it can accommodate more feeds and serve more people without needing to be upgraded to a bigger size.
This update includes a lot of visual fixes and some underlying fixes to how Elytra functions.
Improvements
- Haptic feedback has been enabled now that I have had a chance to fine tune things. This was previously available in the private beta but disabled during public beta release.
- Opening and closing folders no longer causes the weird jumpy animation.
- Micro-blog posts are now handled in a graceful manner with content snippets shown instead of only the Blog’s title and author.
- Added a Reset App option under the Settings.app if you need to externally reset the app. If you do this, your account information will be erased from the device. You can still reload the same account by setting up as usual and then swapping the account ID. Please note your account ID if you plan to do this.
- Improved the text that is shared when you long tap a linked header to bring up the Share modal.
- Handles
.ico
favicons correctly.
Fixes
- The Recommendations Interface in the previous build (103) stopped showing any feeds. This was a regression and has since been fixed.
- Fixed a crash where some images came with empty urls and the app tried to load them.
- Various minor improvements to the Onboarding flow.
- Fixed a dead-lock situation when you try to add a feed (which provides multiple feed options) that you already have in your list.
Known Issues
There is a known bug when you open the Import/Export OPML interface and later dismiss it. The overlay persists and causes the screen to be dimmed. A restart fixes this issue. I haven’t been able to trace it or reliably reproduce the issue.
Notes
- Version: 1.0.0
- Build 104.
- Pipe: PBeta-03
Public Beta - Round 2
Jul 5, 2018The second Public Beta of Elytra is now available on Testflight. I have also sent out the 3rd batch of invites to everyone who signed up.
To clarify how I’m sending out invites:
Every few days, I pick a batch of 100 (in order) and add them to the Testflight Public Beta list. This is allowing me to ensure that the server can handle the load. So far, it’s been smooth sailing.
Also, thank you to everyone who sent me emails reporting bugs and suggestions to improve the app. It’s been of immense help. As always, if you run into any issues when adding new feeds, send me an email with the link and I’ll take a look.
Here is the change-log for the latest build.
Improvements
- Favicons are now less rounded based on feedback where circles are usually reserved for people's photos & avatars.
- Improves Voice over support for long paragraphs by breaking them down into their distinct paragraphs.
- Introduced a subtle load-in animation for the Articles interface.
- Now when searching in an article, you can press the
ENTER
key to jump to the next result if one is available and theESC
key to dismiss the search context.
Fixes
- Fixes an issue where tapping on the cancel button in the Subscription Interface would lock up the process. The continue button no longer remains disabled.
- Fixed the text errors on the Subscription Interface.
- Fixed a crash that would occur if you navigated to Unread, then back and then to Bookmarks in quick succession.
- Fixed handling of URLs without the http: prefix.
- Fixed a Voice Over issue where it would only read the first sentence and the first word of the second sentence in a Paragraph.
- Fixed search highlighting on iPads
Notes
- Version: 1.0.0
- Build 103
- Pipe: PBeta-02
Public Beta
Jul 1, 2018A warm welcome to all the new Public Beta Testers.
Now that the cheesy stuff is out of the way, let’s get to the meat of this release.
What’s new
- Added a “Open in browser” button to the Article interface.
- Account Deactivation
- Implemented Accent colour.
- Recommendations interface
Improvements
- Improves the tinting of the refresh control for dark interfaces or after switching the theme.
- Improved the kerning for the System font for the Article’s title.
- Vastly improved GIF performance and memory consumption thanks to the FLAnimatedImage library.
- Fetching an favicon across all the available images (opengraph, apple-touch-icon and the favicon itself) based on weights. Apple-touch-icon is given a higher preference over the favicon now.
- When adding a new feed from the app, typing in http/s is now optional.
- When a feed has multiple endpoints, the list now uses head truncation so you don’t accidentally add the comments feed.
Fixes
- Fixed adding feeds from the share extension.
- Fixed the position of the popover (iPads) for the long tap interaction on feeds and folders.
- Added a default handler for the browser scheme when one isn’t selected.
- Fixed an issue where all buttons would remain in the disabled state if the cancel button in the Purchase interface was tapped during first run.
- Searching within an article should now work as expected. There is a known issue on iPads where the highlight doesn’t align with the characters you’re searching for.
Fixed a rare crash that would occur when dismissing the Unread interface while a page was loading.
Notes
- Version: 1.0.0
- Build 102.
- Pipe: PBeta-01
Beekeeping #4
Jun 19, 2018This is a good one!
Account Management
If you remember the early alpha days, the anonymous account management thing created a lot of issues you and I. Well, that’ll no longer be the case. This has been moved to a more concrete system.
However, do note that this may not correctly work on first run, so I recommend you to copy your account ID and keep it handy incase you need to restore your account.
What’s New
- There’s a new launch screen that guides you through your anonymous account setup process and subscription setup. During the betas, you won’t be charged for the subscription, so please go along with it. If you do get charged (Apple!), I’ll send you cookies worth the same amount.
- Access restrictions are in place when a subscription expires or lapses however they won’t be effect during the betas. They’ll get activated once the app releases on the App store.
- Animated GIFs now require you to tap on the GIF button to load the image and then the play button to play them. This is done so as to deter the usage of GIFs and save precious power and CPU cycles.
- Video elements are now natively supported (including livestream links)
- When adding new feeds, a visual dialog is now added to let you know that the app is processing your request.
Improvements
- Gallery items now correct announce captions for images when VoiceOver is enabled.
- Improved guided access control for gallery navigation
- Fixed an issue where labels of certain buttons were read incorrectly or mixed up.
- Fixed an issue where Voice Over sometimes did not correctly read the title of the active interface (usually occurs for modals).
What’s Fixed
- Fixed loading of bookmarks from the server during post-setup syncs.
- Fixed an issue where the “Move to Folder” interface used to show a checkmark against None even if a folder is selected.
- Fixed empty states not appearing correctly on some devices.
- Fixed the Author’s interface showing articles from all authors from that Subscription.
- Fixed a caching issue that caused old caches to be displayed instead of the latest information from the server.
Notes
- Version: 1.0.0
- Build 91.
- Pipe: Beta-04
Beekeeping #3
Jun 7, 2018The betas are coming to end soon. But this isn’t the last one. Not one bit. It is an interesting one nonetheless and builds on the previous beta release. You can read that here.
What’s new
- Added new fonts: Helvetica Neue, Merriweather Serif, IBM Plex Sans and Plex Serif and Spectral.
- On iPads with an external keyboard connected: major parts of the app are navigable via the keyboard directly. More information below.
- OPML imports and exports are now available.
- Updated the Share sheet icon.
- Empty states are now shown where appropriate.
- GIFs are no longer loaded and played by default. To load, tap the GIF icon in the bottom right corner of the image and to play it, a new play pause control is added. This is to prevent excessive power consumption and bandwidth usage.
- Videos are now supported when the video format is supported by the OS.
Keyboard Navigation
- In the Feeds or Feed interfaces, use the arrow keys to focus the previous or next item.
- Use the Enter key to select the focused row.
- In the articles interface, the up and down arrow keys are used for scrolling.
- Use ⌘ + up or down arrow keys to navigate between articles in the articles interface.
- Use the left or right arrow keys to navigate a gallery when it appears on screen.
- Other available options can be viewed by long pressing the ⌘ key on the keyboard.
Fixes
- Fixes bookmarks loading from the network again. Bookmarks are mean’t to be available offline.
- Fixes checkmark appearing in the Folder selection interface for the None row even though a folder was selected.
- Fixes background colour on the Feeds Interface header visible in landscape orientations.
- Fixes app not working when iCloud Drive was not enabled on a device.
- The Mark All Read button now only sends articles which are unread for marking. Reduces network usage.
Notes
- Version: 1.0.0
- Build 80.
- Pipe: Beta-03
Beekeeping #2
May 23, 2018Over the past few weeks, I’ve been carefully developing test suites for Yeti which simulate a few scenarios like: casual users, power users, long-form readers and the like. Over all the test suites, one thing stood out: The obscene amount of power wasted in downloading content which was never read in these simulated situations.
CPU
Every time you launch the app, three things happen:
- Your feeds are loaded including Folders information
- If any unread articles are available, those are loaded as well (upto a maximum of 25 in this cycle)
- Your bookmarks are synced. Any new bookmarks are downloaded.
Permitted that there is a network connection available, there’s a lot of data transmitted over the wire. Your phone’s modem is responsible for loading this data consuming considerable amount of power. When this reaches the CPU, it converts the data to Elytra’s internal model structures and is cached in the RAM.
However, in all of the simulated tests, not all articles were read. This lead to a lot of data that was never used. So to reduce this waste, I first decided to make all unread articles load with the content. This was a good first step. To improve this further, I tested again by returning no content on any of the articles.
In both of these cases, the articles were loaded on-demand when the simulated user opened the article.
Here’s how the CPU was impacted.
As you can see, stripping the data from the articles and loading it on demand saves a lot on the CPU processing power. Modern iPhone and iPad CPUs like the A10, A10x and A11 are really power efficient, but if the app can avoid any kind of overhead, it’s always worth stripping it off.
Data
Similar trends can be observed in Wireless data consumption. By stripping off the overhead, a lot of unnecessary data was avoided from being transmitted, and therefore loaded. This not only saves power, but also saves bandwidth on your devices and this is especially critical if you’re on a metered connection. This also saves me some $$ on server bandwidth costs.
A 8 times reduction in data costs is a huge gain. All these data points are aggregate averages across the various test suites.
Overall Power Consumption
As you can imagine, reducing CPU and data usage considerably impacts power consumption. This is not only great for your device’s battery, but also an invisible user experience benefit.
It’s immediately evident that this was a step in the right direction. Not only do we all save money, bandwidth and time, but also should be able to use our iOS devices for a few charge cycles more or at least that’s the vision.
This change is now available in the latest build of Elytra. Apart from this, here are few other things:
- The dark themes no longer cause jumpy navigation bars.
- There is a basic implementation of In-App purchases. You can try it out. This won’t affect anything in the app. Also, you aren’t charged during the Testflight run.
- Improves memory management for long form articles.
- Implements Cover images for articles that provide this information.
- Fixes line height of headings.
Notes
Version: 1.0.0
Build 73.
Pipe: Beta-02Beekeeping #1
May 14, 2018A few minor bugs slipped through the first beta. So this is a house keeping build that fixes some of those issues.
What’s fixed
- On iPads with enough horizontal space, the article helper view is aligned to the right. I’m still figuring out how to work this in RTL modes.
- When an article specifies a linebreak, Elytra’s text engine added extra space before and after the linebreak view. This is no longer the case.
- Fixed an odd line-spacing bug that popped up in iOS 11.3.1.
- Fixed 11.3.1’s kerning bug.
- Foot links scroll jump to section has been fixed where it never flashed the background colour to indicate the highlighted paragraph.
- Fixed a not so rare crash that would occur when removing an article from your bookmarks.
- Improvements to Attributions controller.
Notes
- Version: 1.0.0
- Build 69.
- Pipe: Beta-02
The Betas of Elytra
May 10, 2018Something is off? Something doesn’t sound right? Something doesn’t look right!
That’s it, it’s the new name and App icon. Yes, Yeti still remains our internal codename however, since this is the first Beta build, I couldn’t think of a better time to finally reveal the actual product name we’re going with: Elytra.
There’s also a new domain name. An
.app
domain. I’ve been waiting to acquire this domain so I can finally release the Beta.Well, here’s what’s new in the first Beta;
What’s new
- Dark Theme for iPhones & iPads
- Black Theme for iPhone X.
- Serif type (Using Georgia at the moment, please email me your font suggestions).
- Improved Memory management.
- Lowered disk usage (and therefore lower power consumption) when a post has lots and lots of images.
- Image galleries are now accessible including controls.
- Improved Quotes design.
- Improved code blocks rendering.
- Improved text rendering performance.
- Improved “Add To Elytra” (previously, “Add to Yeti”) share extension.
- Moved the Article Helper interface to the right edge on iPads. It moves to the left for RTL idioms.
What’s fixed
- Galleries with images with no height information are now rendered correctly.
- Galleries with more images than what can be fit horizontally (page control) are now rendered as groups of 5 photos per control.
- Fixes unread pull-to-refresh crash.
- The Title & author text is now aligned correctly with the rest of the text in the article interface.
- Fixed the “Add to Elytra” (previously, “Add to Yeti”) share sheet extension crashes.
Known issues
When working on some features and fixing some bugs, I ended up running into a lot of UIKit bugs. Following are some of the known issues Elytra will present which we have to depend on Apple to fix:
- When using a dark theme, the navigation bars will misbehave and present a lot of unexpected states and behaviours.
- When searching inside an article, the highlighted area is often mis-positioned to the left or right (this depends if you’re using a LTR or RTL idiom) however, scrolling up or down a little positions this highlight correctly.
Alpha - The finale
Apr 27, 2018The final epoch has been rung.
What's New
- Folders support
- Added GIF and webP support
- Improves lists rendering
- Blockquotes are now rendered more scemantically
- Added support for citations
- Added support for mark elements to highlight text in paragraphs and blockqotes
Fixes
- Fixes footlinks jumping to the wrong section
- Fixes a crash when an article has a lot of content. Like, over 10000 words!
- Attributions page is now fully functional.
- Fixed search for Feeds
- Fixed search for articles
The final alpha build is out. I look forward to hearing from you lot on the new improvements. As I now slowly work towards polishing the app up and work on the macOS app, I look forward to your criticism, feature requests and love/hate emails. Have a fun weekend, and enjoy reading.