diff --git a/app/javascript/mastodon/features/compose/components/search.jsx b/app/javascript/mastodon/features/compose/components/search.jsx
index 1c629bcbb4..5ae6ee1090 100644
--- a/app/javascript/mastodon/features/compose/components/search.jsx
+++ b/app/javascript/mastodon/features/compose/components/search.jsx
@@ -50,6 +50,7 @@ class Search extends PureComponent {
{ label: <>is: >, action: e => { e.preventDefault(); this._insertText('is:') } },
{ label: <>language: >, action: e => { e.preventDefault(); this._insertText('language:') } },
{ label: <>from: >, action: e => { e.preventDefault(); this._insertText('from:') } },
+ { label: <>domain: >, action: e => { e.preventDefault(); this._insertText('domain:') } },
{ label: <>before: >, action: e => { e.preventDefault(); this._insertText('before:') } },
{ label: <>during: >, action: e => { e.preventDefault(); this._insertText('during:') } },
{ label: <>after: >, action: e => { e.preventDefault(); this._insertText('after:') } },
diff --git a/app/lib/search_query_transformer.rb b/app/lib/search_query_transformer.rb
index 165359cd79..23c23cdedf 100644
--- a/app/lib/search_query_transformer.rb
+++ b/app/lib/search_query_transformer.rb
@@ -103,6 +103,10 @@ class SearchQueryTransformer < Parslet::Transform
@filter = :account_id
@type = :term
@term = account_id_from_term(term)
+ when 'domain'
+ @filter = :domain
+ @type = :term
+ @term = domain_from_term(term)
when 'before'
@filter = :created_at
@type = :range
@@ -137,6 +141,12 @@ class SearchQueryTransformer < Parslet::Transform
# an ID that does not exist
account&.id || -1
end
+
+ def domain_from_term(term)
+ return '' if %w(local me).include?(term)
+
+ term
+ end
end
rule(clause: subtree(:clause)) do