RSS Polling: pontos de extensão para plugins (saída do formulário de feed, ID do feed na importação, hook de caminho de atualização)

Criamos um pequeno plugin complementar para o RSS Polling (discourse-rss-onebox): posts de blog importados são renderizados como um onebox do artigo, com resumos de feed opcionais, descrições do YouTube e formatos de título. Três lacunas nos forçaram a envolver (wrap) métodos do núcleo em vez de usar ganchos (hooks) documentados.

  1. Nenhuma saída de plugin (plugin outlet) no formulário de feed. O arquivo rss-polling-feed-form.gjs#L287-L351 não possui um PluginOutlet, e o contrato de atualização aceita um conjunto fixo de atributos (update.rb#L9-L14). Um plugin não pode adicionar uma opção por feed, por isso o nosso precisou de uma página de administração separada. Uma saída de plugin, juntamente com uma maneira de persistir campos extras (como campos personalizados de feed, por exemplo), resolveria isso.

  2. O ID do feed nunca chega à importação. O trabalho de verificação (poll job) conhece o rss_feed_id, mas o TopicEmbed.import (poll_feed.rb#L110) e o modificador topic_embed_import_create_args (topic_embed.rb#L108) nunca o recebem. Nós envolvemos o trabalho de verificação para capturá-lo. Passá-lo como uma opção permitiria que os plugins agissem por feed.

  3. Nenhum gancho no caminho de atualização. Quando o conteúdo de um item do feed muda, o TopicEmbed.import revisa a publicação com o conteúdo do feed (topic_embed.rb#L147-L152), ignorando o que o modificador de criação fez. Um blogueiro editando um post transforma silenciosamente um tópico formatado por plugin de volta em texto de feed. Um modificador nas mudanças de atualização, espelhando o topic_embed_import_create_args, resolveria isso.

A solução temporária para os itens 2 e 3 é adicionar (prepend) o TopicEmbed.import e o trabalho de verificação. Isso é frágil: o main adicionou desde então uma palavra-chave truncate: ao TopicEmbed.import, o que quebra qualquer wrapper que espelhe a assinatura de 2026.7 — tivemos que lançar uma versão apenas para passá-la adiante. Ganchos documentados evitariam esse tipo de quebra.