diff --git a/src/components/compose.jsx b/src/components/compose.jsx
index 17d4c43b..64470675 100644
--- a/src/components/compose.jsx
+++ b/src/components/compose.jsx
@@ -1178,6 +1178,11 @@ function Compose({
+ {supports('@akkoma/local-only') &&
+
+ }
{' '}
diff --git a/src/components/status.jsx b/src/components/status.jsx
index b7babb60..85c72c14 100644
--- a/src/components/status.jsx
+++ b/src/components/status.jsx
@@ -94,6 +94,7 @@ const visibilityText = {
unlisted: msg`Unlisted`,
private: msg`Followers only`,
direct: msg`Private mention`,
+ local: msg`Local instance`,
};
const isIOS =
diff --git a/src/utils/supports.js b/src/utils/supports.js
index adfd1e35..1560e718 100644
--- a/src/utils/supports.js
+++ b/src/utils/supports.js
@@ -7,6 +7,8 @@ import { getCurrentInstance } from './store-utils';
// Non-semver(?) UA string detection
const containPixelfed = /pixelfed/i;
const notContainPixelfed = /^(?!.*pixelfed).*$/i;
+const containAkkoma = /akkoma/i
+const notContainAkkoma = /^(?! *akkoma) *$/i
const platformFeatures = {
'@mastodon/lists': notContainPixelfed,
'@mastodon/filters': notContainPixelfed,
@@ -20,6 +22,7 @@ const platformFeatures = {
'@pixelfed/trending': containPixelfed,
'@pixelfed/home-include-reblogs': containPixelfed,
'@pixelfed/global-feed': containPixelfed,
+ '@akkoma/local-only': containAkkoma,
};
const supportsCache = {};
diff --git a/src/utils/visibility-icons-map.js b/src/utils/visibility-icons-map.js
index 867c2dba..835f7406 100644
--- a/src/utils/visibility-icons-map.js
+++ b/src/utils/visibility-icons-map.js
@@ -3,4 +3,5 @@ export default {
unlisted: 'group',
private: 'lock',
direct: 'message',
+ local: 'building',
};