From 8dbd8ff4cf7d36ea1e91e7c3b4bd486e8f0e5e3a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?=
<67428053+kakkokari-gtyih@users.noreply.github.com>
Date: Sun, 4 May 2025 13:52:01 +0900
Subject: [PATCH 01/10] =?UTF-8?q?enhance(frontend):=20=E3=82=BF=E3=82=A4?=
=?UTF-8?q?=E3=83=A0=E3=83=A9=E3=82=A4=E3=83=B3push=E6=99=82=E3=81=AE?=
=?UTF-8?q?=E3=82=A2=E3=83=8B=E3=83=A1=E3=83=BC=E3=82=B7=E3=83=A7=E3=83=B3?=
=?UTF-8?q?=E3=82=92=E8=AA=BF=E6=95=B4=20(#15936)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* fix(frontend): タイムラインpush時のアニメーションを復元
* :art:
* enhance: 消える際のアニメーションも追加
* better support for non-supported browsers
* fix: Skip Note Rendering有効時、TransitionGroupでnoteを追加するときに一瞬がくっとなる問題を修正
* :art:
* fix
---
.../src/components/MkNotifications.vue | 38 +++++++++++++-----
.../frontend/src/components/MkTimeline.vue | 40 ++++++++++++++-----
2 files changed, 59 insertions(+), 19 deletions(-)
diff --git a/packages/frontend/src/components/MkNotifications.vue b/packages/frontend/src/components/MkNotifications.vue
index 177ae0219c..308a077bd9 100644
--- a/packages/frontend/src/components/MkNotifications.vue
+++ b/packages/frontend/src/components/MkNotifications.vue
@@ -103,18 +103,38 @@ defineExpose({
From 3bdb1dd55800ecc0203a6476b4beaf7824ad807c Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sun, 4 May 2025 17:32:09 +0900
Subject: [PATCH 06/10] =?UTF-8?q?=F0=9F=8E=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/frontend/src/pages/admin/modlog.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/frontend/src/pages/admin/modlog.vue b/packages/frontend/src/pages/admin/modlog.vue
index 3701e69fc6..7a40c978b5 100644
--- a/packages/frontend/src/pages/admin/modlog.vue
+++ b/packages/frontend/src/pages/admin/modlog.vue
@@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
From 14d6734cb103d45ed29fdc374d174dfec67b3acc Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sun, 4 May 2025 18:51:30 +0900
Subject: [PATCH 07/10] Fix MkPullToRefresh behaviour (#15944)
* Update MkPullToRefresh.vue
* Update MkPullToRefresh.vue
* Update MkPullToRefresh.vue
---
.../src/components/MkPullToRefresh.vue | 53 ++++++++++++-------
1 file changed, 33 insertions(+), 20 deletions(-)
diff --git a/packages/frontend/src/components/MkPullToRefresh.vue b/packages/frontend/src/components/MkPullToRefresh.vue
index 7b5335aa74..b0638db785 100644
--- a/packages/frontend/src/components/MkPullToRefresh.vue
+++ b/packages/frontend/src/components/MkPullToRefresh.vue
@@ -76,8 +76,8 @@ function unlockDownScroll() {
scrollEl.style.overscrollBehavior = 'contain';
}
-function moveStart(event: PointerEvent) {
- if (event.pointerType === 'mouse' && event.button !== 1) return;
+function moveStartByMouse(event: MouseEvent) {
+ if (event.button !== 1) return;
if (isRefreshing.value) return;
const scrollPos = scrollEl!.scrollTop;
@@ -88,27 +88,39 @@ function moveStart(event: PointerEvent) {
lockDownScroll();
- // マウスでのpull時、画面上のテキスト選択が発生したり、ブラウザの中クリックによる挙動が競合したりして画面がスクロールされたりするのを防ぐ
- window.document.body.setAttribute('inert', 'true');
+ event.preventDefault(); // 中クリックによるスクロール、テキスト選択などを防ぐ
isPulling.value = true;
startScreenY = getScreenY(event);
pullDistance.value = 0;
- // タッチデバイスでPointerEventを使うとなんか挙動がおかしいので、TouchEventとMouseEventを使い分ける
- if (event.pointerType === 'mouse') {
- window.addEventListener('mousemove', moving, { passive: true });
- window.addEventListener('mouseup', () => {
- window.removeEventListener('mousemove', moving);
- onPullRelease();
- }, { passive: true, once: true });
- } else {
- window.addEventListener('touchmove', moving, { passive: true });
- window.addEventListener('touchend', () => {
- window.removeEventListener('touchmove', moving);
- onPullRelease();
- }, { passive: true, once: true });
+ window.addEventListener('mousemove', moving, { passive: true });
+ window.addEventListener('mouseup', () => {
+ window.removeEventListener('mousemove', moving);
+ onPullRelease();
+ }, { passive: true, once: true });
+}
+
+function moveStartByTouch(event: TouchEvent) {
+ if (isRefreshing.value) return;
+
+ const scrollPos = scrollEl!.scrollTop;
+ if (scrollPos !== 0) {
+ unlockDownScroll();
+ return;
}
+
+ lockDownScroll();
+
+ isPulling.value = true;
+ startScreenY = getScreenY(event);
+ pullDistance.value = 0;
+
+ window.addEventListener('touchmove', moving, { passive: true });
+ window.addEventListener('touchend', () => {
+ window.removeEventListener('touchmove', moving);
+ onPullRelease();
+ }, { passive: true, once: true });
}
function moveBySystem(to: number): Promise {
@@ -148,7 +160,6 @@ async function closeContent() {
}
function onPullRelease() {
- window.document.body.removeAttribute('inert');
startScreenY = null;
if (isPulledEnough.value) {
isPulledEnough.value = false;
@@ -208,13 +219,15 @@ onMounted(() => {
if (rootEl.value == null) return;
scrollEl = getScrollContainer(rootEl.value);
lockDownScroll();
- rootEl.value.addEventListener('pointerdown', moveStart, { passive: true });
+ rootEl.value.addEventListener('mousedown', moveStartByMouse, { passive: false }); // preventDefaultするため
+ rootEl.value.addEventListener('touchstart', moveStartByTouch, { passive: true });
rootEl.value.addEventListener('touchend', toggleScrollLockOnTouchEnd, { passive: true });
});
onUnmounted(() => {
unlockDownScroll();
- if (rootEl.value) rootEl.value.removeEventListener('pointerdown', moveStart);
+ if (rootEl.value) rootEl.value.removeEventListener('mousedown', moveStartByMouse);
+ if (rootEl.value) rootEl.value.removeEventListener('touchstart', moveStartByTouch);
if (rootEl.value) rootEl.value.removeEventListener('touchend', toggleScrollLockOnTouchEnd);
});
From c23f2ff9001992c54fc472fd4c256b1ff1857a9c Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Sun, 4 May 2025 19:00:36 +0900
Subject: [PATCH 08/10] chore(deps): update node.js to v22.15.0 (#15606)
* chore(deps): update node.js to v22.15.0
* chore: determine Jest args from Node.js version
* fix
* fix: `import.meta.dirname` is not supported in v20.10.0
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: zyoshoka <107108195+zyoshoka@users.noreply.github.com>
---
.devcontainer/devcontainer.json | 2 +-
.node-version | 2 +-
CHANGELOG.md | 3 +++
Dockerfile | 2 +-
packages/backend/eslint.config.js | 8 ++++++++
packages/backend/jest.js | 20 ++++++++++++++++++++
packages/backend/package.json | 12 ++++++------
packages/backend/test-federation/compose.yml | 4 ++++
8 files changed, 44 insertions(+), 9 deletions(-)
create mode 100644 packages/backend/jest.js
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 25d9cfc1fb..514abdfb20 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -5,7 +5,7 @@
"workspaceFolder": "/workspace",
"features": {
"ghcr.io/devcontainers/features/node:1": {
- "version": "22.11.0"
+ "version": "22.15.0"
},
"ghcr.io/devcontainers-extra/features/pnpm:2": {
"version": "10.10.0"
diff --git a/.node-version b/.node-version
index 7af24b7ddb..b8ffd70759 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-22.11.0
+22.15.0
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 42fbf8a17a..5da247db72 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
## 2025.5.0
+### Note
+- DockerのNode.jsが22.15.0に更新されました
+
### General
-
diff --git a/Dockerfile b/Dockerfile
index 9d5596f1f1..aafaa9dc6e 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.4
-ARG NODE_VERSION=22.11.0-bookworm
+ARG NODE_VERSION=22.15.0-bookworm
# build assets & compile TypeScript
diff --git a/packages/backend/eslint.config.js b/packages/backend/eslint.config.js
index ae7b2baf49..d15a703ba2 100644
--- a/packages/backend/eslint.config.js
+++ b/packages/backend/eslint.config.js
@@ -1,4 +1,5 @@
import tsParser from '@typescript-eslint/parser';
+import globals from 'globals';
import sharedConfig from '../shared/eslint.config.js';
export default [
@@ -6,6 +7,13 @@ export default [
{
ignores: ['**/node_modules', 'built', '@types/**/*', 'migration'],
},
+ {
+ languageOptions: {
+ globals: {
+ ...globals.node,
+ },
+ },
+ },
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
diff --git a/packages/backend/jest.js b/packages/backend/jest.js
new file mode 100644
index 0000000000..0cb2c2ab77
--- /dev/null
+++ b/packages/backend/jest.js
@@ -0,0 +1,20 @@
+#!/usr/bin/env node
+import child_process from 'node:child_process';
+import path from 'node:path';
+import url from 'node:url';
+
+import semver from 'semver';
+
+const __filename = url.fileURLToPath(import.meta.url);
+const __dirname = path.dirname(__filename);
+
+const args = [];
+args.push(...[
+ ...semver.satisfies(process.version, '^20.17.0 || ^22.0.0') ? ['--no-experimental-require-module'] : [],
+ '--experimental-vm-modules',
+ '--experimental-import-meta-resolve',
+ path.join(__dirname, 'node_modules/jest/bin/jest.js'),
+ ...process.argv.slice(2),
+]);
+
+child_process.spawn(process.execPath, args, { stdio: 'inherit' });
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 3c6dcc6523..71f301d430 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -22,12 +22,12 @@
"typecheck": "tsc --noEmit && tsc -p test --noEmit && tsc -p test-federation --noEmit",
"eslint": "eslint --quiet \"{src,test-federation}/**/*.ts\"",
"lint": "pnpm typecheck && pnpm eslint",
- "jest": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.unit.cjs",
- "jest:e2e": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.e2e.cjs",
- "jest:fed": "node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --forceExit --config jest.config.fed.cjs",
- "jest-and-coverage": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --config jest.config.unit.cjs",
- "jest-and-coverage:e2e": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --coverage --forceExit --config jest.config.e2e.cjs",
- "jest-clear": "cross-env NODE_ENV=test node --experimental-vm-modules --experimental-import-meta-resolve node_modules/jest/bin/jest.js --clearCache",
+ "jest": "cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs",
+ "jest:e2e": "cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs",
+ "jest:fed": "node ./jest.js --forceExit --config jest.config.fed.cjs",
+ "jest-and-coverage": "cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs",
+ "jest-and-coverage:e2e": "cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs",
+ "jest-clear": "cross-env NODE_ENV=test node ./jest.js --clearCache",
"test": "pnpm jest",
"test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e",
"test:fed": "pnpm jest:fed",
diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml
index 6c010e0089..bd0ac15a31 100644
--- a/packages/backend/test-federation/compose.yml
+++ b/packages/backend/test-federation/compose.yml
@@ -50,6 +50,10 @@ services:
source: ../jest.config.fed.cjs
target: /misskey/packages/backend/jest.config.fed.cjs
read_only: true
+ - type: bind
+ source: ../jest.js
+ target: /misskey/packages/backend/jest.js
+ read_only: true
- type: bind
source: ../../misskey-js/built
target: /misskey/packages/misskey-js/built
From 619bb2214e43eeb64e84cc31b692d2c5dfcd183d Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sun, 4 May 2025 19:00:56 +0900
Subject: [PATCH 09/10] New Crowdin updates (#15935)
* New translations ja-jp.yml (Chinese Traditional)
* New translations ja-jp.yml (Catalan)
* New translations ja-jp.yml (Chinese Traditional)
* New translations ja-jp.yml (English)
---
locales/ca-ES.yml | 1 +
locales/en-US.yml | 2 ++
locales/zh-TW.yml | 2 ++
3 files changed, 5 insertions(+)
diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml
index 8d723825f3..b331f64330 100644
--- a/locales/ca-ES.yml
+++ b/locales/ca-ES.yml
@@ -1425,6 +1425,7 @@ _settings:
ifOff: "Quan es desactiva"
enableSyncThemesBetweenDevices: "Sincronitzar els temes instal·lats entre dispositius"
enablePullToRefresh: "Lliscar i actualitzar "
+ enablePullToRefresh_description: "Amb el ratolí, llisca mentre prems la roda."
_chat:
showSenderName: "Mostrar el nom del remitent"
sendOnEnter: "Introdueix per enviar"
diff --git a/locales/en-US.yml b/locales/en-US.yml
index 71a442a187..e2312b0422 100644
--- a/locales/en-US.yml
+++ b/locales/en-US.yml
@@ -1348,6 +1348,7 @@ readonly: "Read only"
goToDeck: "Return to Deck"
federationJobs: "Federation Jobs"
driveAboutTip: "In Drive, a list of files you've uploaded in the past will be displayed.
\nYou can reuse these files when attaching them to notes, or you can upload files in advance to post later.
\nBe careful when deleting a file, as it will not be available in all places where it was used (such as notes, pages, avatars, banners, etc.).
\nYou can also create folders to organize your files."
+scrollToClose: "Scroll to close"
_chat:
noMessagesYet: "No messages yet"
newMessage: "New message"
@@ -1425,6 +1426,7 @@ _settings:
ifOff: "When turned off"
enableSyncThemesBetweenDevices: "Synchronize installed themes across devices"
enablePullToRefresh: "Pull to Refresh"
+ enablePullToRefresh_description: "When using a mouse, drag while pressing in the scrolling wheel."
_chat:
showSenderName: "Show sender's name"
sendOnEnter: "Press Enter to send"
diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml
index a57d26c113..1c15fd48d1 100644
--- a/locales/zh-TW.yml
+++ b/locales/zh-TW.yml
@@ -1348,6 +1348,7 @@ readonly: "唯讀"
goToDeck: "回去甲板"
federationJobs: "聯邦通訊作業"
driveAboutTip: "在「雲端硬碟」中,會顯示過去上傳的檔案列表。
\n可以在附加到貼文時重新利用,或者事先上傳之後再用於發布。
\n請注意,刪除檔案後,之前使用過該檔案的所有地方(貼文、頁面、大頭貼、橫幅等)也會一併無法顯示。
\n也可以建立資料夾來整理檔案。"
+scrollToClose: "用滾輪關閉"
_chat:
noMessagesYet: "尚無訊息"
newMessage: "新訊息"
@@ -1425,6 +1426,7 @@ _settings:
ifOff: "關閉時"
enableSyncThemesBetweenDevices: "在裝置之間同步已安裝的主題"
enablePullToRefresh: "下拉更新"
+ enablePullToRefresh_description: "使用滑鼠,按下並拖曳滾輪。"
_chat:
showSenderName: "顯示發送者的名稱"
sendOnEnter: "按下 Enter 發送訊息"
From 080276e3e75cc0c57dc141a7826d6255759885ad Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
Date: Sun, 4 May 2025 10:07:59 +0000
Subject: [PATCH 10/10] Bump version to 2025.5.0-alpha.1
---
package.json | 2 +-
packages/misskey-js/package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/package.json b/package.json
index e10f4e9461..308cfe0a23 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "misskey",
- "version": "2025.5.0-alpha.0",
+ "version": "2025.5.0-alpha.1",
"codename": "nasubi",
"repository": {
"type": "git",
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 7941caf632..bf28a383b4 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2025.5.0-alpha.0",
+ "version": "2025.5.0-alpha.1",
"description": "Misskey SDK for JavaScript",
"license": "MIT",
"main": "./built/index.js",