Skip to content

Sistema de Mensagens — Histórico de Conversas e UI de Chat#73

Merged
YnotMax merged 6 commits into
mainfrom
develop
Jun 16, 2026
Merged

Sistema de Mensagens — Histórico de Conversas e UI de Chat#73
YnotMax merged 6 commits into
mainfrom
develop

Conversation

@YnotMax

@YnotMax YnotMax commented Jun 16, 2026

Copy link
Copy Markdown
Member

💬 Sistema de Mensagens — Histórico de Conversas e UI de Chat

Resumo

Transforma a antiga caixa de entrada linear em uma interface de chat moderna com histórico por conversa, no padrão universal de apps de mensagens (WhatsApp, Messenger, Slack), mantendo a identidade visual neo-brutalista do Match Tech.

Este PR também resolve conflitos de mesclagem com a branch main, sincroniza o banco de dados Firestore e corrige diversos bugs relacionados à experiência de leitura e envio de mensagens em tempo real.


O que mudou

🏗️ Arquitetura — Camada de Dados

messageRepository.ts — refatorado para suportar histórico de conversas em tempo real de forma robusta:

  • makeConversationId(uidA, uidB) — gera um ID determinístico [uid1, uid2].sort().join('_'), garantindo que ambos os usuários compartilhem a mesma thread, independente de quem iniciou.
  • subscribeToConversations(userId) — escuta todas as mensagens enviadas e recebidas em tempo real e as agrupa por conversa.
  • subscribeToThread(conversationId) — escuta as mensagens de uma conversa específica em tempo real.
  • markConversationAsRead(conversationId, userId) — marca em batch todas as mensagens de uma conversa como lidas.
  • markAllAsRead(userId) (novo) — marca todas as mensagens não lidas do usuário como lidas globalmente.
  • Ordenação Local e Robustez: Removido o filtro orderBy("createdAt") das queries do Firestore, passando a ordenar os dados localmente. Isso evita que mensagens legadas ou em estado de sincronização que não possuam o campo createdAt sejam ocultadas da interface, resolvendo o bug de dessincronização do contador de não-lidas.
  • Estimativa de Fuso Horário Local: Adicionada a opção serverTimestamps: 'estimate' ao ler os dados do snapshot do Firestore. Isso corrige o bug visual em que mensagens recém-enviadas apareciam momentaneamente no topo do histórico (tempo 0) antes de pularem para a base da conversa.

🎨 UI — Novos Componentes e Melhorias

ConversationList.tsx (novo)

  • Painel esquerdo com lista de conversas ativas.
  • Badge de mensagens não lidas por conversa.
  • Destaque visual (fundo neo-lime) na conversa ativa.

ChatThread.tsx (novo)

  • Painel direito com histórico de mensagens em ordem cronológica.
  • Balões de fala com estilo neo-brutalist: neo-lime (suas mensagens, à direita) / branco (recebidas, à esquerda).
  • Separadores de data (HOJE / ONTEM / DD/MM/AAAA) e confirmação de leitura estilo WhatsApp: ✓ (enviado) / ✓✓ (lido).
  • Auto-scroll automático e textarea auto-expansível.

EmptyChat.tsx (novo)

  • Placeholder exibido quando nenhuma conversa está selecionada, direcionando o usuário para /discover.

📄 Páginas Modificadas e Fluxos

MessagesPage.tsx — reescrita completa:

  • Layout de duas colunas no desktop (lista à esquerda, thread à direita) e coluna única no mobile.
  • Leitura Imediata: As mensagens são marcadas como lidas imediatamente ao clicar em uma conversa ou ao enviar uma nova resposta, garantindo um feedback visual instantâneo do sumiço da bolinha de notificação.
  • Botão "Marcar todas como lidas" (novo): Adicionado botão no cabeçalho da página que permite limpar de forma global e instantânea quaisquer notificações de mensagens acumuladas.
  • Suporte a URL param ?with=userId para abrir diretamente a conversa a partir da busca de perfis.

SendMessageModal.tsx — atualizado:

  • Após envio, redireciona o usuário direto para /messages?with={receiverId} para ver a thread iniciada.

DiscoverPage.tsx, ProfilesGrid.tsx e ProfileCard.tsx — atualizados:

  • Integração da ação de clique em "MANDAR MENSAGEM 💬" para abrir o modal de contato e enviar mensagens inline.
  • Tooltips de "Paixões", "Opero Bem" e "Vetos" quando as tags excedem o limite de 3 itens para não estourar o tamanho do card.

Checklist de Qualidade

  • Conflitos com a branch main resolvidos e integrados.
  • Typecheck (tsc --noEmit) passando sem erros.
  • ESLint e Prettier validados com 0 warnings/erros.
  • Sem necessidade de scripts de migração de dados.
  • Responsividade validada para desktop (2 colunas) e mobile (1 coluna com botão de voltar).

Summary by CodeRabbit

  • New Features
    • Added real-time messaging with conversation list, chat threads, send and delete flows, plus “mark as read”.
    • Added unread message badge in navigation.
    • Added “send message” action on profile cards and a contact-to-message flow from Discover.
    • Added/ensured profile visibility support for messaging access control.
  • Removals
    • Removed the Guilda experience (components, pages, and related functionality).
  • Changes
    • Updated authenticated routing to use Discover and Messages.
    • Tightened Firestore security rules for profile visibility and message permissions/shape.

YnotMax and others added 5 commits June 15, 2026 18:51
* docs: reestruturar documentacao principal e integrar guia de revisao de prs

* feat: implement FirebaseProfileRepository with Zod validation and data mapping for Firestore operations

---------

Co-authored-by: tony max <tonymaxonline@gmail.com>
…ções no Radar e integridade do Firestore (#68)

* docs: reestruturar documentacao principal e integrar guia de revisao de prs

* feat: implement FirebaseProfileRepository with Zod validation and data mapping for Firestore operations

* feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)

* Revert "feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)"

This reverts commit 2cbe6ad.

* fix(discover): restaurar design original do ProfileCard com bento layout, avatar, radar chart e grid 3 colunas

* feat: add profile discovery UI components including roast modal, profile grid, and radar chart

* fix(discover): resolve user ID mismatch in own profile check

---------

Co-authored-by: tony max <tonymaxonline@gmail.com>
…estore (#71)

* docs: reestruturar documentacao principal e integrar guia de revisao de prs

* feat: implement FirebaseProfileRepository with Zod validation and data mapping for Firestore operations

* feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)

* Revert "feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)"

This reverts commit 2cbe6ad.

* fix(discover): restaurar design original do ProfileCard com bento layout, avatar, radar chart e grid 3 colunas

* feat: add profile discovery UI components including roast modal, profile grid, and radar chart

* fix(discover): resolve user ID mismatch in own profile check

* feat: create ProfileCard component with neo-brutalist styling and compact mode support

* feat: implement real-time messaging system and expand profile schema with visibility support

* style: rename 'sinal' to 'mensagem' to improve clarity

---------

Co-authored-by: tony max <tonymaxonline@gmail.com>
* docs: reestruturar documentacao principal e integrar guia de revisao de prs

* feat: implement FirebaseProfileRepository with Zod validation and data mapping for Firestore operations

* feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)

* Revert "feat(onboarding): adjust onboarding language to matchmaker identity (Issue #43, #44)"

This reverts commit 2cbe6ad.

* fix(discover): restaurar design original do ProfileCard com bento layout, avatar, radar chart e grid 3 colunas

* feat: add profile discovery UI components including roast modal, profile grid, and radar chart

* fix(discover): resolve user ID mismatch in own profile check

* feat: create ProfileCard component with neo-brutalist styling and compact mode support

* feat: implement real-time messaging system and expand profile schema with visibility support

* style: rename 'sinal' to 'mensagem' to improve clarity

* feat(messages): redesign inbox into threaded conversation UI with real-time history

* fix(firestore): allow conversationId field and list permission for message threads

* feat: implement messages page with real-time Firestore synchronization and conversation management

---------

Co-authored-by: tony max <tonymaxonline@gmail.com>
@vercel

vercel Bot commented Jun 16, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
match-tech Ready Ready Preview, Comment Jun 16, 2026 8:03pm

@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 6d782c26-ec99-4700-be5c-bff2b81d2c93

📥 Commits

Reviewing files that changed from the base of the PR and between 3eda532 and ea25ec4.

📒 Files selected for processing (3)
  • src/features/messages/pages/MessagesPage.tsx
  • src/features/onboarding/hooks/useOnboardingForm.ts
  • src/infrastructure/firebase/messageRepository.ts

📝 Walkthrough

Walkthrough

Removes the entire Guilda member/roast feature (components, hooks, store, types, selectors, formatters, constants, page) and replaces it with a full real-time messaging system: Firestore security rules for messages, a FirebaseMessageRepository with conversation subscriptions and read-tracking, messaging UI components (ChatThread, ConversationList, SendMessageModal, EmptyChat), a MessagesPage, authenticated routing, and a nav unread-count badge. The Discover page gains a contact action, ProfileCard gains a "send message" button, and the landing CTA redirects from /guilda to /discover.

Changes

Messaging Feature and Guilda Removal

Layer / File(s) Summary
Guilda feature deletion
src/features/guilda/components/*, src/features/guilda/hooks/*, src/features/guilda/model/*, src/features/guilda/pages/*, src/features/guilda/services/guilda.repository.ts, src/features/guilda/store/guildRoast.ts, src/features/guilda/constants/guilda.constants.ts, src/features/guilda/utils/guilda.formatters.ts
All Guilda-specific components (GuildAvatar, GuildHeader, GuildMemberCard, GuildMembersGrid, GuildRoastModal, GuildStates), hooks (useGuildMembersRealtime, useGuildRoast), model types, selectors, Zustand store, saveRoast repository method, constants, formatters, and GuildaPage are removed.
Message data contracts, Firestore rules, and profile visibility
src/features/messages/model/messages.types.ts, firestore.rules, src/features/onboarding/hooks/useOnboardingForm.ts
Adds Message and Conversation TypeScript interfaces; introduces isValidMessage validator and a /messages/{messageId} rules block with participant-scoped access; extends profile creation/update rules to permit visibility; adds visibility: "public" to the onboarding form submission.
FirebaseMessageRepository infrastructure
src/infrastructure/firebase/messageRepository.ts
Implements makeConversationId, getMessageTime, and FirebaseMessageRepository with sendMessage, dual-query subscribeToConversations, subscribeToThread, markConversationAsRead, markAllAsRead, subscribeToInbox, subscribeToUnreadCount, markAsRead, deleteMessage, and a singleton export.
Messages UI components
src/features/messages/components/ConversationList.tsx, src/features/messages/components/ChatThread.tsx, src/features/messages/components/EmptyChat.tsx, src/features/messages/components/SendMessageModal.tsx
Adds ConversationList (loading/empty/list states with unread badge), ChatThread (day-grouped messages, auto-scroll, Enter-to-send, delete confirmation), EmptyChat (empty state with /discover link), and SendMessageModal (animated modal with validation, sendMessage call, post-send navigation).
MessagesPage, route, and nav unread badge
src/features/messages/pages/MessagesPage.tsx, src/routes/routes.tsx, src/layouts/RootLayout.tsx
Adds MessagesPage (real-time conversations, ?with= auto-open, send/delete/read handlers, two-pane responsive layout); registers a requireAuth-guarded /messages route replacing the guilda entry; adds unread-count subscription, /messages nav link, and unread badges to desktop and mobile nav in RootLayout.
Discover page and ProfileCard contact action
src/shared/components/ui/ProfileCard.tsx, src/features/discover/components/ProfilesGrid.tsx, src/features/discover/pages/DiscoverPage.tsx, src/features/discover/hooks/useProfilesRealtime.ts
Adds onContactClick to ProfileCardProps and renders a "MANDAR MENSAGEM" button when the card is not the user's own; tag sections gain "+N" tooltip expansion for more than 3 items; ProfilesGrid passes onContactClick to each card; DiscoverPage tracks contactTarget state and renders SendMessageModal via AnimatePresence.
Landing CTA redirect and admin scripts
src/features/landing/Landing.tsx, src/features/landing/components/HeroSection.tsx, scripts/dump-profiles.ts, scripts/migrate-members-to-profiles.ts
Renames onNavigateGuilda to onNavigateDiscover in HeroSection and updates the CTA to navigate to /discover; adds dump-profiles.ts diagnostic script; updates migrate-members-to-profiles.ts with explicit camelCase/snake_case credential parsing and a configurable Firestore database ID.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant DiscoverPage
  participant SendMessageModal
  participant FirebaseMessageRepository
  participant Firestore
  participant MessagesPage

  User->>DiscoverPage: clicks "MANDAR MENSAGEM" on ProfileCard
  DiscoverPage->>DiscoverPage: setContactTarget({ id, name })
  DiscoverPage->>SendMessageModal: render with receiverId/receiverName
  User->>SendMessageModal: types message and submits
  SendMessageModal->>FirebaseMessageRepository: sendMessage(senderId, receiverId, text, ...)
  FirebaseMessageRepository->>Firestore: setDoc /messages/{id} with conversationId, read=false, serverTimestamp
  Firestore-->>FirebaseMessageRepository: write confirmed
  FirebaseMessageRepository-->>SendMessageModal: success
  SendMessageModal->>DiscoverPage: onSuccess() → toast shown
  SendMessageModal->>MessagesPage: navigate to /messages?with=receiverId
  MessagesPage->>FirebaseMessageRepository: subscribeToConversations(userId, onUpdate)
  FirebaseMessageRepository->>Firestore: onSnapshot sent + received queries
  Firestore-->>FirebaseMessageRepository: merged conversation list
  FirebaseMessageRepository-->>MessagesPage: onUpdate(conversations[])
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Poem

🐰 Hippity hop, the guild has gone,
Messages spring where roasts lived on!
A modal blooms on Discover's trail,
Two-pane threads delivered without fail.
Unread badges glow in the nav so bright—
The rabbit wired it all up just right! ✉️

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 18.18% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and clearly summarizes the main objective of the PR: implementing a messaging system with conversation history and chat UI.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 13

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@firestore.rules`:
- Line 113: The visibility field is allowlisted in the profile document
validation but is not actually validated by the isValidProfile() function,
allowing arbitrary values (null, numbers, invalid strings) to be stored in this
privacy-critical field. Add validation logic to the isValidProfile() function to
ensure that the visibility field is present, is a string, and only accepts the
valid values 'public' or 'private'.
- Around line 156-166: The isValidMessage function currently validates
conversationId only as a string with length constraints, but does not verify
that it is a valid derived combination of senderId and receiverId. Update the
function to add a validation check that ensures conversationId matches the
expected deterministic combination of senderId and receiverId (such as a sorted
concatenation or other application-specific format). This prevents users from
writing messages with arbitrary conversation IDs that don't correspond to the
correct participants.

In `@scripts/dump-profiles.ts`:
- Line 45: The main() promise rejection handler at line 45 currently only logs
the error to console but does not signal a failure to the operating system.
Modify the catch handler for the main() function call to set process.exitCode =
1 before or after logging the error with console.error, ensuring the script
exits with a non-zero status code when an error occurs.
- Around line 13-31: The code extracts projectId, clientEmail, and privateKey
from the parsed JSON but does not validate that these critical fields are
present before passing them to the cert() function. Add explicit guard checks
immediately after extracting these three values to ensure they are all defined
and non-empty strings. If any of these fields are missing, throw an error with a
clear message indicating which required field is absent, ensuring failures occur
immediately at this validation point rather than later inside cert() where error
messages are less actionable.

In `@scripts/migrate-members-to-profiles.ts`:
- Line 110: In migrate-members-to-profiles.ts at the getFirestore call, remove
the hardcoded fallback database ID
("ai-studio-a1333439-9ab3-4356-9f79-ac211cc82b20") and instead require the
VITE_FIREBASE_FIRESTORE_DATABASE_ID environment variable to be explicitly set.
Add validation before the getFirestore call that checks if the environment
variable is defined, and if not, throw an error or exit the process to fail fast
rather than silently using the wrong database. Apply the same validation logic
to scripts/dump-profiles.ts for consistency.

In `@src/features/discover/hooks/useProfilesRealtime.ts`:
- Around line 14-17: Remove all console.log statements from the
useProfilesRealtime hook that are logging the raw Firestore data, currentUserId,
and sorted profiles. These debug logs output potentially sensitive user
information on each subscription update and should not be present in production
code. Keep only the business logic by retaining the sortProfiles function call
and its result assignment, while removing the four console.log calls around it.

In `@src/features/messages/components/ChatThread.tsx`:
- Around line 73-84: The handleSend function (lines 73-84) and the onDelete
handler (lines 265-268) both await promises without catching potential
rejections, which can cause unhandled promise rejection errors. Add a catch
block to both functions that handles errors gracefully by logging them or
showing user feedback instead of allowing the error to propagate. The
try/finally structure exists but needs to be expanded to try/catch/finally to
properly handle rejection cases from the onSend and onDelete calls.

In `@src/features/messages/components/EmptyChat.tsx`:
- Around line 22-27: Replace the anchor element with href="/discover" containing
the text "Descobrir" in the EmptyChat component with a Link component from
react-router-dom. This will enable client-side navigation instead of triggering
a full page reload. Update the href attribute to the to prop and ensure the Link
component is properly imported at the top of the file.

In `@src/features/messages/model/messages.types.ts`:
- Around line 3-12: The Message interface in messages.types.ts is missing the
conversationId field that is required by firestore.rules and used by
messageRepository for writing and querying, causing a contract drift between the
TypeScript type and the persisted schema. Add a conversationId field of type
string to the Message interface to align the type definition with the actual
Firestore schema and how the repository layer operates.

In `@src/features/messages/pages/MessagesPage.tsx`:
- Around line 49-54: The useEffect hook in the MessagesPage component
unconditionally switches mobileView to "thread" whenever the user and withUserId
are available, without verifying that the target conversation actually exists in
the conversations state. This traps mobile users on an empty thread screen when
the conversation hasn't loaded yet. Gate the setMobileView("thread") call so it
only executes when the conversation with the ID generated by makeConversationId
actually exists in the conversations state, or alternatively keep the list
visible until the conversation data is available.
- Around line 198-199: The non-null assertion on `user!.uid` when passing
`currentUserId` to the ChatThread component can cause runtime errors during
authentication transitions or logout. Instead of using the non-null assertion
operator, wrap the ChatThread component rendering in a conditional guard that
checks if the user is authenticated before rendering. This ensures ChatThread
only renders when user is valid and prevents accessing uid on a potentially null
user object during auth state changes.

In `@src/features/onboarding/hooks/useOnboardingForm.ts`:
- Around line 183-185: The problem is that in the useOnboardingForm function,
the visibility field is being hard-coded to "public" in upsert operations (where
merge: true is used), which silently overwrites a user's previously chosen
visibility setting whenever they update their profile. Remove the hard-coded
`visibility: "public"` assignment from the upsert payload around lines 184 and
190 (in the objects that include eventId and serverTimestamp). This allows the
existing visibility value to be preserved during profile updates, rather than
forcing it back to public. If visibility needs to be explicitly set by the user
through the form, only include it in the update when the user has actually
changed that setting.

In `@src/infrastructure/firebase/messageRepository.ts`:
- Around line 205-222: The markConversationAsRead and markAllAsRead methods both
commit all matched documents in a single writeBatch call, which can exceed
Firestore's 500-operation batch limit for large inboxes, causing the entire
operation to fail. Chunk the snapshot.docs into groups of at most 500 documents
and commit each group in a separate batch sequentially. For each chunk, create a
new writeBatch, update the documents in that chunk, and commit before moving to
the next chunk. Apply this fix to both the markConversationAsRead method (lines
205-222) and the markAllAsRead method (lines 227-243).
🪄 Autofix (Beta)

❌ Autofix failed (check again to retry)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: a2e2082b-073f-4fab-a771-5ea1319aa3fe

📥 Commits

Reviewing files that changed from the base of the PR and between 7f14284 and 3eda532.

📒 Files selected for processing (34)
  • firestore.rules
  • scripts/dump-profiles.ts
  • scripts/migrate-members-to-profiles.ts
  • src/features/discover/components/ProfilesGrid.tsx
  • src/features/discover/hooks/useProfilesRealtime.ts
  • src/features/discover/pages/DiscoverPage.tsx
  • src/features/guilda/components/GuildAvatar.tsx
  • src/features/guilda/components/GuildHeader.tsx
  • src/features/guilda/components/GuildMemberCard.tsx
  • src/features/guilda/components/GuildMembersGrid.tsx
  • src/features/guilda/components/GuildRoastModal.tsx
  • src/features/guilda/components/GuildStates.tsx
  • src/features/guilda/constants/guilda.constants.ts
  • src/features/guilda/hooks/useGuildMembersRealtime.ts
  • src/features/guilda/hooks/useGuildRoast.ts
  • src/features/guilda/model/guilda.selectors.ts
  • src/features/guilda/model/guilda.types.ts
  • src/features/guilda/pages/GuildaPage.tsx
  • src/features/guilda/services/guilda.repository.ts
  • src/features/guilda/store/guildRoast.ts
  • src/features/guilda/utils/guilda.formatters.ts
  • src/features/landing/Landing.tsx
  • src/features/landing/components/HeroSection.tsx
  • src/features/messages/components/ChatThread.tsx
  • src/features/messages/components/ConversationList.tsx
  • src/features/messages/components/EmptyChat.tsx
  • src/features/messages/components/SendMessageModal.tsx
  • src/features/messages/model/messages.types.ts
  • src/features/messages/pages/MessagesPage.tsx
  • src/features/onboarding/hooks/useOnboardingForm.ts
  • src/infrastructure/firebase/messageRepository.ts
  • src/layouts/RootLayout.tsx
  • src/routes/routes.tsx
  • src/shared/components/ui/ProfileCard.tsx
💤 Files with no reviewable changes (15)
  • src/features/guilda/pages/GuildaPage.tsx
  • src/features/guilda/components/GuildHeader.tsx
  • src/features/guilda/utils/guilda.formatters.ts
  • src/features/guilda/components/GuildRoastModal.tsx
  • src/features/guilda/constants/guilda.constants.ts
  • src/features/guilda/components/GuildMemberCard.tsx
  • src/features/guilda/model/guilda.types.ts
  • src/features/guilda/hooks/useGuildMembersRealtime.ts
  • src/features/guilda/components/GuildAvatar.tsx
  • src/features/guilda/model/guilda.selectors.ts
  • src/features/guilda/components/GuildMembersGrid.tsx
  • src/features/guilda/services/guilda.repository.ts
  • src/features/guilda/hooks/useGuildRoast.ts
  • src/features/guilda/store/guildRoast.ts
  • src/features/guilda/components/GuildStates.tsx

Comment thread firestore.rules
Comment thread firestore.rules
Comment thread scripts/dump-profiles.ts
Comment thread scripts/dump-profiles.ts
Comment thread scripts/migrate-members-to-profiles.ts
Comment thread src/features/messages/model/messages.types.ts
Comment thread src/features/messages/pages/MessagesPage.tsx
Comment thread src/features/messages/pages/MessagesPage.tsx Outdated
Comment thread src/features/onboarding/hooks/useOnboardingForm.ts
Comment thread src/infrastructure/firebase/messageRepository.ts
@coderabbitai

coderabbitai Bot commented Jun 16, 2026

Copy link
Copy Markdown

Note

Autofix is a beta feature. Expect some limitations and changes as we gather feedback and continue to improve it.

An unexpected error occurred while generating fixes: Repository rule violations found

Changes must be made through a pull request.

@YnotMax YnotMax merged commit 0da621f into main Jun 16, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant