Merge branch 'develop' into refactor/notification_settings
[akkoma] / config / description.exs
index 4ea8a2f50b86a33ff838e93f2f872e49dcf15592..84dcdb87e06840699c54931a7b45e6b528fb4af2 100644 (file)
@@ -23,18 +23,14 @@ config :pleroma, :config_description, [
         key: :uploader,
         type: :module,
         description: "Module which will be used for uploads",
-        suggestions: [Pleroma.Uploaders.Local, Pleroma.Uploaders.S3]
+        suggestions: {:list_behaviour_implementations, Pleroma.Uploaders.Uploader}
       },
       %{
         key: :filters,
         type: {:list, :module},
         description:
           "List of filter modules for uploads. Module names are shortened (removed leading `Pleroma.Upload.Filter.` part), but on adding custom module you need to use full name.",
-        suggestions:
-          Generator.list_modules_in_dir(
-            "lib/pleroma/upload/filter",
-            "Elixir.Pleroma.Upload.Filter."
-          )
+        suggestions: {:list_behaviour_implementations, Pleroma.Upload.Filter}
       },
       %{
         key: :link_name,
@@ -196,7 +192,9 @@ config :pleroma, :config_description, [
       %{
         key: :args,
         type: [:string, {:list, :string}, {:list, :tuple}],
-        description: "List of actions for the mogrify command",
+        description:
+          "List of actions for the mogrify command. It's possible to add self-written settings as string. " <>
+            "For example `[\"auto-orient\", \"strip\", {\"resize\", \"3840x1080>\"}]` string will be parsed into list of the settings.",
         suggestions: [
           "strip",
           "auto-orient",
@@ -496,6 +494,7 @@ config :pleroma, :config_description, [
           "dat",
           "dweb",
           "gopher",
+          "hyper",
           "ipfs",
           "ipns",
           "irc",
@@ -697,8 +696,9 @@ config :pleroma, :config_description, [
         key: :public,
         type: :boolean,
         description:
-          "Makes the client API in authentificated mode-only except for user-profiles." <>
-            " Useful for disabling the Local Timeline and The Whole Known Network."
+          "Makes the client API in authenticated mode-only except for user-profiles." <>
+            " Useful for disabling the Local Timeline and The Whole Known Network. " <>
+            " Note: when setting to `false`, please also check `:restrict_unauthenticated` setting."
       },
       %{
         key: :quarantined_instances,
@@ -1067,6 +1067,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :webhook_url,
+        label: "Webhook URL",
         type: :string,
         description: "Configure the Slack incoming webhook",
         suggestions: ["https://hooks.slack.com/services/YOUR-KEY-HERE"]
@@ -1387,12 +1388,47 @@ config :pleroma, :config_description, [
       }
     ]
   },
+  %{
+    group: :pleroma,
+    key: :mrf,
+    tab: :mrf,
+    label: "MRF",
+    type: :group,
+    description: "General MRF settings",
+    children: [
+      %{
+        key: :policies,
+        type: [:module, {:list, :module}],
+        description:
+          "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.",
+        suggestions: {:list_behaviour_implementations, Pleroma.Web.ActivityPub.MRF}
+      },
+      %{
+        key: :transparency,
+        label: "MRF transparency",
+        type: :boolean,
+        description:
+          "Make the content of your Message Rewrite Facility settings public (via nodeinfo)"
+      },
+      %{
+        key: :transparency_exclusions,
+        label: "MRF transparency exclusions",
+        type: {:list, :string},
+        description:
+          "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.",
+        suggestions: [
+          "exclusion.com"
+        ]
+      }
+    ]
+  },
   %{
     group: :pleroma,
     key: :mrf_simple,
+    tab: :mrf,
     label: "MRF Simple",
     type: :group,
-    description: "Message Rewrite Facility",
+    description: "Simple ingress policies",
     children: [
       %{
         key: :media_removal,
@@ -1411,7 +1447,7 @@ config :pleroma, :config_description, [
         key: :federated_timeline_removal,
         type: {:list, :string},
         description:
-          "List of instances to remove from Federated (aka The Whole Known Network) Timeline",
+          "List of instances to remove from the Federated (aka The Whole Known Network) Timeline",
         suggestions: ["example.com", "*.example.com"]
       },
       %{
@@ -1455,14 +1491,15 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_activity_expiration,
+    tab: :mrf,
     label: "MRF Activity Expiration Policy",
     type: :group,
-    description: "Adds expiration to all local Create Note activities",
+    description: "Adds automatic expiration to all local activities",
     children: [
       %{
         key: :days,
         type: :integer,
-        description: "Default global expiration time for all local Create activities (in days)",
+        description: "Default global expiration time for all local activities (in days)",
         suggestions: [90, 365]
       }
     ]
@@ -1470,6 +1507,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_subchain,
+    tab: :mrf,
     label: "MRF Subchain",
     type: :group,
     description:
@@ -1478,7 +1516,7 @@ config :pleroma, :config_description, [
     children: [
       %{
         key: :match_actor,
-        type: :map,
+        type: {:map, {:list, :string}},
         description: "Matches a series of regular expressions against the actor field",
         suggestions: [
           %{
@@ -1491,8 +1529,8 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_rejectnonpublic,
-    description:
-      "MRF RejectNonPublic settings. RejectNonPublic drops posts with non-public visibility settings.",
+    tab: :mrf,
+    description: "RejectNonPublic drops posts with non-public visibility settings.",
     label: "MRF Reject Non Public",
     type: :group,
     children: [
@@ -1512,16 +1550,17 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_hellthread,
+    tab: :mrf,
     label: "MRF Hellthread",
     type: :group,
-    description: "Block messages with too much mentions",
+    description: "Block messages with excessive user mentions",
     children: [
       %{
         key: :delist_threshold,
         type: :integer,
         description:
-          "Number of mentioned users after which the message gets delisted (the message can still be seen, " <>
-            " but it will not show up in public timelines and mentioned users won't get notifications about it). Set to 0 to disable.",
+          "Number of mentioned users after which the message gets removed from timelines and" <>
+            "disables notifications. Set to 0 to disable.",
         suggestions: [10]
       },
       %{
@@ -1536,27 +1575,28 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_keyword,
+    tab: :mrf,
     label: "MRF Keyword",
     type: :group,
     description: "Reject or Word-Replace messages with a keyword or regex",
     children: [
       %{
         key: :reject,
-        type: [:string, :regex],
+        type: {:list, :string},
         description:
           "A list of patterns which result in message being rejected. Each pattern can be a string or a regular expression.",
         suggestions: ["foo", ~r/foo/iu]
       },
       %{
         key: :federated_timeline_removal,
-        type: [:string, :regex],
+        type: {:list, :string},
         description:
           "A list of patterns which result in message being removed from federated timelines (a.k.a unlisted). Each pattern can be a string or a regular expression.",
         suggestions: ["foo", ~r/foo/iu]
       },
       %{
         key: :replace,
-        type: [{:tuple, :string, :string}, {:tuple, :regex, :string}],
+        type: {:list, :tuple},
         description:
           "A list of tuples containing {pattern, replacement}. Each pattern can be a string or a regular expression.",
         suggestions: [{"foo", "bar"}, {~r/foo/iu, "bar"}]
@@ -1566,9 +1606,10 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_mention,
+    tab: :mrf,
     label: "MRF Mention",
     type: :group,
-    description: "Block messages which mention a user",
+    description: "Block messages which mention a specific user",
     children: [
       %{
         key: :actors,
@@ -1581,6 +1622,7 @@ config :pleroma, :config_description, [
   %{
     group: :pleroma,
     key: :mrf_vocabulary,
+    tab: :mrf,
     label: "MRF Vocabulary",
     type: :group,
     description: "Filter messages which belong to certain activity vocabularies",
@@ -1744,15 +1786,20 @@ config :pleroma, :config_description, [
       },
       %{
         key: :headers,
-        type: {:list, :tuple},
-        description: "HTTP headers of request.",
+        type: {:keyword, :string},
+        description: "HTTP headers of request",
         suggestions: [{"x-refresh", 1}]
       },
       %{
         key: :options,
         type: :keyword,
-        description: "Request options.",
-        suggestions: [params: %{ts: "xxx"}]
+        description: "Request options",
+        children: [
+          %{
+            key: :params,
+            type: {:map, :string}
+          }
+        ]
       }
     ]
   },
@@ -1985,18 +2032,11 @@ config :pleroma, :config_description, [
     """,
     children: [
       %{
-        key: :verbose,
+        key: :log,
         type: {:dropdown, :atom},
         description: "Logs verbose mode",
         suggestions: [false, :error, :warn, :info, :debug]
       },
-      %{
-        key: :prune,
-        type: [:atom, :tuple],
-        description:
-          "Non-retryable jobs [pruning settings](https://github.com/sorentwo/oban#pruning)",
-        suggestions: [:disabled, {:maxlen, 1500}, {:maxage, 60 * 60}]
-      },
       %{
         key: :queues,
         type: {:keyword, :integer},
@@ -2475,7 +2515,7 @@ config :pleroma, :config_description, [
       %{
         key: :styling,
         type: :map,
-        description: "a map with color settings for email templates.",
+        description: "A map with color settings for email templates.",
         suggestions: [
           %{
             link_color: "#d8a070",
@@ -2530,8 +2570,7 @@ config :pleroma, :config_description, [
       %{
         key: :enabled,
         type: :boolean,
-        description: "Enables new users admin digest email when `true`",
-        suggestions: [false]
+        description: "Enables new users admin digest email when `true`"
       }
     ]
   },
@@ -2581,7 +2620,7 @@ config :pleroma, :config_description, [
       },
       %{
         key: :groups,
-        type: {:keyword, :string, {:list, :string}},
+        type: {:keyword, {:list, :string}},
         description:
           "Emojis are ordered in groups (tags). This is an array of key-value pairs where the key is the group name" <>
             " and the value is the location or array of locations. * can be used as a wildcard.",
@@ -2861,6 +2900,7 @@ config :pleroma, :config_description, [
   },
   %{
     group: :pleroma,
+    tab: :mrf,
     key: :mrf_normalize_markup,
     label: "MRF Normalize Markup",
     description: "MRF NormalizeMarkup settings. Scrub configured hypertext markup.",
@@ -3057,8 +3097,10 @@ config :pleroma, :config_description, [
     group: :pleroma,
     key: :mrf_object_age,
     label: "MRF Object Age",
+    tab: :mrf,
     type: :group,
-    description: "Rejects or delists posts based on their age when received.",
+    description:
+      "Rejects or delists posts based on their timestamp deviance from your server's clock.",
     children: [
       %{
         key: :threshold,
@@ -3071,7 +3113,7 @@ config :pleroma, :config_description, [
         type: {:list, :atom},
         description:
           "A list of actions to apply to the post. `:delist` removes the post from public timelines; " <>
-            "`:strip_followers` removes followers from the ActivityPub recipient list, ensuring they won't be delivered to home timelines; " <>
+            "`:strip_followers` removes followers from the ActivityPub recipient list ensuring they won't be delivered to home timelines; " <>
             "`:reject` rejects the message entirely",
         suggestions: [:delist, :strip_followers, :reject]
       }
@@ -3392,44 +3434,46 @@ config :pleroma, :config_description, [
         key: :strict,
         type: :boolean,
         description:
-          "Enables strict input validation (useful in development, not recommended in production)",
-        suggestions: [false]
+          "Enables strict input validation (useful in development, not recommended in production)"
       }
     ]
   },
   %{
     group: :pleroma,
-    key: :mrf,
+    key: :instances_favicons,
     type: :group,
-    description: "General MRF settings",
+    description: "Control favicons for instances",
     children: [
       %{
-        key: :policies,
-        type: [:module, {:list, :module}],
-        description:
-          "A list of MRF policies enabled. Module names are shortened (removed leading `Pleroma.Web.ActivityPub.MRF.` part), but on adding custom module you need to use full name.",
-        suggestions:
-          Generator.list_modules_in_dir(
-            "lib/pleroma/web/activity_pub/mrf",
-            "Elixir.Pleroma.Web.ActivityPub.MRF."
-          )
+        key: :enabled,
+        type: :boolean,
+        description: "Allow/disallow displaying and getting instances favicons"
+      }
+    ]
+  },
+  %{
+    group: :ex_aws,
+    key: :s3,
+    type: :group,
+    descriptions: "S3 service related settings",
+    children: [
+      %{
+        key: :access_key_id,
+        type: :string,
+        description: "S3 access key ID",
+        suggestions: ["AKIAQ8UKHTGIYN7DMWWJ"]
       },
       %{
-        key: :transparency,
-        label: "MRF transparency",
-        type: :boolean,
-        description:
-          "Make the content of your Message Rewrite Facility settings public (via nodeinfo)"
+        key: :secret_access_key,
+        type: :string,
+        description: "Secret access key",
+        suggestions: ["JFGt+fgH1UQ7vLUQjpW+WvjTdV/UNzVxcwn7DkaeFKtBS5LvoXvIiME4NQBsT6ZZ"]
       },
       %{
-        key: :transparency_exclusions,
-        label: "MRF transparency exclusions",
-        type: {:list, :string},
-        description:
-          "Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value.",
-        suggestions: [
-          "exclusion.com"
-        ]
+        key: :host,
+        type: :string,
+        description: "S3 host",
+        suggestions: ["s3.eu-central-1.amazonaws.com"]
       }
     ]
   }