Недавнее обновление Discourse странным образом сломало плагин outlet

Одно из изменений в Discourse за последнюю неделю или около того сломало мой плагин, и я не могу понять, в чём именно проблема и как её исправить. Плагин работал безупречно годами, пока не случилось это.

Плагин выполняет различные задачи, но та, которая кажется здесь наиболее релевантной, — это добавление кнопки на страницу профиля пользователя.

Теперь, когда я захожу на эту страницу для любого пользователя, большая часть страницы не отображается (включая кнопку, которую мой плагин должен добавить):

(Если я отключаю плагин через его кнопку «Настройки», страница отображается корректно.)

Консоль JavaScript в Chrome показывает следующее исключение и трассировку стека каждый раз при обновлении этой страницы:

Я не совсем понимаю эту ошибку, так как это не мой код, а t, которая «не является функцией», не находится на строке, где возникает исключение, или рядом с ней. Это довольно запутанно. Но я не эксперт по JS, возможно, я просто что-то упускаю.

При пошаговом выполнении в отладчике Chrome проблема возникает на этой строке во время обработки шаблона моего плагина, но я не вижу, что именно вызывает проблему: нужно ли мне что-то изменить или обновить, или это ошибка в самом Discourse.

Код JS плагина и шаблон HBS, которые, как я полагаю, вовлечены, находятся в моём коннекторе user-profile-primary, который можно найти здесь:

Я не уверен точно, но мне казалось, что, возможно, эти последние коммиты Discourse могли быть вовлечены:

Любые предложения будут очень кстати!

Привет, @LeoDavidson, спасибо, что подняли эту проблему. Вы почти наверняка правы: это связано с этими коммитами — я разберусь и постараюсь выяснить, что изменилось. Я не планировал вносить никаких изменений в поведение.

Тем временем этот PR должен решить проблему, перенеся коннекторы вашего плагина в более стандартную структуру каталогов:

Огромное спасибо! И за PR, и за такую скорость. Я только что применил изменения, и теперь всё отлично!

Я изучил, что вызвало это изменение в поведении. Коннекторы располагались следующим образом:

assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.js
assets/javascripts/discourse/templates/user/connectors/{outlet-name}/{unique-name}.hbs

Лишний /user/ в пути означает, что он не обнаруживается нашей логикой unColocateConnectors.

Я поискал в all-the-plugins и all-the-themes, но не нашёл других случаев такого расположения директорий. Поэтому пока я оставлю всё как есть, если не поступит новых сообщений о проблемах.