diff --git a/config b/config
index 10cfca2..9ea1417 160000
--- a/config
+++ b/config
@@ -1 +1 @@
-Subproject commit 10cfca25891e84debaf41ae6c72aad31ccf71acb
+Subproject commit 9ea1417a2f133f0c531325302f64ba91d262a38f
diff --git a/example/gotosocial/css/night-owl.css b/extras/gotosocial/css/night-owl.css
similarity index 91%
rename from example/gotosocial/css/night-owl.css
rename to extras/gotosocial/css/night-owl.css
index 9af7d35..a12ce4d 100644
--- a/example/gotosocial/css/night-owl.css
+++ b/extras/gotosocial/css/night-owl.css
@@ -54,7 +54,7 @@ html, body {
font-size: 16px;
}
-.profile .header {
+.profile .profile-header {
background: linear-gradient(#6d9fef, 30%, #000000);
}
@@ -62,6 +62,11 @@ html, body {
background: linear-gradient(#545454, 5%, #0E0E0E);
}
+.thread .col-header {
+ background: linear-gradient(#545454, 5%, #0E0E0E);
+ border: none;
+}
+
.profile .column-split {
gap: 1rem;
}
@@ -76,27 +81,22 @@ html, body {
border-width: 0.1rem;
}
-.profile .about-user .fields,
-.profile .about-user .bio,
-.profile .about-user .accountstats,
-.profile .toots .toot,
-.profile .toots .toot .info,
-.toot.expanded,
-.toot.expanded .info {
- background: var(--night-owl-bg);
-}
-
.profile .about-user .fields {
word-wrap: break-word;
}
-.profile .toots .toot {
- border: none;
+.profile .about-user .fields,
+.profile .about-user .bio,
+.profile .about-user .accountstats,
+.status,
+.status .status-info,
+.status.expanded,
+.status.expanded .status-info {
+ background: var(--night-owl-bg);
}
-.toot:only-child {
+.status {
border: none;
- box-shadow: 5px 5px 5px black;
}
.role.admin {
@@ -114,10 +114,6 @@ a:hover, a:active {
color: var(--night-owl-link-hover-fg);
}
-.page footer #version:before {
- content: 'Powered by: ';
-}
-
.button {
background-color: var(--night-owl-button-dark);
color: var(--night-owl-button-light);
diff --git a/templates/gotosocial/config.yaml.gotmpl b/templates/gotosocial/config.yaml.gotmpl
index de1ec0a..1bc89a8 100644
--- a/templates/gotosocial/config.yaml.gotmpl
+++ b/templates/gotosocial/config.yaml.gotmpl
@@ -1,18 +1,19 @@
-# GoToSocial
-# Copyright (C) 2021-2023 GoToSocial Authors admin@gotosocial.org
-
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
+# GoToSocial
+# Copyright (C) GoToSocial Authors admin@gotosocial.org
+# SPDX-License-Identifier: AGPL-3.0-or-later
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see .
###########################
##### GENERAL CONFIG ######
@@ -42,7 +43,7 @@ log-client-ip: true
# The format must be compatible with Go's time.Layout, as
# documented on https://pkg.go.dev/time#pkg-constants.
#
-# Examples: [true, false]
+# Examples: ["2006-01-02T15:04:05.000Z07:00", ""]
# Default: "02/01/2006 15:04:05.000"
log-timestamp-format: "2006-01-02 15:04:05"
@@ -307,6 +308,43 @@ instance-languages: ["en-gb"]
# Default: "blocklist"
instance-federation-mode: "blocklist"
+# Bool. Enable spam filtering heuristics for messages entering your instance
+# via the federation API. Regardless of what you set here, basic checks
+# for message relevancy will still be performed, but you can try enabling
+# this setting if you are being spammed with unwanted messages from other
+# instances, and want to more strictly filter out spam messages.
+#
+# THIS IS CURRENTLY AN EXPERIMENTAL SETTING, AND MAY FILTER OUT LEGITIMATE
+# MESSAGES, OR FAIL TO FILTER OUT SPAMMY MESSAGES. It is recommended to
+# only enable this setting when the fediverse is in the midst of a spam
+# wave, and you need to batten down the hatches to keep your instance usable.
+#
+# The decision of whether a message counts as spam or not is made based on
+# the following heuristics, in order, where receiver = the account on your
+# instance that received a message in their inbox, and requester = the
+# account on a remote instance that sent the message.
+#
+# First, basic relevancy checks
+#
+# 1. Receiver follows requester. Return OK.
+# 2. Statusable doesn't mention receiver. Return NotRelevant.
+#
+# If instance-federation-spam-filter = false, then return OK now.
+# Otherwise check:
+#
+# 3. Receiver is locked and is followed by requester. Return OK.
+# 4. Five or more people are mentioned. Return Spam.
+# 5. Receiver follow (requests) a mentioned account. Return OK.
+# 6. Statusable has a media attachment. Return Spam.
+# 7. Statusable contains non-mention, non-hashtag links. Return Spam.
+#
+# Messages identified as spam will be dropped from your instance, and not
+# inserted into the database, or into home timelines or notifications.
+#
+# Options: [true, false]
+# Default: false
+instance-federation-spam-filter: false
+
# Bool. Allow unauthenticated users to make queries to /api/v1/instance/peers?filter=open in order
# to see a list of instances that this instance 'peers' with. Even if set to 'false', then authenticated
# users (members of the instance) will still be able to query the endpoint.
@@ -360,6 +398,7 @@ instance-deliver-to-shared-inboxes: true
# Default: false
instance-inject-mastodon-version: false
+
###########################
##### ACCOUNTS CONFIG #####
###########################
@@ -410,15 +449,23 @@ accounts-custom-css-length: 10000
# Config pertaining to media uploads (videos, image, image descriptions, emoji).
-# Int. Maximum allowed image upload size in bytes.
-# Examples: [2097152, 10485760]
-# Default: 10485760 -- aka 10MB
-media-image-max-size: 10485760
+# Size. Maximum allowed image upload size in bytes.
+#
+# Raising this limit may cause other servers to not fetch media
+# attached to a post.
+#
+# Examples: [2097152, 10485760, 10MB, 10MiB]
+# Default: 10MiB (10485760 bytes)
+media-image-max-size: 10MiB
-# Int. Maximum allowed video upload size in bytes.
-# Examples: [2097152, 10485760]
-# Default: 41943040 -- aka 40MB
-media-video-max-size: 41943040
+# Size. Maximum allowed video upload size in bytes.
+#
+# Raising this limit may cause other servers to not fetch media
+# attached to a post.
+#
+# Examples: [2097152, 10485760, 40MB, 40MiB]
+# Default: 40MiB (41943040 bytes)
+media-video-max-size: 40MiB
# Int. Minimum amount of characters required as an image or video description.
# Examples: [500, 1000, 1500]
@@ -426,25 +473,29 @@ media-video-max-size: 41943040
media-description-min-chars: 0
# Int. Maximum amount of characters permitted in an image or video description.
-# Examples: [500, 1000, 1500]
-# Default: 500
-media-description-max-chars: 500
+# Examples: [1000, 1500, 3000]
+# Default: 1500
+media-description-max-chars: 1500
-# Int. Max size in bytes of emojis uploaded to this instance via the admin API.
+# Size. Max size in bytes of emojis uploaded to this instance via the admin API.
+#
# The default is the same as the Mastodon size limit for emojis (50kb), which allows
# for good interoperability. Raising this limit may cause issues with federation
# of your emojis to other instances, so beware.
-# Examples: [51200, 102400]
-# Default: 51200
-media-emoji-local-max-size: 51200
+#
+# Examples: [51200, 102400, 50KB, 50KiB]
+# Default: 50KiB (51200 bytes)
+media-emoji-local-max-size: 50KiB
-# Int. Max size in bytes of emojis to download from other instances.
+# Size. Max size in bytes of emojis to download from other instances.
+#
# By default this is 100kb, or twice the size of the default for media-emoji-local-max-size.
# This strikes a good balance between decent interoperability with instances that have
# higher emoji size limits, and not taking up too much space in storage.
-# Examples: [51200, 102400]
-# Default: 102400
-media-emoji-remote-max-size: 102400
+#
+# Examples: [51200, 102400, 100KB, 100KiB]
+# Default: 100KiB (102400 bytes)
+media-emoji-remote-max-size: 100KiB
# The below media cleanup settings allow admins to customize when and
# how often media cleanup + prune jobs run, while being set to a fairly
@@ -549,17 +600,14 @@ storage-s3-bucket: ""
# Config pertaining to the creation of statuses/posts, and permitted limits.
# Int. Maximum amount of characters permitted for a new status.
+# including the content warning (if set).
+#
# Note that going way higher than the default might break federation.
+#
# Examples: [140, 500, 5000]
# Default: 5000
statuses-max-chars: 5000
-# Int. Maximum amount of characters allowed in the CW/subject header of a status.
-# Note that going way higher than the default might break federation.
-# Examples: [100, 200]
-# Default: 100
-statuses-cw-max-chars: 100
-
# Int. Maximum amount of options to permit when creating a new poll.
# Note that going way higher than the default might break federation.
# Examples: [4, 6, 10]
@@ -692,6 +740,12 @@ oidc-scopes:
# Default: false
oidc-link-existing: false
+# Array of string. If the returned ID token contains a 'groups' claim that matches one of the
+# groups in oidc-allowed-groups, then this user will be granted access on the GtS instance. If the array is empty,
+# then all groups will be granted permission.
+# Default: []
+oidc-allowed-groups: []
+
# Array of string. If the returned ID token contains a 'groups' claim that matches one of the
# groups in oidc-admin-groups, then this user will be granted admin rights on the GtS instance
# Default: []
@@ -1032,3 +1086,20 @@ advanced-sender-multiplier: 2
# Example: ["s3.example.org", "some-bucket-name.s3.example.org"]
# Default: []
advanced-csp-extra-uris: []
+
+# String. HTTP request header filtering mode to use for this instance.
+#
+# "block" -- only requests that are explicitly blocked by header filters
+# will be denied (unless they are also explicitly allowed).
+#
+# "allow" -- only requests that are explicitly allowed by header filters
+# will be accepted (unless they are also explicitly blocked).
+#
+# "" -- request header filtering disabled.
+#
+# For more details on block and allow modes, check the documentation at:
+# https://docs.gotosocial.org/en/latest/admin/request_filtering_modes
+#
+# Options: ["block", "allow", ""]
+# Default: ""
+advanced-header-filter-mode: ""