-
Notifications
You must be signed in to change notification settings - Fork 192
Add Support for Emoji Reactions (Replaces #1980 and #2127) #2221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
app/models/status_reaction.rb
Outdated
def set_custom_emoji | ||
self.custom_emoji = CustomEmoji.find_by(shortcode: name, domain: account.domain) if name.blank? | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This doesn't make any sense to me.
I see that this comes from announcement reactions, but there it checks for if name.present?
instead.
Right now it just tries to find a custom emoji with no shortcode, when there is no name given.
Though I still have no idea what this is for.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def set_custom_emoji | |
self.custom_emoji = CustomEmoji.find_by(shortcode: name, domain: account.domain) if name.blank? | |
end | |
def set_custom_emoji | |
self.custom_emoji = CustomEmoji.find_by(disabled: false, shortcode: name, domain: account.domain) if name.present? | |
end |
Oh I see what this is for.
This is supposed to prevent reacting with a disabled emoji and also sets custom_emoji when a custom emoji shortcode is given, but no custom_emoji object.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm... Once this change is applied, you can no longer react with foreign custom emoji when such a reaction already existed on the status (made by a foreign instance's user). I will revert the change for now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, yeah, because it looks for an emoji with the reactor's domain :/
It's something I unfortunately can't test for, but is the name passed as shortcode@domain.tld
to this? In that case, it also should split between name and domain.
Alternatively, account.domain
could be replaced with custom_emoji.domain
, though it should have a default of nil, so it doesn't throw a NoMethodError.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
True. In fact, I've just observed incorrect behaviour happening due to account.domain being used...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
...but when removing the reaction on Mastodon, it will disappear on Akkoma as well, indicating that at least, the emoji is federated incorrectly consistently.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Honestly that confuses the hell outta me, because an emoji, which doesn't exist, should not the attached to the payload, unless I'm missing or misunderstand something.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh no... This seems to be a bigger issue with the way custom emojis work.
It is always assumed the domain of a custom emoji is the domain of the account the custom emoji was first seen in...
So that leaves 3 options:
1. Prevent being able to react with foreign emojis
2. Change how custom emojis are serialised and add domain
to the payload.
3. Leave it as it is
I'm for option 1.
Option 2 would require all other ActivityPub software to also change their serialisation to look for domain
in the tag
, otherwise they would have the same problem.
Same would go for changing content
to be shortcode@domain.tld
, which no other software would currently process.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oddly, even with this change, whenever I react with my "annoying_dog" emoji, and someone else on an Akkoma instance then reacts on the same reaction, a faux "annoying_dog@akkoma.instance.example" reaction is created (that will also never be able to go away).
Which means, this is not a bug with reactions, but intended behaviour by vanilla.
Not being able to unreact is a separate issue, which affects all custom emoji reactions.
Wait, how does the Akkoma instance react with the same emoji? It should not even display on Akkoma as reactions on toots don't and shouldn't federate.
So an annoying_dog@akkoma.instance.example
is actually expected behaviour here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
def set_custom_emoji | |
self.custom_emoji = CustomEmoji.find_by(shortcode: name, domain: account.domain) if name.blank? | |
end | |
def set_custom_emoji | |
self.custom_emoji = CustomEmoji.find_by(disabled: false, shortcode: name, domain: custom_emoji.domain) if name.present? && custom_emoji.present? | |
end |
I actually don't think it should set a custom emoji when it is nil, as I see it as violation of the spec. Also it leads to unintended behaviour. It doesn't really matter for announcement reactions which this is based on, since they don't handle remote content, but it does matter here.
Though, as established custom_emoji.domain will essentially always equal account.domain anyway.
Actually no, when using the rest API, it is actually possible that custom_emoji.domain
is different from account.domain
0ec7fd2
to
5d0a1a7
Compare
return if original_status.nil? || | ||
!original_status.account.local? || | ||
delete_arrived_first?(@json['id']) || | ||
@account.reacted?(original_status, name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it sufficient for reacted?
to be called with merely a name? After all, the name does not include the domain when it's a custom emoji, as it stands currently.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is sufficient as name is saved as shortcode@domain.tld
, though the content payload only contains the shortcode, so it should also check @json['tag']
for an emoji and pass name@domain.tld
to reacted? if the tag payload also includes a custom emoji
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The issue is, reacted?
in activity.rb does check for name as it's saved in the database... and the database never saves the domain part anywhere.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But it doesn't. My database does not contain any "emoji@domain" under the name column, only ever the shortcode.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ooooh, you're right, sorry, I misunderstood the code.
Yeah, reacted?
needs an optional emoji attribute.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wait, no, name is case sensitive and since even foreign custom emoji are always treated as coming from the reactors domain, the same account can't have two different reaction with the same name attached to a toot.
Yeah, reacted? needs an optional emoji attribute.
That would break the Undo
activity though, as it doesn't contain tags.
I don't know how other software handles Undo
though.
I missed how Undo
works. It does contain the same payload as the activity it is undoing, so it also needs to process tags.
btw this also looks for :shortcode:
in the database.
app/models/status_reaction.rb
Outdated
def set_custom_emoji | ||
self.custom_emoji = CustomEmoji.find_by(shortcode: name, domain: account.domain) if name.blank? | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
...but when removing the reaction on Mastodon, it will disappear on Akkoma as well, indicating that at least, the emoji is federated incorrectly consistently.
return if status.nil? || !status.account.local? | ||
|
||
if @account.reacted?(status, name.delete(':')) | ||
reaction = status.status_reactions.where(account: @account, name: name).first |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reaction is nil when name
is a custom emoji shortcode, because the query looks for :shortcode:
in the database, so reactions with custom emoji are never deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
reaction = status.status_reactions.where(account: @account, name: name).first | |
reaction = status.status_reactions.where(account: @account, name: name.delete(':')).first |
facepalm
I typo'd this like 3 times now...
Though for performance, it should be name = name.delete(':')
before this block. (or name.delete! ':'
)
app/lib/activitypub/activity.rb
Outdated
# Ensure all emojis declared in the activity's tags are | ||
# present in the database and downloaded to the local cache. | ||
# Required by EmojiReact and Like for emoji reactions. | ||
def process_emoji_tags(tags) | ||
as_array(tags).each do |tag| | ||
process_single_emoji tag if tag['type'] == 'Emoji' | ||
end | ||
end |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is no reason to do this.
Both Misskeys Like
activity as well as the EmojiReact
activity only expect a single tag object.
This pull request has merge conflicts that must be resolved before it can be merged. |
I made a PR with some fixes for the backend: CatCatNya#4 |
f6f60e4
to
2a13d27
Compare
This pull request has resolved merge conflicts and is ready for review. |
@Plastikmensch the following issue is outstanding from your PR: the signature of the |
346d54e
to
ab1fe56
Compare
Oops, looks like I missed that while porting changes. Sorry! |
Follow-up available at CatCatNya#5 |
46b8457
to
3dc590a
Compare
Wondering if the Ruby linting failure at undo.rb should be ignored by us, or if we can even do much about it given that's where the additional functionality is needed. |
8de90fa
to
3b3bfec
Compare
I think that cop is counterproductive and should be disabled. |
Marked as draft again as I forgot that reactions coming from e.g. Akkoma still do their weird thing |
Can you give more info on that, including what is send in the activities? |
This pull request has merge conflicts that must be resolved before it can be merged. |
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
commit a353fea Author: Essem <smswessem@gmail.com> Date: Sun Jun 1 15:35:07 2025 -0500 Fix reaction notifications in web UI commit a194f74 Author: Essem <smswessem@gmail.com> Date: Sun May 18 13:43:06 2025 -0500 Add toot:Emoji and litepub:EmojiReact context extensions to reaction objects commit 70ff824 Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 22:23:04 2025 -0500 Do not fade in emoji reactions on initial load commit 60b5dd6 Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 13:52:12 2025 -0500 Migrate status reactions to react-spring commit cc710c7 Author: Essem <smswessem@gmail.com> Date: Sat Feb 8 14:22:11 2025 -0600 Group reaction notifications by default commit 171eda2 Author: Essem <smswessem@gmail.com> Date: Fri Jan 3 17:10:04 2025 -0600 Remove emoji reaction settings move migration It's now broken and pointless due to the complete removal of legacy user settings. Since this effectively predates the current reaction branch as well, there is little chance that someone running an older iteration will need to use this migration. commit 9a796f3 Author: Essem <smswessem@gmail.com> Date: Sun Dec 29 00:06:41 2024 -0600 Fix old migration commit faf23ea Author: Essem <smswessem@gmail.com> Date: Wed Dec 18 15:40:30 2024 -0600 Update status reaction emails commit 4a22db8 Author: Essem <smswessem@gmail.com> Date: Tue Nov 26 12:32:18 2024 -0600 Fix status reactions not animating on hover when logged out commit f4e52ea Author: Essem <smswessem@gmail.com> Date: Thu Nov 7 15:33:42 2024 -0600 Fix invisible reactions on detailed statuses when logged out commit 57c6de4 Author: Essem <smswessem@gmail.com> Date: Thu Oct 3 15:14:19 2024 -0500 Align mail status check with upstream commit 80020bc Author: Essem <smswessem@gmail.com> Date: Fri Sep 13 16:32:47 2024 -0500 Make addReaction and removeReaction optional props This prevents things from breaking with embeds. commit 3568a12 Author: Essem <smswessem@gmail.com> Date: Thu Aug 22 12:22:36 2024 -0500 Fix grouped reaction notification text commit 5f05c98 Author: Essem <smswessem@gmail.com> Date: Sun Aug 4 19:13:04 2024 -0500 Fix reblog reactions being hydrated improperly commit 0fedd5f Author: Essem <smswessem@gmail.com> Date: Wed Jul 24 23:10:43 2024 -0500 Fix reactions bar alignment in grouped notifications commit 7e5b67e Author: Essem <smswessem@gmail.com> Date: Thu Jul 18 21:01:46 2024 -0500 Add notification grouping for reactions commit d586713 Author: Essem <smswessem@gmail.com> Date: Tue Jun 18 14:10:37 2024 -0500 Turn custom emoji regexps into class level constants commit 953bac2 Author: Essem <smswessem@gmail.com> Date: Sun Jun 16 14:30:22 2024 -0500 Disable reactions in detailed status view when visibleReactions is 0 commit 2749470 Author: Jeremy Kescher <jeremy@kescher.at> Date: Tue May 21 00:46:17 2024 +0200 [Glitch+Emoji reactions] Use modern React context for for identity for emoji reaction code commit 702ee07 Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 17:20:38 2024 -0600 Fix reaction picker dropdown appearance commit a21bd73 Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 16:22:40 2024 -0600 Merge fixes commit 754c1ed Author: Essem <smswessem@gmail.com> Date: Fri Feb 9 17:42:19 2024 -0600 Hydrate reactions on streaming API commit 7ed43a4 Author: Essem <smswessem@gmail.com> Date: Wed Feb 7 17:14:16 2024 -0600 Purge status reactions on account delete commit b39a7ba Author: Essem <smswessem@gmail.com> Date: Sun Jan 28 14:51:10 2024 -0600 Fix rubocop lint issue commit 266fd45 Author: Essem <smswessem@gmail.com> Date: Wed Jan 24 17:50:58 2024 -0600 Refactor status reactions query This was done to announcement reactions in 1b0cb3b. Might as well do it here too. commit c5c0aa3 Author: Essem <smswessem@gmail.com> Date: Tue Jan 23 22:59:42 2024 -0600 Simplify reactions API controller commit 5ef6470 Author: Essem <smswessem@gmail.com> Date: Thu Jan 18 21:38:39 2024 -0600 Update reaction emails Reaction icon made by t3rminus@calamity.world commit 67b47de Author: Essem <smswessem@gmail.com> Date: Wed Jan 17 18:04:11 2024 -0600 Revert variant selector normalization Probably worth tackling later, but for now it's not worth worrying about; some other implementations (e.g. Misskey's) look to have the same behavior anyways. commit e11f8eb Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:59:27 2024 -0600 Move reaction normalization to API controller commit c335db4 Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:47:55 2024 -0600 Quick fixes commit 3103597 Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:18:36 2024 -0600 Make name of like content parser function more general commit ad94a95 Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:16:57 2024 -0600 Normalize emojis with variant selectors commit 337a12e Author: Essem <smswessem@gmail.com> Date: Tue Dec 26 14:04:53 2023 -0600 Check for content attribute in Misskey likes commit 57f5f55 Author: Essem <smswessem@gmail.com> Date: Fri Dec 22 16:09:43 2023 -0600 Fix rubocop complaint commit d494dfd Author: Essem <smswessem@gmail.com> Date: Tue Dec 19 22:15:34 2023 -0600 Add reaction notification column settings This was in a previous PR. Not quite sure how it didn't carry over. commit aa8121c Author: Essem <smswessem@gmail.com> Date: Mon Dec 18 18:27:02 2023 -0600 Linting fixes commit 72c84f1 Author: Essem <smswessem@gmail.com> Date: Sun Nov 12 20:59:36 2023 -0600 Refactor react services commit 83789e3 Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 17:36:40 2023 -0600 Fix reblog reactions commit 33ce1e5 Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 15:16:29 2023 -0600 Add notification emails for reactions commit c611a07 Author: Essem <smswessem@gmail.com> Date: Tue Nov 7 18:43:47 2023 -0600 Add support for emoji reactions Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com> commit ad8f984 Merge: d97910d af314a8 Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 19:34:17 2025 +0200 Merge pull request glitch-soc#3090 from ClearlyClaire/glitch-soc/merge-upstream Merge upstream changes up to 520974e commit af314a8 Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 17:36:51 2025 +0200 [Glitch] Add ability to filter quote posts in home timeline Port 520974e to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit 9a649a2 Author: Echo <ChaosExAnima@users.noreply.github.com> Date: Thu Jun 5 12:23:01 2025 +0200 [Glitch] Add a way to easily unpin profiles from the featured account area Port 1fdcaae to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit 802ade6 Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 10:49:26 2025 +0200 [Glitch] Fix account note textarea being interactable before the relationship gets fetched Port 375add0 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit 4dbbe52 Author: diondiondion <mail@diondiondion.com> Date: Wed Jun 4 17:34:13 2025 +0200 [Glitch] fix: Fix broken audio player layout in Safari Port 1dafd8c to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit 6bb29de Author: diondiondion <mail@diondiondion.com> Date: Wed Jun 4 16:35:29 2025 +0200 [Glitch] fix: Fix Safari volume bug Port 6637ecb to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit a6a35ad Author: Echo <ChaosExAnima@users.noreply.github.com> Date: Wed Jun 4 16:29:34 2025 +0200 [Glitch] Ensure carousel slides don't overflow Port e9f1977 to glitch-soc Signed-off-by: Claire <claire.github-309c@sitedethib.com> commit 2085b0b Merge: d97910d 520974e Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 18:02:40 2025 +0200 Merge commit '520974e05211e988b0447f7f29e88798b1794bcf' into glitch-soc/merge-upstream Conflicts: - `app/serializers/rest/status_serializer.rb`: Not a real conflict, just glitch-soc code textually adjacent to code added upstream. commit 520974e Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 17:36:51 2025 +0200 Add ability to filter quote posts in home timeline (mastodon#34946) commit 3d47480 Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 15:53:57 2025 +0200 Change “legacy” non-fast-tracked quote posts to not be displayed as such (mastodon#34945) commit 09208ea Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Thu Jun 5 15:37:43 2025 +0200 chore(deps): update yarn to v4.9.2 (mastodon#34916) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit 25c4574 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Thu Jun 5 15:37:37 2025 +0200 chore(deps): update dependency opentelemetry-instrumentation-faraday to '~> 0.27.0' (mastodon#34917) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit e2c5a2a Author: Matt Jankowski <matt@jankowski.online> Date: Thu Jun 5 09:37:33 2025 -0400 Fix `Style/FetchEnvVar` cop in `repo.rake` (mastodon#34903) Co-authored-by: Claire <claire.github-309c@sitedethib.com> commit a80f77a Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Thu Jun 5 15:36:22 2025 +0200 fix(deps): update dependency pino-http to v10.5.0 (mastodon#34920) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit 1297ad7 Author: Matt Jankowski <matt@jankowski.online> Date: Thu Jun 5 08:09:05 2025 -0400 Update rubocop to version 1.76.0 (mastodon#34926) commit 1fdcaae Author: Echo <ChaosExAnima@users.noreply.github.com> Date: Thu Jun 5 12:23:01 2025 +0200 Add a way to easily unpin profiles from the featured account area (mastodon#34931) commit 375add0 Author: Claire <claire.github-309c@sitedethib.com> Date: Thu Jun 5 10:49:26 2025 +0200 Fix account note textarea being interactable before the relationship gets fetched (mastodon#34932) commit a4bc438 Author: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Date: Thu Jun 5 09:47:34 2025 +0200 chore(deps): update dependency annotaterb to v4.15.0 (mastodon#34870) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> commit 1d152d2 Author: Matt Jankowski <matt@jankowski.online> Date: Thu Jun 5 03:08:52 2025 -0400 Replace local vars with `let` in JS-enabled system specs (mastodon#34905) commit 250c3b0 Author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu Jun 5 09:05:25 2025 +0200 New Crowdin Translations (automated) (mastodon#34939) Co-authored-by: GitHub Actions <noreply@github.com> commit 1dafd8c Author: diondiondion <mail@diondiondion.com> Date: Wed Jun 4 17:34:13 2025 +0200 fix: Fix broken audio player layout in Safari, mastodon#34930 (mastodon#34933) commit 6637ecb Author: diondiondion <mail@diondiondion.com> Date: Wed Jun 4 16:35:29 2025 +0200 fix: Fix Safari volume bug, mastodon#34797 (mastodon#34929) commit e9f1977 Author: Echo <ChaosExAnima@users.noreply.github.com> Date: Wed Jun 4 16:29:34 2025 +0200 Ensure carousel slides don't overflow (mastodon#34927)
commit 14b1178404f30806c59299161b3b3c0e65ce4e17 Author: Essem <smswessem@gmail.com> Date: Sun Jun 1 15:35:07 2025 -0500 Fix reaction notifications in web UI commit 5df10a7ca8251d62e92ad81bd901cecf340b673b Author: Essem <smswessem@gmail.com> Date: Sun May 18 13:43:06 2025 -0500 Add toot:Emoji and litepub:EmojiReact context extensions to reaction objects commit 4cb3b8a4f5fe1f454cdfa85ac805f05e559a6463 Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 22:23:04 2025 -0500 Do not fade in emoji reactions on initial load commit 5dcccf55c7a32b7f031a1d33d55b97113f06b8b1 Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 13:52:12 2025 -0500 Migrate status reactions to react-spring commit ecc8501eaaabc584f29c0f67587636bd4d85c54c Author: Essem <smswessem@gmail.com> Date: Sat Feb 8 14:22:11 2025 -0600 Group reaction notifications by default commit 7a984259f6e859de43c62855b011d68199a4689d Author: Essem <smswessem@gmail.com> Date: Fri Jan 3 17:10:04 2025 -0600 Remove emoji reaction settings move migration It's now broken and pointless due to the complete removal of legacy user settings. Since this effectively predates the current reaction branch as well, there is little chance that someone running an older iteration will need to use this migration. commit 90a725b828fb5270e42c11397d34b89d6b01fa26 Author: Essem <smswessem@gmail.com> Date: Sun Dec 29 00:06:41 2024 -0600 Fix old migration commit c3ee6fda099368b575308c1a9e4b753dfdd56b7b Author: Essem <smswessem@gmail.com> Date: Wed Dec 18 15:40:30 2024 -0600 Update status reaction emails commit ce847ae810e0dd6551de827f09a05f3f2069ecd0 Author: Essem <smswessem@gmail.com> Date: Tue Nov 26 12:32:18 2024 -0600 Fix status reactions not animating on hover when logged out commit 090d76a32eb42a6a910309d4cdd2baf00001aa59 Author: Essem <smswessem@gmail.com> Date: Thu Nov 7 15:33:42 2024 -0600 Fix invisible reactions on detailed statuses when logged out commit 14ed0a480af2f14fa787b5479c9a1b274b26545d Author: Essem <smswessem@gmail.com> Date: Thu Oct 3 15:14:19 2024 -0500 Align mail status check with upstream commit 585acd91bf49ff94827bb2048cbdea2fd71cac34 Author: Essem <smswessem@gmail.com> Date: Fri Sep 13 16:32:47 2024 -0500 Make addReaction and removeReaction optional props This prevents things from breaking with embeds. commit f652e75f37f6c28af33195fbf9ccaa890f60ad62 Author: Essem <smswessem@gmail.com> Date: Thu Aug 22 12:22:36 2024 -0500 Fix grouped reaction notification text commit ea5e675ed81162b57bdb016674b1ded630ae4f2e Author: Essem <smswessem@gmail.com> Date: Sun Aug 4 19:13:04 2024 -0500 Fix reblog reactions being hydrated improperly commit e900b7138f63d0e6e5b94f1c1b33808e59fc7c18 Author: Essem <smswessem@gmail.com> Date: Wed Jul 24 23:10:43 2024 -0500 Fix reactions bar alignment in grouped notifications commit 02bbd1970887e76077b092db30b47edb2c9daee8 Author: Essem <smswessem@gmail.com> Date: Thu Jul 18 21:01:46 2024 -0500 Add notification grouping for reactions commit fdec3c8f08d3f2059f73f95ea1a4b033c8bc1eb8 Author: Essem <smswessem@gmail.com> Date: Tue Jun 18 14:10:37 2024 -0500 Turn custom emoji regexps into class level constants commit 7c909b8377458d7af688e85f435f460a315ec8b5 Author: Essem <smswessem@gmail.com> Date: Sun Jun 16 14:30:22 2024 -0500 Disable reactions in detailed status view when visibleReactions is 0 commit f4e983c42696d4a1f6983b6ba7e0d9b82ba392b0 Author: Jeremy Kescher <jeremy@kescher.at> Date: Tue May 21 00:46:17 2024 +0200 [Glitch+Emoji reactions] Use modern React context for for identity for emoji reaction code commit 8db6789a096c6e773dc902fdcc6bd1c6a11f7e73 Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 17:20:38 2024 -0600 Fix reaction picker dropdown appearance commit f175a61da683c7ef2605a72f03036d17ddce4e01 Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 16:22:40 2024 -0600 Merge fixes commit 4e772d3decf857570cc765ae57c17521d43c91d5 Author: Essem <smswessem@gmail.com> Date: Fri Feb 9 17:42:19 2024 -0600 Hydrate reactions on streaming API commit 21bb5abbda288d9ae073bb5728cc2e813b4e8872 Author: Essem <smswessem@gmail.com> Date: Wed Feb 7 17:14:16 2024 -0600 Purge status reactions on account delete commit fa23e616c63c1115938993137e1feac482213ac6 Author: Essem <smswessem@gmail.com> Date: Sun Jan 28 14:51:10 2024 -0600 Fix rubocop lint issue commit bfdc413a576a25c92083978432b4af54971c0b92 Author: Essem <smswessem@gmail.com> Date: Wed Jan 24 17:50:58 2024 -0600 Refactor status reactions query This was done to announcement reactions in 1b0cb3b. Might as well do it here too. commit cc790e6e5b220eac33d092e8d205b3efc413ceaf Author: Essem <smswessem@gmail.com> Date: Tue Jan 23 22:59:42 2024 -0600 Simplify reactions API controller commit 83f93c4556964128febb88cef7d975565f25ff48 Author: Essem <smswessem@gmail.com> Date: Thu Jan 18 21:38:39 2024 -0600 Update reaction emails Reaction icon made by t3rminus@calamity.world commit 146ecad3406c57dbb85d04029e076291877ac649 Author: Essem <smswessem@gmail.com> Date: Wed Jan 17 18:04:11 2024 -0600 Revert variant selector normalization Probably worth tackling later, but for now it's not worth worrying about; some other implementations (e.g. Misskey's) look to have the same behavior anyways. commit e36a445914ac484131591823911fb361c7c1d6d6 Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:59:27 2024 -0600 Move reaction normalization to API controller commit 8b0cad7131eeda4a7f8d296e1b08978d3d1dd1ea Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:47:55 2024 -0600 Quick fixes commit 55024e39aab2d28aa3cd1acbf747a605a36c1a25 Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:18:36 2024 -0600 Make name of like content parser function more general commit 06ef1a568d8d6223e3d14353127c4dd87d7dbb1e Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:16:57 2024 -0600 Normalize emojis with variant selectors commit 1af579d033de989ab0c5c41c8db3af454698ae54 Author: Essem <smswessem@gmail.com> Date: Tue Dec 26 14:04:53 2023 -0600 Check for content attribute in Misskey likes commit 136f6e68ec8480d3af7751666a3131600238f2af Author: Essem <smswessem@gmail.com> Date: Fri Dec 22 16:09:43 2023 -0600 Fix rubocop complaint commit bb24e8fb1d9563a25bc7554e044d499b05f93ea8 Author: Essem <smswessem@gmail.com> Date: Tue Dec 19 22:15:34 2023 -0600 Add reaction notification column settings This was in a previous PR. Not quite sure how it didn't carry over. commit cc67bdc9e3a8ee5ae0f820dcbcbdac2689b46d8d Author: Essem <smswessem@gmail.com> Date: Mon Dec 18 18:27:02 2023 -0600 Linting fixes commit 4f7f3ebd63b01ff364c66a4a9138143fe8acf8f0 Author: Essem <smswessem@gmail.com> Date: Sun Nov 12 20:59:36 2023 -0600 Refactor react services commit de3ed0aa5c3d91280277d7e7e01aa28a9b90d8c2 Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 17:36:40 2023 -0600 Fix reblog reactions commit a050736603798a63c65481305ffc9cc7ad4ab721 Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 15:16:29 2023 -0600 Add notification emails for reactions commit 82dbb28c6d21756b62211f55d6729b56af8040f8 Author: Essem <smswessem@gmail.com> Date: Tue Nov 7 18:43:47 2023 -0600 Add support for emoji reactions Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
commit a74e1b9 Author: Essem <smswessem@gmail.com> Date: Sun Jun 1 15:35:07 2025 -0500 Fix reaction notifications in web UI commit 8e3fe72 Author: Essem <smswessem@gmail.com> Date: Sun May 18 13:43:06 2025 -0500 Add toot:Emoji and litepub:EmojiReact context extensions to reaction objects commit 3d16c0a Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 22:23:04 2025 -0500 Do not fade in emoji reactions on initial load commit 0ee7bbb Author: Essem <smswessem@gmail.com> Date: Sun Mar 30 13:52:12 2025 -0500 Migrate status reactions to react-spring commit e19195e Author: Essem <smswessem@gmail.com> Date: Sat Feb 8 14:22:11 2025 -0600 Group reaction notifications by default commit 11cda7f Author: Essem <smswessem@gmail.com> Date: Fri Jan 3 17:10:04 2025 -0600 Remove emoji reaction settings move migration It's now broken and pointless due to the complete removal of legacy user settings. Since this effectively predates the current reaction branch as well, there is little chance that someone running an older iteration will need to use this migration. commit 5329f9a Author: Essem <smswessem@gmail.com> Date: Sun Dec 29 00:06:41 2024 -0600 Fix old migration commit 26dcec7 Author: Essem <smswessem@gmail.com> Date: Wed Dec 18 15:40:30 2024 -0600 Update status reaction emails commit d663116 Author: Essem <smswessem@gmail.com> Date: Tue Nov 26 12:32:18 2024 -0600 Fix status reactions not animating on hover when logged out commit 106cc73 Author: Essem <smswessem@gmail.com> Date: Thu Nov 7 15:33:42 2024 -0600 Fix invisible reactions on detailed statuses when logged out commit 7bfde92 Author: Essem <smswessem@gmail.com> Date: Thu Oct 3 15:14:19 2024 -0500 Align mail status check with upstream commit 098607d Author: Essem <smswessem@gmail.com> Date: Fri Sep 13 16:32:47 2024 -0500 Make addReaction and removeReaction optional props This prevents things from breaking with embeds. commit b06af06 Author: Essem <smswessem@gmail.com> Date: Thu Aug 22 12:22:36 2024 -0500 Fix grouped reaction notification text commit 5aded47 Author: Essem <smswessem@gmail.com> Date: Sun Aug 4 19:13:04 2024 -0500 Fix reblog reactions being hydrated improperly commit 3c82a2c Author: Essem <smswessem@gmail.com> Date: Wed Jul 24 23:10:43 2024 -0500 Fix reactions bar alignment in grouped notifications commit 1798da0 Author: Essem <smswessem@gmail.com> Date: Thu Jul 18 21:01:46 2024 -0500 Add notification grouping for reactions commit 77715c6 Author: Essem <smswessem@gmail.com> Date: Tue Jun 18 14:10:37 2024 -0500 Turn custom emoji regexps into class level constants commit 33b6330 Author: Essem <smswessem@gmail.com> Date: Sun Jun 16 14:30:22 2024 -0500 Disable reactions in detailed status view when visibleReactions is 0 commit 6a53f0a Author: Jeremy Kescher <jeremy@kescher.at> Date: Tue May 21 00:46:17 2024 +0200 [Glitch+Emoji reactions] Use modern React context for for identity for emoji reaction code commit 1e63ffe Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 17:20:38 2024 -0600 Fix reaction picker dropdown appearance commit f97f169 Author: Essem <smswessem@gmail.com> Date: Sat Feb 24 16:22:40 2024 -0600 Merge fixes commit b75eff3 Author: Essem <smswessem@gmail.com> Date: Fri Feb 9 17:42:19 2024 -0600 Hydrate reactions on streaming API commit d234e38 Author: Essem <smswessem@gmail.com> Date: Wed Feb 7 17:14:16 2024 -0600 Purge status reactions on account delete commit 9b21601 Author: Essem <smswessem@gmail.com> Date: Sun Jan 28 14:51:10 2024 -0600 Fix rubocop lint issue commit 0b2b30f Author: Essem <smswessem@gmail.com> Date: Wed Jan 24 17:50:58 2024 -0600 Refactor status reactions query This was done to announcement reactions in 1b0cb3b. Might as well do it here too. commit ad9db89 Author: Essem <smswessem@gmail.com> Date: Tue Jan 23 22:59:42 2024 -0600 Simplify reactions API controller commit 88565af Author: Essem <smswessem@gmail.com> Date: Thu Jan 18 21:38:39 2024 -0600 Update reaction emails Reaction icon made by t3rminus@calamity.world commit 57ca4cd Author: Essem <smswessem@gmail.com> Date: Wed Jan 17 18:04:11 2024 -0600 Revert variant selector normalization Probably worth tackling later, but for now it's not worth worrying about; some other implementations (e.g. Misskey's) look to have the same behavior anyways. commit b082d18 Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:59:27 2024 -0600 Move reaction normalization to API controller commit 32f53be Author: Essem <smswessem@gmail.com> Date: Sun Jan 14 15:47:55 2024 -0600 Quick fixes commit 11d757e Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:18:36 2024 -0600 Make name of like content parser function more general commit 21e9ffe Author: Essem <smswessem@gmail.com> Date: Sat Jan 13 18:16:57 2024 -0600 Normalize emojis with variant selectors commit e32f089 Author: Essem <smswessem@gmail.com> Date: Tue Dec 26 14:04:53 2023 -0600 Check for content attribute in Misskey likes commit 566ee52 Author: Essem <smswessem@gmail.com> Date: Fri Dec 22 16:09:43 2023 -0600 Fix rubocop complaint commit db58150 Author: Essem <smswessem@gmail.com> Date: Tue Dec 19 22:15:34 2023 -0600 Add reaction notification column settings This was in a previous PR. Not quite sure how it didn't carry over. commit 3041645 Author: Essem <smswessem@gmail.com> Date: Mon Dec 18 18:27:02 2023 -0600 Linting fixes commit 5a592b7 Author: Essem <smswessem@gmail.com> Date: Sun Nov 12 20:59:36 2023 -0600 Refactor react services commit f479142 Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 17:36:40 2023 -0600 Fix reblog reactions commit 7ec5eeb Author: Essem <smswessem@gmail.com> Date: Fri Nov 10 15:16:29 2023 -0600 Add notification emails for reactions commit b8ef51d Author: Essem <smswessem@gmail.com> Date: Tue Nov 7 18:43:47 2023 -0600 Add support for emoji reactions Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Squashed, modified, and rebased from glitch-soc#2221. Co-authored-by: fef <owo@fef.moe> Co-authored-by: Jeremy Kescher <jeremy@kescher.at> Co-authored-by: neatchee <neatchee@gmail.com> Co-authored-by: Ivan Rodriguez <104603218+IRod22@users.noreply.github.com> Co-authored-by: Plastikmensch <plastikmensch@users.noreply.github.com>
Yet another attempt.
I've gone ahead and rewrote the history a little bit to remove some of the erroneous contents some commits had when they were cherry-picked from Catstodon.
Thanks @fef1312 and @neatchee for maintaining the previous iterations of this PR.