-
+
{{ i18n.ts._serverSettings.iconUrl }}
-
+
{{ i18n.ts._serverSettings.iconUrl }} (App/192px)
@@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
{{ i18n.ts._serverSettings.iconUrl }} (App/512px)
@@ -37,27 +37,27 @@ SPDX-License-Identifier: AGPL-3.0-only
-
+
{{ i18n.ts.bannerUrl }}
-
+
{{ i18n.ts.backgroundImageUrl }}
-
+
{{ i18n.ts.notFoundDescription }}
-
+
{{ i18n.ts.nothing }}
-
+
{{ i18n.ts.somethingHappened }}
diff --git a/packages/frontend/src/pages/admin/federation.vue b/packages/frontend/src/pages/admin/federation.vue
index 7dc0b46946..41849894ea 100644
--- a/packages/frontend/src/pages/admin/federation.vue
+++ b/packages/frontend/src/pages/admin/federation.vue
@@ -23,6 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
+
@@ -83,6 +84,7 @@ const pagination = {
state === 'publishing' ? { publishing: true } :
state === 'suspended' ? { suspended: true } :
state === 'blocked' ? { blocked: true } :
+ state === 'silenced' ? { silenced: true } :
state === 'notResponding' ? { notResponding: true } :
{}),
})),
@@ -91,6 +93,7 @@ const pagination = {
function getStatus(instance) {
if (instance.isSuspended) return 'Suspended';
if (instance.isBlocked) return 'Blocked';
+ if (instance.isSilenced) return 'Silenced';
if (instance.isNotResponding) return 'Error';
return 'Alive';
}
diff --git a/packages/frontend/src/pages/admin/index.vue b/packages/frontend/src/pages/admin/index.vue
index a508c20cf3..cc0cdf7466 100644
--- a/packages/frontend/src/pages/admin/index.vue
+++ b/packages/frontend/src/pages/admin/index.vue
@@ -34,7 +34,7 @@ import MkSuperMenu from '@/components/MkSuperMenu.vue';
import MkInfo from '@/components/MkInfo.vue';
import { instance } from '@/instance.js';
import * as os from '@/os.js';
-import { lookupUser } from '@/scripts/lookup-user.js';
+import { lookupUser, lookupUserByEmail } from '@/scripts/lookup-user.js';
import { useRouter } from '@/router.js';
import { definePageMetadata, provideMetadataReceiver } from '@/scripts/page-metadata.js';
@@ -115,6 +115,11 @@ const menuDef = $computed(() => [{
text: i18n.ts.customEmojis,
to: '/admin/emojis',
active: currentPage?.route.name === 'emojis',
+ }, {
+ icon: 'ti ti-sparkles',
+ text: i18n.ts.avatarDecorations,
+ to: '/admin/avatar-decorations',
+ active: currentPage?.route.name === 'avatarDecorations',
}, {
icon: 'ti ti-whirl',
text: i18n.ts.federation,
@@ -259,7 +264,7 @@ provideMetadataReceiver((info) => {
}
});
-const invite = () => {
+function invite() {
os.api('admin/invite/create').then(x => {
os.alert({
type: 'info',
@@ -271,15 +276,21 @@ const invite = () => {
text: err,
});
});
-};
+}
-const lookup = (ev) => {
+function lookup(ev: MouseEvent) {
os.popupMenu([{
text: i18n.ts.user,
icon: 'ti ti-user',
action: () => {
lookupUser();
},
+ }, {
+ text: `${i18n.ts.user} (${i18n.ts.email})`,
+ icon: 'ti ti-user',
+ action: () => {
+ lookupUserByEmail();
+ },
}, {
text: i18n.ts.note,
icon: 'ti ti-pencil',
@@ -299,7 +310,7 @@ const lookup = (ev) => {
alert('TODO');
},
}], ev.currentTarget ?? ev.target);
-};
+}
const headerActions = $computed(() => []);
diff --git a/packages/frontend/src/pages/admin/moderation.vue b/packages/frontend/src/pages/admin/moderation.vue
index 8b160635f7..59ee041386 100644
--- a/packages/frontend/src/pages/admin/moderation.vue
+++ b/packages/frontend/src/pages/admin/moderation.vue
@@ -20,12 +20,12 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.serverRules }}
-
+
{{ i18n.ts.tosUrl }}
-
+
{{ i18n.ts.privacyPolicyUrl }}
diff --git a/packages/frontend/src/pages/admin/modlog.ModLog.vue b/packages/frontend/src/pages/admin/modlog.ModLog.vue
index 0af226f02e..bceefcf6c8 100644
--- a/packages/frontend/src/pages/admin/modlog.ModLog.vue
+++ b/packages/frontend/src/pages/admin/modlog.ModLog.vue
@@ -8,9 +8,9 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts._moderationLogTypes[log.type] }}
: @{{ log.info.userUsername }}{{ log.info.userHost ? '@' + log.info.userHost : '' }}
@@ -37,6 +37,9 @@ SPDX-License-Identifier: AGPL-3.0-only
: @{{ log.info.userUsername }}{{ log.info.userHost ? '@' + log.info.userHost : '' }}
: @{{ log.info.noteUserUsername }}{{ log.info.noteUserHost ? '@' + log.info.noteUserHost : '' }}
: @{{ log.info.fileUserUsername }}{{ log.info.fileUserHost ? '@' + log.info.fileUserHost : '' }}
+ : {{ log.info.avatarDecoration.name }}
+ : {{ log.info.before.name }}
+ : {{ log.info.avatarDecoration.name }}
@@ -102,6 +105,11 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
+
+
+
raw
diff --git a/packages/frontend/src/pages/admin/object-storage.vue b/packages/frontend/src/pages/admin/object-storage.vue
index dbcf135c80..8d27c31068 100644
--- a/packages/frontend/src/pages/admin/object-storage.vue
+++ b/packages/frontend/src/pages/admin/object-storage.vue
@@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.useObjectStorage }}
-
+
{{ i18n.ts.objectStorageBaseUrl }}
{{ i18n.ts.objectStorageBaseUrlDesc }}
diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue
index ead2250af2..1db99e61f4 100644
--- a/packages/frontend/src/pages/admin/roles.editor.vue
+++ b/packages/frontend/src/pages/admin/roles.editor.vue
@@ -21,7 +21,7 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.color }}
-
+
{{ i18n.ts._role.iconUrl }}
@@ -259,6 +259,26 @@ SPDX-License-Identifier: AGPL-3.0-only