diff --git a/README.md b/README.md index 97a6272..7bb602e 100644 --- a/README.md +++ b/README.md @@ -5,133 +5,280 @@ SPDX-FileCopyrightText: 2019-Present Contributors to FluffyChat SPDX-License-Identifier: AGPL-3.0-or-later --> -[TatuChat](https://tatuchat.weltonmoura.com.br/home/) is an open source, nonprofit and cute [[matrix](https://matrix.org)] client written in [Flutter](https://flutter.dev). The goal of the app is to create an easy to use instant messenger which is open source and accessible for everyone. +# TatuChat -### Links: +
+
+
+ Cliente de mensagens instantâneas open source, sem fins lucrativos e + multiplataforma, construído sobre o protocolo + Matrix com Flutter. + TatuChat é um fork do acclaimed + FluffyChat, com foco em privacidade, simplicidade e +código aberto. +
-
+## O que é o TatuChat
-# Features
+Um mensageiro federado e descentralizado: nenhuma empresa no meio, nenhum servidor único. Você
+escolhe o *homeserver* que quiser (ou usa um dos recomendados), conversa com quem está em outros
+servidores e continua sendo dono dos seus dados. Tudo com criptografia ponta a ponta
+(Olm/Megolm via [Vodozemac](https://github.com/matrix-org/vodozemac) em WebAssembly).
-- 📩 Send all kinds of messages, images and files
-- 🤙 Video calls with Matrix RTC
-- 🎙️ Voice messages
-- 📍 Location sharing
-- 🔔 Push notifications
-- 💬 Unlimited private and public group chats
-- 📣 Public channels with thousands of participants
-- 🛠️ Feature rich group moderation including all matrix features
-- 🔍 Discover and join public groups
-- 🎨 Material You design
-- 😄 Custom emotes and stickers
-- 🌌 Spaces
-- 🔐 End to end encryption
-- 🔒 Encrypted chat backup
-- 😀 Emoji verification & cross signing
-... and much more.
+- 🔐 Criptografia ponta a ponta, com verificação por emoji e *cross-signing*
+- 💾 Backup de conversas criptografado
+- 📩 Texto, imagens, áudio, vídeo, arquivos, stickers, emotes e localização
+- 🤙 Videochamadas pelo Matrix RTC (LiveKit)
+- 🎙️ Mensagens de voz
+- 🔔 Notificações push, com ou sem Google (UnifiedPush / ntfy)
+- 🌌 Espaços para navegar hierarquias inteiras de salas
+- 🎨 Design Material You, com cores dinâmicas do Android
+## 🚀 Inovações do TatuChat
-# Installation
+O TatuChat reescreveu a forma de navegar e de consumir conteúdo dentro do Matrix. As seções
+abaixo descrevem os módulos desenvolvidos sobre o FluffyChat.
-Please visit the website for installation instructions:
+### Abas e barra lateral
-- https://tatuchat.weltonmoura.com.br/home/
+O app não usa mais a *navigation rail* do FluffyChat. A navegação principal virou uma
+**barra lateral** (desktop e tablet) com as entradas *Criar grupo*, *Definir status*,
+*Convidar contato*, *Arquivo*, **Apps** e *Configurações*, além do seletor de contas.
-# Configuration and Mobile Device Management (MDM)
+A tela inicial foi dividida em **quatro abas**, com barra superior em telas largas e barra
+inferior em telas compactas:
-TatuChat supports configuration via MDM on Android&iOS (since v2.10.0) and via a config.json file on web. You can see the populated configuration for MDM on Android in this file under `/android/app/src/main/res/xml/app_restrictions.xml`.
-An example configuration can be found in the `config.sample.json` file.
+| Aba | O que mostra |
+| --- | --- |
+| **Conversas** | Apenas conversas normais |
+| **Canais** | Apenas canais |
+| **Espaços** | Os espaços em que você entrou, como tela inicial |
+| **Murais** | Apenas murais |
-# How to build
+Canais e murais **não aparecem** na lista de conversas, e vice-versa: cada tipo tem sua própria
+aba, com busca própria — e os murais mostram ainda o número de inscritos de cada um.
-1. To build TatuChat you need [Flutter](https://flutter.dev) and [Rust](https://www.rust-lang.org/tools/install)
+### 📣 Canais
-2. Clone the repo:
-```
-git clone https://gitea.weltonmoura.com.br/welton/tatuchat.git
-cd tatuchat
-```
-3. Choose your target platform below and enable support for it.
-3.1 If you want, enable Googles Firebase Cloud Messaging:
+Um canal é uma sala pública de distribuição, no estilo de um feed, não de um chat. O tipo é
+gravado no estado compartilhado da sala (`tatuchat.room_type = "canal"`), com uma tag pessoal
+(`tatuchat_canal`) para identificação local.
-`./scripts/add-firebase-messaging.sh`
+A sala usa a página de chat normal, mas em **modo feed**:
-4. Debug with: `flutter run`
+- 🗞️ Publicações viram **cartões de largura total**, em vez de balões
+- ✍️ O nome do autor aparece **sempre**, inclusive nas suas próprias publicações, para que o
+ feed nunca pareça anônimo
+- ⬅️ Tudo alinhado à esquerda, com balões totalmente arredondados
+- 🖼️ Imagens ocupam a largura total, mantendo a proporção original
+- 🔐 **Somente administradores publicam no nível principal**; dentro das threads, qualquer
+ participante comenta
+- 💬 Cada publicação abre uma **thread de comentários**, com reações, respostas, edição,
+ exclusão e denúncia
+
+### 🖼️ Murais
+
+Um mural é uma página dedicada — não uma variante da timeline. O tipo é gravado em
+`tatuchat.room_type = "mural"` (tag pessoal `tatuchat_mural`), e abrir o mural **nunca** mostra
+a lista de mensagens: mostra um **grid visual**.
+
+- 🟦 Grade responsiva de 3 colunas alimentada apenas por **imagens, vídeos e stickers**
+- 🎨 Cabeçalho com capa, avatar, nome, descrição, autor e número de inscritos
+- 👆 **Toque simples** abre o visualizador do post, com painel de comentários e campo de
+ resposta
+- 🤏 **Toque longo** abre a imagem em tela cheia, com *pinch-to-zoom* e deslize entre as mídias
+ do mural
+- 💬 Comentários são **threads Matrix reais**, com árvore aninhada, reações, resposta,
+ exclusão do próprio comentário e denúncia
+- 🧹 A timeline carrega em blocos conforme você desce, para não travar em murais grandes
+
+### 🌌 Espaços
+
+Matrix costuma tratar espaços como um recurso de segunda classe. No TatuChat eles viraram uma
+**tela inicial** completa:
+
+- 🧭 A aba **Espaços** é a porta de entrada: explorer a hierarquia inteira de uma conta sem sair
+ do app
+- 🔎 Busca e filtro dentro do espaço, com capa do espaço e destaque da sala ativa
+- ➕ Ingresso rápido em salas filhas públicas, direto da hierarquia
+- 🛠️ Edição das salas filhas a partir do próprio explorador
+- ↔️ A sala ativa é carregada na coluna lateral e preservada entre navegações
+
+### 🧩 Mini Apps
+
+O TatuChat é **extensível pela comunidade**: qualquer pessoa pode escrever um mini app e
+instalá-lo no próprio app, sem loja, sem build e sem publishing.
+
+Um mini app é **um único arquivo `.html`**, executado em um *web view* isolado:
+
+- 📥 Instalação **por arquivo** ou **por URL**
+- 🔐 Cada app tem seu próprio armazenamento chave-valor, persistido no *account data* do Matrix
+ (ou seja, o app sincroniza entre os seus dispositivos)
+- 🎨 A ponte expõe a paleta e o brilho do tema atual, para o app acompanhar o Material You
+- 👤 A ponte expõe o perfil do usuário (id, nome, avatar e homeserver)
+- 📦 Dois mini apps já vêm embutidos: **`tasks`** (lista de tarefas) e **`accountdata`**
+ (editor de *account data*)
+
+As ações disponíveis na ponte são:
+
+| Ação | O que faz |
+| --- | --- |
+| `io.tatuchat.storage.load` | Lê o armazenamento do app |
+| `io.tatuchat.storage.save` | Sobrescreve o armazenamento do app |
+| `io.tatuchat.identity.get` | Perfil do usuário + avatar como data URI |
+| `io.tatuchat.theme.get` | Paleta e brilho do tema em hex CSS |
+| `io.tatuchat.accountdata.list` | Lista todas as chaves de *account data* |
+| `io.tatuchat.accountdata.get` | Lê uma chave de *account data* |
+| `io.tatuchat.accountdata.set` | Escreve uma chave de *account data* |
+
+**📖 Documentação completa:** [`docs/miniapps.md`](docs/miniapps.md) — manifesto em ``,
+protocolo da ponte, exemplo de HTML e limitações.
+
+> 🔐 **Segurança — leia antes de instalar apps de terceiros.** As ações de `accountdata.*` não
+> são restritas por app: um mini app pode ler e escrever qualquer chave de *account data* da
+> conta, incluindo as chaves de outros mini apps. Não existe modelo de permissões nem pedido de
+> consentimento. Instale apenas apps cujo código você auditou. O app **não** expõe salas,
+> mensagens, arquivos nem envio de mensagens pela ponte.
+
+### Outros detalhes
+
+- 🎨 **Identidade visual própria:** cor primária esmeralda `#00D084`, paleta de sementes
+ customizada, ícone, splash e ícone de notificação próprios
+- ⏱️ **Status personalizado aparece na hora:** a atualização de status é aplicada no cache local
+ imediatamente, sem esperar o *sync* do homeserver
+- 🖼️ **Papel de parede e tema sincronizados:** via *account data* da conta Matrix, o tema segue
+ entre dispositivos; há também a opção de suavizar a cor primária
+- 🔗 Deep links próprios (`im.tatuchat://chat/`) e convites com `client=im.tatuchat`
+
+## 📲 Instalação
+
+Downloads para Android, iOS, Linux, Windows, macOS e Web (PWA), além de notas de versão:
+
+-