github LinkoraApp/Linkora release-v0.15.0
0.15.0

6 hours ago

What's New

  • A custom reactive paginator is implemented in all the collection-based screens; Linkora will now load data faster and in a more efficient way than it ever did.
    • 20 items per page/batch; auto-cancels and re-subscribes listening to the pages based on which pages are being displayed; at max 3 page read-connections will be active per screen.
  • Links can be auto-saved when sharing from other apps (#121).
  • Added support for Google Sans Flex Font.
  • Date and time of a link addition can now be shown in the link views (enabled by default). (#51)
  • Individual links can be refreshed based on either image/title or both, instead of force-refreshing everything. (#36)
    • This same implementation is added when you are refreshing all the links from the data settings screen, and all of the links can be refreshed concurrently instead of sequentially.
    • Default concurrent refreshes count is 15; this can be changed as per your preference.
  • Material 3 Expressive "Loading" indicators are now used in certain components.
  • New fixed-size scrollable components are used when selecting tags and folders during link additions or editing the links (which also supports the pagination implementation) replacing full-blown lists.
  • Folder path is now shown in the search results (only for folder-based links & folders) (#71).
  • Tags, date & time, and other elements are now supported in all of the link views. (#122)
  • Links can now be force-saved even if the retrieval fails (enabled by default) (#108).
  • Custom image URLs can now be added while saving or editing the links (#52).
  • URLs of the links can also be edited; make sure you refresh after editing the URL to update title and image (#33).
  • Both desktop and Android builds now use a bundled SQLite driver as some of the operations aren't supported in older Android versions (including LineageOS 20 (Android 13) which Waydroid is based on).

And a couple of other things which I'm sure I missed mentioning above.

Internals

Well, there's a new paginator class which handles pagination stuff. While my initial design was to implement cursor-based since it's much faster (if you are scrolling even 100k+ items manually) than the current offset-based implementation, I thought of implementing window-based (idk, it popped randomly loll). I might change it to cursor-based in future updates.

Besides this, things are now based on both MVVM and MVI (MVVIM-SH) architectural patterns (there were things I wanted to be in a different way, playing around with code for absolutely no reason).

Added a new UnifiedLazyState interface for "detecting" if nearing the end of the list to do stuff with the paginator. Since there was no common interface for LazyGridLayoutInfo, LazyListItemInfo, and LazyStaggeredGridItemInfo that provided the visibleItemsInfo & totalItemsCount (all three have common properties but use individual interfaces), so yeah, that's that.

Full Changelog: preivew-v0.15.0...release-v0.15.0

Don't miss a new Linkora release

NewReleases is sending notifications on new releases.