Skip to content

Fix arm64 support, broken Cocoa bindings, and Pinboard API fetching#2

Open
staki1966 wants to merge 1 commit into
quicksilver:mainfrom
staki1966:fix-arm64-and-settings-persistence
Open

Fix arm64 support, broken Cocoa bindings, and Pinboard API fetching#2
staki1966 wants to merge 1 commit into
quicksilver:mainfrom
staki1966:fix-arm64-and-settings-persistence

Conversation

@staki1966
Copy link
Copy Markdown

@staki1966 staki1966 commented May 6, 2026

SocialBookmarks QS plugin was broken for me for a long time, it would always be automatically added to the list of disabled plugins. The principal issues were:

  1. Apple Silicon support was not there
  2. Pinboard API support needed modification
  3. Pinboard account settings were broken

I vibe-coded with AI the following changes and pinboard.in bookmarks now work for me and appear in my QS catalog.

  • Add local xcconfig files so the plugin builds standalone (was referencing /private/tmp/QS/Configuration/)
  • Build as universal binary (arm64 + x86_64) so the plugin loads on Apple Silicon
  • Fix header import (was self-importing instead of importing Cocoa/QSCore/QSFoundation)
  • Fix Localizable.strings file encoding (Mac Roman -> UTF-8)
  • Replace broken NSObjectController Cocoa bindings with programmatic settings management
  • Fix Pinboard API fetch: use GET instead of POST, use Authorization header instead of credentials in URL
  • Post QSCatalogEntryChangedNotification so settings persist across restarts

Providing this as-is with no guarantees in the hope others might find it useful. Note that only pinboard.in part was interesting to me so I did not check del.icio.us and ma.gnolia parts at all.

Test plan

  • Build the plugin with Xcode
  • Install in ~/Library/Application Support/Quicksilver/PlugIns/
  • Verify plugin loads (not marked as disabled)
  • Configure pinboard.in with username/password in catalog entry settings
  • Refresh catalog and verify bookmarks appear
  • Restart Quicksilver and verify settings persist

  - Add local xcconfig files so the plugin builds standalone (was referencing /private/tmp/QS/Configuration/)
  - Build as universal binary (arm64 + x86_64) so the plugin loads on Apple Silicon
  - Fix header import (was self-importing instead of importing Cocoa/QSCore/QSFoundation)
  - Fix Localizable.strings file encoding (Mac Roman -> UTF-8)
  - Replace broken NSObjectController Cocoa bindings with programmatic settings management
  - Fix Pinboard API fetch: use GET instead of POST, use Authorization header instead of credentials in URL
  - Post QSCatalogEntryChangedNotification so settings persist across restarts
Copy link
Copy Markdown
Member

@skurfer skurfer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks OK with just my one question.

We don’t want to copy the configuration files into the plug-in repos though, and I’m thinking all of those buildSettings changes should come out except maybe the PRODUCT_NAME.

- (void)populateFields {
NSLog(@"populating: %@/%@", [self.selectedEntry.sourceSettings objectForKey:@"username"], [self.selectedEntry.sourceSettings objectForKey:@"site"]);
NSMutableDictionary *settings = self.selectedEntry.sourceSettings;
NSLog(@"QSDelicious: populateFields, settings=%@", settings);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this going to log any sensitive information?

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