Skip to content

Conversation

@rbdr
Copy link

@rbdr rbdr commented Sep 8, 2025

Hi everybody! This is my first contribution to a QS plugin, and it's fairly sizeable as it rewrites most of the plugin. So I completely understand if that alone is a rejection 😬 .

I'll try to explain what changed, why and how to hopefully make it easier.

What Changed (As a user of the plugin)

  • It adds support for Linkding, a self-hosted social bookmarks service that doesn't use the delicious API.
  • It adds support for any delicious/pinboard compatible instance by allowing a "self-hosted" option that lets you specify the host.

What Changeed (In the code)

  • A SocialSites enum that translates the tags to a human readable label.
  • It introduces providers to handle the actual API interactions for different websites. This would mean that if we want to add support for another service that isn't compatible with either of those, it would involve adding a new provider and SocailSite, and would have less of a chance to break the other sites.
  • To support that, there's a protocol + a factory. The factory is pretty much glue code.
  • Nib updated to Xib, it changes the whole binding logic to use selectedEntry + logic to show/hide host depending on the site.
  • It changes the keychain logic so it no longer uses URLs but generic passwords. It uses the catalogue identifier as part of the account to avoid collisions
  • It adds the objectHasChildren: method so tags correctly get populated with children.
  • The main code depends more on the values passed to the entry rather than state being set via currentEntry.

Potential Improvements I would like to make.

  • I plan on adding an action to be able to add URLs
  • Actually read the pagination data from the linkding response. Right now it requests a limit of 10000 :P
  • Clear the cache after a while
  • I thought about removing ma.gnolia.com and del.icio.us since the services are defunct, but wasn't sure if anyone is using tricks (eg. via /etc/hosts or something like vespernet) to connect to other instance or something like that, so decided against that for now.

@n8henrie
Copy link
Member

Wow, this is amazing, thanks! I haven't really used this plugin but I'll dig through and make sure it seems to work. If so would be happy to merge -- thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants