From d7ee652eb82049233c19d304e3851d9c1b512be4 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 21 May 2025 18:26:49 +0100 Subject: bump VueJS again People have reported that #1059 happens even with the older version, so there's no reason to not upgrade --- packages/frontend-embed/package.json | 6 +++--- packages/frontend/package.json | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'packages') diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 658a9f732d..1a851df49b 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -18,7 +18,7 @@ "@transfem-org/sfm-js": "0.24.5", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.2.3", - "@vue/compiler-sfc": "3.5.12", + "@vue/compiler-sfc": "3.5.14", "astring": "1.9.0", "buraha": "0.0.1", "estree-walker": "3.0.3", @@ -35,7 +35,7 @@ "typescript": "5.8.3", "uuid": "11.1.0", "vite": "6.3.3", - "vue": "3.5.12" + "vue": "3.5.14" }, "devDependencies": { "@misskey-dev/summaly": "5.2.1", @@ -49,7 +49,7 @@ "@typescript-eslint/eslint-plugin": "8.31.0", "@typescript-eslint/parser": "8.31.0", "@vitest/coverage-v8": "3.1.2", - "@vue/runtime-core": "3.5.12", + "@vue/runtime-core": "3.5.14", "acorn": "8.14.1", "cross-env": "7.0.3", "eslint-plugin-import": "2.31.0", diff --git a/packages/frontend/package.json b/packages/frontend/package.json index a20aba0201..f5c7bcf1b4 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -30,7 +30,7 @@ "@transfem-org/sfm-js": "0.24.6", "@twemoji/parser": "15.1.1", "@vitejs/plugin-vue": "5.2.3", - "@vue/compiler-sfc": "3.5.12", + "@vue/compiler-sfc": "3.5.14", "aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15", "astring": "1.9.0", "broadcast-channel": "7.1.0", @@ -76,7 +76,7 @@ "uuid": "11.1.0", "v-code-diff": "1.13.1", "vite": "6.3.3", - "vue": "3.5.12", + "vue": "3.5.14", "vuedraggable": "next", "wanakana": "5.3.1" }, @@ -119,8 +119,8 @@ "@typescript-eslint/eslint-plugin": "8.31.0", "@typescript-eslint/parser": "8.31.0", "@vitest/coverage-v8": "3.1.2", - "@vue/compiler-core": "3.5.12", - "@vue/runtime-core": "3.5.12", + "@vue/compiler-core": "3.5.14", + "@vue/runtime-core": "3.5.14", "acorn": "8.14.1", "cross-env": "7.0.3", "eslint-plugin-import": "2.31.0", -- cgit v1.2.3-freya From 7c61b579394efba0d3e6cac60d4a4c8712c069fe Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 21 May 2025 18:27:39 +0100 Subject: make sure that the DynamicNote component is *not* computed my current hypothesis to explain #1059: - we have a timeline, with some notes - a new note arrives on the websocket - we replace the items in the pagination inside the timeline - vue starts re-rendering the notes, using the `:key` values to know which ones to leave there and which ones to move / add / delete - since DynamicNote is `computed`, every time vue needs to instantiate it, it does an `await` - so if another note is waiting in the websocket buffer, it gets processed *while vue is rendering* - processing the new note cause the `items` map (and the array computed from it) to be replaced - at this point vue may well get a new iterator from the start of the new list of items, after it had already decided that the first few notes did not need to be changed - which manifests as new notes appearing in the middle of the timeline! - and after enough new notes have arrived, all the old notes are out of the items map, so their elements have all been deleted, and "normality" is restored this makes sense in my head, let's see if this change actually fixes the problem --- packages/frontend/src/components/DynamicNote.vue | 8 ++++---- packages/frontend/src/components/DynamicNoteDetailed.vue | 8 ++++---- packages/frontend/src/components/DynamicNoteSimple.vue | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) (limited to 'packages') diff --git a/packages/frontend/src/components/DynamicNote.vue b/packages/frontend/src/components/DynamicNote.vue index a5008e9ddf..67707bfda9 100644 --- a/packages/frontend/src/components/DynamicNote.vue +++ b/packages/frontend/src/components/DynamicNote.vue @@ -23,10 +23,10 @@ import type MkNote from '@/components/MkNote.vue'; import type SkNote from '@/components/SkNote.vue'; import { prefer } from '@/preferences'; -const XNote = computed(() => - prefer.r.noteDesign.value === 'misskey' - ? defineAsyncComponent(() => import('@/components/MkNote.vue')) - : defineAsyncComponent(() => import('@/components/SkNote.vue')), +const XNote = defineAsyncComponent(() => + prefer.s.noteDesign === 'misskey' + ? import('@/components/MkNote.vue') + : import('@/components/SkNote.vue') ); const rootEl = useTemplateRef>('rootEl'); diff --git a/packages/frontend/src/components/DynamicNoteDetailed.vue b/packages/frontend/src/components/DynamicNoteDetailed.vue index 21bf00ccbe..8594db2328 100644 --- a/packages/frontend/src/components/DynamicNoteDetailed.vue +++ b/packages/frontend/src/components/DynamicNoteDetailed.vue @@ -20,10 +20,10 @@ import type MkNoteDetailed from '@/components/MkNoteDetailed.vue'; import type SkNoteDetailed from '@/components/SkNoteDetailed.vue'; import { prefer } from '@/preferences'; -const XNoteDetailed = computed(() => - prefer.r.noteDesign.value === 'misskey' - ? defineAsyncComponent(() => import('@/components/MkNoteDetailed.vue')) - : defineAsyncComponent(() => import('@/components/SkNoteDetailed.vue')), +const XNoteDetailed = defineAsyncComponent(() => + prefer.s.noteDesign === 'misskey' + ? import('@/components/MkNoteDetailed.vue') + : import('@/components/SkNoteDetailed.vue'), ); const rootEl = useTemplateRef>('rootEl'); diff --git a/packages/frontend/src/components/DynamicNoteSimple.vue b/packages/frontend/src/components/DynamicNoteSimple.vue index 7ca345ccfa..5eaeaf6c23 100644 --- a/packages/frontend/src/components/DynamicNoteSimple.vue +++ b/packages/frontend/src/components/DynamicNoteSimple.vue @@ -21,10 +21,10 @@ import type MkNoteSimple from '@/components/MkNoteSimple.vue'; import type SkNoteSimple from '@/components/SkNoteSimple.vue'; import { prefer } from '@/preferences'; -const XNoteSimple = computed(() => - prefer.r.noteDesign.value === 'misskey' - ? defineAsyncComponent(() => import('@/components/MkNoteSimple.vue')) - : defineAsyncComponent(() => import('@/components/SkNoteSimple.vue')), +const XNoteSimple = defineAsyncComponent(() => + prefer.s.noteDesign === 'misskey' + ? import('@/components/MkNoteSimple.vue') + : import('@/components/SkNoteSimple.vue'), ); const rootEl = useTemplateRef>('rootEl'); -- cgit v1.2.3-freya From 5a961119a73b17e42a8feedac432903f1ed54768 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 21 May 2025 18:32:43 +0100 Subject: ask to reload when changing `noteDesign` since it's not longer super-dynamic --- packages/frontend/src/pages/settings/preferences.vue | 1 + 1 file changed, 1 insertion(+) (limited to 'packages') diff --git a/packages/frontend/src/pages/settings/preferences.vue b/packages/frontend/src/pages/settings/preferences.vue index a537b6e837..bb32a0ec43 100644 --- a/packages/frontend/src/pages/settings/preferences.vue +++ b/packages/frontend/src/pages/settings/preferences.vue @@ -1106,6 +1106,7 @@ watch([ fontSize, useSystemFont, makeEveryTextElementsSelectable, + noteDesign, ], async () => { await reloadAsk({ reason: i18n.ts.reloadToApplySetting, unison: true }); }); -- cgit v1.2.3-freya