From 5e78e67fc8a76117345db823611e4448607ab80e Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 15:34:53 +0200 Subject: [PATCH 1/9] remove cache busting --- public/site/snippets/header.php | 4 +-- vite.config.js | 58 ++++++++++++++++++--------------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/public/site/snippets/header.php b/public/site/snippets/header.php index f8e4f54..a35fc34 100644 --- a/public/site/snippets/header.php +++ b/public/site/snippets/header.php @@ -25,8 +25,8 @@ - - + + diff --git a/vite.config.js b/vite.config.js index 53268a1..154116f 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,33 +1,37 @@ import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; -export default defineConfig({ - plugins: [vue()], - base: '/', - build: { - outDir: 'dist', - rollupOptions: { - output: { - entryFileNames: 'assets/dist/[name].js', - assetFileNames: 'assets/dist/[name].[ext]', +export default defineConfig(({ mode }) => { + return { + plugins: [vue()], + base: '/', + build: { + outDir: 'dist', + rollupOptions: { + output: { + entryFileNames: 'assets/dist/[name].js', + assetFileNames: 'assets/dist/[name].[ext]', + }, + }, + sourcemap: mode === 'staging', + minify: mode === 'production', + }, + server: { + watch: { + ignored: [ + '**/node_modules/**', + '**/.git/**', + '**/.cache/**', + '**/.vite/**', + '**/dist/**', + '**/*.log', + '**/.idea/**', + '**/.vscode/**', + '**/public/assets/**', + '**/local/**', + '/public/**', + ], }, }, - }, - server: { - watch: { - ignored: [ - '**/node_modules/**', - '**/.git/**', - '**/.cache/**', - '**/.vite/**', - '**/dist/**', - '**/*.log', - '**/.idea/**', - '**/.vscode/**', - '**/public/assets/**', - '**/local/**', - '/public/**', - ], - }, - }, + }; }); From 95bdf4615d149635d13f6ae7f6ac41184d7763a2 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 15:47:45 +0200 Subject: [PATCH 2/9] fix CI --- .gitlab-ci.yml | 79 ++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 63 insertions(+), 16 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8617d19..c5d58cb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,12 +1,13 @@ stages: - build - deploy - variables: COMPOSER_ALLOW_SUPERUSER: '1' -build: +build_prod: stage: build + only: + - prod image: composer:2 script: - apk add --no-cache nodejs npm @@ -23,7 +24,27 @@ build: paths: - node_modules/ -deploy: +build_preprod: + stage: build + only: + - preprod + image: composer:2 + script: + - apk add --no-cache nodejs npm + - npm install + - npm run build:preprod + - cd dist - + composer install --no-dev --optimize-autoloader --ignore-platform-req=ext-gd + - cd .. + artifacts: + paths: + - dist/ + cache: + key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ + +deploy_prod: stage: deploy image: node:latest only: @@ -33,18 +54,44 @@ deploy: script: - cd dist - | - rsync_deploy() { - local src=$1 - local dst=$2 - local exclude=$3 - cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" - [[ -n $exclude ]] && cmd="$cmd $exclude" - cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" - echo "$cmd" - eval $cmd - } + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "$cmd" + eval $cmd + } - rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" - rsync_deploy vendor/ "$PROD_PATH/vendor/" - rsync_deploy kirby/ "$PROD_PATH/kirby/" + rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$PROD_PATH/vendor/" + rsync_deploy kirby/ "$PROD_PATH/kirby/" rsync_deploy assets/ "$PROD_PATH/assets/" "--exclude 'tiles/'" + +deploy_preprod: + stage: deploy + image: node:latest + only: + - preprod + before_script: + - apt-get update -qq && apt-get install -y rsync sshpass + script: + - cd dist + - | + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "$cmd" + eval $cmd + } + + rsync_deploy site/ "$PREPROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$PREPROD_PATH/vendor/" + rsync_deploy kirby/ "$PREPROD_PATH/kirby/" + rsync_deploy assets/ "$PREPROD_PATH/assets/" "--exclude 'tiles/'" From 729d72e18a473804f0ee82b75fecacb1a1630d87 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 15:48:35 +0200 Subject: [PATCH 3/9] fix CI --- .gitlab-ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c5d58cb..5fa295d 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,10 +39,10 @@ build_preprod: artifacts: paths: - dist/ - cache: - key: ${CI_COMMIT_REF_SLUG} - paths: - - node_modules/ + cache: + key: ${CI_COMMIT_REF_SLUG} + paths: + - node_modules/ deploy_prod: stage: deploy From 186f7b80ba3bc5af1f81b6497a612a1aeab38915 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 15:56:15 +0200 Subject: [PATCH 4/9] fix CI --- .gitlab-ci.yml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3d6fd61..aa30802 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ stages: - build - deploy + variables: COMPOSER_ALLOW_SUPERUSER: '1' @@ -82,18 +83,18 @@ deploy_prod: script: - cd dist - | - rsync_deploy() { - local src=$1 - local dst=$2 - local exclude=$3 - cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" - [[ -n $exclude ]] && cmd="$cmd $exclude" - cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" - echo "$cmd" - eval $cmd - } + rsync_deploy() { + local src=$1 + local dst=$2 + local exclude=$3 + cmd="sshpass -p \"$PASSWORD\" rsync -az --delete -O" + [[ -n $exclude ]] && cmd="$cmd $exclude" + cmd="$cmd -e 'ssh -p 2244 -o StrictHostKeyChecking=no' $src $USERNAME@$HOST:$dst" + echo "$cmd" + eval $cmd + } - rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" - rsync_deploy vendor/ "$PROD_PATH/vendor/" - rsync_deploy kirby/ "$PROD_PATH/kirby/" + rsync_deploy site/ "$PROD_PATH/site/" "--exclude 'accounts/' --exclude 'cache/' --exclude 'sessions/'" + rsync_deploy vendor/ "$PROD_PATH/vendor/" + rsync_deploy kirby/ "$PROD_PATH/kirby/" rsync_deploy assets/ "$PROD_PATH/assets/" "--exclude 'tiles/'" From d590c9ac458bcc17bb7d68b9003d7e6c688554b5 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 8 Oct 2025 15:58:25 +0200 Subject: [PATCH 5/9] fix CI --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index aa30802..6e95c05 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,7 +56,7 @@ deploy_preprod: build_prod: stage: build only: - - prod + - main image: composer:2 script: - apk add --no-cache nodejs npm From c9aefe7ecfcdb9b9988176f3f0a9dd4290b3a7f6 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Wed, 15 Oct 2025 16:17:30 +0200 Subject: [PATCH 6/9] #179 --- public/site/models/project.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/site/models/project.php b/public/site/models/project.php index 1152945..df39ff1 100644 --- a/public/site/models/project.php +++ b/public/site/models/project.php @@ -159,7 +159,7 @@ class ProjectPage extends NotificationsPage { "physicalSample" => "échantillon physique", ]; - return $stepsLabel[$this->currentStep()->value()]; + return $stepsLabel[$this->currentStep()->value()] ?? "brief"; } // public function printManagers() { From 1fb4e47d8d3b24b268f217fcb8abc3f6b4643ee9 Mon Sep 17 00:00:00 2001 From: isUnknown Date: Sun, 8 Mar 2026 18:31:57 +0100 Subject: [PATCH 7/9] fix: CI deploy .user.ini + ACL mask, migration memory limit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Déploie .user.ini via rsync pour augmenter memory_limit à 512M - Réapplique le mask ACL rwx après chaque deploy - ini_set('memory_limit') dans la route de migration user-projects Co-Authored-By: Claude Sonnet 4.6 --- .forgejo/workflows/deploy-preprod.yml | 9 +++++++++ .forgejo/workflows/deploy-prod.yml | 9 +++++++++ public/site/config/routes/migrate-user-projects.php | 1 + 3 files changed, 19 insertions(+) diff --git a/.forgejo/workflows/deploy-preprod.yml b/.forgejo/workflows/deploy-preprod.yml index cbe2808..f5519a7 100644 --- a/.forgejo/workflows/deploy-preprod.yml +++ b/.forgejo/workflows/deploy-preprod.yml @@ -62,3 +62,12 @@ jobs: sshpass -p "$PASSWORD" rsync -az --delete -O \ -e 'ssh -p 2244 -o StrictHostKeyChecking=no' \ assets/ $USERNAME@$HOST:$PREPROD_PATH/assets/ + + echo "Deploying .user.ini" + sshpass -p "$PASSWORD" rsync -az -O \ + -e 'ssh -p 2244 -o StrictHostKeyChecking=no' \ + .user.ini $USERNAME@$HOST:$PREPROD_PATH/.user.ini + + echo "Fix ACL mask on writable directories" + sshpass -p "$PASSWORD" ssh -p 2244 -o StrictHostKeyChecking=no $USERNAME@$HOST \ + "setfacl -m mask::rwx $PREPROD_PATH/site/accounts $PREPROD_PATH/site/cache $PREPROD_PATH/site/sessions $PREPROD_PATH/content $PREPROD_PATH/media" diff --git a/.forgejo/workflows/deploy-prod.yml b/.forgejo/workflows/deploy-prod.yml index d407912..a07c0f7 100644 --- a/.forgejo/workflows/deploy-prod.yml +++ b/.forgejo/workflows/deploy-prod.yml @@ -62,3 +62,12 @@ jobs: sshpass -p "$PASSWORD" rsync -az --delete -O \ -e 'ssh -p 2244 -o StrictHostKeyChecking=no' \ assets/ $USERNAME@$HOST:$PROD_PATH/assets/ + + echo "Deploying .user.ini" + sshpass -p "$PASSWORD" rsync -az -O \ + -e 'ssh -p 2244 -o StrictHostKeyChecking=no' \ + .user.ini $USERNAME@$HOST:$PROD_PATH/.user.ini + + echo "Fix ACL mask on writable directories" + sshpass -p "$PASSWORD" ssh -p 2244 -o StrictHostKeyChecking=no $USERNAME@$HOST \ + "setfacl -m mask::rwx $PROD_PATH/site/accounts $PROD_PATH/site/cache $PROD_PATH/site/sessions $PROD_PATH/content $PROD_PATH/media" diff --git a/public/site/config/routes/migrate-user-projects.php b/public/site/config/routes/migrate-user-projects.php index abe71bf..e231b34 100644 --- a/public/site/config/routes/migrate-user-projects.php +++ b/public/site/config/routes/migrate-user-projects.php @@ -16,6 +16,7 @@ return [ 'pattern' => 'migrate-user-projects.json', 'method' => 'POST', 'action' => function () { + ini_set('memory_limit', '512M'); $user = kirby()->user(); if (!$user || $user->role()->id() !== 'admin') { From 19752f516e3e87fa6d3a1fb0bb2c9e1b14ae8eeb Mon Sep 17 00:00:00 2001 From: isUnknown Date: Sun, 8 Mar 2026 18:53:37 +0100 Subject: [PATCH 8/9] fix: guard instanceof ProjectPage avant getNotificationsLight MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les projets avec un template non-project déclenchaient le __call magique de Kirby qui retournait un Field object au lieu de lancer une exception, cassant l'affichage des notifications côté frontend. Co-Authored-By: Claude Sonnet 4.6 --- public/site/templates/projects.json.php | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/public/site/templates/projects.json.php b/public/site/templates/projects.json.php index 6f589eb..4dd737e 100644 --- a/public/site/templates/projects.json.php +++ b/public/site/templates/projects.json.php @@ -11,11 +11,12 @@ function getProjectData($project, $user) { // Utiliser getNotificationsLight() avec cache pour optimiser les performances $notifications = []; - try { - $notifications = $project->getNotificationsLight($user); - } catch (\Throwable $e) { - error_log("Error getting notifications for project {$project->uri()}: " . $e->getMessage()); - $notifications = []; + if ($project instanceof ProjectPage) { + try { + $notifications = $project->getNotificationsLight($user); + } catch (\Throwable $e) { + error_log("Error getting notifications for project {$project->uri()}: " . $e->getMessage()); + } } $data = [ From a4cc5c8efe9b6994f8a01e9c7893ca73dbe6a82a Mon Sep 17 00:00:00 2001 From: isUnknown Date: Fri, 20 Mar 2026 11:49:34 +0100 Subject: [PATCH 9/9] fix redirection to old domain --- public/site/blueprints/users/client.yml | 4 ++-- public/site/snippets/header.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/public/site/blueprints/users/client.yml b/public/site/blueprints/users/client.yml index f321069..d202de8 100644 --- a/public/site/blueprints/users/client.yml +++ b/public/site/blueprints/users/client.yml @@ -30,12 +30,12 @@ sections: fr: Ouvrir la plateforme en: Open platform value: Design to Pack - link: https://designtopack.morphozbygroupepochet.com/ + link: https://designtopack.groupe-pochet.fr/ icon: open - label: fr: Projet(s) en cours en: Current project(s) - link: https://designtopack.morphozbygroupepochet.com/ + link: https://designtopack.groupe-pochet.fr/ value: "{{ user.currentProjects.count }}" icon: folder content: diff --git a/public/site/snippets/header.php b/public/site/snippets/header.php index a35fc34..5c7a997 100644 --- a/public/site/snippets/header.php +++ b/public/site/snippets/header.php @@ -34,7 +34,7 @@