diff --git a/CHANGELOG.md b/CHANGELOG.md
index d084006562c..ff41135b95b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@
- Fix: 一部のUI要素の色が正しく表示されない問題を修正
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/1243)
- Fix: 「D」キーでダークモードを切り替える際にsyncDeviceDarkModeのチェックがバイパスされる問題を修正
+- enhance(frontend): MkDraggable をタッチ操作 (長押し → ドラッグ) に対応
### Server
- Enhance: リモートノートクリーニングジョブのスキップ処理のパフォーマンス改善
diff --git a/packages/frontend/src/components/MkDraggable.vue b/packages/frontend/src/components/MkDraggable.vue
index 6e2e038f87d..3a2785ddcdf 100644
--- a/packages/frontend/src/components/MkDraggable.vue
+++ b/packages/frontend/src/components/MkDraggable.vue
@@ -17,6 +17,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{}"
@dragleave="() => {}"
@drop.prevent.stop="onEmptyDrop($event)"
@@ -27,19 +28,28 @@ SPDX-License-Identifier: AGPL-3.0-only
:key="`MkDraggableRoot:${item.id}`"
:class="$style.item"
:draggable="!manualDragStart"
+ :data-mk-draggable-item-root="item.id"
@dragstart.stop="onDragstart($event, item)"
+ @touchstart.passive="manualDragStart ? undefined : onTouchstart($event, item)"
+ @contextmenu="onContextmenu"
>
-
+
void) | null = null;
+
+// タッチ操作はDataTransferが使えないので、インスタンス間連携用にmodule-levelレジストリを用意する
+type TouchDropHandler = (draggedItem: { id: string }, sourceGroup: string, targetItemId: string, backward: boolean) => void;
+type TouchEmptyDropHandler = (draggedItem: { id: string }, sourceGroup: string) => void;
+const touchDropHandlers = new Map();
+const touchEmptyDropHandlers = new Map();
+
+// 全インスタンスで共有するタッチドロップ位置 (インスタンスIDで自インスタンス判定する)
+const touchDropTarget = ref<{ instanceId: string; itemId: string; area: 'forward' | 'backward' } | null>(null);