pretty much "the rest"

This commit is contained in:
Henry Jameson 2025-12-08 22:29:47 +02:00
commit a7fa7558b3
13 changed files with 399 additions and 27 deletions

View file

@ -9,6 +9,9 @@
<li>
<BooleanSetting path=":pleroma.:instance.:skip_thread_containment" />
</li>
<li>
<BooleanSetting path=":pleroma.:instance.:external_user_synchronization" />
</li>
</ul>
<h3>{{ $t('admin_dash.federation.restrictions') }}</h3>
<ul class="setting-list">
@ -18,9 +21,6 @@
<li>
<MapSetting path=":pleroma.:instance.:rejected_instances" />
</li>
<li>
<IntegerSetting path=":pleroma.:instance.:remote_post_retention_days" />
</li>
</ul>
<h3>{{ $t('admin_dash.federation.activitypub') }}</h3>
<ul class="setting-list">
@ -45,6 +45,12 @@
<li>
<IntegerSetting path=":pleroma.:instance.:federation_incoming_replies_max_depth" />
</li>
<li>
<IntegerSetting path=":pleroma.:instance.:federation_reachability_timeout_days" />
</li>
<li>
<BooleanSetting path=":pleroma.:instance.:allow_relay" />
</li>
<li>
<BooleanSetting path=":pleroma.:activitypub.:sign_object_fetches" />
</li>

View file

@ -12,15 +12,22 @@
<li>
<StringSetting path=":pleroma.:instance.:email" />
</li>
<li>
<StringSetting path=":pleroma.:instance.:status_page" />
</li>
<li>
<StringSetting path=":pleroma.:instance.:description" />
</li>
<li>
<StringSetting path=":pleroma.:instance.:short_description" />
</li>
<li>
<ListSetting
force-new
ignore-suggestions
path=":pleroma.:instance.:languages"
/>
</li>
<li>
<StringSetting path=":pleroma.:instance.:status_page" />
</li>
</ul>
<h3>{{ $t('admin_dash.instance.branding') }}</h3>
<ul class="setting-list">
@ -50,6 +57,21 @@
<AttachmentSetting path=":pleroma.:instance.:background_image" />
</li>
</ul>
<h3>{{ $t('admin_dash.instance.rich_metadata') }}</h3>
<ul class="setting-list">
<li>
<ListSetting
override-available-options
:options="providersOptions"
:path="[':pleroma','Pleroma.Web.Metadata', ':providers']"
/>
</li>
<li>
<BooleanSetting
:path="[':pleroma','Pleroma.Web.Metadata', ':unfurl_nsfw']"
/>
</li>
</ul>
</div>
<div class="setting-item">
<h3>{{ $t('admin_dash.instance.access') }}</h3>
@ -151,21 +173,6 @@
</ul>
</li>
</ul>
<h3>{{ $t('admin_dash.instance.rich_metadata') }}</h3>
<ul class="setting-list">
<li>
<ListSetting
override-available-options
:options="providersOptions"
:path="[':pleroma','Pleroma.Web.Metadata', ':providers']"
/>
</li>
<li>
<BooleanSetting
:path="[':pleroma','Pleroma.Web.Metadata', ':unfurl_nsfw']"
/>
</li>
</ul>
</div>
</div>
</template>

View file

@ -128,6 +128,25 @@
</li>
</ul>
</li>
<li>
<h4>{{ $t('admin_dash.limits.other') }}</h4>
<ul class="setting-list">
<li>
<IntegerSetting
source="admin"
path=":pleroma.:instance.:max_report_comment_size"
draft-mode
/>
</li>
<li>
<IntegerSetting
source="admin"
path=":pleroma.:instance.:max_endorsed_users"
draft-mode
/>
</li>
</ul>
</li>
</ul>
</div>
</div>

View file

@ -4,6 +4,7 @@ import IntegerSetting from '../helpers/integer_setting.vue'
import StringSetting from '../helpers/string_setting.vue'
import GroupSetting from '../helpers/group_setting.vue'
import AttachmentSetting from '../helpers/attachment_setting.vue'
import ListSetting from '../helpers/list_setting.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
import { library } from '@fortawesome/fontawesome-svg-core'
@ -28,7 +29,8 @@ const MonitoringTab = {
IntegerSetting,
StringSetting,
AttachmentSetting,
GroupSetting
GroupSetting,
ListSetting
},
computed: {
...SharedComputedObject()

View file

@ -1,11 +1,44 @@
<template>
<div :label="$t('admin_dash.tabs.monitoring')">
<div class="setting-item">
<h3>{{ $t('admin_dash.monitoring.mail_digest') }}</h3>
<h3>{{ $t('admin_dash.monitoring.builtins') }}</h3>
<ul class="setting-list">
<li>
<BooleanSetting :path="[':pleroma','Pleroma.Emails.NewUsersDigestEmail',':enabled']" />
</li>
<li>
<BooleanSetting path=":pleroma.:instance.:healthcheck" />
</li>
</ul>
<h3>{{ $t('admin_dash.monitoring.prometheus') }}</h3>
<ul class="setting-list">
<li>
<BooleanSetting :path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':enabled']" />
</li>
<li>
<BooleanSetting
:parent-path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':enabled']"
:path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':auth']"
/>
</li>
<li>
<StringSetting
:parent-path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':enabled']"
:path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':path']"
/>
</li>
<li>
<ChoiceSetting
:parent-path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':enabled']"
:path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':format']"
/>
</li>
<li>
<ListSetting
:parent-path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':enabled']"
:path="[':prometheus','Pleroma.Web.Endpoint.MetricsExporter',':ip_whitelist']"
/>
</li>
</ul>
</div>
</div>

View file

@ -0,0 +1,38 @@
import BooleanSetting from '../helpers/boolean_setting.vue'
import ChoiceSetting from '../helpers/choice_setting.vue'
import IntegerSetting from '../helpers/integer_setting.vue'
import StringSetting from '../helpers/string_setting.vue'
import ColorSetting from '../helpers/color_setting.vue'
import GroupSetting from '../helpers/group_setting.vue'
import AttachmentSetting from '../helpers/attachment_setting.vue'
import ListSetting from '../helpers/list_setting.vue'
import PWAManifestIconsSetting from '../helpers/pwa_manifest_icons_setting.vue'
import MapSetting from '../helpers/map_setting.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
const OtherTab = {
provide () {
return {
defaultDraftMode: true,
defaultSource: 'admin'
}
},
components: {
BooleanSetting,
ChoiceSetting,
IntegerSetting,
StringSetting,
ColorSetting,
AttachmentSetting,
ListSetting,
PWAManifestIconsSetting,
MapSetting,
GroupSetting
},
computed: {
...SharedComputedObject()
}
}
export default OtherTab

View file

@ -0,0 +1,134 @@
<template>
<div :label="$t('admin_dash.tabs.other')">
<div class="setting-item">
<h3>{{ $t('admin_dash.other.uncategorized') }}</h3>
<ul class="setting-list">
<li>
<StringSetting path=":pleroma.:instance.:static_dir" />
</li>
<li>
<StringSetting path=":pleroma.:modules.:runtime_dir" />
</li>
<li>
<BooleanSetting path=":pleroma.:instance.:profile_directory" />
</li>
<li>
<BooleanSetting :path="[':pleroma','Pleroma.Web.ApiSpec.CastAndValidate',':strict']" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.reports') }}</h3>
<ul class="setting-list">
<li>
<BooleanSetting path=":pleroma.:instance.:report_strip_status" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.user_backup') }}</h3>
<ul class="setting-list">
<li>
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':purge_after_days']" />
</li>
<li>
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':limit_days']" />
</li>
<!-- CONFIRM what is this?
<li>
<StringSetting :path="[':pleroma','Pleroma.User.Backup',':dir']" />
</li>
-->
<li>
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':process_chunk_size']" />
</li>
<li>
<IntegerSetting :path="[':pleroma','Pleroma.User.Backup',':timeout']" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.feed') }}</h3>
<ul class="setting-list">
<h4>{{ $t('admin_dash.other.feed_title') }}</h4>
<li>
<IntegerSetting path=":pleroma.:feed.:post_title.:max_length" />
</li>
<li>
<StringSetting path=":pleroma.:feed.:post_title.:omission" />
</li>
<li>
<GroupSetting path=":pleroma.:feed.:post_title" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.remote_ip') }}</h3>
<p>{{ $t('admin_dash.other.remote_ip_description') }}</p>
<ul class="setting-list">
<li>
<BooleanSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':enabled']" />
</li>
<li>
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':headers']" />
</li>
<li>
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':proxies']" />
</li>
<li>
<ListSetting :path="[':pleroma','Pleroma.Web.Plugs.RemoteIp',':reserved']" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.mime') }}</h3>
<ul class="setting-list">
<li>
<ListSetting
override-backend-description-label="application/activity+json"
hide-description
:path="[':mime',':types', 'application/activity+json']"
/>
</li>
<li>
<ListSetting
override-backend-description-label="application/jrd+json"
hide-description
:path="[':mime',':types', 'application/jrd+json']"
/>
</li>
<li>
<ListSetting
override-backend-description-label="application/ld+json"
hide-description
:path="[':mime',':types', 'application/ld+json']"
/>
</li>
<li>
<ListSetting
override-backend-description-label="application/xml"
hide-description
:path="[':mime',':types', 'application/xml']"
/>
</li>
<li>
<ListSetting
override-backend-description-label="application/xrd+xml"
hide-description
:path="[':mime',':types', 'application/xrd+xml']"
/>
</li>
</ul>
<h3>{{ $t('admin_dash.other.streamer') }}</h3>
<ul class="setting-list">
<li>
<IntegerSetting path=":pleroma.:streamer.:workers" />
</li>
<li>
<IntegerSetting path=":pleroma.:streamer.:overflow_workers" />
</li>
</ul>
<h3>{{ $t('admin_dash.other.privileges') }}</h3>
<ul class="setting-list">
<li>
<ListSetting path=":pleroma.:instance.:admin_privileges" />
</li>
<li>
<ListSetting path=":pleroma.:instance.:moderator_privileges" />
</li>
</ul>
</div>
</div>
</template>
<script src="./other_tab.js"></script>

View file

@ -0,0 +1,38 @@
import BooleanSetting from '../helpers/boolean_setting.vue'
import ChoiceSetting from '../helpers/choice_setting.vue'
import IntegerSetting from '../helpers/integer_setting.vue'
import StringSetting from '../helpers/string_setting.vue'
import ColorSetting from '../helpers/color_setting.vue'
import GroupSetting from '../helpers/group_setting.vue'
import AttachmentSetting from '../helpers/attachment_setting.vue'
import ListSetting from '../helpers/list_setting.vue'
import PWAManifestIconsSetting from '../helpers/pwa_manifest_icons_setting.vue'
import MapSetting from '../helpers/map_setting.vue'
import SharedComputedObject from '../helpers/shared_computed_object.js'
const PostsTab = {
provide () {
return {
defaultDraftMode: true,
defaultSource: 'admin'
}
},
components: {
BooleanSetting,
ChoiceSetting,
IntegerSetting,
StringSetting,
ColorSetting,
AttachmentSetting,
ListSetting,
PWAManifestIconsSetting,
MapSetting,
GroupSetting
},
computed: {
...SharedComputedObject()
}
}
export default PostsTab

View file

@ -0,0 +1,43 @@
<template>
<div :label="$t('admin_dash.tabs.posts')">
<div class="setting-item">
<h3>{{ $t('admin_dash.posts.global') }}</h3>
<ul class="setting-list">
<li>
<BooleanSetting path=":pleroma.:instances_favicons.:enabled" />
</li>
</ul>
<h3>{{ $t('admin_dash.posts.local') }}</h3>
<ul class="setting-list">
<li>
<ListSetting path=":pleroma.:instance.:allowed_post_formats" />
</li>
<li>
<h4>{{ $t('admin_dash.posts.scheduled_activites') }}</h4>
<ul class="setting-list">
<li>
<BooleanSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':enabled']" />
</li>
<li>
<IntegerSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':daily_user_limit']" />
</li>
<li>
<IntegerSetting :path="[':pleroma', 'Pleroma.ScheduledActivity', ':total_user_limit']" />
</li>
</ul>
</li>
</ul>
<h3>{{ $t('admin_dash.posts.remote') }}</h3>
<ul class="setting-list">
<li>
<IntegerSetting path=":pleroma.:instance.:remote_post_retention_days" />
</li>
<li>
<BooleanSetting path=":pleroma.:instance.:skip_thread_containment" />
</li>
</ul>
</div>
</div>
</template>
<script src="./posts_tab.js"></script>

View file

@ -140,6 +140,9 @@ export default {
},
backendDescriptionLabel () {
if (this.realSource !== 'admin') return ''
if (this.overrideBackendDescriptionLabel !== '' && typeof this.overrideBackendDescriptionLabel === 'string') {
return this.overrideBackendDescriptionLabel
}
if (!this.backendDescription || this.overrideBackendDescriptionLabel) {
return this.$t([
'admin_dash',

View file

@ -12,6 +12,8 @@ import MonitoringTab from './admin_tabs/monitoring_tab.vue'
import RegistrationsTab from './admin_tabs/registrations_tab.vue'
import AuthTab from './admin_tabs/auth_tab.vue'
import HTTPTab from './admin_tabs/http_tab.vue'
import OtherTab from './admin_tabs/other_tab.vue'
import PostsTab from './admin_tabs/posts_tab.vue'
import FederationTab from './admin_tabs/federation_tab.vue'
import JobQueuesTab from './admin_tabs/job_queues_tab.vue'
import { useInterfaceStore } from 'src/stores/interface'
@ -30,7 +32,9 @@ import {
faGears,
faKey,
faCircleNodes,
faUpload
faUpload,
faMessage,
faEllipsis
} from '@fortawesome/free-solid-svg-icons'
library.add(
@ -46,7 +50,9 @@ library.add(
faGears,
faKey,
faCircleNodes,
faUpload
faUpload,
faMessage,
faEllipsis
)
const SettingsModalAdminContent = {
@ -66,7 +72,9 @@ const SettingsModalAdminContent = {
JobQueuesTab,
AuthTab,
HTTPTab,
MonitoringTab
MonitoringTab,
OtherTab,
PostsTab
},
computed: {
user () {

View file

@ -108,6 +108,14 @@
<MediaProxyTab />
</div>
<div
:label="$t('admin_dash.tabs.posts')"
icon="message"
data-tab-name="other"
>
<PostsTab />
</div>
<div
:label="$t('admin_dash.tabs.links')"
icon="chain"
@ -155,6 +163,14 @@
>
<MonitoringTab />
</div>
<div
:label="$t('admin_dash.tabs.other')"
icon="ellipsis"
data-tab-name="other"
>
<OtherTab />
</div>
</vertical-tab-switcher>
</template>

View file

@ -1161,8 +1161,32 @@
"links": "Links",
"job_queues": "Job Queues",
"auth": "Auth",
"posts": "Posts",
"http": "HTTP",
"federation": "Federation"
"federation": "Federation",
"other": "Other"
},
"posts": {
"global": "Global settings",
"local": "Local posts",
"scheduled_activites": "Scheduled posts",
"remote": "Remote posts"
},
"other": {
"uncategorized": "Uncategorized",
"user_backup": "User Backup",
"reports": "Reports",
"feed": "RSS Feed",
"feed_title": "Article Title",
"mime": "MIME Types",
"remote_ip": "Reverse Proxy / Remote IP",
"remote_ip_description": "This should be disabled only if your instance is NOT behind a reverse proxy",
"streamer": "Notifications Streamer",
"privileges": "Privileges"
},
"monitoring": {
"builtins": "Built-in Tools",
"prometheus": "Prometheus Exporter"
},
"federation": {
"global": "Global settings",
@ -1278,6 +1302,7 @@
"limits": {
"arbitrary_limits": "Arbitrary limits",
"posts": "Post limits",
"other": "Misc. limits",
"uploads": "Attachments limits",
"users": "User profile limits",
"profile_fields": "Profile fields limits",