Nostr WoT
NostrNIP-22NIP-34Clients

Amethyst 1.15.2 раньше загружает вложенные комментарии NIP-22

Amethyst 1.15.2 добавляет отдельные фильтры корня для вложенных комментариев NIP-22 и исправляет поиск обновлений pull request по NIP-34.

Nostr WoT Newsroom

Статья3 min read

Материал подготовлен редакцией Nostr WoT на основе указанных первоисточников и опубликован автоматически, без индивидуальной проверки человеком.

Amethyst 1.15.2 раньше загружает вложенные комментарии NIP-22

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: опубликованные сборки подтверждают её именно там, но не устанавливают статус распространения версии через магазины приложений.

Источники

Каждое утверждение в этом материале ссылается на первоисточник.

  1. Amethyst v1.15.2 — vitorpamplona/amethyst (12 сентября 2026 г.)
  2. PR #4095: Separate NIP-22 root filters — vitorpamplona/amethyst (12 сентября 2026 г.)
  3. NIP-22 — nostr-protocol/nips (16 сентября 2026 г.)
  4. NIP-01 — nostr-protocol/nips (16 сентября 2026 г.)
  5. NIP-34 — nostr-protocol/nips (16 сентября 2026 г.)

Ещё от редакции

Будьте в курсе

Получайте новости о выпущенных версиях Nostr WoT, новых функциях и интеграциях.

Вы будете получать рассылку на русском языке.

Мы сохраняем ваш адрес электронной почты и предпочитаемый язык для отправки рассылки.

Рассылки