Hey Denis, this is super cool! I will take a look at that and try to improve. (Sorry, the end of my PhD is approaching, so I don���t have much time to work on other stuff :) )

Uko

On 13 Feb 2017, at 16:04, Denis Kudriashov <dionisiydk@gmail.com> wrote:

I commit new stable version.
Now browser plugins can decorate any tool (which can be created by other plugins). 

I found that annotating text by class or package takes too long time. So I disable it. Look at implementors of #annotateTextWithCritiquesOf: to enable it and to see the problem.
QA plugin morph still not works when it is built in background. (it hangs on "updating critiquies")

2017-01-31 9:52 GMT+01:00 Denis Kudriashov <dionisiydk@gmail.com>:

2017-01-30 15:29 GMT+01:00 Denis Kudriashov <dionisiydk@gmail.com>:
You will see new Calypso-Plugins-Critic-Browser package. I add decorators support to TextEditorTool. And critic plugin just adds CriticDecorator into required tools. 
Sadly it is not working. Critiques are not shown somehow. 
I leave it for you to fix it. Probably reason is that full tool morph is prepared in background. So critiques are added when morph is not in World. 
I hope you can find solution.

And to get working critiques disable background tabs:

ClyBrowserTabTool>>addInto: aBrowser
containerTab := TabMorph
label: self defaultTitle
icon: self defaultIcon
morph: self.
self build.
containerTab when: #tabDeleted send: #tabDeleted to: self.
containerTab model: self.
aBrowser addTab: containerTab

So question why it is not working when morph is built from background process?