diff options
| author | syuilo <4439005+syuilo@users.noreply.github.com> | 2025-08-01 11:49:12 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-01 11:49:12 +0900 |
| commit | d624da9c1aac731bd49a7bbb949744ebf4986479 (patch) | |
| tree | 94306c63e3452e77fcf100b5a61eb243705463e4 /packages/frontend/src | |
| parent | enhance(frontend): サーバーの初期設定ウィザードをやり直せ... (diff) | |
| download | misskey-d624da9c1aac731bd49a7bbb949744ebf4986479.tar.gz misskey-d624da9c1aac731bd49a7bbb949744ebf4986479.tar.bz2 misskey-d624da9c1aac731bd49a7bbb949744ebf4986479.zip | |
feat: remote notes cleaning (#16292)
* 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
Diffstat (limited to 'packages/frontend/src')
| -rw-r--r-- | packages/frontend/src/components/MkServerSetupWizard.vue | 15 | ||||
| -rw-r--r-- | packages/frontend/src/pages/admin/job-queue.job.vue | 4 | ||||
| -rw-r--r-- | packages/frontend/src/pages/admin/performance.vue | 42 |
3 files changed, 58 insertions, 3 deletions
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 <template #icon><i class="ti ti-planet"></i></template> <div class="_gaps_s"> - <div>{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description1 }}<br>{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description2 }}</div> + <div>{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description1 }}<br>{{ i18n.ts._serverSetupWizard.doYouConnectToFediverse_description2 }}<br><MkLink target="_blank" url="https://wikipedia.org/wiki/Fediverse">{{ i18n.ts.learnMore }}</MkLink></div> <MkRadios v-model="q_federation" :vertical="true"> <option value="yes">{{ i18n.ts.yes }}</option> @@ -63,6 +63,11 @@ SPDX-License-Identifier: AGPL-3.0-only </MkRadios> <MkInfo v-if="q_federation === 'yes'">{{ i18n.ts._serverSetupWizard.youCanConfigureMoreFederationSettingsLater }}</MkInfo> + + <MkSwitch v-if="q_federation === 'yes'" v-model="q_remoteContentsCleaning"> + <template #label>{{ i18n.ts._serverSetupWizard.remoteContentsCleaning }}</template> + <template #caption>{{ i18n.ts._serverSetupWizard.remoteContentsCleaning_description }}</template> + </MkSwitch> </div> </MkFolder> @@ -111,6 +116,10 @@ SPDX-License-Identifier: AGPL-3.0-only <div>{{ serverSettings.federation === 'none' ? i18n.ts.no : i18n.ts.all }}</div> </div> <div> + <div><b>{{ i18n.ts._serverSettings.remoteNotesCleaning }}:</b></div> + <div>{{ serverSettings.enableRemoteNotesCleaning ? i18n.ts.yes : i18n.ts.no }}</div> + </div> + <div> <div><b>FTT:</b></div> <div>{{ serverSettings.enableFanoutTimeline ? i18n.ts.yes : i18n.ts.no }}</div> </div> @@ -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<Misskey.entities.AdminUpdateMetaRequest>(() => { 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 </MkKeyValue> <MkKeyValue v-if="job.progress != null && typeof job.progress === 'number' && job.progress > 0"> <template #key>Progress</template> - <template #value>{{ Math.floor(job.progress * 100) }}%</template> + <template #value>{{ Math.floor(job.progress) }}%</template> </MkKeyValue> </div> <MkFolder :withSpacer="false"> @@ -150,7 +150,7 @@ SPDX-License-Identifier: AGPL-3.0-only <MkButton><i class="ti ti-device-floppy"></i> Update</MkButton> </div> <div v-else-if="tab === 'result'"> - <MkCode :code="String(job.returnValue)"/> + <MkCode :code="JSON5.stringify(job.returnValue, null, '\t')" lang="json5"/> </div> <div v-else-if="tab === 'error'" class="_gaps_s"> <MkCode v-for="log in job.stacktrace" :code="log" lang="stacktrace"/> 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 </MkSwitch> </div> </MkFolder> + + <MkFolder :defaultOpen="true"> + <template #icon><i class="ti ti-recycle"></i></template> + <template #label>Remote Notes Cleaning (仮)</template> + <template v-if="remoteNotesCleaningForm.savedState.enableRemoteNotesCleaning" #suffix>Enabled</template> + <template v-else #suffix>Disabled</template> + <template v-if="remoteNotesCleaningForm.modified.value" #footer> + <MkFormFooter :form="remoteNotesCleaningForm"/> + </template> + + <div class="_gaps_m"> + <MkSwitch v-model="remoteNotesCleaningForm.state.enableRemoteNotesCleaning"> + <template #label>{{ i18n.ts.enable }}<span v-if="remoteNotesCleaningForm.modifiedStates.enableRemoteNotesCleaning" class="_modified">{{ i18n.ts.modified }}</span></template> + <template #caption>{{ i18n.ts._serverSettings.remoteNotesCleaning_description }}</template> + </MkSwitch> + + <template v-if="remoteNotesCleaningForm.state.enableRemoteNotesCleaning"> + <MkInput v-model="remoteNotesCleaningForm.state.remoteNotesCleaningExpiryDaysForEachNotes" type="number"> + <template #label>{{ i18n.ts._serverSettings.remoteNotesCleaningExpiryDaysForEachNotes }} ({{ i18n.ts.inDays }})<span v-if="remoteNotesCleaningForm.modifiedStates.remoteNotesCleaningExpiryDaysForEachNotes" class="_modified">{{ i18n.ts.modified }}</span></template> + <template #suffix>{{ i18n.ts._time.day }}</template> + </MkInput> + + <MkInput v-model="remoteNotesCleaningForm.state.remoteNotesCleaningMaxProcessingDurationInMinutes" type="number"> + <template #label>{{ i18n.ts._serverSettings.remoteNotesCleaningMaxProcessingDuration }} ({{ i18n.ts.inMinutes }})<span v-if="remoteNotesCleaningForm.modifiedStates.remoteNotesCleaningMaxProcessingDurationInMinutes" class="_modified">{{ i18n.ts.modified }}</span></template> + <template #suffix>{{ i18n.ts._time.minute }}</template> + </MkInput> + </template> + </div> + </MkFolder> </div> </div> </PageWithHeader> @@ -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(() => []); |