Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Chore/final fixes ms3 - #302

Merged
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3
Aug 19, 2025
Merged

Chore/final fixes ms3#302
coodos merged 11 commits into
mainfrom
chore/final-fixes-ms3

Conversation

@coodos

@coodoscoodos commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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).

@coderabbitai

coderabbitaiBot commented Aug 19, 2025

Copy link
Copy Markdown
Contributor

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 mainAug 19, 2025
0 of 4 checks passed
@coodos
coodos deleted the chore/final-fixes-ms3 branch August 19, 2025 18:23
@coderabbitaicoderabbitaiBot mentioned this pull request Aug 22, 2025
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 10, 2025
12 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* fix: blabsy pictures & likes
* fix: search bug
* charter: signing
* feat: sign
* fix: crud perms charter
* fix: correct sign method
* feat: charter signature threshold enforced
* chore: make cerberus only trigger when it's in the group
* chore: fix link
* chore: bump version
This was referenced Nov 12, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 5, 2026
6 tasks
Sign up for freeto 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

@coodos