Skip to content

Releases: LinkoraApp/Linkora

0.16.0

16 Feb 21:01

Choose a tag to compare

If you use sync-server, you must use the latest sync-server version, v0.3.0 (at the time of writing this).

Performance Improvements

These benchmarks are based on 100K+ rows collectively across multiple tables, with a JSON file of 18.27 MB and an HTML file of 7.18 MB (both exported from the same 100K+ rows dataset, though the HTML version excludes references to tags, panels, panel folders, images, and notes since browsers don't support these in bookmarks).

Both import operations are stable and take linear time to complete instead of quadratic. These reports are based on OPPO A77S hardware.

  • Importing via JSON now uses 56.1% less memory (heap) and, on average, 17% more CPU efficiency.

  • Importing via HTML now uses 58.7% less memory (heap). While it uses 6.2% more processing power on average, this increased throughput allows it to complete successfully without the previous version's crashes.

    performance_comparison
    • Note: The performance gains might actually be higher than what is listed here. In the previous versions, both HTML and JSON imports crashed before finishing, so this comparison is based on the current stable version (0.16.0) against the recorded usage of the old version right before it crashed.
  • HTML exporting, copying of folders, and a couple of others now run in linear time instead of quadratic.

  • Pagination is now implemented using a cursor-based approach instead of offset-based.

    • While this might be overkill for an app like Linkora, this prevents the app from processing thousands of skipped rows just to reach the current page, significantly reducing unnecessary database overhead during deep scrolls.

What's New

  • Added an option to force write default internal folder IDs to respective links (in data settings screen)

Fixes

  • Fixed the "PROCESS ENDED" crashes that occurred during large data imports.

Full Changelog: release-v0.15.2...release-v0.16.0

0.15.2

06 Feb 16:14

Choose a tag to compare

Fixes

  • Sets AMOLED theme based on preference as expected (android-only) (#132)

As the desktop version remains unchanged, you can use builds from https://github.com/LinkoraApp/Linkora/releases/tag/release-v0.15.1 as usual.

Full Changelog: release-v0.15.1...release-v0.15.2

0.15.1

31 Jan 09:51

Choose a tag to compare

Fixes

  • Updated the refresh type component label in the data settings screen to show "Image" instead of "Important Links"; functionality remains unchanged (v0.15.0) (idk how i missed this loll)

v0.15.0 release notes: https://github.com/LinkoraApp/Linkora/releases/tag/release-v0.15.0

0.15.0

30 Jan 14:47

Choose a tag to compare

What's New

  • A custom reactive and resource-aware 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.

Contributions


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: release-v0.14.0...release-v0.15.0

[PREVIEW] 0.15.0

16 Jan 19:40

Choose a tag to compare

[PREVIEW] 0.15.0 Pre-release
Pre-release
  • custom pagination for loading data very efficiently
  • scrollable components for selecting tags and folders instead of full blown lists
  • material 3 expressive "loading" indicators

  • feat: couple tag creation and tag list for individual components into TagSelectionComponent
  • feat: use ContainedLoadingIndicator for indicating "loading" status in CollectionsScreen
  • feat: add pagination support for add-a-new-link dialog component
  • feat: add pagination support for rename-a-link dialog component
  • feat: add pagination support for collections
  • refactor: lil improvements
  • add sliding window test for the custom Paginator
  • feat: implement a custom paginator to load the data batch wise

27/01/26

  • feat: add support for showing tags, date in link views (#122)
  • feat: show the folder path in search results (#71)
  • feat: preload data when nearing end of list with paginator(s)
  • refactor and fix issues in TODO()s after pagination refactoring
  • feat(desktop): use material 3 expressive "loading indicators" when saving links
  • feat: use current system time epoch when importing the data
  • refactor: use enum instead of sealed class for sync-server routes
  • feat(pagination): show empty data indicator when data is empty
  • feat(pagination): show proper loading indicator when data is being loaded
  • feat: add pagination support for home screen panel folders
  • chore: convert app icon's image resources to webp
  • feat: use momo_signature font for app label
  • feat: add pagination support for Search
  • feat: add pagination support for collection screens

[PREVIEW] 0.14.1

13 Nov 21:25

Choose a tag to compare

[PREVIEW] 0.14.1 Pre-release
Pre-release

This is a preview release, which means things might not be fully implemented or tested, and might only work on my machine. You can still open issues for "bugs" or improvements. The tag this release is published under may also not match the uploaded builds.

Last Updated: 06/01/26

Changes

  • feat(android): add auto-save support for links shared from other apps (#121)
  • fix(android-mobile): use proper padding for tags-row in menu when image header is disabled
  • feat: use preferred action on grid link item click (#121)
  • feat: add support for Google Sans Flex font (defaulting to Poppins)

Happy New Year???

  • feat(android): verify the notification permission status before starting auto-save service
  • feat: support date and time display in link components (#51)
  • feat: process links refreshing asynchronously with concurrency of 15

0.14.0

03 Nov 10:53

Choose a tag to compare

If you use sync-server, you must use the latest sync-server version, v0.2.0 (at the time of writing this).

What's New

  • Tags - We do tags now, yup, you read that right, Linkora now supports tags [#12]
    • Folders and Tags are in the same Collection screen; you can slide or manually switch from the collection switcher
    • JSON-based exports support tags, HTML exports don't
    • Your preference to shrink or expand the tag section when saving links is persisted
  • New alternate icons on Android, icon made by LOLCATpl (on Discord) supports themed icon alongside legacy & regular icons, other icons don't. You can change the icon from the general settings screen
  • Folders can be searched and sorted [#43] while saving a link; the manual tree still exists if you prefer that
  • Double-tap on the search icon from the android-mobile bottom nav will automatically open the search bar
  • All clickable elements now show a pointer cursor on hover
  • Desktop now follows a minimum window size
  • During multiple link selection, the addresses of selected links can be shared (split by a line) [#111]

Improvements

  • Grid/Staggered (Link) Component has been completely rewritten
  • Menu bottom sheet UI for links has been improved

These two are also based on the designs created by LOLCATpl 🦅🦅🦅

Fixes

  • Resetting the local database (remote if preferred) has been re-added [#107]

Internals

  • Lots of refactoring around navigation in the collections screen - removed all the singletons that were guiding most of the navigation context across all platforms, which was a mess. And all the other refactorings that went with it.
    • I'll refactor more as I keep seeing stuff that can be done better.
  • I have started using context params; existing extension functions will stay, but I'm gonna use more of these wherever it makes sense.

Full Changelog: release-v0.13.7...release-v0.14.0

[PREVIEW] 0.14.0

28 Sep 10:42

Choose a tag to compare

[PREVIEW] 0.14.0 Pre-release
Pre-release

Last Updated: 24/10/25 1:30 PM IST


I'm planning to publish Linkora on Google Play. As of now, I need at least 12 testers and this test will continue for at least 14 days, to make the app available globally, so, if you're interested, please send your email address via:

https://forms.gle/zjTuMa8VXPvHg7nz9

I'll contact you via email once a release is available for testing.


This preview must not be used for regular usage, as the implementation for remote sync isn't yet completed/partially implemented it's done, but there will be no server previews; a new version will be published soon. You must only test this locally without connecting to the server.

Builds released under this release may be updated at any time and may not match the build(s) of the current tag this release is published under.

Changes

  • we do tags now [#12]
  • internal improvements (a lot)
  • improved grid link component
  • improved menu sheet
  • add support for searching & sorting folders during link addition
  • add ability to expand and collapse tags section in AddANewLinkDialogBox (persisted)
  • use bottom sheet for AddANewLinkDialogBox content instead of dialog box (on android-mobile)

Known issues

  • Import fails with tags connected to different links than the source, i.e., Tags export works, but import doesn't. Fixed
  • Tags do not follow the selected sorting order. Fixed
  • Main FAB misbehaves, folder creation, editing, and multi-selection (for copy, moving, and deleting) don't work as expected (well, I'm refactoring the entire navigation code, so this is expected)FIXED
  • Copying links with multi-action doesn't copy their associated tags (I didn't even implement this)FIXED

[PREVIEW] 0.13.8

01 Sep 15:18

Choose a tag to compare

[PREVIEW] 0.13.8 Pre-release
Pre-release

Note: Builds released under this release may be updated at any time and may not match the build(s) of the current tag this release is published under.

Changes

  • Share one or multiple links at once #111

0.13.7

25 Jul 07:46

Choose a tag to compare

What's New

  • Added option to select export and backup locations [#97]

    • Android: You must select the locations after installing this version, as the app has migrated to Storage Access Framework (SAF). There is no default location anymore; you must choose locations for exports and backups to work. The app will persist these locations with the necessary permissions, so you only need to select them once.
    • Desktop: The default location remains unchanged.
  • Added option to auto-delete old backups after reaching a specified limit [#97]

    • Note: This works exclusively on existing backup files. Current files being backed up are not counted toward the limit.
  • Snapshots moved to new location: Data > Snapshots.

Fixes

  • Fix duplicate screen in back stack by @tuuhin in #103
  • Exports & backups now use a new timestamp pattern to prevent file system conflicts. [#101]

New Contributors


Internals

  • refactored to a proper systematic manual DI 🦅🦅🦅

Full Changelog: release-v0.13.6...release-v0.13.7