Closed hmelman closed 10 years ago
Thanks for the report. Can you save off a copy of Triggers.plist
and share it (privately if you want) before fixing any more of them? I’d like to see what’s causing it to only show identifiers.
Most of them seem to get sorted out, but I’m wondering why they’re getting completely restructured (and in some cases, broken). My current theory is that the triggers are re-saved before the Current Application proxy is added to the catalog. #1784 might prevent that (if I’m even right), but I don’t think that’s the whole story.
Here’s what happens to the trigger for hiding the current application:
Before:
<dict>
<key>ID</key>
<string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
<key>anchorMask</key>
<integer>2</integer>
<key>command</key>
<dict>
<key>actionID</key>
<string>AppHideAction</string>
<key>directID</key>
<string>QSCurrentApplicationProxy</string>
</dict>
<key>enabled</key>
<true/>
<key>eventType</key>
<integer>8</integer>
<key>type</key>
<string>QSMouseTrigger</string>
</dict>
After:
<dict>
<key>ID</key>
<string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
<key>anchorMask</key>
<integer>2</integer>
<key>command</key>
<dict>
<key>actionID</key>
<string>AppHideAction</string>
<key>directArchive</key>
<dict>
<key>class</key>
<string>QSObject</string>
<key>data</key>
<dict>
<key>public.utf8-plain-text</key>
<string>QSCurrentApplicationProxy</string>
</dict>
<key>properties</key>
<dict>
<key>QSObjectName</key>
<string>QSCurrentApplicationProxy</string>
<key>QSObjectType</key>
<string>public.utf8-plain-text</string>
</dict>
</dict>
<key>directID</key>
<string>QSCurrentApplicationProxy</string>
</dict>
<key>enabled</key>
<true/>
<key>eventType</key>
<integer>8</integer>
<key>type</key>
<string>QSMouseTrigger</string>
</dict>
Looking at the before and after plists, I have a sneaky suspicion it's to do with my changes that make sure data keys are always UTIs, since the after plist is full of UTIs. Maybe an NSStringPboardType
was lying around in the old plist, and then got converted over to the UTI which messed things up...?
Howard is hopefully looking for a pre-all-of-this-Triggers.plist, which should shed some like as to how the that ever occurred
...and here's a before before. This plist (if I got it correct, @hmelman ) is the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.
You'll note my suspicion from the previous comment, there are 'data' keys set in the plist of type string
. Not what we really want. But perhaps somewhere QS is reading those instead of the 'property' key?
<dict>
<key>ID</key>
<string>0E525806-1B30-447B-AE45-5A78C8E08F9B</string>
<key>anchorMask</key>
<integer>2</integer>
<key>command</key>
<dict>
<key>actionID</key>
<string>AppHideAction</string>
<key>directArchive</key>
<dict>
<key>class</key>
<string>QSObject</string>
<key>data</key>
<dict>
<key>NSStringPboardType</key>
<string>QSCurrentApplicationProxy</string>
<key>public.utf8-plain-text</key>
<string>QSCurrentApplicationProxy</string>
</dict>
<key>properties</key>
<dict>
<key>QSObjectName</key>
<string>QSCurrentApplicationProxy</string>
<key>QSObjectType</key>
<string>NSStringPboardType</string>
</dict>
</dict>
<key>directID</key>
<string>QSCurrentApplicationProxy</string>
</dict>
<key>enabled</key>
<true/>
<key>eventType</key>
<integer>8</integer>
<key>type</key>
<string>QSMouseTrigger</string>
</dict>
the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.
Are you sure? Would it have used public.utf8-plain-text
as a key before 1.2.0?
... more analysing
I think Rob is correct, and that Howard's problem isn't 400C-related. Looking at that plist above, there are two bits of info for the dObject
- directID
and directArchive
.
directID
is the most reliable (and is checked for first - see QSCommand.m:353), but if the object isn't in QSLib (for some reason, it probably wasn't for Howard) then the other directArchive
dict is used - which clearly shows above represents some kind of string object.
The fix is probably to only load triggers once the catalog has finished loading
Are you sure? Would it have used public.utf8-plain-text as a key before 1.2.0?
Those are Howard’s words, not mine (why I asked for clarification…!) but I take your point. Anyhow, I think we know what the problem is (and am working on a fix)
(and I’m on IRC if need be) On 4 Meh 2014, at 23:25, Rob McBroom notifications@github.com wrote:
the plist that existed before Howard ever tried QS 400C, and which was good to go on QS 1.1.3.
Are you sure? Would it have used public.utf8-plain-text as a key before 1.2.0?
— Reply to this email directly or view it on GitHub.
The fix is probably to only load triggers once the catalog has finished loading
Yes, triggers should wait for the catalog without question, even if that doesn’t fix this specific thing.
An update on what I did a few days ago: so I tried to make triggers wait for the catalog... but that's really difficult.
Because the catalog is populated by plugins, and triggers are added by (the same) plugins. So when we're loading a plugin, we blindly load the catalog and triggers one after the other. How the hell are we meant to tell each plugin to wait loading its triggers until after all the catalog entries have been scanned (which we can't know anyway)? :(
I could have sworn there was a notification when the catalog was done, but I guess it’s just for individual entries. The only things I can think of seem like hacks. For example:
dObject
and iObject
. If either is text, call -[QSLib objectWithIdentifier:]
to see if a “real” object exists for it.So if this isn't a 1.2.0 problem, can we bump its milestone to 2.0? :)
I think both your solutions are a bit too 'hacky' for the time being. I guess we need to go down the route that Nicholas went down... and rewrite everything to make it properly modular
So I gather you just loop on each plugin and load everything in them? And it's too difficult to have several loops, first loading catalog, then triggers, etc.?
If this does get bumped to 2.0, how about a setting (enables via defaults if necessary or always on) to do hacky choice 1. Reload all triggers 2 mins after launch. If that means I don't have to fix my triggers after every launch, that's a win for me until a real fix can be incorporated.
So if this isn't a 1.2.0 problem, can we bump its milestone to 2.0? :)
If it’s going to crap on people’s triggers, we should probably do something now. I admit, I haven’t had time to dig in and figure out what’s broken. Well, I guess I understand that. I just don’t understand why no one noticed before. I wonder if my changes in #1784 to prevent triggers from getting reloaded all over the place for no reason unmasked this bug.
When a trigger is run, check the
dObject
andiObject
. If either is text, call-[QSLib objectWithIdentifier:]
to see if a “real” object exists for it.
Assume this goes a step further and updates the trigger to contain the actual object (if found).
Would this really be so bad? How many triggers intentionally contain text? That would mean that the overhead of testing text objects would only be incurred once (if the trigger is actually broken), because on subsequent invocations of the trigger, the text object won’t be there any more.
Still hacky maybe, but not complicated or expensive.
I think I understand the implications and it seems fine to me. I've only ever had a couple of triggers with text in them. Mostly to paste fixed text like my system details or an URL. I used to just enter them as text in the trigger, now I make sure the text exists in the shelf (does that matter here?). Only other good use I can think of is if someone regularly searches for some text or emails to a specific address (and I'm not sure that counts as text).
Even still, as I understand the proposal, these things would still work, they'd just be a little slower because you'd first check if the text was a (probably proxy) object. I'm guessing that overhead won't be noticable to the user. Seems like a perfectly reasonable workaround.
I’ve implemented the proposed change on a local branch. Try this build and see if it fixes the problem.
(It’s based on master
, so the version number and release notes are behind, but the actual code should be otherwise identical to build 400C.)
Seems to have the same problem. My mouse trigger gets it's name changed and doesn't seem to work (yes I'm sure I'm using the downloaded version). Here's a good opportunity to test my "paste my version details from shelf trigger) and yes I finally moved to Mavericks this weekend. There's no discernible lag. QS 1.2.0 (400C) 10.9.3, 3.4 GHz i7 iMac, 8GB RAM
Those version details are edited by hand, right? Because if you’re using the one I built this morning, the version should be “1.1.0:repairTrigger”. I replaced the objects in the command, which should update the trigger (in memory). I’ll see if there’s anything else I need to do. At the very least, I’ll add some logging to try and get an idea what’s going on.
Yes, edited by hand.
OK. Same code, but it should log what it sees to the Console…
To give you an idea what to look for, these are the lines I added:
NSLog(@"direct object primary type: %@", [[cmd dObject] primaryType]);
NSLog(@"direct object is text: %@", self);
NSLog(@"checking catalog for %@: %@", ident, realObject);
NSLog(@"new direct object for trigger: %@", [[cmd dObject] displayName]);
NSLog(@"indirect object primary type: %@", [[cmd iObject] primaryType]);
NSLog(@"indirect object is text: %@", self);
NSLog(@"checking catalog for %@: %@", ident, realObject);
NSLog(@"new indirect object for trigger: %@", [[cmd iObject] displayName]);
Didn't see those. Quit my QS. Started yours. (at 5:43) Hide Current App mouse trigger didn't work in same way. Tried using it, it didn't work. Fixed it. Used it and it worked. Quit your QS. Started it up again (at 5:47), tried using mouse trigger and it didn't work.
6/30/14 5:43:31.391 PM Quicksilver[726]: Cannot find executable for CFBundle 0x7fe795d5fc70 </Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKArray is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKDictionaryEnumerator is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.689 PM Quicksilver[726]: objc[726]: Class JKDictionary is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class JSONDecoder is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class JKSerializer is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMDatabase is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMStatement is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.690 PM Quicksilver[726]: objc[726]: Class FMResultSet is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:43:31.768 PM Quicksilver[726]: New Version: Purging all Identifiers and Forcing Rescan
6/30/14 5:43:31.777 PM Quicksilver[726]: Updated: Forcing Plugin Check
6/30/14 5:43:31.784 PM Quicksilver[726]: Could not find image named 'B7C43F23-DD71-4319-A130-F5C52F29DCB4'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named '60461255-0193-4D9C-AC6F-9C3B5B65FAD6'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named 'A25B83C1-3F84-46F1-87A6-AB19B10DD230'.
6/30/14 5:43:31.785 PM Quicksilver[726]: Could not find image named '8C040B9F-22D2-48B8-A50B-19AD2B98BD0C'.
6/30/14 5:43:32.189 PM Quicksilver[726]: bad data for Apple URL pasteboard type
6/30/14 5:43:32.189 PM Quicksilver[726]: bad data for public.utf16-external-plain-text
6/30/14 5:44:05.825 PM Quicksilver[726]: NSAlert is being used from a background thread, which is not safe. This is probably going to crash sometimes. Break on void _NSAlertWarnUnsafeBackgroundThreadUsage() to debug. This will be logged only once. This may break in the future.
6/30/14 5:44:11.252 PM Quicksilver[726]: *** Assertion failure in -[NSMenu itemAtIndex:], /SourceCache/AppKit/AppKit-1265.21/Menus.subproj/NSMenu.m:865
6/30/14 5:44:11.253 PM Quicksilver[726]: Invalid parameter not satisfying: (index >= 0) && (index < [_itemArray count])
6/30/14 5:44:11.261 PM Quicksilver[726]: (
0 CoreFoundation 0x00007fff850ad25c __exceptionPreprocess + 172
1 libobjc.A.dylib 0x00007fff8dc80e75 objc_exception_throw + 43
2 CoreFoundation 0x00007fff850ad038 +[NSException raise:format:arguments:] + 104
3 Foundation 0x00007fff83f0fd41 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 189
4 AppKit 0x00007fff8c2ace76 -[NSMenu itemAtIndex:] + 164
5 AppKit 0x00007fff8c333931 -[NSPopUpButtonCell selectItemAtIndex:] + 411
6 Quicksilver 0x00000001028735e4 Quicksilver + 95716
7 AppKit 0x00007fff8c573146 -[NSTableView preparedCellAtColumn:row:] + 1437
8 AppKit 0x00007fff8c5cc818 -[NSOutlineView preparedCellAtColumn:row:] + 52
9 AppKit 0x00007fff8c572a5e -[NSTableView _drawContentsAtRow:column:withCellFrame:] + 44
10 AppKit 0x00007fff8c5cd28f -[NSOutlineView _drawContentsAtRow:column:withCellFrame:] + 91
11 AppKit 0x00007fff8c572793 -[NSTableView drawRow:clipRect:] + 1629
12 QSInterface 0x0000000102a29671 -[QSOutlineView drawRow:clipRect:] + 340
13 AppKit 0x00007fff8c571fed -[NSTableView drawRowIndexes:clipRect:] + 776
14 AppKit 0x00007fff8c5cc495 -[NSOutlineView drawRowIndexes:clipRect:] + 113
15 AppKit 0x00007fff8c43b331 -[NSTableView drawRect:] + 1484
16 AppKit 0x00007fff8c416557 -[NSView(NSInternal) _recursive:displayRectIgnoringOpacity:inGraphicsContext:CGContext:topView:shouldChangeFontReferenceColor:] + 1082
17 AppKit 0x00007fff8c41600d __46-[NSView(NSLayerKitGlue) drawLayer:inContext:]_block_invoke + 186
18 AppKit 0x00007fff8c415e03 -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 2297
19 AppKit 0x00007fff8c4154f8 -[NSView(NSLayerKitGlue) drawLayer:inContext:] + 108
20 QuartzCore 0x00007fff8356e812 CABackingStoreUpdate_ + 2220
21 QuartzCore 0x00007fff8356df60 ___ZN2CA5Layer8display_Ev_block_invoke + 59
22 QuartzCore 0x00007fff8356df1c x_blame_allocations + 84
23 QuartzCore 0x00007fff8356da2b _ZN2CA5Layer8display_Ev + 1539
24 AppKit 0x00007fff8c4153c3 _NSBackingLayerDisplay + 235
25 AppKit 0x00007fff8c3ec74b -[_NSViewBackingLayer display] + 811
26 QuartzCore 0x00007fff8356d162 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 590
27 QuartzCore 0x00007fff8356c8b1 _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 35
28 QuartzCore 0x00007fff8356c33c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 236
29 QuartzCore 0x00007fff8356bfd6 _ZN2CA11Transaction6commitEv + 388
30 QuartzCore 0x00007fff8357c761 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 71
31 CoreFoundation 0x00007fff84fddd67 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
32 CoreFoundation 0x00007fff84fddcd7 __CFRunLoopDoObservers + 391
33 CoreFoundation 0x00007fff84fcee94 CFRunLoopRunSpecific + 340
34 HIToolbox 0x00007fff87d8ba0d RunCurrentEventLoopInMode + 226
35 HIToolbox 0x00007fff87d8b7b7 ReceiveNextEventCommon + 479
36 HIToolbox 0x00007fff87d8b5bc _BlockUntilNextEventMatchingListInModeWithFilter + 65
37 AppKit 0x00007fff8c2b524e _DPSNextEvent + 1434
38 AppKit 0x00007fff8c2b489b -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 122
39 AppKit 0x00007fff8c2a899c -[NSApplication run] + 553
40 AppKit 0x00007fff8c293783 NSApplicationMain + 940
41 Quicksilver 0x000000010285dce4 Quicksilver + 7396
42 ??? 0x0000000000000002 0x0 + 2
)
6/30/14 5:44:18.367 PM Quicksilver[726]: CoreAnimation: warning, deleted thread with uncommitted CATransaction; set CA_DEBUG_TRANSACTIONS=1 in environment to log backtraces.
6/30/14 5:47:46.237 PM Quicksilver[759]: Cannot find executable for CFBundle 0x7fdedc133590 </Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSExtraScriptsPlugIn.92.qsplugin> (not loaded)
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKArray is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKDictionaryEnumerator is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKDictionary is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JSONDecoder is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class JKSerializer is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMDatabase is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMStatement is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:46.337 PM Quicksilver[759]: objc[759]: Class FMResultSet is implemented in both /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/com.blacktree.Quicksilver.QSFirefoxPlugIn.A8.qsplugin/Contents/MacOS/Firefox Module and /Users/hmelman/Library/Application Support/Quicksilver/PlugIns/se.stdin.quicksilver.GoogleChrome.22.qsplugin/Contents/MacOS/GoogleChrome. One of the two will be used. Which one is undefined.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named 'B7C43F23-DD71-4319-A130-F5C52F29DCB4'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named '60461255-0193-4D9C-AC6F-9C3B5B65FAD6'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named 'A25B83C1-3F84-46F1-87A6-AB19B10DD230'.
6/30/14 5:47:47.737 PM Quicksilver[759]: Could not find image named '8C040B9F-22D2-48B8-A50B-19AD2B98BD0C'.
Well, good news and bad news. That means it’s not even getting to the point where it tries to execute the trigger. That seemed suspicious, because I was able to see some of the log messages with my triggers. I recreated what you have exactly and I can reproduce it. I seems to be specific to Mouse triggers.
In any case, I should be able to get to the bottom of it quickly now.
I can confirm that #1843 is fixed for me in 400C. But I found that my existing triggers using the Current Selection Proxy objects were broken. I recreated some and they work fine. In the image below I fixed the first three, the others are broken (though the Finder Selection one is working. The broken ones end up searching for the text "QSGlobalSelectionProxy". In the second image you can see other Proxy objects that are broken (they all seem to have that icon).