Consolida núcleo (presença, peer actions, MessageDispatcher), chat e screencast na galeria, documentação PT-BR e testes JUnit; remove mpChat do catálogo em favor do chat unificado. Co-authored-by: Cursor <cursoragent@cursor.com>
35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# Menus, peer actions e transportes
|
||
|
||
## Interface atual (shell v1)
|
||
|
||
Plugins de referência **não** dependem da barra de menus superior para o fluxo principal:
|
||
|
||
- **Galeria** na aba **Plugins** abre cada extensão em aba própria (fechável com ×).
|
||
- **Peer actions** na lista **Usuários nesta rede** (clique em um peer ou em **Todos**) agrupam ações de todos os plugins instalados.
|
||
- Dentro da aba do plugin, **`PluginRoutingPanel`** padroniza destino (sala geral vs IP), forma de envio (multicast UDP, UDP unicast, TCP) e texto de ajuda.
|
||
|
||
Ver [04_inicializacao_e_gui.md](04_inicializacao_e_gui.md) e [09_sistema_de_plugins.md](09_sistema_de_plugins.md).
|
||
|
||
## MenuCategory (legado)
|
||
|
||
Enum em `pitiupi.models.Menus.MenuCategory` (`Jogos`, `Social`, `Streaming`) ainda aparece no **catálogo** (`menuCategory` em `plugins.registry.json`) e em plugins antigos que chamam `GuiManager.createMenu(...)`.
|
||
|
||
Novos plugins devem preferir `PluginWorkspace` + peer actions. O menu da shell expõe apenas **Ajuda → Sobre**.
|
||
|
||
## Unicast vs multicast na aplicação
|
||
|
||
| Modo | API típica | Semântica |
|
||
| --- | --- | --- |
|
||
| Multicast | `MessageDispatcher` / `SocketUDP.sendMulticast` | Todos no grupo na porta configurada |
|
||
| Unicast UDP | envio para IP de um peer | Um destinatário, sem estabelecer TCP |
|
||
| TCP | `ConnectionManager` / `SocketTCP` | Canal com framing 4+N bytes |
|
||
|
||
Detalhes de rede: [05_udp_multicast.md](05_udp_multicast.md), [06_tcp_conexoes.md](06_tcp_conexoes.md).
|
||
|
||
## Referência de código
|
||
|
||
- Chat e screencast: peer actions em `ChatPlugin` e `ScreenCastPlugin`.
|
||
- Envio unificado: `pitiupi.application.messaging.MessageDispatcher` e `TransportMode`.
|
||
|
||
O antigo plugin **mpChat** foi unificado no módulo `plugins/chat` (mensagens `LegacyMpChatMessage` para compatibilidade TCP privado). Ver [11_plugins_referencia.md](11_plugins_referencia.md) e decisão D19 no [decision-register.md](../decision-register.md).
|