From ea436030a2cb7e41b34ea810d929c2ad991e73de Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 18:18:47 +0500 Subject: [PATCH 01/10] ARM64 support #6 --- .github/workflows/create-release.yml | 2 +- .github/workflows/push-dev.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-release.yml b/.github/workflows/create-release.yml index 5c4e003..f0b438d 100644 --- a/.github/workflows/create-release.yml +++ b/.github/workflows/create-release.yml @@ -46,4 +46,4 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 diff --git a/.github/workflows/push-dev.yml b/.github/workflows/push-dev.yml index a087f5b..012aa5d 100644 --- a/.github/workflows/push-dev.yml +++ b/.github/workflows/push-dev.yml @@ -45,4 +45,4 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} - platforms: linux/amd64 + platforms: linux/amd64,linux/arm64 From ff5b879fbb80a9c8ddcd00bc01f473d53d5d2a6a Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 21:47:27 +0500 Subject: [PATCH 02/10] remove shaking && fix Non responsive Add button #5 --- src/lib/components/dashboard.svelte | 24 ++++-------------------- src/lib/components/emptyItem.svelte | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/lib/components/dashboard.svelte b/src/lib/components/dashboard.svelte index f267325..682339b 100644 --- a/src/lib/components/dashboard.svelte +++ b/src/lib/components/dashboard.svelte @@ -227,6 +227,10 @@ {/each} {#if editMode} { + hoveredId = id; + }} handleClick={() => handleClickItemAction(ActionType.CREATE, group.id, newItem())} /> {/if} @@ -254,30 +258,10 @@ } .edit-mode { - animation: tilt-shaking 0.3s infinite; @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200; .item { - animation: tilt-shaking 0.2s infinite; @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200; } } - - @keyframes tilt-shaking { - 0% { - transform: rotate(0deg); - } - 25% { - transform: rotate(0.3deg); - } - 50% { - transform: rotate(0eg); - } - 75% { - transform: rotate(-0.3deg); - } - 100% { - transform: rotate(0deg); - } - } diff --git a/src/lib/components/emptyItem.svelte b/src/lib/components/emptyItem.svelte index 49d98ec..0602143 100644 --- a/src/lib/components/emptyItem.svelte +++ b/src/lib/components/emptyItem.svelte @@ -1,9 +1,23 @@ diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 9b776b7..b719dbd 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,6 +1,8 @@ + {@render children()} From c2e29c465cfe1a29c12aaacb7467523b0ad47f58 Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 21:48:27 +0500 Subject: [PATCH 04/10] Dark Mode #7 --- src/app.html | 5 +++- src/hooks.server.ts | 2 -- src/lib/components/actionButtons.svelte | 4 +-- src/lib/components/dashboard.svelte | 14 +++++----- src/lib/components/header.svelte | 34 +++++++++++++++---------- src/routes/+page.svelte | 2 +- 6 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/app.html b/src/app.html index 7ce9e3b..252205a 100644 --- a/src/app.html +++ b/src/app.html @@ -11,7 +11,10 @@ %sveltekit.head% - +
%sveltekit.body%
diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 3272dbb..e5bea97 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -13,7 +13,6 @@ export const handle: Handle = async ({ event, resolve }) => { const token = event.cookies.get(cookie_token_key); if (!token) { - console.log('!!!!! not has token', token); return resolve(event); } @@ -24,7 +23,6 @@ export const handle: Handle = async ({ event, resolve }) => { event.locals.userAuthenticated = true; }) .catch(() => { - console.log('!!!!! cant check jwt', token); event.cookies.delete(cookie_token_key, { path: '/' }); }); diff --git a/src/lib/components/actionButtons.svelte b/src/lib/components/actionButtons.svelte index 6e29d1c..03c89fe 100644 --- a/src/lib/components/actionButtons.svelte +++ b/src/lib/components/actionButtons.svelte @@ -27,7 +27,7 @@ onclick={() => { handleClick(ActionType.EDIT); }} - class="h-4 w-4 cursor-pointer p-3!"> diff --git a/src/lib/components/dashboard.svelte b/src/lib/components/dashboard.svelte index 682339b..5e5d7c8 100644 --- a/src/lib/components/dashboard.svelte +++ b/src/lib/components/dashboard.svelte @@ -123,7 +123,7 @@ {#each groups as group (`g_${group.id}`)}
-

+

{group.title}

{#if group.description} @@ -204,7 +204,7 @@
{/if}
-

+

{item.title}

@@ -250,18 +250,18 @@ } .item { - @apply relative rounded-lg bg-white p-3 shadow-sm ring-1 ring-gray-200 transition-all duration-200; + @apply relative rounded-lg bg-white p-3 shadow-sm ring-1 ring-gray-200 transition-all duration-200 dark:bg-black dark:ring-gray-800; } .item:not(.edit-mode) { - @apply cursor-pointer hover:shadow-md hover:ring-2 hover:ring-blue-300; + @apply cursor-pointer hover:shadow-md hover:ring-2 hover:ring-blue-300 dark:hover:ring-blue-900; } .edit-mode { - @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200; + @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200 dark:hover:ring-blue-900; .item { - @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200; + @apply cursor-move hover:shadow-md hover:ring-2 hover:ring-blue-200 dark:hover:ring-blue-900; } } diff --git a/src/lib/components/header.svelte b/src/lib/components/header.svelte index 20583cf..905405d 100644 --- a/src/lib/components/header.svelte +++ b/src/lib/components/header.svelte @@ -1,5 +1,5 @@

-

DashLit

- - {#if editMode} - handleSave()} - >Save - {:else} - - {/if} - {#if canLogout} - - {/if} - +

DashLit

+ +
+ + + {#if editMode} + handleSave()}>Save + {:else} + + {/if} + {#if canLogout} + + {/if} + +
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 4a18270..c7c8585 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -149,7 +149,7 @@ {page_title} -
+
Date: Sat, 28 Jun 2025 21:51:51 +0500 Subject: [PATCH 05/10] disable preload logout link --- src/lib/components/header.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/components/header.svelte b/src/lib/components/header.svelte index 905405d..01911e4 100644 --- a/src/lib/components/header.svelte +++ b/src/lib/components/header.svelte @@ -26,7 +26,7 @@ {/if} {#if canLogout} - + {/if}
From 2d33894a679d69e67476d1a57a9d7b595ae8fa2b Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 22:08:58 +0500 Subject: [PATCH 06/10] error page --- src/routes/+error.svelte | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/routes/+error.svelte diff --git a/src/routes/+error.svelte b/src/routes/+error.svelte new file mode 100644 index 0000000..96d36d6 --- /dev/null +++ b/src/routes/+error.svelte @@ -0,0 +1,23 @@ + + + + {page.status} - error + + + + From 946d3e75f42e7b1a8a699955c357d55a9187fa95 Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 22:24:37 +0500 Subject: [PATCH 07/10] demo mode and save toast --- src/routes/+page.server.ts | 6 +++++- src/routes/+page.svelte | 20 ++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/routes/+page.server.ts b/src/routes/+page.server.ts index 07448c7..7ab374a 100644 --- a/src/routes/+page.server.ts +++ b/src/routes/+page.server.ts @@ -22,7 +22,11 @@ export const load: PageServerLoad = async (event) => { return '{}'; }); const dashboard: Dashboard = JSON.parse(data); - return { groups: dashboard.groups, canLogout: (env.PASSWORD?.length ?? 0) > 0 }; + return { + groups: dashboard.groups, + canLogout: (env.PASSWORD?.length ?? 0) > 0, + isDemoMode: env.DEMO_MODE === 'true' + }; }; export const actions = { diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index c7c8585..d478d50 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -12,8 +12,9 @@ import ModalDelete from '$lib/components/modalDelete.svelte'; import ModalFormItem from '$lib/components/modalFormItem.svelte'; import ModalFormGroup from '$lib/components/modalFormGroup.svelte'; - import { newGroup, newItem } from '$lib/factory.js'; + import { newGroup, newItem } from '$lib/factory'; import { page_title } from '$lib'; + import toast from 'svelte-5-french-toast'; let { data } = $props(); @@ -31,12 +32,23 @@ // dashboard const handleSaveDashboard = async () => { + if (data.isDemoMode) { + toast.success('Demo mode is enabled. Changes are not saved.'); + editMode = false; + return; + } + const toastId = toast.loading('Saving...'); await fetch('', { method: 'POST', body: JSON.stringify(groups) - }).then(() => { - editMode = false; - }); + }) + .then(() => { + editMode = false; + toast.success('Saved!', { icon: '✅', id: toastId }); + }) + .catch(() => { + toast.error('Error saving dashboard', { icon: '⚠️', id: toastId }); + }); }; const handleDeleteEntity = () => { From 9c14ee77c6107b4ae1d9c343df1a1ff8cc76a4af Mon Sep 17 00:00:00 2001 From: wec Date: Sat, 28 Jun 2025 22:31:25 +0500 Subject: [PATCH 08/10] icon from url --- src/lib/components/dashboard.svelte | 12 ++++++++++-- src/lib/components/modalFormItem.svelte | 4 ++-- src/lib/helpers.ts | 8 ++++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/lib/components/dashboard.svelte b/src/lib/components/dashboard.svelte index 5e5d7c8..bcc4075 100644 --- a/src/lib/components/dashboard.svelte +++ b/src/lib/components/dashboard.svelte @@ -5,7 +5,7 @@ import { flip } from 'svelte/animate'; import { fade } from 'svelte/transition'; import ActionButtons from './actionButtons.svelte'; - import { getIds, hasField } from '$lib/helpers'; + import { getIds, hasField, isUrlString } from '$lib/helpers'; import EmptyItem from './emptyItem.svelte'; import EmptyGroup from './emptyGroup.svelte'; import { newGroup, newItem } from '$lib/factory'; @@ -200,7 +200,15 @@
{#if item.icon}
- + {#if isUrlString(item.icon)} + {item.title} + {:else} + + {/if}
{/if}
diff --git a/src/lib/components/modalFormItem.svelte b/src/lib/components/modalFormItem.svelte index c41ff5a..c992c5b 100644 --- a/src/lib/components/modalFormItem.svelte +++ b/src/lib/components/modalFormItem.svelte @@ -35,9 +35,9 @@