Compare commits

...

16 commits

Author SHA1 Message Date
ulith
e4c4f186a0 customised defaults 2025-01-18 19:32:53 +13:00
floatingghost
2086522d64 Merge pull request '(arguably) improved layouting of user profile page' (#403) from Riedler/akkoma-fe:user-profile-changes into develop
Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma-fe/pulls/403
2025-01-15 21:47:55 +00:00
RiedleroD
94ed0991bc reverted 2e83ccefdc and clarified that compact user info is only used with enough room 2024-07-06 14:54:24 +02:00
RiedleroD
e955eb4503 oops, unfucked username placement 2024-07-03 18:58:50 +02:00
RiedleroD
c39d9fa64b fixed stuff overflowing in user popup e.g. in notifs 2024-07-03 18:30:51 +02:00
RiedleroD
a74a631793 stopped user handle from overflowing from its boundaries in user card 2024-07-03 17:45:40 +02:00
RiedleroD
2e83ccefdc disabled "compact user info" setting in mobile layout 2024-07-03 17:35:13 +02:00
RiedleroD
cf11b2523e disabled compact user card in mobile layout 2024-07-03 17:26:09 +02:00
RiedleroD
85001814a2 added setting for user info compactness 2024-06-26 18:09:13 +02:00
RiedleroD
c902219997 added setting to switch between center and left-aligned user bio 2024-06-26 17:20:50 +02:00
RiedleroD
754cd2fa57 slightly adjusted edit button spacing 2024-06-16 17:15:04 +02:00
RiedleroD
31055fb4f2 removed min-width statements that were messing up my layouts 2024-06-16 17:14:59 +02:00
RiedleroD
918b0e3770 stopped username from wrapping… 2024-06-16 17:14:14 +02:00
RiedleroD
88aae1706a oops, removed unneeded spacing 2024-06-16 17:14:08 +02:00
RiedleroD
3d2a8a3ca2 left-aligned bio text
why the fuck was it centered in the first place?!?
2024-06-16 17:14:03 +02:00
RiedleroD
a24fff5d5b moved user stats to between user info and user actions 2024-06-16 17:14:00 +02:00
17 changed files with 965 additions and 283 deletions

View file

@ -1,26 +1,24 @@
# Akkoma-FE
# Amputoma-FE
![English OK](https://img.shields.io/badge/English-OK-blueviolet) ![日本語OK](https://img.shields.io/badge/%E6%97%A5%E6%9C%AC%E8%AA%9E-OK-blueviolet)
This is a fork of Akkoma-FE from the Pleroma project, with support for new Akkoma features such as:
- MFM support via [marked-mfm](https://akkoma.dev/sfr/marked-mfm)
- Custom emoji reactions
This is a fork of akkoma-FE, with support for new amputoma features such as:
- ulith support
- something else
# For Translators
The [Weblate UI](https://translate.akkoma.dev/projects/akkoma/pleroma-fe/) is recommended for adding or modifying translations for Akkoma-FE.
The [Weblate UI](https://translate.amputoma.dev/projects/amputoma/pleroma-fe/) is recommended for adding or modifying translations for amputoma-FE.
Alternatively, edit/create `src/i18n/$LANGUAGE_CODE.json` (where `$LANGUAGE_CODE` is the [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language), then add your language to [src/i18n/messages.js](https://akkoma.dev/AkkomaGang/pleroma-fe/src/branch/develop/src/i18n/messages.js) if it doesn't already exist there.
Alternatively, edit/create `src/i18n/$LANGUAGE_CODE.json` (where `$LANGUAGE_CODE` is the [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language), then add your language to src/i18n/messages.js if it doesn't already exist there.
Akkoma-FE will set your language by your browser locale, but you can temporarily force it in the code by changing the locale in main.js.
Amputoma-FE will set your language by your browser locale, but you can temporarily force it in the code by changing the locale in main.js.
# FOR ADMINS
To use Akkoma-FE in Akkoma, use the [frontend](https://docs.akkoma.dev/stable/administration/CLI_tasks/frontend/) CLI task to install Akkoma-FE, then modify your configuration as described in the [Frontend Management](https://docs.akkoma.dev/stable/configuration/frontend_management/) doc.
To use Amputoma-FE in a pleroma thing, build from source >:3 and then copy the build files from /dist to /static/frontends/pleroma-fe/stable on your server
## Build Setup
Make sure you have [Node.js](https://nodejs.org/) installed. You can check `/.woodpecker.yml` for which node version the Akkoma CI currently uses.
Make sure you have [Node.js](https://nodejs.org/) installed. You can check `/.woodpecker.yml` for which node version the amputoma CI currently uses.
``` bash
# install dependencies
@ -37,15 +35,6 @@ npm run build
npm run unit
```
# For Contributors:
You can create file `/config/local.json` (see [example](https://akkoma.dev/AkkomaGang/akkoma-fe/src/branch/develop/config/local.example.json)) to enable some convenience dev options:
* `target`: makes local dev server redirect to some existing instance's BE instead of local BE, useful for testing things in near-production environment and searching for real-life use-cases.
* `staticConfigPreference`: makes FE's `/static/config.json` take preference of BE-served `/api/statusnet/config.json`. Only works in dev mode.
FE Build process also leaves current commit hash in global variable `___pleromafe_commit_hash` so that you can easily see which pleroma-fe commit instance is running, also helps pinpointing which commit was used when FE was bundled into BE.
# Configuration
Edit config.json for configuration.

View file

@ -7,11 +7,16 @@
<link rel="stylesheet" href="/static/font/tiresias.css">
<link rel="stylesheet" href="/static/font/css/lato.css">
<link rel="stylesheet" href="/static/mfm.css">
<link rel="stylesheet" href="/static/custom.css">
<link rel="stylesheet" href="/static/theme-holder.css" id="theme-holder">
<!--server-generated-meta-->
<link rel="icon" type="image/png" href="/favicon.png">
<link rel="manifest" href="/manifest.json">
<!--custom-meta :p-->
<link rel=icon type=image/png href=/favicon.png>
<link rel="shortcut icon" type=image/png href=/favicon.png>
<link rel="apple-touch-icon" type=image/png href=/favicon.png>
<link rel=stylesheet href=/static/custom.css>
<script src="/static/rot.js"></script>
</head>
<body class="hidden">
<noscript>To use Akkoma, please enable JavaScript.</noscript>

View file

@ -15,12 +15,8 @@ const About = {
LocalBubblePanel
},
computed: {
currentUser () { return this.$store.state.users.currentUser },
showFeaturesPanel () { return this.$store.state.instance.showFeaturesPanel },
showInstanceSpecificPanel () {
return this.$store.state.instance.showInstanceSpecificPanel &&
!this.$store.getters.mergedConfig.hideISP &&
this.$store.state.instance.instanceSpecificPanelContent
},
showLocalBubblePanel () {
return this.$store.state.instance.localBubbleInstances.length > 0
}

View file

@ -1,11 +1,10 @@
<template>
<div class="column-inner">
<instance-specific-panel v-if="showInstanceSpecificPanel" />
<staff-panel />
<terms-of-service-panel />
<LocalBubblePanel v-if="showLocalBubblePanel" />
<MRFTransparencyPanel />
<features-panel v-if="showFeaturesPanel" />
<features-panel v-if="currentUser && showFeaturesPanel" />
</div>
</template>

View file

@ -159,6 +159,16 @@
{{ $t('settings.show_page_backgrounds') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="centerAlignBio">
{{ $t('settings.center_align_bio') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="compactUserInfo">
{{ $t('settings.compact_user_info') }}
</BooleanSetting>
</li>
<li>
<BooleanSetting path="stopGifs">
{{ $t('settings.stop_gifs') }}

View file

@ -117,6 +117,11 @@ export default {
shouldConfirmMute () {
return this.mergedConfig.modalOnMute
},
compactUserInfo () {
return this.$store.getters.mergedConfig.compactUserInfo
&& (this.$store.state.interface.layoutType !== 'mobile')
&& this.switcher
},
...mapGetters(['mergedConfig'])
},
components: {

View file

@ -21,6 +21,13 @@
position: relative;
}
.user-buttons {
grid-area: edit;
display: flex;
padding: .5em 0 .5em 0;
justify-self: end;
}
.panel-body {
word-wrap: break-word;
border-bottom-right-radius: inherit;
@ -53,7 +60,6 @@
}
&-bio {
text-align: center;
display: block;
line-height: 1.3;
padding: 1em;
@ -100,15 +106,14 @@
padding: 0 26px;
.container {
min-width: 0;
padding: 16px 0 6px;
display: flex;
align-items: flex-start;
max-height: 56px;
> * {
min-width: 0;
}
display: grid;
grid-template-areas:
"pfp name edit"
"pfp summary summary"
"stats stats stats";
grid-template-columns: auto 1fr auto;
align-items: start;
.Avatar {
--_avatarShadowBox: var(--avatarShadow);
@ -123,6 +128,7 @@
}
&-avatar-link {
grid-area: pfp;
position: relative;
cursor: pointer;
@ -153,8 +159,8 @@
.external-link-button, .edit-profile-button {
cursor: pointer;
width: 2.5em;
text-align: center;
width: 2.3em;
text-align: right;
margin: -0.5em 0;
padding: 0.5em 0;
@ -165,12 +171,16 @@
}
.user-summary {
display: block;
grid-area: summary;
display: grid;
grid-template-areas:
"name name name name name"
"hand role lock avg _";
grid-template-columns:
auto auto auto auto 1fr;
justify-items: start;
margin-left: 0.6em;
text-align: left;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1 1 0;
// This is so that text doesn't get overlapped by avatar's shadow if it has
// big one
z-index: 1;
@ -178,56 +188,82 @@
--emoji-size: 1.7em;
.top-line,
.bottom-line {
display: flex;
}
}
.user-name {
text-overflow: ellipsis;
overflow: hidden;
flex: 1 1 auto;
margin-right: 1em;
font-size: 1.1em;
}
.bottom-line {
font-weight: light;
font-size: 1.1em;
align-items: baseline;
.lock-icon {
.user-locked {
margin-left: 0.5em;
grid-area: lock;
}
.user-screen-name {
min-width: 1px;
flex: 0 1 auto;
max-width: 100%;
text-overflow: ellipsis;
overflow: hidden;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
grid-area: hand;
}
.dailyAvg {
min-width: 1px;
flex: 0 0 auto;
margin-left: 1em;
font-size: 0.7em;
color: $fallback--text;
color: var(--text, $fallback--text);
grid-area: avg;
}
.user-role {
flex: none;
color: $fallback--text;
color: var(--alertNeutralText, $fallback--text);
background-color: $fallback--fg;
background-color: var(--alertNeutral, $fallback--fg);
.user-roles {
display: flex;
grid-area: role;
.user-role {
color: $fallback--text;
color: var(--alertNeutralText, $fallback--text);
background-color: $fallback--fg;
background-color: var(--alertNeutral, $fallback--fg);
}
}
}
.user-counts {
grid-area: stats;
display: flex;
line-height:16px;
padding-top: 0.5em;
text-align: center;
justify-content: space-around;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
align-self: center;
.user-count {
padding: .5em 0 .5em 0;
margin: 0 .5em;
h5 {
font-size:1em;
font-weight: bolder;
margin: 0 0 0.25em;
}
a {
text-decoration: none;
}
}
}
.user-name {
text-align: start;
text-overflow: ellipsis;
overflow: hidden;
margin-left: 0.6em;
font-size: 1.1em;
grid-area: name;
align-self: center;
white-space: nowrap;
max-width: 100%;
z-index: 1; // so shadow from user avatar doesn't overlap it
}
.user-meta {
margin-bottom: .15em;
display: flex;
@ -290,34 +326,21 @@
margin: 0;
}
}
&.-compact {
.container {
grid-template-areas:
"pfp name stats edit"
"pfp summary stats edit";
grid-template-columns: auto auto 1fr auto;
}
.user-counts {
padding-top: 0;
justify-content: space-evenly;
}
}
}
.sidebar .edit-profile-button {
display: none;
}
.user-counts {
display: flex;
line-height:16px;
padding: .5em 1.5em 0em 1.5em;
text-align: center;
justify-content: space-between;
color: $fallback--lightText;
color: var(--lightText, $fallback--lightText);
flex-wrap: wrap;
}
.user-count {
flex: 1 0 auto;
padding: .5em 0 .5em 0;
margin: 0 .5em;
h5 {
font-size:1em;
font-weight: bolder;
margin: 0 0 0.25em;
}
a {
text-decoration: none;
}
}

View file

@ -9,7 +9,10 @@
class="background-image"
/>
<div class="panel-heading -flexible-height">
<div class="user-info">
<div
class="user-info"
:class="{ '-compact': this.compactUserInfo }"
>
<div class="container">
<a
v-if="allowZoomingAvatar"
@ -29,6 +32,7 @@
</a>
<router-link
v-else
class="user-info-avatar-link"
:to="userProfileLink(user)"
>
<UserAvatar
@ -36,15 +40,80 @@
:user="user"
/>
</router-link>
<RichContent
:title="user.name"
class="user-name"
:html="user.name"
:emoji="user.emoji"
/>
<div class="user-summary">
<div class="top-line">
<RichContent
:title="user.name"
class="user-name"
:html="user.name"
:emoji="user.emoji"
<router-link
class="user-screen-name"
:title="user.screen_name_ui"
:to="userProfileLink(user)"
>
@{{ user.screen_name_ui }}
</router-link>
<span class="user-roles" v-if="!hideBio && (user.deactivated || !!visibleRole || user.bot)">
<span
v-if="user.deactivated"
class="alert user-role"
>
{{ $t('user_card.deactivated') }}
</span>
<span
v-if="!!visibleRole"
class="alert user-role"
>
{{ $t(`general.role.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
class="alert user-role"
>
{{ $t('user_card.bot') }}
</span>
</span>
<span class="user-locked" v-if="user.locked">
<FAIcon
class="lock-icon"
icon="lock"
size="sm"
/>
<button
</span>
<span
v-if="!mergedConfig.hideUserStats && !hideBio"
class="dailyAvg"
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
</div>
<div
v-if="!mergedConfig.hideUserStats && switcher"
class="user-counts"
>
<div
class="user-count"
@click.prevent="setProfileView('statuses')"
>
<h5>{{ $t('user_card.statuses') }}</h5>
<span>{{ user.statuses_count }} <br></span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('friends')"
>
<h5>{{ $t('user_card.followees') }}</h5>
<span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('followers')"
>
<h5>{{ $t('user_card.followers') }}</h5>
<span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>
</div>
</div>
<div class="user-buttons">
<button
v-if="!isOtherUser && user.is_local"
class="button-unstyled edit-profile-button"
@click.stop="openProfileTab"
@ -83,47 +152,6 @@
:user="user"
:relationship="relationship"
/>
</div>
<div class="bottom-line">
<router-link
class="user-screen-name"
:title="user.screen_name_ui"
:to="userProfileLink(user)"
>
@{{ user.screen_name_ui }}
</router-link>
<template v-if="!hideBio">
<span
v-if="user.deactivated"
class="alert user-role"
>
{{ $t('user_card.deactivated') }}
</span>
<span
v-if="!!visibleRole"
class="alert user-role"
>
{{ $t(`general.role.${visibleRole}`) }}
</span>
<span
v-if="user.bot"
class="alert user-role"
>
{{ $t('user_card.bot') }}
</span>
</template>
<span v-if="user.locked">
<FAIcon
class="lock-icon"
icon="lock"
size="sm"
/>
</span>
<span
v-if="!mergedConfig.hideUserStats && !hideBio"
class="dailyAvg"
>{{ dailyAvg }} {{ $t('user_card.per_day') }}</span>
</div>
</div>
</div>
<div class="user-meta">
@ -269,38 +297,13 @@
v-if="!hideBio"
class="panel-body"
>
<div
v-if="!mergedConfig.hideUserStats && switcher"
class="user-counts"
>
<div
class="user-count"
@click.prevent="setProfileView('statuses')"
>
<h5>{{ $t('user_card.statuses') }}</h5>
<span>{{ user.statuses_count }} <br></span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('friends')"
>
<h5>{{ $t('user_card.followees') }}</h5>
<span>{{ hideFollowsCount ? $t('user_card.hidden') : user.friends_count }}</span>
</div>
<div
class="user-count"
@click.prevent="setProfileView('followers')"
>
<h5>{{ $t('user_card.followers') }}</h5>
<span>{{ hideFollowersCount ? $t('user_card.hidden') : user.followers_count }}</span>
</div>
</div>
<RichContent
v-if="!hideBio"
class="user-card-bio"
:html="user.description_html"
:emoji="user.emoji"
:handle-links="true"
:style='{"text-align": this.$store.getters.mergedConfig.centerAlignBio ? "center" : "start"}'
/>
</div>
<teleport to="#modal">

View file

@ -482,6 +482,7 @@
"blocks_tab": "Blocks",
"bot": "Dies ist ein Bot Account",
"btnRadius": "Knöpfe",
"center_align_bio": "Zentrale Textausrichtung in der Bio",
"cBlue": "Blau (Antworten, folgt dir)",
"cGreen": "Grün (Retweet)",
"cOrange": "Orange (Favorisieren)",
@ -496,6 +497,7 @@
"checkboxRadius": "Auswahlfelder",
"collapse_subject": "Beiträge mit Inhaltswarnungen einklappen",
"columns": "Spalten",
"compact_user_info": "Kompakte Benutzerinfos wenn genug Platz",
"composing": "Verfassen",
"confirm_dialogs": "Bestätigung erforderlich für:",
"confirm_dialogs_approve_follow": "Annehmen einer Followanfrage",

View file

@ -1,34 +1,34 @@
{
"about": {
"bubble_instances": "Local Bubble Instances",
"bubble_instances_description": "Instances chosen by the admins to represent the local area of this instance",
"bubble_instances_description": "A list chosen by the admins to represent friendly instances",
"mrf": {
"federation": "Federation",
"keyword": {
"ftl_removal": "Removal from \"The Whole Known Network\" Timeline",
"ftl_removal": "Removal from the \"Known Network\" Timeline",
"is_replaced_by": "→",
"keyword_policies": "Keyword policies",
"reject": "Reject",
"replace": "Replace"
},
"mrf_policies": "Enabled MRF policies",
"mrf_policies_desc": "MRF policies manipulate the federation behaviour of the instance. The following policies are enabled:",
"mrf_policies_desc": "MRF policies manipulate federation behaviour. The following policies are enabled:",
"simple": {
"accept": "Accept",
"accept_desc": "This instance only accepts messages from the following instances:",
"ftl_removal": "Removal from \"Known Network\" Timeline",
"ftl_removal_desc": "This instance removes these instances from \"Known Network\" timeline:",
"accept_desc": "We only accept messages from the following instances:",
"ftl_removal": "Removal from the \"Known Network\" Timeline",
"ftl_removal_desc": "We remove these instances from \"Known Network\" timeline:",
"instance": "Instance",
"media_nsfw": "Media force-set as sensitive",
"media_nsfw_desc": "This instance forces media to be set sensitive in posts on the following instances:",
"media_nsfw": "force-set media as sensitive",
"media_nsfw_desc": "We force media from the following instances to be set as sensitive:",
"media_removal": "Media Removal",
"media_removal_desc": "This instance removes media from posts on the following instances:",
"media_removal_desc": "We remove posted media from the following instances:",
"not_applicable": "N/A",
"quarantine": "Quarantine",
"quarantine_desc": "This instance will not send posts to the following instances:",
"quarantine_desc": "We do not send posts to the following instances:",
"reason": "Reason",
"reject": "Reject",
"reject_desc": "This instance will not accept messages from the following instances:",
"reject_desc": "We do not accept messages from the following instances:",
"simple_policies": "Instance-specific policies"
}
},
@ -125,7 +125,7 @@
"error_retry": "Please try again",
"flash_content": "Click to show Flash content using Ruffle (Experimental, may not work).",
"flash_fail": "Failed to load flash content, see console for details.",
"flash_security": "Note that this can be potentially dangerous since Flash content is still arbitrary code.",
"flash_security": "Note that this can be potentially dangerous since Flash content is still a security risk.",
"generic_error": "An error occured",
"loading": "Loading…",
"more": "More",
@ -138,7 +138,7 @@
},
"scope_in_timeline": {
"direct": "Direct",
"local": "Local - only your instance can see this post",
"local": "Local - only local users can see this",
"private": "Followers-only",
"public": "Public",
"unlisted": "Unlisted"
@ -160,7 +160,7 @@
"success": "Imported successfully."
},
"interactions": {
"favs_repeats": "Repeats and favorites",
"favs_repeats": "Reposts and likes",
"follows": "New follows",
"load_older": "Load older interactions",
"moves": "User migrates"
@ -252,15 +252,15 @@
"recovery": "Two-factor recovery",
"totp": "Two-factor authentication"
},
"hint": "Log in to join the discussion",
"hint": "Log in to join us",
"login": "Log in",
"logout": "Log out",
"logout_confirm": "Are you sure you want to log out?",
"logout_confirm": "Are you sure you want to leave me?",
"logout_confirm_accept_button": "Log out",
"logout_confirm_cancel_button": "Cancel",
"logout_confirm_title": "Log out",
"password": "Password",
"placeholder": "myusername",
"placeholder": "username",
"recovery_code": "Recovery code",
"register": "Register",
"username": "Username"
@ -304,7 +304,7 @@
"back": "Back",
"bookmarks": "Bookmarks",
"bubble_timeline": "Bubble timeline",
"bubble_timeline_description": "Posts from instances close to yours, as recommended by the admins",
"bubble_timeline_description": "Posts from instances recommended by the admins",
"chats": "Chats",
"dms": "Direct messages",
"friend_requests": "Follow requests",
@ -315,8 +315,8 @@
"mentions": "Mentions",
"moderation": "Moderation",
"preferences": "Preferences",
"public_timeline_description": "Public posts from this instance",
"public_tl": "Public timeline",
"public_timeline_description": "Posts from local users",
"public_tl": "Local timeline",
"search": "Search",
"timeline": "Timeline",
"timelines": "Timelines",
@ -328,8 +328,8 @@
"notifications": {
"broken_favorite": "Unknown post, searching for it…",
"error": "Error fetching notifications: {0}",
"favorited_you": "favorited your post",
"follow_request": "wants to follow you",
"favorited_you": "liked your post",
"follow_request": "requested a follow",
"followed_you": "followed you",
"load_older": "Load older notifications",
"migrated_to": "migrated to",
@ -338,16 +338,16 @@
"poll_ended": "poll has ended",
"reacted_with": "reacted with {0}",
"read": "Read!",
"repeated_you": "repeated your post"
"repeated_you": "reposted your post"
},
"password_reset": {
"check_email": "Check your email for a link to reset your password.",
"forgot_password": "Forgot password?",
"instruction": "Enter your email address or username. We will send you a link to reset your password.",
"password_reset": "Password reset",
"password_reset_disabled": "Password reset is disabled. Please contact your instance administrator.",
"password_reset_disabled": "Password reset is disabled. Please contact your admin.",
"password_reset_required": "You must reset your password to log in.",
"password_reset_required_but_mailer_is_disabled": "You must reset your password, but password reset is disabled. Please contact your instance administrator.",
"password_reset_required_but_mailer_is_disabled": "You must reset your password, but password reset is disabled. Please contact your admin.",
"placeholder": "Your email or username",
"return_home": "Return to the home page",
"too_many_requests": "You have reached the limit of attempts, try again later."
@ -371,7 +371,7 @@
"post_status": {
"account_not_locked_warning": "Your account is not {0}. Anyone can follow you to view your follower-only posts.",
"account_not_locked_warning_link": "locked",
"attachments_sensitive": "Mark attachments as sensitive",
"attachments_sensitive": "Flag attachments as sensitive",
"content_type": {
"text/bbcode": "BBCode",
"text/html": "HTML",
@ -381,13 +381,13 @@
},
"content_warning": "Content Warning (optional)",
"toggle_content_warning": "Toggle content warning",
"default": "Just arrived at Luna Nova Academy",
"default": "Just jorked like crazy AMA",
"direct_warning_to_all": "This post will be visible to all the mentioned users.",
"direct_warning_to_first_only": "This post will only be visible to the mentioned users at the beginning of the message.",
"edit_remote_warning": "Changes made to the post may not be visible on some instances!",
"edit_status": "Edit Status",
"edit_status": "Edit Post",
"edit_unsupported_warning": "Polls and mentions will not be changed by editing.",
"empty_status_error": "Can't send a post with no content and no files",
"empty_status_error": "Can't create an empty post",
"media_description": "Media description",
"media_description_error": "Failed to update media, try again",
"media_not_sensitive_warning": "You have a Content Warning, but the attachments are not marked as sensitive!",
@ -397,7 +397,7 @@
"preview": "Preview",
"preview_empty": "Empty",
"scope": {
"direct": "Direct - post to mentioned users only",
"direct": "Direct - send to mentioned users only",
"local": "Local - do not federate this post",
"private": "Followers-only - post to followers only",
"public": "Public - post to public timelines",
@ -407,29 +407,29 @@
"local": "This post will not be visible on other instances",
"private": "This post will be visible to your followers only",
"public": "This post will be visible to everyone",
"unlisted": "This post will not be visible in Public Timeline and The Whole Known Network"
"unlisted": "This post will not be visible in the Local or Known Network Timelines"
}
},
"registration": {
"awaiting_email_confirmation": "Your account has been registered and an email has been sent to your address. Please check the email to complete registration.",
"awaiting_email_confirmation_title": "Awaiting email confirmation",
"bio": "Bio",
"bio_placeholder": "e.g.\nHi! Welcome to my bio.\nI love watching anime and playing games. I hope we can be friends!",
"bio_placeholder": "e.g.\nHi! Welcome to my bio.\nI love skinwalkers and crochet",
"captcha": "CAPTCHA",
"email": "Email",
"email_language": "In which language do you want to receive emails from the server?",
"fullname": "Display name",
"fullname_placeholder": "e.g. Atsuko Kagari",
"fullname_placeholder": "e.g. sadisticsociopath911",
"new_captcha": "Click the image to get a new captcha",
"password_confirm": "Password confirmation",
"reason": "Reason to register",
"reason_placeholder": "This instance approves registrations manually.\nLet the administration know why you want to register.",
"reason_placeholder": "This instance approves registrations manually.\nConvince the admins to let you in",
"register": "Register",
"registration": "Registration",
"request_sent": "Your registration request has been sent for approval. You will receive an email when your account is approved.",
"request_sent": "Your registration request has been sent for approval.",
"request_sent_title": "Registration request sent",
"token": "Invite token",
"username_placeholder": "e.g. akko",
"username_placeholder": "e.g. bbgooner",
"validations": {
"email_required": "cannot be left blank",
"fullname_required": "cannot be left blank",
@ -488,9 +488,10 @@
"blocks_tab": "Blocks",
"bot": "This is a bot account",
"btnRadius": "Buttons",
"center_align_bio": "Center text in user bio",
"cBlue": "Blue (Reply, follow)",
"cGreen": "Green (Retweet)",
"cOrange": "Orange (Favorite)",
"cOrange": "Orange (Like)",
"cRed": "Red (Cancel)",
"change_email": "Change email",
"change_email_error": "There was an issue changing your email.",
@ -502,6 +503,7 @@
"checkboxRadius": "Checkboxes",
"collapse_subject": "Collapse posts with content warnings",
"columns": "Columns",
"compact_user_info": "Compact user info when enough space",
"composing": "Composing",
"confirm_dialogs": "Require confirmation for:",
"confirm_dialogs_approve_follow": "Accepting a follow request",
@ -509,7 +511,7 @@
"confirm_dialogs_delete": "Deleting a post",
"confirm_dialogs_deny_follow": "Rejecting a follow request",
"confirm_dialogs_mute": "Muting someone",
"confirm_dialogs_repeat": "Repeating a post",
"confirm_dialogs_repeat": "Reposting a post",
"confirm_dialogs_unfollow": "Unfollowing someone",
"confirm_new_password": "Confirm new password",
"confirmation_dialogs": "Confirmation options",
@ -567,7 +569,7 @@
"hide_attachments_in_convo": "Hide attachments in conversations",
"hide_attachments_in_tl": "Hide attachments in timeline",
"hide_bot_indication": "Hide bot indication in posts",
"hide_favorites_description": "Don't show list of my favorites (people still get notified)",
"hide_favorites_description": "Don't show list of my likes (people still get notified)",
"hide_filtered_statuses": "Hide all filtered posts",
"hide_followers_count_description": "Don't show follower count",
"hide_followers_description": "Don't show who's following me",
@ -578,7 +580,7 @@
"hide_media_previews": "Hide media previews",
"hide_muted_posts": "Hide posts of muted users",
"hide_muted_threads": "Hide muted threads",
"hide_post_stats": "Hide post statistics (e.g. the number of favorites)",
"hide_post_stats": "Hide post statistics (e.g. the number of likes)",
"hide_shoutbox": "Hide instance shoutbox",
"hide_site_favicon": "Hide instance favicon in top panel",
"hide_site_name": "Hide instance name in top panel",
@ -670,11 +672,11 @@
"notification_visibility": "Types of notifications to show",
"notification_visibility_emoji_reactions": "Reactions",
"notification_visibility_follows": "Follows",
"notification_visibility_likes": "Favorites",
"notification_visibility_likes": "Likes",
"notification_visibility_mentions": "Mentions",
"notification_visibility_moves": "User Migrates",
"notification_visibility_polls": "Ends of polls you voted in",
"notification_visibility_repeats": "Repeats",
"notification_visibility_repeats": "Reposts",
"notifications": "Notifications",
"nsfw_clickthrough": "Hide sensitive/NSFW media",
"oauth_tokens": "OAuth tokens",
@ -965,9 +967,9 @@
"collapse_attachments": "Collapse attachments",
"copy_link": "Copy link to post",
"delete": "Delete post",
"delete_confirm": "Do you really want to delete this post?",
"delete_confirm_accept_button": "Yes, delete it",
"delete_confirm_cancel_button": "No, keep it",
"delete_confirm": "Do you really want to delete me?",
"delete_confirm_accept_button": "Yes, murder",
"delete_confirm_cancel_button": "No, mercy",
"delete_confirm_title": "Confirm deletion",
"edit": "Edit",
"edit_history": "Edit History",
@ -975,7 +977,7 @@
"edited_at": "Edited {time}",
"expand": "Expand",
"external_source": "External source",
"favorites": "Favorites",
"favorites": "Likes",
"hide_attachment": "Hide attachment",
"hide_content": "Hide content",
"hide_full_subject": "Hide full content warning",
@ -993,14 +995,14 @@
"redraft": "Delete & redraft",
"redraft_confirm": "Do you really want to delete and redraft this post? Interactions to the original post will not be preserved.",
"redraft_confirm_accept_button": "Yes, delete and redraft",
"redraft_confirm_cancel_button": "No, keep the original",
"redraft_confirm_cancel_button": "No, mercy",
"redraft_confirm_title": "Confirm delete & redraft",
"remove_attachment": "Remove attachment",
"repeat_confirm": "Do you really want to repeat this post?",
"repeat_confirm_accept_button": "Yes, repeat it",
"repeat_confirm_cancel_button": "No, don't repeat",
"repeat_confirm_title": "Confirm repeat",
"repeats": "Repeats",
"repeat_confirm": "Do you really want to reppost?",
"repeat_confirm_accept_button": "Yes, repost it",
"repeat_confirm_cancel_button": "No, don't repost",
"repeat_confirm_title": "Confirm repost",
"repeats": "Reposts",
"replies_list": "Replies:",
"replies_list_with_others": "View {numReplies} more reply | View {numReplies} more replies",
"reply_to": "Reply to",
@ -1012,7 +1014,7 @@
"show_content": "Show content",
"show_full_subject": "Show full content warning",
"show_only_conversation_under_this": "Only show replies to this post",
"status_deleted": "This post was deleted",
"status_deleted": "A post was murdered on this spot",
"status_unavailable": "Post unavailable",
"thread_follow": "View {numStatus} more reply | View {numStatus} more replies",
"thread_follow_with_icon": "{icon} {text}",
@ -1054,14 +1056,14 @@
"timeline": {
"collapse": "Collapse",
"conversation": "Conversation",
"error": "Error fetching timeline: {0}",
"error": "Can't find the timeline: {0}",
"follow_tag": "Follow hashtag",
"load_older": "Load older posts",
"no_more_statuses": "No more posts",
"no_retweet_hint": "Post is marked as followers-only or direct and cannot be repeated or quoted",
"no_retweet_hint": "Post is marked as followers-only or direct and cannot be reposted or quoted",
"no_statuses": "No posts",
"reload": "Reload",
"repeated": "repeated",
"repeated": "reposted",
"show_new": "Show new",
"socket_broke": "Realtime connection lost: CloseEvent code {0}",
"socket_reconnected": "Realtime connection established",
@ -1073,14 +1075,14 @@
"no_translation_target_set": "No translation target language set - this may fail. Please set a target language in your settings."
},
"tool_tip": {
"accept_follow_request": "Accept follow request",
"add_reaction": "Add Reaction",
"accept_follow_request": "Accept follower",
"add_reaction": "React with emoji",
"bookmark": "Bookmark",
"favorite": "Favorite",
"media_upload": "Upload media",
"favorite": "Like",
"media_upload": "Upload a file",
"quote": "Quote",
"reject_follow_request": "Reject follow request",
"repeat": "Repeat",
"reject_follow_request": "Reject follower",
"repeat": "Repost",
"reply": "Reply",
"user_settings": "User Settings"
},
@ -1103,8 +1105,8 @@
"admin_menu": {
"activate_account": "Activate account",
"deactivate_account": "Deactivate account",
"delete_account": "Delete account",
"delete_user": "Delete user",
"delete_account": "Delete account but not really",
"delete_user": "Delete user but not really",
"delete_user_data_and_deactivate_confirmation": "This will permanently delete the data from this account and deactivate it. Are you absolutely sure?",
"disable_any_subscription": "Disallow following user at all",
"disable_remote_subscription": "Disallow following user from remote instances",
@ -1113,7 +1115,7 @@
"grant_admin": "Grant Admin",
"grant_moderator": "Grant Moderator",
"moderation": "Moderation",
"quarantine": "Disallow user posts from federating",
"quarantine": "Stop user posts from federating",
"revoke_admin": "Revoke Admin",
"revoke_moderator": "Revoke Moderator",
"sandbox": "Force posts to be followers-only",
@ -1139,9 +1141,9 @@
"deny_confirm_accept_button": "Yes, deny",
"deny_confirm_cancel_button": "No, cancel",
"deny_confirm_title": "Deny follow request",
"domain_muted": "Unblock domain",
"domain_muted": "Unblock isntance",
"edit_profile": "Edit profile",
"favorites": "Favorites",
"favorites": "Likes",
"follow": "Follow",
"follow_cancel": "Cancel request",
"follow_progress": "Requesting…",
@ -1154,7 +1156,7 @@
"following": "Following!",
"follows_you": "Follows you!",
"hidden": "Hidden",
"hide_repeats": "Hide repeats",
"hide_repeats": "Hide reposts",
"highlight": {
"disabled": "No highlight",
"side": "Side stripe",
@ -1170,7 +1172,7 @@
"mute_confirm_accept_button": "Yes, mute",
"mute_confirm_cancel_button": "No, don't mute",
"mute_confirm_title": "Mute user",
"mute_domain": "Block domain",
"mute_domain": "Block instance",
"mute_progress": "Muting…",
"muted": "Muted",
"note": "Private note",
@ -1180,7 +1182,7 @@
"replies": "With Replies",
"report": "Report",
"requested_by": "Has requested to follow you",
"show_repeats": "Show repeats",
"show_repeats": "Show reposts",
"statuses": "Posts",
"subscribe": "Subscribe",
"unblock": "Unblock",
@ -1203,9 +1205,9 @@
"field_validated": "Link Verified"
},
"user_reporting": {
"add_comment_description": "The report will be sent to your instance moderators. You can provide an explanation of why you are reporting this account below:",
"add_comment_description": "This report will be sent to the mods. You should provide an explanation for it below:",
"additional_comments": "Additional comments",
"forward_description": "The account is from another server. Send a copy of the report there as well?",
"forward_description": "The account is from another server. Send a copy of the report to those mods too?",
"forward_to": "Forward to {0}",
"generic_error": "An error occurred while processing your request.",
"submit": "Submit",

View file

@ -38,8 +38,8 @@ export const defaultState = {
muteBotStatuses: undefined, // instance default
collapseMessageWithSubject: true, // instance default
padEmoji: true,
showNavShortcuts: undefined, // instance default
showPanelNavShortcuts: undefined, // instance default
showNavShortcuts: false,
showPanelNavShortcuts: true,
showWiderShortcuts: undefined, // instance default
hideSiteFavicon: undefined, // instance default
hideSiteName: undefined, // instance default
@ -56,6 +56,8 @@ export const defaultState = {
autohideFloatingPostButton: false,
pauseOnUnfocused: true,
displayPageBackgrounds: true,
centerAlignBio: true,
compactUserInfo: false,
stopGifs: undefined,
replyVisibility: 'all',
thirdColumnMode: 'notifications',
@ -94,7 +96,7 @@ export const defaultState = {
useOneClickNsfw: false,
useContainFit: true,
disableStickyHeaders: false,
showScrollbars: false,
showScrollbars: true,
greentext: undefined, // instance default
mentionLinkDisplay: undefined, // instance default
mentionLinkShowTooltip: undefined, // instance default

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

View file

@ -1,6 +1,6 @@
{
"alwaysShowSubjectInput": true,
"background": "/static/aurora_borealis.jpg",
"background": "/static/monika.png",
"collapseMessageWithSubject": false,
"greentext": false,
"hideFilteredStatuses": false,
@ -16,7 +16,7 @@
"nsfwCensorImage": "",
"postContentType": "text/plain",
"redirectRootLogin": "/main/friends",
"redirectRootNoLogin": "/main/all",
"redirectRootNoLogin": "/about",
"showFeaturesPanel": true,
"showInstanceSpecificPanel": false,
"sidebarRight": false,

BIN
static/logo-512.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 136 KiB

712
static/logo.svg Executable file → Normal file

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 388 KiB

BIN
static/monika.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

View file

@ -1,5 +1,5 @@
<h4>Terms of Service</h4>
<p>This is a placeholder, overwrite this by putting a file at <pre>$STATIC_DIR/static/terms-of-service.html</pre><p>
<p>don be meannn<p>
<p>See the <a href="https://docs.akkoma.dev/main/backend/configuration/static_dir/">Static Directory</a> docs for more info.</p>