eggplant rather than wrench, because of course
Some checks failed
pl-api CI / Test for pl-api formatting (22.x) (push) Has been cancelled
pl-fe CI / Test and upload artifacts (22.x) (push) Has been cancelled
pl-fe CI / deploy (push) Has been cancelled
pl-hooks CI / Test for a successful build (22.x) (push) Has been cancelled

This commit is contained in:
2026-01-24 18:18:10 +00:00
parent de94ab2999
commit 76d6497ef1
7 changed files with 42 additions and 42 deletions

View File

@ -351,8 +351,8 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
{features.wrenchedTimeline && ( {features.wrenchedTimeline && (
<DropdownNavigationLink <DropdownNavigationLink
to='/timeline/wrenched' to='/timeline/wrenched'
icon={require('@phosphor-icons/core/regular/wrench.svg')} icon={require('@phosphor-icons/core/regular/plant.svg')}
text={<FormattedMessage id='tabs_bar.wrenched' defaultMessage='Wrenched' />} text={<FormattedMessage id='tabs_bar.eggplanted' defaultMessage='Eggplanted' />}
onClick={closeSidebar} onClick={closeSidebar}
/> />
)} )}
@ -465,8 +465,8 @@ const DropdownNavigation: React.FC = React.memo((): JSX.Element | null => {
{features.wrenchedTimeline && !restrictUnauth.timelines.wrenched && ( {features.wrenchedTimeline && !restrictUnauth.timelines.wrenched && (
<DropdownNavigationLink <DropdownNavigationLink
to='/timeline/wrenched' to='/timeline/wrenched'
icon={require('@phosphor-icons/core/regular/wrench.svg')} icon={require('@phosphor-icons/core/regular/plant.svg')}
text={<FormattedMessage id='tabs_bar.wrenched' defaultMessage='Wrenched' />} text={<FormattedMessage id='tabs_bar.eggplanted' defaultMessage='Eggplanted' />}
onClick={closeSidebar} onClick={closeSidebar}
/> />
)} )}

View File

@ -340,9 +340,9 @@ const SidebarNavigation: React.FC<ISidebarNavigation> = React.memo(({ shrink })
{(features.wrenchedTimeline && (account || !restrictUnauth.timelines.wrenched)) && ( {(features.wrenchedTimeline && (account || !restrictUnauth.timelines.wrenched)) && (
<SidebarNavigationLink <SidebarNavigationLink
to='/timeline/wrenched' to='/timeline/wrenched'
icon={require('@phosphor-icons/core/regular/wrench.svg')} icon={require('@phosphor-icons/core/regular/plant.svg')}
activeIcon={require('@phosphor-icons/core/fill/wrench-fill.svg')} activeIcon={require('@phosphor-icons/core/fill/plant-fill.svg')}
text={<FormattedMessage id='tabs_bar.wrenched' defaultMessage='Wrenched' />} text={<FormattedMessage id='tabs_bar.eggplanted' defaultMessage='Eggplanted' />}
/> />
)} )}

View File

@ -112,7 +112,7 @@ const messages = defineMessages({
unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' }, unmuteConversation: { id: 'status.unmute_conversation', defaultMessage: 'Unmute conversation' },
unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' }, unpin: { id: 'status.unpin', defaultMessage: 'Unpin from profile' },
viewReactions: { id: 'status.view_reactions', defaultMessage: 'View reactions' }, viewReactions: { id: 'status.view_reactions', defaultMessage: 'View reactions' },
wrench: { id: 'status.wrench', defaultMessage: 'Wrench reaction' }, eggplant: { id: 'status.eggplant', defaultMessage: 'Eggplant reaction' },
addKnownLanguage: { id: 'status.add_known_language', defaultMessage: 'Do not auto-translate posts in {language}.' }, addKnownLanguage: { id: 'status.add_known_language', defaultMessage: 'Do not auto-translate posts in {language}.' },
translate: { id: 'status.translate', defaultMessage: 'Translate' }, translate: { id: 'status.translate', defaultMessage: 'Translate' },
hideTranslation: { id: 'status.hide_translation', defaultMessage: 'Hide translation' }, hideTranslation: { id: 'status.hide_translation', defaultMessage: 'Hide translation' },
@ -479,9 +479,9 @@ const DislikeButton: React.FC<IActionButton> = ({
); );
}; };
const getLongerWrench = (emojis: Array<CustomEmoji>) => emojis.find(({ shortcode }) => shortcode === 'longestest_wrench') || emojis.find(({ shortcode }) => shortcode === 'longest_wrench'); const getLongerEggplant = (emojis: Array<CustomEmoji>) => emojis.find(({ shortcode }) => shortcode === 'longestest_eggplant') || emojis.find(({ shortcode }) => shortcode === 'longest_eggplant');
const WrenchButton: React.FC<IActionButton> = ({ const EggplantButton: React.FC<IActionButton> = ({
status, status,
withLabels, withLabels,
me, me,
@ -491,39 +491,39 @@ const WrenchButton: React.FC<IActionButton> = ({
const features = useFeatures(); const features = useFeatures();
const { openModal } = useModalsActions(); const { openModal } = useModalsActions();
const { showWrenchButton } = useSettings(); const { showEggplantButton } = useSettings();
const { data: hasLongerWrench } = useCustomEmojis(getLongerWrench); const { data: hasLongerEggplant } = useCustomEmojis(getLongerEggplant);
if (!me || withLabels || !features.emojiReacts || !showWrenchButton) return; if (!me || withLabels || !features.emojiReacts || !showEggplantButton) return;
const wrenches = showWrenchButton && status.emoji_reactions.find(emoji => emoji.name === '🔧') || undefined; const eggplants = showEggplantButton && status.emoji_reactions.find(emoji => emoji.name === '🍆') || undefined;
const handleWrenchClick: React.EventHandler<React.MouseEvent> = (e) => { const handleEggplantClick: React.EventHandler<React.MouseEvent> = (e) => {
if (wrenches?.me) { if (eggplants?.me) {
dispatch(unEmojiReact(status.id, '🔧')); dispatch(unEmojiReact(status.id, '🍆'));
} else { } else {
dispatch(emojiReact(status.id, '🔧', undefined, intl)); dispatch(emojiReact(status.id, '🍆', undefined, intl));
} }
}; };
const handleWrenchLongPress = () => { const handleEggplantLongPress = () => {
if (features.customEmojiReacts && hasLongerWrench) { if (features.customEmojiReacts && hasLongerEggplant) {
dispatch(emojiReact(status.id, hasLongerWrench.shortcode, hasLongerWrench.url, intl)); dispatch(emojiReact(status.id, hasLongerEggplant.shortcode, hasLongerEggplant.url, intl));
} else if (wrenches?.count) { } else if (eggplants?.count) {
openModal('REACTIONS', { statusId: status.id, reaction: wrenches.name }); openModal('REACTIONS', { statusId: status.id, reaction: eggplants.name });
} }
}; };
return ( return (
<StatusActionButton <StatusActionButton
title={intl.formatMessage(messages.wrench)} title={intl.formatMessage(messages.eggplant)}
icon={require('@phosphor-icons/core/regular/wrench.svg')} icon={require('@phosphor-icons/core/regular/plant.svg')}
filledIcon={require('@phosphor-icons/core/fill/wrench-fill.svg')} filledIcon={require('@phosphor-icons/core/fill/plant-fill.svg')}
onClick={handleWrenchClick} onClick={handleEggplantClick}
onLongPress={handleWrenchLongPress} onLongPress={handleEggplantLongPress}
active={wrenches?.me} active={eggplants?.me}
count={wrenches?.count || undefined} count={eggplants?.count || undefined}
/> />
); );
}; };
@ -1171,7 +1171,7 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
onOpenUnauthorizedModal={onOpenUnauthorizedModal} onOpenUnauthorizedModal={onOpenUnauthorizedModal}
/> />
<WrenchButton <EggplantButton
status={status} status={status}
withLabels={withLabels} withLabels={withLabels}
me={me} me={me}

View File

@ -326,8 +326,8 @@ const Preferences = () => {
</ListItem> </ListItem>
{features.emojiReacts && ( {features.emojiReacts && (
<ListItem label={<FormattedMessage id='preferences.fields.wrench_label' defaultMessage='Display wrench reaction button' />} > <ListItem label={<FormattedMessage id='preferences.fields.eggplant_label' defaultMessage='Display eggplant reaction button' />} >
<SettingToggle settings={settings} settingPath={['showWrenchButton']} onChange={onToggleChange} /> <SettingToggle settings={settings} settingPath={['showEggplantButton']} onChange={onToggleChange} />
</ListItem> </ListItem>
)} )}

View File

@ -504,7 +504,7 @@
"column.settings_store": "Settings store", "column.settings_store": "Settings store",
"column.test": "Test timeline", "column.test": "Test timeline",
"column.tokens": "Active sessions", "column.tokens": "Active sessions",
"column.wrenched": "Recent wrenches timeline", "column.eggplanted": "Recent eggplants timeline",
"column_forbidden.body": "You do not have permission to access this page.", "column_forbidden.body": "You do not have permission to access this page.",
"column_forbidden.title": "Forbidden", "column_forbidden.title": "Forbidden",
"common.cancel": "Cancel", "common.cancel": "Cancel",
@ -923,7 +923,7 @@
"empty_column.search.accounts": "There are no people results for \"{term}\"", "empty_column.search.accounts": "There are no people results for \"{term}\"",
"empty_column.search.statuses": "There are no posts results for \"{term}\"", "empty_column.search.statuses": "There are no posts results for \"{term}\"",
"empty_column.test": "The test timeline is empty.", "empty_column.test": "The test timeline is empty.",
"empty_column.wrenched": "There is nothing here! 🔧 a public post to fill it up", "empty_column.eggplanted": "There is nothing here! 🍆 a public post to fill it up",
"event.banner": "Event banner", "event.banner": "Event banner",
"event.copy": "Copy link to event", "event.copy": "Copy link to event",
"event.date": "Date", "event.date": "Date",
@ -1479,7 +1479,7 @@
"preferences.fields.unfollow_modal_label": "Show confirmation dialog before unfollowing someone", "preferences.fields.unfollow_modal_label": "Show confirmation dialog before unfollowing someone",
"preferences.fields.web_layout_label": "Layout of the web view of your profile", "preferences.fields.web_layout_label": "Layout of the web view of your profile",
"preferences.fields.web_visibility_label": "Visibility level of posts displayed on your profile", "preferences.fields.web_visibility_label": "Visibility level of posts displayed on your profile",
"preferences.fields.wrench_label": "Display wrench reaction button", "preferences.fields.eggplant_label": "Display eggplant reaction button",
"preferences.hints.demetricator": "Decrease social media anxiety by hiding all numbers from the site.", "preferences.hints.demetricator": "Decrease social media anxiety by hiding all numbers from the site.",
"preferences.hints.mention_policy": "Applies to direct messages and public posts", "preferences.hints.mention_policy": "Applies to direct messages and public posts",
"preferences.notifications.advanced": "Show all notification categories", "preferences.notifications.advanced": "Show all notification categories",
@ -1789,7 +1789,7 @@
"status.visibility.mutuals_only": "The post is only visible to people who mutually follow the author", "status.visibility.mutuals_only": "The post is only visible to people who mutually follow the author",
"status.visibility.private": "The post is only visible to followers of the author", "status.visibility.private": "The post is only visible to followers of the author",
"status.visibility.subscribers": "The post is only visible to users subscribing the author", "status.visibility.subscribers": "The post is only visible to users subscribing the author",
"status.wrench": "Wrench reaction", "status.eggplant": "Eggplant reaction",
"status_list.queue_label": "Click to see {count} new {count, plural, one {post} other {posts}}", "status_list.queue_label": "Click to see {count} new {count, plural, one {post} other {posts}}",
"statuses.quote_tombstone": "Post is unavailable.", "statuses.quote_tombstone": "Post is unavailable.",
"statuses.tombstone": "One or more posts are unavailable.", "statuses.tombstone": "One or more posts are unavailable.",
@ -1818,7 +1818,7 @@
"tabs_bar.profile": "Profile", "tabs_bar.profile": "Profile",
"tabs_bar.search": "Search", "tabs_bar.search": "Search",
"tabs_bar.settings": "Settings", "tabs_bar.settings": "Settings",
"tabs_bar.wrenched": "Wrenched", "tabs_bar.eggplanted": "Eggplanted",
"textarea.counter.label": "{count} characters remaining", "textarea.counter.label": "{count} characters remaining",
"theme_editor.colors.accent": "Accent", "theme_editor.colors.accent": "Accent",
"theme_editor.colors.accent_blue": "Accent Blue", "theme_editor.colors.accent_blue": "Accent Blue",

View File

@ -10,7 +10,7 @@ import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
import { useSettings } from 'pl-fe/stores/settings'; import { useSettings } from 'pl-fe/stores/settings';
const messages = defineMessages({ const messages = defineMessages({
title: { id: 'column.wrenched', defaultMessage: 'Recent wrenches timeline' }, title: { id: 'column.eggplanted', defaultMessage: 'Recent eggplants timeline' },
}); });
const WrenchedTimelinePage = () => { const WrenchedTimelinePage = () => {
@ -41,8 +41,8 @@ const WrenchedTimelinePage = () => {
timelineId={`${timelineId}${onlyMedia ? ':media' : ''}`} timelineId={`${timelineId}${onlyMedia ? ':media' : ''}`}
prefix='home' prefix='home'
onLoadMore={handleLoadMore} onLoadMore={handleLoadMore}
emptyMessageText={<FormattedMessage id='empty_column.wrenched' defaultMessage='There is nothing here! 🔧 a public post to fill it up' />} emptyMessageText={<FormattedMessage id='empty_column.eggplanted' defaultMessage='There is nothing here! 🍆 a public post to fill it up' />}
emptyMessageIcon={require('@phosphor-icons/core/regular/wrench.svg')} emptyMessageIcon={require('@phosphor-icons/core/regular/plant.svg')}
/> />
</PullToRefresh> </PullToRefresh>
</Column> </Column>

View File

@ -40,7 +40,7 @@ const settingsSchema = v.object({
forceImplicitAddressing: v.fallback(v.boolean(), false), forceImplicitAddressing: v.fallback(v.boolean(), false),
autoTranslate: v.fallback(v.boolean(), false), autoTranslate: v.fallback(v.boolean(), false),
knownLanguages: v.fallback(v.array(v.string()), []), knownLanguages: v.fallback(v.array(v.string()), []),
showWrenchButton: v.fallback(v.boolean(), false), showEggplantButton: v.fallback(v.boolean(), false),
urlPrivacy: coerceObject({ urlPrivacy: coerceObject({
clearLinksInCompose: v.optional(v.boolean(), true), clearLinksInCompose: v.optional(v.boolean(), true),
clearLinksInContent: v.optional(v.boolean(), false), clearLinksInContent: v.optional(v.boolean(), false),