Amethyst 1.15.2 раньше загружает вложенные комментарии NIP-22
Amethyst 1.15.2 добавляет отдельные фильтры корня для вложенных комментариев NIP-22 и исправляет поиск обновлений pull request по NIP-34.
Nostr WoT Newsroom
Материал подготовлен редакцией Nostr WoT на основе указанных первоисточников и опубликован автоматически, без индивидуальной проверки человеком.
Amethyst 1.15.2 меняет поиск ответов на видимый контент. PR #4095, объединённый 12 сентября 2026 года, добавляет фильтры корня обсуждения NIP-22 к существующим фильтрам прямых ответов. Вложенные комментарии, которые прежние запросы пропускали, теперь могут поступать до того, как читатель откроет экран обсуждения.
Изменение входит в релиз v1.15.2 на GitHub, опубликованный в тот же день со сборками для Android и настольных компьютеров. Оно также исправляет фильтр для поиска обновлений pull request по NIP-34. Обе поправки связаны с различием, которое легко упустить: имена тегов в верхнем и нижнем регистре выполняют разные задачи.
Корень обсуждения и непосредственный родитель
NIP-22 определяет комментарии как события kind 1111. Теги в верхнем регистре обозначают корень обсуждения. Теги в нижнем регистре обозначают элемент, на который дан ответ. Для события, указанного по ID, это E и e; для адресуемого корня соответствующий корневой тег называется A.
Рассмотрим событие с файлом, комментарий к этому файлу и ответ на комментарий. Первый комментарий указывает файл и как корень, и как родителя. Вложенный ответ сохраняет ID файла в E, но его e указывает уже на первый комментарий. Поэтому запрос с #e, равным ID файла, находит прямой комментарий, но не находит вложенный ответ через ссылку на его родителя.
Существующие запросы взаимодействий использовали теги в нижнем регистре. У экрана обсуждения уже была собственная подписка на корень в верхнем регистре. Это объясняет, почему открытие обсуждения могло показывать ответы, не поступившие по предыдущему запросу. Теперь такой поиск добавлен и в фильтры взаимодействий.
Раздельные фильтры сохраняют смысл запроса
Поправка добавляет фильтр E для ID событий и фильтр A для адресуемого контента. Каждый новый корневой фильтр использует лимит 1000 и сохраняет существующее значение since для соответствующего relay. Фильтры прямых ответов остаются на месте.
Объединение обеих проверок тегов в один фильтр не решило бы проблему. NIP-01 требует совпадения всех условий внутри фильтра. Если запрос требует ID корня одновременно в #e и #E, он по-прежнему исключает вложенный комментарий, непосредственным родителем которого является другой комментарий. Раздельные фильтры позволяют запрашивать эти две связи независимо.
Лимит является параметром запроса, а не обещанием загрузить все комментарии каждого обсуждения. Доступность и выбор relays, а также временные границы по-прежнему определяют, какие события получит клиент. Исправление касается того, какие события клиент просит вернуть.
Такое же несоответствие было у обновлений pull request
Новый корневой фильтр для ID также включает kind 1619, событие обновления pull request из NIP-34. В примере NIP-34 обновляемый pull request указан тегом E в верхнем регистре.
Раньше Amethyst включал этот kind в фильтр с маленькой буквой e. Верный kind в сочетании с неверным тегом не находил обновления, соответствующие примеру. Поправка переносит kind 1619 в RootScopedRepliesKinds. Ответы Git и события статуса сохраняют существующий фильтр с тегом в нижнем регистре.
Добавленные тесты проверяют создание корневых фильтров как для ID событий, так и для адресов. Они также проверяют, что условия с разным регистром не объединяются. Отдельные проверки удерживают kind 1619 в списке для верхнего регистра и не допускают его возвращения в список для нижнего.
Для читателя результат связан с моментом обнаружения ответов: клиент может запросить подходящие вложенные комментарии уже при загрузке взаимодействий с видимым контентом. Для этих случаев больше не нужно ждать дополнительного запроса экрана обсуждения. При этом наличие подходящего фильтра само по себе не делает историю полной и не меняет доступность событий на relays.
Это исправление запросов клиента. Оно не меняет формат событий NIP-22 и не требует от авторов заново публиковать комментарии. Проверена доступность релиза на GitHub: опубликованные сборки подтверждают её именно там, но не устанавливают статус распространения версии через магазины приложений.
Источники
Каждое утверждение в этом материале ссылается на первоисточник.
- Amethyst v1.15.2 — vitorpamplona/amethyst (12 сентября 2026 г.)
- PR #4095: Separate NIP-22 root filters — vitorpamplona/amethyst (12 сентября 2026 г.)
- NIP-22 — nostr-protocol/nips (16 сентября 2026 г.)
- NIP-01 — nostr-protocol/nips (16 сентября 2026 г.)
- NIP-34 — nostr-protocol/nips (16 сентября 2026 г.)