From 707ab2ad626659ef22963d1db49ab328dccf0f3a Mon Sep 17 00:00:00 2001 From: abeer0 <47961062+iiio2@users.noreply.github.com> Date: Thu, 26 Mar 2026 22:18:53 +0600 Subject: [PATCH 1/3] chore: use `page-lifecycle` as dev deps (#3577) --- package.json | 2 +- pnpm-lock.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index adc596a698..515344a905 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,6 @@ "node-emoji": "^2.1.3", "nuxt": "^4.4.2", "nuxt-security": "^2.4.0", - "page-lifecycle": "^0.1.2", "pathe": "^2.0.3", "pinia": "^3.0.3", "postcss-nested": "^7.0.0", @@ -149,6 +148,7 @@ "eslint-plugin-format": "^1.5.0", "flat": "^6.0.1", "nano-staged": "^0.9.0", + "page-lifecycle": "^0.1.2", "prettier": "^3.8.1", "sharp": "^0.34.5", "sharp-ico": "^0.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index da48590faf..fd8024713f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -209,9 +209,6 @@ importers: nuxt-security: specifier: ^2.4.0 version: 2.4.0(magicast@0.5.2)(rollup@4.59.0) - page-lifecycle: - specifier: ^0.1.2 - version: 0.1.2 pathe: specifier: ^2.0.3 version: 2.0.3 @@ -357,6 +354,9 @@ importers: nano-staged: specifier: ^0.9.0 version: 0.9.0 + page-lifecycle: + specifier: ^0.1.2 + version: 0.1.2 prettier: specifier: ^3.8.1 version: 3.8.1 From 4a3567a272d828ffcd2f179ffb4c329c8ffbc3a6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 27 Mar 2026 01:20:00 +0900 Subject: [PATCH 2/3] chore(deps): update devdependencies (#3579) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 4 ++-- pnpm-lock.yaml | 63 +++++++++++++++++++++++++++----------------------- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/package.json b/package.json index 515344a905..8430d57199 100644 --- a/package.json +++ b/package.json @@ -140,7 +140,7 @@ "@types/fs-extra": "^11.0.4", "@types/wicg-file-system-access": "^2023.10.7", "@types/ws": "^8.18.1", - "@unocss/eslint-config": "^66.6.6", + "@unocss/eslint-config": "^66.6.7", "@vue/test-utils": "2.4.6", "bumpp": "^10.4.1", "consola": "^3.4.2", @@ -155,7 +155,7 @@ "simple-git-hooks": "^2.13.1", "typescript": "^5.4.4", "vitest": "4.0.18", - "vue-component-type-helpers": "^3.2.5", + "vue-component-type-helpers": "^3.2.6", "vue-tsc": "^2.1.6" }, "resolutions": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fd8024713f..d6a28ff0ce 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -311,7 +311,7 @@ importers: devDependencies: '@antfu/eslint-config': specifier: ^7.7.3 - version: 7.7.3(@typescript-eslint/rule-tester@8.56.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3))(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.30)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.18(@types/node@25.4.0)(happy-dom@20.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.2)) + version: 7.7.3(@typescript-eslint/rule-tester@8.56.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3))(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.30)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.18(@types/node@25.4.0)(happy-dom@20.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.2)) '@types/chroma-js': specifier: ^3.1.2 version: 3.1.2 @@ -331,8 +331,8 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@unocss/eslint-config': - specifier: ^66.6.6 - version: 66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + specifier: ^66.6.7 + version: 66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) '@vue/test-utils': specifier: 2.4.6 version: 2.4.6 @@ -376,8 +376,8 @@ importers: specifier: 4.0.18 version: 4.0.18(@types/node@25.4.0)(happy-dom@20.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.2) vue-component-type-helpers: - specifier: ^3.2.5 - version: 3.2.5 + specifier: ^3.2.6 + version: 3.2.6 vue-tsc: specifier: ^2.1.6 version: 2.2.12(typescript@5.9.3) @@ -4140,8 +4140,8 @@ packages: resolution: {integrity: sha512-rREBBt2a6aZJ21TCeKG3/wjHfTNPbIwdrJtIVrN7hLcljW2vnWuyYabZ1yASK8+lnNsMoBoU5mbakgrPF0MItA==} engines: {node: '>=14'} - '@unocss/config@66.6.6': - resolution: {integrity: sha512-menlnkqAFX/4wR2aandY8hSqrt01JE+rOzvtQxWaBt8kf1du62b0sS72FE5Z40n6HlEsEbF91N9FCfhnzG6i6g==} + '@unocss/config@66.6.7': + resolution: {integrity: sha512-1uleyRLyJc6PNNc2L3hEaKL89zXwvQAtP36oFySgL47RAxZHPZ4vfqFpbwR0eEN4iSqTS24ZFr7CTRWCaEGjzQ==} engines: {node: '>=14'} '@unocss/core@66.5.12': @@ -4153,12 +4153,15 @@ packages: '@unocss/core@66.6.6': resolution: {integrity: sha512-Sbbx0ZQqmV8K2lg8E+z9MJzWb1MgRtJnvqzxDIrNuBjXasKhbcFt5wEMBtEZJOr63Z4ck0xThhZK53HmYT2jmg==} - '@unocss/eslint-config@66.6.6': - resolution: {integrity: sha512-sNAJQ3tNlYtDF2osw2w88LvL+SYIiZyQgBQwwUqVIhRBSJE2CUHnyUtTycu/ZPTU5r3z++iMlhoR5EOFLwSGvg==} + '@unocss/core@66.6.7': + resolution: {integrity: sha512-Q8456iWFtdwrUNYKVOQY8ygRggjZOVtLc6Jc8KIkxig7OiNlUWOgXJTfCh4I8g6jBYzC5eHaHFDLgJOmOrxBsg==} + + '@unocss/eslint-config@66.6.7': + resolution: {integrity: sha512-l33NbugpKr5twWmRbFwQcvAuD/lWAqT9Nrnguga75geeUBENOVNQialeyEFcZAmR7/eYOeILIrhM8XtFUmtf2g==} engines: {node: '>=14'} - '@unocss/eslint-plugin@66.6.6': - resolution: {integrity: sha512-1z3nysB7mijxzhLWV7YC8q89a1meN6hun8bkcDOPcH65p2yc0x7Xnz3MzcauLlu2JNAJe4u3Ye7xE45SIPXXuA==} + '@unocss/eslint-plugin@66.6.7': + resolution: {integrity: sha512-0pNFT918CUOiWSlr3ZmePL5Bb06/g/mmP8zP+/dpl2+Vc/GuW6wHVsP+qn5hT2c5FwCPRZ3CUm0HprTru2/sGA==} engines: {node: '>=14'} '@unocss/extractor-arbitrary-variants@66.5.12': @@ -4226,8 +4229,8 @@ packages: resolution: {integrity: sha512-2eR5TBTO+cmPY9ahFjyEu8qP/NFPI02dVpI0rgGKdyDMv/PnO9+yS/9rKgrmXsN3nPYHjOrLutRXkF/xxm/t3w==} engines: {node: '>=14'} - '@unocss/rule-utils@66.6.6': - resolution: {integrity: sha512-krWtQKGshOaqQMuxeGq1NOA8NL35VdpYlmQEWOe39BY6TACT51bgQFu40MRfsAIMZZtoGS2YYTrnHojgR92omw==} + '@unocss/rule-utils@66.6.7': + resolution: {integrity: sha512-4PT/s8yKIShSqP9XPSw4EjbZopcu3wlIB9i3kbGbzQwF91H+0Yy10guK3kHDGtkmWVN6Np6VvaGIj2UcbmaivA==} engines: {node: '>=14'} '@unocss/transformer-attributify-jsx@66.5.2': @@ -9693,8 +9696,8 @@ packages: vue-component-type-helpers@2.2.12: resolution: {integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==} - vue-component-type-helpers@3.2.5: - resolution: {integrity: sha512-tkvNr+bU8+xD/onAThIe7CHFvOJ/BO6XCOrxMzeytJq40nTfpGDJuVjyCM8ccGZKfAbGk2YfuZyDMXM56qheZQ==} + vue-component-type-helpers@3.2.6: + resolution: {integrity: sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==} vue-demi@0.14.10: resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==} @@ -10057,7 +10060,7 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@antfu/eslint-config@7.7.3(@typescript-eslint/rule-tester@8.56.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3))(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.30)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.18(@types/node@25.4.0)(happy-dom@20.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.2))': + '@antfu/eslint-config@7.7.3(@typescript-eslint/rule-tester@8.56.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3))(@typescript-eslint/utils@8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@unocss/eslint-plugin@66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(@vue/compiler-sfc@3.5.30)(eslint-plugin-format@1.5.0(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.18(@types/node@25.4.0)(happy-dom@20.0.10)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.2))': dependencies: '@antfu/install-pkg': 1.1.0 '@clack/prompts': 1.1.0 @@ -10097,7 +10100,7 @@ snapshots: vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.6.1)) yaml-eslint-parser: 2.0.0 optionalDependencies: - '@unocss/eslint-plugin': 66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@unocss/eslint-plugin': 66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint-plugin-format: 1.5.0(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - '@eslint/json' @@ -12007,7 +12010,7 @@ snapshots: unplugin-auto-import: 20.3.0(@nuxt/kit@4.4.2(magicast@0.5.2))(@vueuse/core@14.1.0(vue@3.5.30(typescript@5.9.3))) unplugin-vue-components: 30.0.0(@babel/parser@7.29.0)(@nuxt/kit@4.4.2(magicast@0.5.2))(vue@3.5.30(typescript@5.9.3)) vaul-vue: 0.4.1(reka-ui@2.6.1(typescript@5.9.3)(vue@3.5.30(typescript@5.9.3)))(vue@3.5.30(typescript@5.9.3)) - vue-component-type-helpers: 3.2.5 + vue-component-type-helpers: 3.2.6 optionalDependencies: '@nuxt/content': 3.10.0(better-sqlite3@12.4.1)(magicast@0.5.2) vue-router: 4.6.4(vue@3.5.30(typescript@5.9.3)) @@ -13926,9 +13929,9 @@ snapshots: '@unocss/core': 66.5.2 unconfig: 7.5.0 - '@unocss/config@66.6.6': + '@unocss/config@66.6.7': dependencies: - '@unocss/core': 66.6.6 + '@unocss/core': 66.6.7 colorette: 2.0.20 consola: 3.4.2 unconfig: 7.5.0 @@ -13939,20 +13942,22 @@ snapshots: '@unocss/core@66.6.6': {} - '@unocss/eslint-config@66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@unocss/core@66.6.7': {} + + '@unocss/eslint-config@66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@unocss/eslint-plugin': 66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@unocss/eslint-plugin': 66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint - supports-color - typescript - '@unocss/eslint-plugin@66.6.6(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@unocss/eslint-plugin@66.6.7(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/utils': 8.57.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@unocss/config': 66.6.6 - '@unocss/core': 66.6.6 - '@unocss/rule-utils': 66.6.6 + '@unocss/config': 66.6.7 + '@unocss/core': 66.6.7 + '@unocss/rule-utils': 66.6.7 magic-string: 0.30.21 synckit: 0.11.12 transitivePeerDependencies: @@ -14085,9 +14090,9 @@ snapshots: '@unocss/core': 66.6.6 magic-string: 0.30.21 - '@unocss/rule-utils@66.6.6': + '@unocss/rule-utils@66.6.7': dependencies: - '@unocss/core': 66.6.6 + '@unocss/core': 66.6.7 magic-string: 0.30.21 '@unocss/transformer-attributify-jsx@66.5.2': @@ -20986,7 +20991,7 @@ snapshots: vue-component-type-helpers@2.2.12: {} - vue-component-type-helpers@3.2.5: {} + vue-component-type-helpers@3.2.6: {} vue-demi@0.14.10(vue@3.5.30(typescript@5.9.3)): dependencies: From 8bf5c0076d78a7173d06ec807ee58cf5026553ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chris=E2=80=8B=E2=80=8C=E2=80=8B=E2=80=AE=20=E2=80=ACHayes?= =?UTF-8?q?=E2=80=8C=E2=80=8B=E2=80=8B=E2=80=8B?= Date: Thu, 26 Mar 2026 12:51:24 -0400 Subject: [PATCH 3/3] fix: Right-click causes image drag on ModalMediaPreviewCarousel (#3265) Co-authored-by: TAKAHASHI Shuuji --- .../modal/ModalMediaPreviewCarousel.vue | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/components/modal/ModalMediaPreviewCarousel.vue b/app/components/modal/ModalMediaPreviewCarousel.vue index 2e56e60887..79de3922a9 100644 --- a/app/components/modal/ModalMediaPreviewCarousel.vue +++ b/app/components/modal/ModalMediaPreviewCarousel.vue @@ -32,6 +32,7 @@ const y = ref(0) const isDragging = ref(false) const isPinching = ref(false) +const isRightClicking = ref(false) const maxZoomOut = ref(1) const isZoomedIn = computed(() => scale.value > 1) @@ -78,6 +79,10 @@ useGesture({ goToFocusedSlide() }, onDrag({ movement, delta, pinching, tap, last, swipe, event, xy }) { + // Ignore right-click events + if (isRightClicking.value) + return + event.preventDefault() if (pinching) @@ -88,6 +93,21 @@ useGesture({ else handleDrag(delta, movement) }, + onDragStart({ event }) { + const button = 'button' in event ? event.button : 0 + + if (button !== 0) { + isRightClicking.value = true + return + } + + isRightClicking.value = false + isDragging.value = true + }, + onDragEnd() { + isRightClicking.value = false + isDragging.value = false + }, }, { domTarget: view, eventOptions: {