Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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

Feat/eid reclaim - #349

Merged
coodos merged 2 commits into
mainfrom
feat/eid-reclaim
Sep 21, 2025
Merged

Feat/eid reclaim#349
coodos merged 2 commits into
mainfrom
feat/eid-reclaim

Conversation

@coodos

@coodoscoodos commented Sep 21, 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
    • Added hardware-backed key management with automatic software fallback.
    • Verification now checks hardware support and updates the UI accordingly.
    • Support claiming an existing eVault when a duplicate is detected.
    • Added “Retry profile creation” action and automatic status monitoring on the main screen.
  • Improvements
    • More resilient network calls with timeouts and exponential backoff.
    • Smoother onboarding and verification flows with clearer status messaging.
  • UI
    • Updated Settings version display to v0.2.2.0.
  • Bug Fixes
    • Reduced duplicate processing and prevented repeated profile creation attempts.

@coderabbitai

coderabbitaiBot commented Sep 21, 2025

Copy link
Copy Markdown
Contributor

Caution

Review failed

The pull request is closed.

Walkthrough

Adds a pluggable key management layer (hardware/software) with a factory, refactors onboarding/verify flows to use it, enhances eVault profile creation with retries, and extends provisioning to handle duplicates via linkedEName/w3id with migration and event updates. Adds logging/guards in Cerberus flows and bumps Settings version text.

Changes

Cohort / File(s)Summary
Crypto Abstraction Core
`infrastructure/eid-wallet/src/lib/crypto/types.ts`, `.../HardwareKeyManager.ts`, `.../SoftwareKeyManager.ts`, `.../KeyManagerFactory.ts`, `.../index.ts`
Introduces KeyManager interface, error codes, hardware/software implementations, factory with availability probing and context handling, and central index exports.
Auth Flows: Onboarding & Verify
`infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte`, `.../(auth)/verify/+page.svelte`
Replaces direct hardware calls with KeyManager-based flow; adds capability checks, key generation/public key retrieval, and duplicate-claim path integration in verify.
App Main & Settings UI
`infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte`, `.../(app)/settings/+page.svelte`
Main: switches to context-driven state, adds status watcher and retry hook. Settings: updates version text to v0.2.2.0.
eVault Global Controller
`infrastructure/eid-wallet/src/lib/global/controllers/evault.ts`
Adds retry/backoff to endpoint resolution and profile creation; exposes `retryProfileCreation`; refines state transitions and avoids duplicate work.
Provisioner: Verification & Persistence
`infrastructure/evault-provisioner/src/config/database.ts`, `.../controllers/VerificationController.ts`, `.../entities/Verification.ts`, `.../migrations/1758389959600-migration.ts`, `.../index.ts`, `.../services/VerificationService.ts`
Changes default DB URL; adds `linkedEName` column and migration; includes `w3id` in emitted events; persists `linkedEName` during provisioning; adds service update method.
Cerberus Platform Logging/Guards
`platforms/cerberus/src/controllers/WebhookController.ts`, `.../services/CerberusTriggerService.ts`
Wraps charter processing with try/catch and adds extensive debug logging without altering core behavior.

Sequence Diagram(s)

sequenceDiagram
autonumber
actor UI as UI (Onboarding/Verify)
participant KMF as KeyManagerFactory
participant HW as HardwareKeyManager
participant SW as SoftwareKeyManager
UI->>KMF: getKeyManager(config/context)
alt pre-verification
KMF-->>UI: SW instance
else try hardware
KMF->>HW: probe exists(testKey)
alt hardware available
KMF-->>UI: HW instance
else fallback
KMF-->>UI: SW instance
end
end
UI->>KMF: generate/getPublicKey/sign/verify via manager
KMF-->>UI: result or KeyManagerError(code)
Loading
sequenceDiagram
autonumber
actor VerifyUI as Verify UI
participant Prov as Provisioner API
participant VC as VerificationController
participant VS as VerificationService
participant EE as EventEmitter
VerifyUI->>Prov: Start verification (SSE/WebSocket)
Prov->>VC: Create session
VC-->>EE: emit { status: pending }
VC->>VS: evaluate documents
alt duplicate detected
VC-->>EE: emit { status: duplicate, w3id }
else approved
VC-->>EE: emit { status: approved }
Prov->>VS: update(verificationId,{ linkedEName: w3id })
Prov-->>VerifyUI: provision eVault with w3id
end
Note over VerifyUI: If duplicate, claim existing eVault using w3id
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

I forged two keys, one steel, one air,
hopped through verifications with careful care.
Found an old warren—w3id’s trace—
claimed the burrow, saved the race.
Logs like carrots line my trail,
v0.2.2.0—onward we sail! 🥕🐇

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/eid-reclaim

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f33bba3 and 21e3d3b.

⛔ Files ignored due to path filters (3)
  • infrastructure/eid-wallet/src-tauri/gen/android/app/universal/release/app-universal-release.aab is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet.xcodeproj/project.pbxproj is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/apple/eid-wallet_iOS/Info.plist is excluded by !**/gen/**
📒 Files selected for processing (17)
  • infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/types.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/settings/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte (4 hunks)
  • infrastructure/evault-provisioner/src/config/database.ts (1 hunks)
  • infrastructure/evault-provisioner/src/controllers/VerificationController.ts (4 hunks)
  • infrastructure/evault-provisioner/src/entities/Verification.ts (1 hunks)
  • infrastructure/evault-provisioner/src/index.ts (1 hunks)
  • infrastructure/evault-provisioner/src/migrations/1758389959600-migration.ts (1 hunks)
  • platforms/cerberus/src/controllers/WebhookController.ts (2 hunks)
  • platforms/cerberus/src/services/CerberusTriggerService.ts (4 hunks)

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
pre_merge_checks:
custom_checks:
- name: "Undocumented Breaking Changes"mode: "warning"instructions: | Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


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

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

@coodos
coodos merged commit 4444dc9 into mainSep 21, 2025
0 of 4 checks passed
@coodos
coodos deleted the feat/eid-reclaim branch September 21, 2025 09:43
@coderabbitaicoderabbitaiBot mentioned this pull request Oct 14, 2025
6 tasks
coodos added a commit that referenced this pull request Nov 4, 2025
* chore: cerberus debug loggin
* feat: eid-reclaim
@coderabbitaicoderabbitaiBot mentioned this pull request Nov 13, 2025
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