From c1194dadbbd3f35664ebab3127e547dddc191c66 Mon Sep 17 00:00:00 2001 From: Padreug Date: Wed, 20 May 2026 23:48:48 +0200 Subject: [PATCH 1/3] feat(market): client-side compress product image uploads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pass `:compress="true"` to so the up-to-5 product images get resized to 1920px max edge and re-encoded as WebP before hitting pict-rs. Closes #59 for the market consumer. Default knobs match the events banner use case — both are gallery-scale images. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/modules/market/components/CreateProductDialog.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/market/components/CreateProductDialog.vue b/src/modules/market/components/CreateProductDialog.vue index dd5b505..17d536d 100644 --- a/src/modules/market/components/CreateProductDialog.vue +++ b/src/modules/market/components/CreateProductDialog.vue @@ -136,6 +136,7 @@ :show-primary-button="true" :disabled="isCreating" :allow-camera="true" + :compress="true" placeholder="Add product photos" /> From a815442990aa732e8eb61aa9fa4e600894cf78cc Mon Sep 17 00:00:00 2001 From: Padreug Date: Wed, 20 May 2026 23:48:48 +0200 Subject: [PATCH 2/3] feat(base/profile): compress avatar uploads with tight 512px cap Pass tuned compress options to : 512px max edge / 200 KB target. Avatars don't need 1920px and the smaller cap meaningfully reduces pict-rs storage for a high-volume content type. Closes #59 for the profile consumer. Co-Authored-By: Claude Opus 4.7 (1M context) --- src/modules/base/components/ProfileSettings.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/modules/base/components/ProfileSettings.vue b/src/modules/base/components/ProfileSettings.vue index fed1828..735a39a 100644 --- a/src/modules/base/components/ProfileSettings.vue +++ b/src/modules/base/components/ProfileSettings.vue @@ -30,7 +30,9 @@ - + From 67dbfb16e129027d11ea9b6c32b320dac53aec4e Mon Sep 17 00:00:00 2001 From: Padreug Date: Thu, 21 May 2026 00:02:26 +0200 Subject: [PATCH 3/3] fix(preferences): null-guard DropdownMenuRadioGroup handlers Reka UI tightened model-value's type to AcceptableValue, which includes null. The four inline (v: string) => ... handlers in PreferencesRow.vue no longer satisfied the prop's expected signature, breaking TS at the standalone-app build step (forum-app, others). Drop the string annotation, guard the null case, and cast on the forward call to preserve the intended narrowing. --- src/components/layout/PreferencesRow.vue | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/layout/PreferencesRow.vue b/src/components/layout/PreferencesRow.vue index 717339b..0acfca3 100644 --- a/src/components/layout/PreferencesRow.vue +++ b/src/components/layout/PreferencesRow.vue @@ -52,7 +52,7 @@ function notImplemented() { {{ t('common.nav.theme') }} - + {{ t('common.nav.themeLight') }} {{ t('common.nav.themeDark') }} {{ t('common.nav.themeSystem') }} @@ -71,7 +71,7 @@ function notImplemented() { {{ t('common.nav.language') }} - + {{ l.flag }}{{ l.name }} @@ -106,7 +106,7 @@ function notImplemented() { - + {{ t('common.nav.themeLight') }} {{ t('common.nav.themeDark') }} {{ t('common.nav.themeSystem') }} @@ -129,7 +129,7 @@ function notImplemented() { - + {{ l.flag }}{{ l.name }}