From d624da9c1aac731bd49a7bbb949744ebf4986479 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Fri, 1 Aug 2025 11:49:12 +0900
Subject: feat: remote notes cleaning (#16292)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Create CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* wip
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update CleanRemoteNotesProcessorService.ts
* Update job-queue.job.vue
* wip
* Update CleanRemoteNotesProcessorService.ts
* wip
* wip
* wip
* Update CleanRemoteNotesProcessorService.ts
* wip
* Update CHANGELOG.md
* Revert "wip"
This reverts commit 89d455d302c1106c421bcec309fd7bf02509465e.
* wip
* woip
* Update QueueService.ts
* Update QueueService.ts
* ピン留め考慮
* Update CleanRemoteNotesProcessorService.ts
* Update QueueService.ts
* Update CleanRemoteNotesProcessorService.ts
* add log
* Update CHANGELOG.md
* wip
* Update MkServerSetupWizard.vue
---
.../src/components/MkServerSetupWizard.vue | 15 +++++++-
.../frontend/src/pages/admin/job-queue.job.vue | 4 +--
packages/frontend/src/pages/admin/performance.vue | 42 ++++++++++++++++++++++
3 files changed, 58 insertions(+), 3 deletions(-)
(limited to 'packages/frontend/src')
diff --git a/packages/frontend/src/components/MkServerSetupWizard.vue b/packages/frontend/src/components/MkServerSetupWizard.vue
index e5614d63d7..23e0e85bc9 100644
--- a/packages/frontend/src/components/MkServerSetupWizard.vue
+++ b/packages/frontend/src/components/MkServerSetupWizard.vue
@@ -55,7 +55,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description1 }}
{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description2 }}
+
{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description1 }}
{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description2 }}
{{ i18n.ts.learnMore }}
@@ -63,6 +63,11 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._serverSetupWizard.youCanConfigureMoreFederationSettingsLater }}
+
+
+ {{ i18n.ts._serverSetupWizard.remoteContentsCleaning }}
+ {{ i18n.ts._serverSetupWizard.remoteContentsCleaning_description }}
+
@@ -110,6 +115,10 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.federation }}:
{{ serverSettings.federation === 'none' ? i18n.ts.no : i18n.ts.all }}
+
+
{{ i18n.ts._serverSettings.remoteNotesCleaning }}:
+
{{ serverSettings.enableRemoteNotesCleaning ? i18n.ts.yes : i18n.ts.no }}
+
FTT:
{{ serverSettings.enableFanoutTimeline ? i18n.ts.yes : i18n.ts.no }}
@@ -185,7 +194,9 @@ import { misskeyApi } from '@/utility/misskey-api.js';
import { i18n } from '@/i18n.js';
import MkFolder from '@/components/MkFolder.vue';
import MkRadios from '@/components/MkRadios.vue';
+import MkSwitch from '@/components/MkSwitch.vue';
import MkInfo from '@/components/MkInfo.vue';
+import MkLink from '@/components/MkLink.vue';
const emit = defineEmits<{
(ev: 'finished'): void;
@@ -202,6 +213,7 @@ const q_name = ref(currentMeta.name ?? '');
const q_use = ref('single');
const q_scale = ref('small');
const q_federation = ref(currentMeta.federation === 'none' ? 'no' : 'yes');
+const q_remoteContentsCleaning = ref(currentMeta.enableRemoteNotesCleaning);
const q_adminName = ref(currentMeta.maintainerName ?? '');
const q_adminEmail = ref(currentMeta.maintainerEmail ?? '');
@@ -219,6 +231,7 @@ const serverSettings = computed
(() => {
emailRequiredForSignup: q_use.value === 'open',
enableIpLogging: q_use.value === 'open',
federation: q_federation.value === 'yes' ? 'all' : 'none',
+ enableRemoteNotesCleaning: q_remoteContentsCleaning.value,
enableFanoutTimeline: true,
enableFanoutTimelineDbFallback: q_use.value === 'single',
enableReactionsBuffering,
diff --git a/packages/frontend/src/pages/admin/job-queue.job.vue b/packages/frontend/src/pages/admin/job-queue.job.vue
index 659aa02b50..4ecdb74199 100644
--- a/packages/frontend/src/pages/admin/job-queue.job.vue
+++ b/packages/frontend/src/pages/admin/job-queue.job.vue
@@ -98,7 +98,7 @@ SPDX-License-Identifier: AGPL-3.0-only
Progress
- {{ Math.floor(job.progress * 100) }}%
+ {{ Math.floor(job.progress) }}%
@@ -150,7 +150,7 @@ SPDX-License-Identifier: AGPL-3.0-only
Update
-
+
diff --git a/packages/frontend/src/pages/admin/performance.vue b/packages/frontend/src/pages/admin/performance.vue
index c28621b11e..ff3a5b9d7f 100644
--- a/packages/frontend/src/pages/admin/performance.vue
+++ b/packages/frontend/src/pages/admin/performance.vue
@@ -101,6 +101,35 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
+
+ Remote Notes Cleaning (仮)
+ Enabled
+ Disabled
+
+
+
+
+
+
+ {{ i18n.ts.enable }}{{ i18n.ts.modified }}
+ {{ i18n.ts._serverSettings.remoteNotesCleaning_description }}
+
+
+
+
+ {{ i18n.ts._serverSettings.remoteNotesCleaningExpiryDaysForEachNotes }} ({{ i18n.ts.inDays }}){{ i18n.ts.modified }}
+ {{ i18n.ts._time.day }}
+
+
+
+ {{ i18n.ts._serverSettings.remoteNotesCleaningMaxProcessingDuration }} ({{ i18n.ts.inMinutes }}){{ i18n.ts.modified }}
+ {{ i18n.ts._time.minute }}
+
+
+
+
@@ -196,6 +225,19 @@ const rbtForm = useForm({
fetchInstance(true);
});
+const remoteNotesCleaningForm = useForm({
+ enableRemoteNotesCleaning: meta.enableRemoteNotesCleaning,
+ remoteNotesCleaningExpiryDaysForEachNotes: meta.remoteNotesCleaningExpiryDaysForEachNotes,
+ remoteNotesCleaningMaxProcessingDurationInMinutes: meta.remoteNotesCleaningMaxProcessingDurationInMinutes,
+}, async (state) => {
+ await os.apiWithDialog('admin/update-meta', {
+ enableRemoteNotesCleaning: state.enableRemoteNotesCleaning,
+ remoteNotesCleaningExpiryDaysForEachNotes: state.remoteNotesCleaningExpiryDaysForEachNotes,
+ remoteNotesCleaningMaxProcessingDurationInMinutes: state.remoteNotesCleaningMaxProcessingDurationInMinutes,
+ });
+ fetchInstance(true);
+});
+
const headerActions = computed(() => []);
const headerTabs = computed(() => []);
--
cgit v1.2.3-freya