From 2b76389a0fa23f8bd19aefc9e20ff833d3a2011c Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 24 Jul 2025 17:36:49 +0700 Subject: [PATCH 1/9] Fix `svelte-check` warning about enableSourcemap Sourcemaps are always on in Svelte 5, no need to enable them explicitly. We'll leave the line in the config file, commented out, in case anyone wonders about it. --- frontend/svelte.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js index 7ce916aa7f..24a8a3e4e3 100644 --- a/frontend/svelte.config.js +++ b/frontend/svelte.config.js @@ -5,7 +5,7 @@ import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; const config = { compilerOptions: { warningFilter: (warning) => warning.code != 'element_invalid_self_closing_tag', - enableSourcemap: true + // enableSourcemap: true // Sourcemaps are always on in Svelte 5, no need to enable them explicitly }, onwarn: (warning, handler) => { // eslint-plugin-svelte needs its own warning filter, duplicating the one from compilerOptions From 4fd8a8b9afb580a833573cca4e2223e87893a3c3 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 24 Jul 2025 17:39:37 +0700 Subject: [PATCH 2/9] Fix missing translation This was caught by the svelte/no-useless-mustaches rule --- .../(authenticated)/project/[project_code]/AddPurpose.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/routes/(authenticated)/project/[project_code]/AddPurpose.svelte b/frontend/src/routes/(authenticated)/project/[project_code]/AddPurpose.svelte index 4fd9fb4940..f92b922f26 100644 --- a/frontend/src/routes/(authenticated)/project/[project_code]/AddPurpose.svelte +++ b/frontend/src/routes/(authenticated)/project/[project_code]/AddPurpose.svelte @@ -68,6 +68,6 @@ {/snippet} {#snippet submitText()} - {'Add Purpose'} + {$t('project_page.add_purpose.add_button')} {/snippet} From 8ac5c84e5dc3a5265513af8ae99fab60e57cfa68 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Thu, 24 Jul 2025 17:40:05 +0700 Subject: [PATCH 3/9] Fix remaining svelte/no-useless-mustaches errors The two remaining svelte/no-useless-mustaches errors were auto-fixed by the eslint rule. --- frontend/src/routes/(authenticated)/project/create/+page.svelte | 2 +- frontend/src/routes/(unauthenticated)/register/+page.svelte | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/routes/(authenticated)/project/create/+page.svelte b/frontend/src/routes/(authenticated)/project/create/+page.svelte index a9485be059..2d395e2d73 100644 --- a/frontend/src/routes/(authenticated)/project/create/+page.svelte +++ b/frontend/src/routes/(authenticated)/project/create/+page.svelte @@ -238,7 +238,7 @@ - {#each Object.entries(options) as [value, label]} + {#each Object.entries(options) as [value, label] (value)} {/each} diff --git a/frontend/src/lib/components/Projects/ProjectFilter.svelte b/frontend/src/lib/components/Projects/ProjectFilter.svelte index 5cebab0d9d..56e728a4e0 100644 --- a/frontend/src/lib/components/Projects/ProjectFilter.svelte +++ b/frontend/src/lib/components/Projects/ProjectFilter.svelte @@ -98,7 +98,7 @@ {loading} > {#snippet activeFilterSlot({ activeFilters })} - {#each activeFilters as filter} + {#each activeFilters as filter (filter.key)} {#if filter.key === 'projectType'} diff --git a/frontend/src/lib/components/Projects/ProjectTable.svelte b/frontend/src/lib/components/Projects/ProjectTable.svelte index 7868f3599a..bce5b16294 100644 --- a/frontend/src/lib/components/Projects/ProjectTable.svelte +++ b/frontend/src/lib/components/Projects/ProjectTable.svelte @@ -55,7 +55,7 @@ - {#each projects as project} + {#each projects as project (project.id)} {#if isColumnVisible('name')} diff --git a/frontend/src/lib/components/Projects/WritingSystemList.svelte b/frontend/src/lib/components/Projects/WritingSystemList.svelte index 5d33428974..8863dc64eb 100644 --- a/frontend/src/lib/components/Projects/WritingSystemList.svelte +++ b/frontend/src/lib/components/Projects/WritingSystemList.svelte @@ -13,7 +13,7 @@
{#if writingSystems.length > 0} - {#each writingSystems as ws} + {#each writingSystems as ws (ws.tag)} {/each} diff --git a/frontend/src/lib/components/TrainTracks.svelte b/frontend/src/lib/components/TrainTracks.svelte index 8cdbee9351..276f8a8381 100644 --- a/frontend/src/lib/components/TrainTracks.svelte +++ b/frontend/src/lib/components/TrainTracks.svelte @@ -113,10 +113,10 @@ {#if circles?.length > 0} {#if rowHeights?.length > 0} - {#each curves as curve} + {#each curves as curve (curve)} {/each} - {#each svgDots as c} + {#each svgDots as c (c)} {/each} {/if} diff --git a/frontend/src/lib/components/Users/UserFilter.svelte b/frontend/src/lib/components/Users/UserFilter.svelte index dd4c9c542e..2e606c99e7 100644 --- a/frontend/src/lib/components/Users/UserFilter.svelte +++ b/frontend/src/lib/components/Users/UserFilter.svelte @@ -54,8 +54,8 @@ {loading} > {#snippet activeFilterSlot({ activeFilters })} - - {#each activeFilters as filter} + + {#each activeFilters as filter (filter.key)} {#if filter.key === 'userType' && filter.value} {#if filter.value === 'admin'} @@ -76,10 +76,10 @@ {/if} {/each} - + {/snippet} {#snippet filterSlot()} - +

{$t('admin_dashboard.user_filter.title')}

{#if filterEnabled('userType')}
@@ -97,6 +97,6 @@
{/if} - + {/snippet} diff --git a/frontend/src/lib/components/Users/UserProjects.svelte b/frontend/src/lib/components/Users/UserProjects.svelte index 4d74392e99..d56841b331 100644 --- a/frontend/src/lib/components/Users/UserProjects.svelte +++ b/frontend/src/lib/components/Users/UserProjects.svelte @@ -73,7 +73,7 @@ - {#each projects as proj} + {#each projects as proj (proj.id)} {@const isManager = proj.memberRole === ProjectRole.Manager} diff --git a/frontend/src/lib/components/Users/UserTable.svelte b/frontend/src/lib/components/Users/UserTable.svelte index 7191608461..f22affe7b8 100644 --- a/frontend/src/lib/components/Users/UserTable.svelte +++ b/frontend/src/lib/components/Users/UserTable.svelte @@ -30,7 +30,7 @@ - {#each shownUsers as user} + {#each shownUsers as user (user.id)}
diff --git a/frontend/src/lib/forms/DisplayLanguageSelect.svelte b/frontend/src/lib/forms/DisplayLanguageSelect.svelte index e1c57bd8c2..17a93cd5be 100644 --- a/frontend/src/lib/forms/DisplayLanguageSelect.svelte +++ b/frontend/src/lib/forms/DisplayLanguageSelect.svelte @@ -25,7 +25,7 @@ {/if} - {#each availableLocales as locale} + {#each availableLocales as locale (locale)} {/each} diff --git a/frontend/src/lib/forms/ProjectTypeSelect.svelte b/frontend/src/lib/forms/ProjectTypeSelect.svelte index 048eca8920..a74556080a 100644 --- a/frontend/src/lib/forms/ProjectTypeSelect.svelte +++ b/frontend/src/lib/forms/ProjectTypeSelect.svelte @@ -25,7 +25,7 @@ {#if undefinedOptionLabel} {/if} - {#each types as type} + {#each types as type (type)} {/each} {#if includeUnknown} diff --git a/frontend/src/lib/forms/RadioButtonGroup.svelte b/frontend/src/lib/forms/RadioButtonGroup.svelte index e9009d893e..9fd3b9c389 100644 --- a/frontend/src/lib/forms/RadioButtonGroup.svelte +++ b/frontend/src/lib/forms/RadioButtonGroup.svelte @@ -39,7 +39,7 @@
{label}
- {#each buttons as button} + {#each buttons as button (button.value)}