+
+
+
Checking device capabilities...
- {:else if showHardwareError}
-
- Hardware Security Not Available
-
-
- Your phone doesn't support hardware crypto keys, which is a requirement for verified IDs.
-
-
- Please use the pre-verification code option to create a demo account instead.
-
-
- {
- isPaneOpen = false;
- handlePreVerified();
- }}
- >
- Use Pre-Verification Code
-
+
+ {:else if showHardwareError}
+
+ Hardware Security Not Available
+
+
+ Your phone doesn't support hardware crypto keys, which is a
+ requirement for verified IDs.
+
+
+ Please use the pre-verification code option to create a demo account
+ instead.
+
+
+ {
+ isPaneOpen = false;
+ handlePreVerified();
+ }}
+ >
+ Use Pre-Verification Code
+
+
+ {:else if loading}
+
+
+
+
Initializing security keys...
- {:else}
- {#if loading}
-
-
-
-
Initializing security keys...
-
-
- {:else}
-
- Your Digital Self begins with the Real You
-
-
- In the Web 3.0 Data Space, identity is linked to reality. We begin
- by verifying your real-world passport, which serves as the
- foundation for issuing your secure ePassport. At the same time, we
- generate your eName – a unique digital identifier – and create your
- eVault to store and protect your personal data.
-
-
- Next
-
- {/if}
- {/if}
+
+ {:else}
+
+ Your Digital Self begins with the Real You
+
+
+ In the Web 3.0 Data Space, identity is linked to reality. We begin
+ by verifying your real-world passport, which serves as the
+ foundation for issuing your secure ePassport. At the same time, we
+ generate your eName – a unique digital identifier – and create your
+ eVault to store and protect your personal data.
+
+
+ Next
+
{/if}
From e27f40b2d90f27ffab5581cd5b2b4ce6de87c588 Mon Sep 17 00:00:00 2001
From: gourav
Date: Mon, 17 Nov 2025 13:00:24 +0530
Subject: [PATCH 2/5] fix: format and lint
---
.../src/routes/(auth)/onboarding/+page.svelte | 457 +++++++++---------
1 file changed, 223 insertions(+), 234 deletions(-)
diff --git a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
index 0aadb288..28bb4c63 100644
--- a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
+++ b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
@@ -1,276 +1,265 @@
Date: Mon, 17 Nov 2025 13:50:49 +0530
Subject: [PATCH 3/5] fix: now cancel button does something
---
.../src/lib/ui/Drawer/Drawer.svelte | 106 +++----
.../src/routes/(app)/settings/+page.svelte | 287 +++++++++---------
2 files changed, 199 insertions(+), 194 deletions(-)
diff --git a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
index fa1c6e4e..7bf583cf 100644
--- a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
+++ b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
@@ -1,65 +1,65 @@
-import { goto } from "$app/navigation";
-import { SettingsNavigationBtn } from "$lib/fragments";
-import type { GlobalState } from "$lib/global";
-import { runtime } from "$lib/global/runtime.svelte";
-import { ButtonAction, Drawer } from "$lib/ui";
-import {
- Key01Icon,
- LanguageSquareIcon,
- Link02Icon,
- PinCodeIcon,
- Shield01Icon,
-} from "@hugeicons/core-free-icons";
-import { getContext } from "svelte";
-
-const getGlobalState = getContext<() => GlobalState>("globalState");
-const setGlobalState =
- getContext<(value: GlobalState) => void>("setGlobalState");
-let globalState = getGlobalState();
-
-let isDeleteConfirmationOpen = $state(false);
-let isFinalConfirmationOpen = $state(false);
-
-// Hidden eVault profile retry functionality
-let tapCount = $state(0);
-let lastTapTime = $state(0);
-let isRetrying = $state(false);
-let retryMessage = $state("");
-
-function showDeleteConfirmation() {
- isDeleteConfirmationOpen = true;
-}
-
-function confirmDelete() {
- isDeleteConfirmationOpen = false;
- isFinalConfirmationOpen = true;
-}
-
-async function nukeWallet() {
- const newGlobalState = await globalState.reset();
- setGlobalState(newGlobalState);
- globalState = newGlobalState;
- goto("/onboarding");
-}
-
-function cancelDelete() {
- isDeleteConfirmationOpen = false;
- isFinalConfirmationOpen = false;
-}
-
-async function handleVersionTap() {
- const now = Date.now();
-
- // Reset counter if more than 3 seconds between taps
- if (now - lastTapTime > 3000) {
- tapCount = 0;
+ import { goto } from "$app/navigation";
+ import { SettingsNavigationBtn } from "$lib/fragments";
+ import type { GlobalState } from "$lib/global";
+ import { runtime } from "$lib/global/runtime.svelte";
+ import { ButtonAction, Drawer } from "$lib/ui";
+ import {
+ Key01Icon,
+ LanguageSquareIcon,
+ Link02Icon,
+ PinCodeIcon,
+ Shield01Icon,
+ } from "@hugeicons/core-free-icons";
+ import { getContext } from "svelte";
+
+ const getGlobalState = getContext<() => GlobalState>("globalState");
+ const setGlobalState =
+ getContext<(value: GlobalState) => void>("setGlobalState");
+ let globalState = getGlobalState();
+
+ let isDeleteConfirmationOpen = $state(false);
+ let isFinalConfirmationOpen = $state(false);
+
+ // Hidden eVault profile retry functionality
+ let tapCount = $state(0);
+ let lastTapTime = $state(0);
+ let isRetrying = $state(false);
+ let retryMessage = $state("");
+
+ function showDeleteConfirmation() {
+ isDeleteConfirmationOpen = true;
}
- tapCount++;
- lastTapTime = now;
+ function confirmDelete() {
+ isDeleteConfirmationOpen = false;
+ isFinalConfirmationOpen = true;
+ }
+
+ async function nukeWallet() {
+ const newGlobalState = await globalState.reset();
+ setGlobalState(newGlobalState);
+ globalState = newGlobalState;
+ goto("/onboarding");
+ }
- // Show tap count feedback (only visible to user)
- if (tapCount >= 5) {
- retryMessage = `Taps: ${tapCount}/10`;
+ function cancelDelete() {
+ isDeleteConfirmationOpen = false;
+ isFinalConfirmationOpen = false;
}
- // Trigger eVault profile retry after 10 taps
- if (tapCount === 10) {
- isRetrying = true;
- retryMessage = "Retrying eVault profile setup...";
-
- try {
- await globalState.vaultController.retryProfileCreation();
- retryMessage = "✅ eVault profile setup completed successfully!";
-
- // Reset after success
- setTimeout(() => {
- tapCount = 0;
- retryMessage = "";
- isRetrying = false;
- }, 3000);
- } catch (error) {
- console.error("Failed to retry eVault profile setup:", error);
- retryMessage =
- "❌ Failed to setup eVault profile. Check console for details.";
-
- // Reset after error
- setTimeout(() => {
- tapCount = 0;
- retryMessage = "";
- isRetrying = false;
- }, 5000);
+ async function handleVersionTap() {
+ const now = Date.now();
+
+ // Reset counter if more than 3 seconds between taps
+ if (now - lastTapTime > 3000) {
+ tapCount = 0;
+ }
+
+ tapCount++;
+ lastTapTime = now;
+
+ // Show tap count feedback (only visible to user)
+ if (tapCount >= 5) {
+ retryMessage = `Taps: ${tapCount}/10`;
+ }
+
+ // Trigger eVault profile retry after 10 taps
+ if (tapCount === 10) {
+ isRetrying = true;
+ retryMessage = "Retrying eVault profile setup...";
+
+ try {
+ await globalState.vaultController.retryProfileCreation();
+ retryMessage =
+ "✅ eVault profile setup completed successfully!";
+
+ // Reset after success
+ setTimeout(() => {
+ tapCount = 0;
+ retryMessage = "";
+ isRetrying = false;
+ }, 3000);
+ } catch (error) {
+ console.error("Failed to retry eVault profile setup:", error);
+ retryMessage =
+ "❌ Failed to setup eVault profile. Check console for details.";
+
+ // Reset after error
+ setTimeout(() => {
+ tapCount = 0;
+ retryMessage = "";
+ isRetrying = false;
+ }, 5000);
+ }
}
}
-}
-$effect(() => {
- runtime.header.title = "Settings";
-});
+ $effect(() => {
+ runtime.header.title = "Settings";
+ });
@@ -146,59 +147,63 @@ $effect(() => {
-
-
-
- ⚠️ Delete Account Warning
-
-
- Are you sure you want to delete your account? This action will:
-
-
- - • Permanently delete all your personal data
- - • Remove your ePassport and eVault access
- - • Delete your eName and all associated credentials
- - • Make your data inaccessible within 24 hours
- - • This action cannot be undone
-
-
-
Cancel
-
Continue
+{#if isDeleteConfirmationOpen}
+
+
+
+ ⚠️ Delete Account Warning
+
+
+ Are you sure you want to delete your account? This action will:
+
+
+ - • Permanently delete all your personal data
+ - • Remove your ePassport and eVault access
+ - • Delete your eName and all associated credentials
+ - • Make your data inaccessible within 24 hours
+ - • This action cannot be undone
+
+
+ Cancel
+ Continue
+
-
-
+
+{/if}
-
-
-
- 🚨 Final Confirmation
-
-
- This is your final warning. Once you confirm:
-
-
-
- All your data will be permanently deleted and you will lose
- access to your ePassport, eVault, and eName forever.
+{#if isFinalConfirmationOpen}
+
+
+
+ 🚨 Final Confirmation
+
+
+ This is your final warning. Once you confirm:
+
+
+ All your data will be permanently deleted and you will lose
+ access to your ePassport, eVault, and eName forever.
+
+
+
+ Are you absolutely certain you want to proceed?
+
+
+ Cancel
+ Delete
+
-
- Are you absolutely certain you want to proceed?
-
-
- Cancel
- Delete
-
-
-
+
+{/if}
From f8988dc8ff7e2d23f9745d440054b15b3e02e9ff Mon Sep 17 00:00:00 2001
From: gourav
Date: Mon, 17 Nov 2025 13:58:31 +0530
Subject: [PATCH 4/5] fix: demo name continue button
---
.../src/lib/ui/Drawer/Drawer.svelte | 106 +++++-----
.../src/routes/(app)/settings/+page.svelte | 181 +++++++++---------
.../src/routes/(auth)/onboarding/+page.svelte | 7 +-
3 files changed, 148 insertions(+), 146 deletions(-)
diff --git a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
index 7bf583cf..fa1c6e4e 100644
--- a/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
+++ b/infrastructure/eid-wallet/src/lib/ui/Drawer/Drawer.svelte
@@ -1,65 +1,65 @@
- import { goto } from "$app/navigation";
- import { SettingsNavigationBtn } from "$lib/fragments";
- import type { GlobalState } from "$lib/global";
- import { runtime } from "$lib/global/runtime.svelte";
- import { ButtonAction, Drawer } from "$lib/ui";
- import {
- Key01Icon,
- LanguageSquareIcon,
- Link02Icon,
- PinCodeIcon,
- Shield01Icon,
- } from "@hugeicons/core-free-icons";
- import { getContext } from "svelte";
-
- const getGlobalState = getContext<() => GlobalState>("globalState");
- const setGlobalState =
- getContext<(value: GlobalState) => void>("setGlobalState");
- let globalState = getGlobalState();
-
- let isDeleteConfirmationOpen = $state(false);
- let isFinalConfirmationOpen = $state(false);
-
- // Hidden eVault profile retry functionality
- let tapCount = $state(0);
- let lastTapTime = $state(0);
- let isRetrying = $state(false);
- let retryMessage = $state("");
-
- function showDeleteConfirmation() {
- isDeleteConfirmationOpen = true;
+import { goto } from "$app/navigation";
+import { SettingsNavigationBtn } from "$lib/fragments";
+import type { GlobalState } from "$lib/global";
+import { runtime } from "$lib/global/runtime.svelte";
+import { ButtonAction, Drawer } from "$lib/ui";
+import {
+ Key01Icon,
+ LanguageSquareIcon,
+ Link02Icon,
+ PinCodeIcon,
+ Shield01Icon,
+} from "@hugeicons/core-free-icons";
+import { getContext } from "svelte";
+
+const getGlobalState = getContext<() => GlobalState>("globalState");
+const setGlobalState =
+ getContext<(value: GlobalState) => void>("setGlobalState");
+let globalState = getGlobalState();
+
+let isDeleteConfirmationOpen = $state(false);
+let isFinalConfirmationOpen = $state(false);
+
+// Hidden eVault profile retry functionality
+let tapCount = $state(0);
+let lastTapTime = $state(0);
+let isRetrying = $state(false);
+let retryMessage = $state("");
+
+function showDeleteConfirmation() {
+ isDeleteConfirmationOpen = true;
+}
+
+function confirmDelete() {
+ isDeleteConfirmationOpen = false;
+ isFinalConfirmationOpen = true;
+}
+
+async function nukeWallet() {
+ const newGlobalState = await globalState.reset();
+ setGlobalState(newGlobalState);
+ globalState = newGlobalState;
+ goto("/onboarding");
+}
+
+function cancelDelete() {
+ isDeleteConfirmationOpen = false;
+ isFinalConfirmationOpen = false;
+}
+
+async function handleVersionTap() {
+ const now = Date.now();
+
+ // Reset counter if more than 3 seconds between taps
+ if (now - lastTapTime > 3000) {
+ tapCount = 0;
}
- function confirmDelete() {
- isDeleteConfirmationOpen = false;
- isFinalConfirmationOpen = true;
- }
-
- async function nukeWallet() {
- const newGlobalState = await globalState.reset();
- setGlobalState(newGlobalState);
- globalState = newGlobalState;
- goto("/onboarding");
- }
+ tapCount++;
+ lastTapTime = now;
- function cancelDelete() {
- isDeleteConfirmationOpen = false;
- isFinalConfirmationOpen = false;
+ // Show tap count feedback (only visible to user)
+ if (tapCount >= 5) {
+ retryMessage = `Taps: ${tapCount}/10`;
}
- async function handleVersionTap() {
- const now = Date.now();
-
- // Reset counter if more than 3 seconds between taps
- if (now - lastTapTime > 3000) {
- tapCount = 0;
- }
-
- tapCount++;
- lastTapTime = now;
-
- // Show tap count feedback (only visible to user)
- if (tapCount >= 5) {
- retryMessage = `Taps: ${tapCount}/10`;
- }
-
- // Trigger eVault profile retry after 10 taps
- if (tapCount === 10) {
- isRetrying = true;
- retryMessage = "Retrying eVault profile setup...";
-
- try {
- await globalState.vaultController.retryProfileCreation();
- retryMessage =
- "✅ eVault profile setup completed successfully!";
-
- // Reset after success
- setTimeout(() => {
- tapCount = 0;
- retryMessage = "";
- isRetrying = false;
- }, 3000);
- } catch (error) {
- console.error("Failed to retry eVault profile setup:", error);
- retryMessage =
- "❌ Failed to setup eVault profile. Check console for details.";
-
- // Reset after error
- setTimeout(() => {
- tapCount = 0;
- retryMessage = "";
- isRetrying = false;
- }, 5000);
- }
+ // Trigger eVault profile retry after 10 taps
+ if (tapCount === 10) {
+ isRetrying = true;
+ retryMessage = "Retrying eVault profile setup...";
+
+ try {
+ await globalState.vaultController.retryProfileCreation();
+ retryMessage = "✅ eVault profile setup completed successfully!";
+
+ // Reset after success
+ setTimeout(() => {
+ tapCount = 0;
+ retryMessage = "";
+ isRetrying = false;
+ }, 3000);
+ } catch (error) {
+ console.error("Failed to retry eVault profile setup:", error);
+ retryMessage =
+ "❌ Failed to setup eVault profile. Check console for details.";
+
+ // Reset after error
+ setTimeout(() => {
+ tapCount = 0;
+ retryMessage = "";
+ isRetrying = false;
+ }, 5000);
}
}
+}
- $effect(() => {
- runtime.header.title = "Settings";
- });
+$effect(() => {
+ runtime.header.title = "Settings";
+});
diff --git a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
index 28bb4c63..d2f784c9 100644
--- a/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
+++ b/infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
@@ -349,8 +349,11 @@ onMount(async () => {
placeholder="Enter your demo name for ePassport"
/>
- ContinueContinue
{:else}
From 1e2298079551c106590c9497d5e487c1dff5f20d Mon Sep 17 00:00:00 2001
From: gourav
Date: Mon, 17 Nov 2025 17:45:30 +0530
Subject: [PATCH 5/5] fix: format and lint
---
platforms/blabsy/src/components/input/image-preview.tsx | 6 +++---
platforms/blabsy/src/lib/utils/image-utils.ts | 5 ++++-
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/platforms/blabsy/src/components/input/image-preview.tsx b/platforms/blabsy/src/components/input/image-preview.tsx
index e35afc91..6ecf5c33 100644
--- a/platforms/blabsy/src/components/input/image-preview.tsx
+++ b/platforms/blabsy/src/components/input/image-preview.tsx
@@ -67,9 +67,9 @@ export function ImagePreview({
type: img.type
}))
});
-
+
const processed = combineBase64Images(imagesPreview);
-
+
console.log('[ImagePreview] Processed images:', {
originalCount: imagesPreview?.length || 0,
processedCount: processed.length,
@@ -82,7 +82,7 @@ export function ImagePreview({
type: img.type
}))
});
-
+
return processed;
}, [imagesPreview]);
diff --git a/platforms/blabsy/src/lib/utils/image-utils.ts b/platforms/blabsy/src/lib/utils/image-utils.ts
index 70128f6f..7f4ab678 100644
--- a/platforms/blabsy/src/lib/utils/image-utils.ts
+++ b/platforms/blabsy/src/lib/utils/image-utils.ts
@@ -42,7 +42,10 @@ export function combineBase64Images(
} else {
// Handle odd number of images (last item)
if (dataPart) {
- if (dataPart.src.startsWith('data:') && !dataPart.src.includes(',')) {
+ if (
+ dataPart.src.startsWith('data:') &&
+ !dataPart.src.includes(',')
+ ) {
// Incomplete base64 image, skip it
} else {
result.push(dataPart);