Skip to content

Conversation

coodos
Copy link
Contributor

@coodos coodos commented Aug 19, 2025

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Wallet: Unified scan/sign flow with deep links; supports signing votes and generic messages with improved redirects.
    • Group Charter Manager: End-to-end charter signing (QR/deep link, real-time status), participant signing status, and group-centric dashboard.
    • Blabsy: Group settings editing (name/description/photo upload), clearer chat avatars, improved image preview handling.
  • Bug Fixes

    • Safer loading guards in user pages; more reliable scan permissions and cleanup.
  • Refactor

    • Modular, state-driven scan/sign pages with adaptive UI copy.
  • Documentation

    • Web3-adapter mapping rules; Charter Signature schema.
  • Chores

    • Config/rules updates (Firebase, Storage, env, lint).

Copy link
Contributor

coderabbitai bot commented Aug 19, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Introduces a cross-platform charter-signing feature set: new entities, services, APIs, mappings, storage/rules, and UI across Cerberus, Group Charter Manager (API and frontend), and eID Wallet. Refactors wallet scan/sign flows, updates Blabsy chat and storage/rules, adds mapping documentation and ontology schema, and adjusts configs.

Changes

Cohort / File(s) Summary
eID Wallet: Scan/Sign flows
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte, .../sign/+page.svelte, .../settings/+page.svelte
Refactors scan-qr to state-driven with permission gating, deep-link session handling, auth enforcement, and poll/message signing with robust redirects and cleanup; sign page extended to generic messages; settings displays updated version text.
Web3 Adapter Docs
infrastructure/web3-adapter/MAPPING_RULES.md
Adds comprehensive mapping rules documentation including field, relation, array, functions, owner paths, junctions, and examples.
Blabsy: Configs
platforms/blabsy/.env.production, platforms/blabsy/.firebaserc, platforms/blabsy/next.config.js
Removes NEXT_PUBLIC_URL preview line; switches Firebase project to w3ds-staging; skips ESLint during Next.js builds.
Blabsy: Firestore & Storage Rules
platforms/blabsy/firestore.rules, platforms/blabsy/storage.rules
Reworks user/chat access rules, removes isChatParticipant, adjusts participants checks, relaxes message rules to auth-only, adds users subcollections rules; adds group-photos storage path with auth+media validation for create.
Blabsy: Chat UI components
platforms/blabsy/src/components/chat/add-members.tsx, .../chat-list.tsx, .../chat-window.tsx, .../group-settings.tsx
Adds group settings editing with photo upload; refines avatar and header logic by chat type; adjusts member selection in newChat; logs participant data; uses group photoURL and dynamic titles.
Blabsy: User components & contexts
platforms/blabsy/src/components/user/user-edit-profile.tsx, .../user-follow.tsx, .../lib/context/auth-context.tsx, .../lib/context/user-context.tsx
Syncs editable user data via state/effect; adds loading guards; defers queries until user exists; adds onSnapshot error handlers; allows user in context to be null.
Blabsy: Utils & Types
platforms/blabsy/src/lib/utils/image-utils.ts, .../firebase/utils.ts, .../types/chat.ts, .../components/input/image-preview.tsx
Adds base64 image-merging utilities; changes likes to non-batch updates; includes senderId in lastMessage; adds Chat.photoURL; processes merged images in previews.
Cerberus: Entities & Data Source
platforms/cerberus/src/database/entities/CharterSignature.ts, .../entities/Group.ts, .../entities/VotingObservation.ts, .../data-source.ts, .../migrations/1755282900142-migration.ts (removed)
Introduces CharterSignature entity and relations; Group gains isCharterActive and signatures; VotingObservation gains owner relation; registers entities; removes a prior messages migration.
Cerberus: Services & Controller
platforms/cerberus/src/services/CharterSignatureService.ts, .../services/OpenAIService.ts, .../services/CerberusTriggerService.ts, .../services/CharterMonitoringService.ts, .../controllers/WebhookController.ts
Adds signature service with analytics and OpenAI-backed analysis; gates processing on Cerberus-enabled charters; handles charter updates and triggers; webhook processes charter_signatures mapping.
Cerberus: Web3 Adapter
platforms/cerberus/src/web3adapter/mappings/charter_signature.mapping.json, .../mappings/group.mapping.json, .../mappings/voting_observation.mapping.json, .../watchers/subscriber.ts
Adds charter signature and voting observation mappings; extends group mapping; enhances subscriber handling for removals and CharterSignature relations.
Group Charter Manager API: Entities & Data Source
platforms/group-charter-manager-api/src/database/entities/CharterSignature.ts, .../entities/Group.ts, .../database/data-source.ts, .../database/migrations/1755598750354-migration.ts
Adds CharterSignature entity, relation from Group, registers entity, and new migration creating charter_signature table with FKs.
Group Charter Manager API: Services & Controllers
platforms/group-charter-manager-api/src/services/CharterSignatureService.ts, .../services/CharterSigningService.ts, .../services/GroupService.ts, .../controllers/CharterSigningController.ts, .../controllers/GroupController.ts, .../index.ts
Implements in-memory signing sessions, charter signature persistence, status APIs (SSE), and group-level signing status; updates auth checks; adds routes for signing endpoints; integrates controller startup; deletes admin ensure-cerberus route.
Group Charter Manager Frontend
platforms/group-charter-manager/src/app/charter/[id]/page.tsx, .../app/create/page.tsx, .../app/page.tsx, .../components/charter-signing-interface.tsx, .../components/charter-signing-status.tsx
Adds signing UI with QR/deep-link and SSE monitoring; displays signing status; updates create flow to focus groups without charters; dashboard shows groups with charter/sign state and roles.
Ontology Schema
services/ontology/schemas/charterSignature.json
Adds Charter Signature JSON schema defining ids, relations, crypto fields, and timestamps.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User
  participant GCM_UI as Group Charter Manager UI
  participant GCM_API as Group Charter Manager API
  participant SignSvc as CharterSigningService
  participant Wallet as eID Wallet
  participant Cerb as Cerberus (Services)

  User->>GCM_UI: Click "Sign Charter"
  GCM_UI->>GCM_API: POST /api/signing/sessions (groupId, charterData)
  GCM_API->>SignSvc: createSession(...)
  SignSvc-->>GCM_API: sessionId, qrData, expiresAt
  GCM_API-->>GCM_UI: session details
  GCM_UI-->>User: Show QR / deep-link

  User->>Wallet: Scan QR / Open deep-link (w3ds://sign...)
  Wallet->>Wallet: Decode payload, ensure auth, sign message
  Wallet->>GCM_API: POST /api/signing/callback (sessionId, signature, publicKey, message)
  GCM_API->>SignSvc: processSignedPayload(...)
  SignSvc->>GCM_API: CharterSigningResult (completed)
  Note over GCM_API: Persist via CharterSignatureService

  GCM_UI->>GCM_API: SSE GET /api/signing/sessions/:id/status
  GCM_API-->>GCM_UI: event: signed (completed)
  GCM_UI-->>User: Show success, refresh status
  GCM_API->>Cerb: (async) analyze/notify via services
Loading
sequenceDiagram
  autonumber
  actor Person as User
  participant Scan as Wallet Scan QR Page
  participant Vault as Vault Controller
  participant Redirect as External Redirect URI

  Person->>Scan: Open Scan QR
  Scan->>Scan: checkPermissions -> request if needed
  alt Permissions granted
    Scan->>Scan: start scanning
  else
    Scan-->>Person: Permission error state
  end

  Scan->>Scan: Detect deep-link (auth/sign) from sessionStorage or QR
  alt Auth flow
    Scan->>Vault: ensure authenticated vault
    Scan-->>Redirect: redirect to auth callback
  else Sign flow (poll/message)
    Scan->>Vault: sign payload
    Scan->>Redirect: POST signed payload
    Redirect-->>Scan: response / redirect
  end

  Scan->>Scan: cleanup listeners on destroy
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~120 minutes

Possibly related PRs

  • prototype#301 — Also refactors infrastructure/eid-wallet scan-qr page with deep-linking and signing flow changes, overlapping core logic paths.
  • prototype#295 — Modifies eid-wallet signing and deep-link flows, including sign/+page.svelte and vault usage, intersecting this PR’s wallet updates.
  • prototype#188 — Introduces/updates VaultController usage across eid-wallet, directly related to the wallet authentication and signing integrations here.

Suggested reviewers

  • sosweetham

Poem

A rabbit twitches whiskers, keen,
New charters signed, in flows pristine.
QR hops to wallet’s glow,
SSE whispers, status snow.
Keys tap tales in crypto ink—
“Group is ready!” blink by blink.
Carrot-stamped: shipped in a wink. 🥕✨

Tip

🔌 Remote MCP (Model Context Protocol) integration is now available!

Pro plan users can now connect to remote MCP servers from the Integrations page. Connect with popular remote MCPs such as Notion and Linear to add more context to your reviews and chats.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 63647bf and eb5dd47.

📒 Files selected for processing (54)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (5 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/sign/+page.svelte (6 hunks)
  • infrastructure/web3-adapter/MAPPING_RULES.md (1 hunks)
  • platforms/blabsy/.env.production (0 hunks)
  • platforms/blabsy/.firebaserc (1 hunks)
  • platforms/blabsy/firestore.rules (1 hunks)
  • platforms/blabsy/next.config.js (1 hunks)
  • platforms/blabsy/src/components/chat/add-members.tsx (2 hunks)
  • platforms/blabsy/src/components/chat/chat-list.tsx (3 hunks)
  • platforms/blabsy/src/components/chat/chat-window.tsx (3 hunks)
  • platforms/blabsy/src/components/chat/group-settings.tsx (3 hunks)
  • platforms/blabsy/src/components/input/image-preview.tsx (7 hunks)
  • platforms/blabsy/src/components/user/user-edit-profile.tsx (5 hunks)
  • platforms/blabsy/src/components/user/user-follow.tsx (1 hunks)
  • platforms/blabsy/src/lib/context/auth-context.tsx (1 hunks)
  • platforms/blabsy/src/lib/context/user-context.tsx (2 hunks)
  • platforms/blabsy/src/lib/firebase/utils.ts (2 hunks)
  • platforms/blabsy/src/lib/types/chat.ts (1 hunks)
  • platforms/blabsy/src/lib/utils/image-utils.ts (1 hunks)
  • platforms/blabsy/storage.rules (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (3 hunks)
  • platforms/cerberus/src/database/data-source.ts (2 hunks)
  • platforms/cerberus/src/database/entities/CharterSignature.ts (1 hunks)
  • platforms/cerberus/src/database/entities/Group.ts (3 hunks)
  • platforms/cerberus/src/database/entities/VotingObservation.ts (2 hunks)
  • platforms/cerberus/src/database/migrations/1755282900142-migration.ts (0 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)
  • platforms/cerberus/src/services/CharterMonitoringService.ts (2 hunks)
  • platforms/cerberus/src/services/CharterSignatureService.ts (1 hunks)
  • platforms/cerberus/src/services/OpenAIService.ts (1 hunks)
  • platforms/cerberus/src/web3adapter/mappings/charter_signature.mapping.json (1 hunks)
  • platforms/cerberus/src/web3adapter/mappings/group.mapping.json (1 hunks)
  • platforms/cerberus/src/web3adapter/mappings/voting_observation.mapping.json (1 hunks)
  • platforms/cerberus/src/web3adapter/watchers/subscriber.ts (2 hunks)
  • platforms/group-charter-manager-api/src/controllers/CharterSigningController.ts (1 hunks)
  • platforms/group-charter-manager-api/src/controllers/GroupController.ts (4 hunks)
  • platforms/group-charter-manager-api/src/database/data-source.ts (2 hunks)
  • platforms/group-charter-manager-api/src/database/entities/CharterSignature.ts (1 hunks)
  • platforms/group-charter-manager-api/src/database/entities/Group.ts (2 hunks)
  • platforms/group-charter-manager-api/src/database/migrations/1755598750354-migration.ts (1 hunks)
  • platforms/group-charter-manager-api/src/index.ts (5 hunks)
  • platforms/group-charter-manager-api/src/services/CharterSignatureService.ts (1 hunks)
  • platforms/group-charter-manager-api/src/services/CharterSigningService.ts (1 hunks)
  • platforms/group-charter-manager-api/src/services/GroupService.ts (4 hunks)
  • platforms/group-charter-manager-api/src/web3adapter/mappings/charter_signature.mapping.json (1 hunks)
  • platforms/group-charter-manager-api/src/web3adapter/mappings/group.mapping.json (1 hunks)
  • platforms/group-charter-manager-api/src/web3adapter/watchers/subscriber.ts (2 hunks)
  • platforms/group-charter-manager/src/app/charter/[id]/page.tsx (10 hunks)
  • platforms/group-charter-manager/src/app/create/page.tsx (3 hunks)
  • platforms/group-charter-manager/src/app/page.tsx (6 hunks)
  • platforms/group-charter-manager/src/components/charter-signing-interface.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/charter-signing-status.tsx (1 hunks)
  • services/ontology/schemas/charterSignature.json (1 hunks)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/final-fixes-ms3

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@coodos coodos merged commit e7fcfcc into main Aug 19, 2025
0 of 4 checks passed
@coodos coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitai coderabbitai bot mentioned this pull request Aug 22, 2025
6 tasks
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