Skip to content

Commit

Permalink
Release Hot Snowleopard (#58)
Browse files Browse the repository at this point in the history
* Add Akkoma feature detection (#49)

Co-authored-by: clovis <[email protected]>

* [CH] Translation email validation in french (#50)

* Add Akkoma feature detection

* Change translations in french

Co-authored-by: clovis <[email protected]>

* [FIX] fix hashtag column layout (#51)

* Add Akkoma feature detection

* Change translations in french

* [FIX] fix hashtag column layout

Co-authored-by: clovis <[email protected]>

* [CH] Update the installation instructions (#57)

* [CH] Update the installation instructions

* Remove falsy instructions

* Fix instructions

* [CH] Now mention people when repyling (#52)

* [CH] Now mention people when repyling

* Choose a better approach

* Maj version

* Fix some translations

Co-authored-by: clovis <[email protected]>
  • Loading branch information
Cl0v1s and clovis authored Nov 11, 2022
1 parent 994b02a commit 26060a3
Show file tree
Hide file tree
Showing 11 changed files with 155 additions and 107 deletions.
56 changes: 47 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,23 +6,61 @@

**Mangane FE** is a frontend for Pleroma with a focus on custom branding and ease of use.

## :rocket: Deploy on Pleroma
## :rocket: Deploy on Pleroma/Akkoma

Installing Mangane FE on an existing Pleroma server is extremely easy.
Just ssh into the server and download a .zip of the latest build.
Installing Mangane FE on an existing Pleroma server is easy.
Log in your server and follow those instructions depending on your configuration.

Then unpack it into Pleroma's `instance` directory:
### Download

```sh
busybox unzip static.zip -o -d /opt/pleroma/instance
First you need to download mangane on your server.

#### OTP

```
/opt/pleroma/bin/pleroma_ctl frontend install mangane --ref dist --build-url https://github.com/Cl0v1s/mangane-ui/releases/latest/download/static.zip
```
*Note: The pleroma_ctl path may vary on your system*

#### Mix / Source

```
mix pleroma.frontend install mangane --ref dist --build-url https://github.com/Cl0v1s/mangane-ui/releases/latest/download/static.zip
```

#### Admin-fe with database configuration enabled

Just fill the form at Frontend/Available like this.

![admin-fe](./admin-fe.png)

### Activation

Then you need to activate the frontend the it will be available to your users.

#### Config.exs

Edit your configuration files to add/edit the `config :pleroma, :frontends` section like this

```
config :pleroma, :frontends,
primary: %{
"name" => "mangane",
"ref" => "dist"
}
```

##### Admin-fe with database configuration enabled

Just fill the form at Frontend/frontends/Primary like this.

![admin-fe](./admin-fe2.png)


**That's it!** :tada:
**Mangane FE is installed.**
The change will take effect immediately, just refresh your browser tab.
It's not necessary to restart the Pleroma service.

To remove Mangane FE and revert to the default pleroma-fe, simply `rm /opt/pleroma/instance/static/index.html` (you can delete other stuff in there too, but be careful not to delete your own HTML files).
You may need to restart pleroma/akkoma for the change to take effect.

## :elephant: Deploy on Mastodon

Expand Down
Binary file added admin-fe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added admin-fe2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions app/soapbox/actions/notifications.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import api, { getLinks } from 'soapbox/api';
import compareId from 'soapbox/compare_id';
import { getFilters, regexFromFilters } from 'soapbox/selectors';
import { isLoggedIn } from 'soapbox/utils/auth';
import { getFeatures, parseVersion, PLEROMA } from 'soapbox/utils/features';
import { getFeatures, parseVersion, PLEROMA, AKKOMA } from 'soapbox/utils/features';
import { unescapeHTML } from 'soapbox/utils/html';
import { joinPublicPath } from 'soapbox/utils/static';

Expand Down Expand Up @@ -318,7 +318,7 @@ const markReadNotifications = () =>

dispatch(saveMarker(marker));

if (v.software === PLEROMA) {
if (v.software === PLEROMA || v.software === AKKOMA) {
dispatch(markReadPleroma(topNotificationId));
}
}
Expand Down
4 changes: 3 additions & 1 deletion app/soapbox/features/hashtag_timeline/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,9 @@ class HashtagTimeline extends React.PureComponent {

return (
<Column label={`#${id}`} transparent withHeader={false}>
<ColumnHeader active={hasUnread} title={this.title()} />
<div className='px-4 pt-4 sm:p-0'>
<ColumnHeader active={hasUnread} title={this.title()} />
</div>
<Timeline
scrollKey='hashtag_timeline'
timelineId={`hashtag:${id}`}
Expand Down
78 changes: 39 additions & 39 deletions app/soapbox/locales/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
"account.mute": "Masquer @{name}",
"account.muted": "Muted",
"account.never_active": "Never",
"account.posts": "Pouets",
"account.posts_with_replies": "Pouets et réponses",
"account.posts": "Statuts",
"account.posts_with_replies": "Statuts et réponses",
"account.profile": "Profile",
"account.register": "Sign up",
"account.remote_follow": "Remote follow",
Expand Down Expand Up @@ -91,12 +91,12 @@
"admin.latest_accounts_panel.more": "Click to see {count} {count, plural, one {account} other {accounts}}",
"admin.latest_accounts_panel.title": "Latest Accounts",
"admin.moderation_log.empty_message": "You have not performed any moderation actions yet. When you do, a history will be shown here.",
"admin.reports.actions.close": "Close",
"admin.reports.actions.close": "Fermer",
"admin.reports.actions.view_status": "View post",
"admin.reports.empty_message": "There are no open reports. If a user gets reported, they will show up here.",
"admin.reports.report_closed_message": "Report on @{name} was closed",
"admin.reports.report_title": "Report on {acct}",
"admin.statuses.actions.delete_status": "Delete post",
"admin.statuses.actions.delete_status": "Supprimer le statut",
"admin.statuses.actions.mark_status_not_sensitive": "Mark post not sensitive",
"admin.statuses.actions.mark_status_sensitive": "Mark post sensitive",
"admin.statuses.status_deleted_message": "Post by @{acct} was deleted",
Expand Down Expand Up @@ -207,7 +207,7 @@
"column.backups": "Backups",
"column.birthdays": "Birthdays",
"column.blocks": "Comptes bloqués",
"column.bookmarks": "Bookmarks",
"column.bookmarks": "Marque-pages",
"column.chats": "Chats",
"column.community": "Fil public local",
"column.crypto_donate": "Donate Cryptocurrency",
Expand Down Expand Up @@ -280,9 +280,9 @@
"compose.edit_success": "Your post was edited",
"compose.invalid_schedule": "You must schedule a post at least 5 minutes out.",
"compose.submit_success": "Publication envoyée",
"compose_form.direct_message_warning": "Ce pouet sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.",
"compose_form.hashtag_warning": "Ce pouet ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les pouets avec une visibilité \"publique\" peuvent être recherchés par hashtag.",
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.direct_message_warning": "Ce statut sera uniquement envoyé aux personnes mentionnées. Cependant, l’administration de votre instance et des instances réceptrices pourront inspecter ce message.",
"compose_form.hashtag_warning": "Ce statut ne sera pas listé dans les recherches par hashtag car sa visibilité est réglée sur \"non listé\". Seuls les statuts avec une visibilité \"publique\" peuvent être recherchés par hashtag.",
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos statuts privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.markdown.marked": "Post markdown enabled",
"compose_form.markdown.unmarked": "Post markdown disabled",
Expand All @@ -298,7 +298,7 @@
"compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
"compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
"compose_form.poll_placeholder": "Add a poll topic...",
"compose_form.publish": "Pouet",
"compose_form.publish": "Publier",
"compose_form.publish_loud": "{publish} !",
"compose_form.save_changes": "Save changes",
"compose_form.schedule": "Schedule",
Expand All @@ -315,8 +315,8 @@
"confirmations.admin.deactivate_user.heading": "Deactivate @{acct}",
"confirmations.admin.deactivate_user.message": "You are about to deactivate @{acct}. Deactivating a user is a reversible action.",
"confirmations.admin.delete_local_user.checkbox": "I understand that I am about to delete a local user.",
"confirmations.admin.delete_status.confirm": "Delete post",
"confirmations.admin.delete_status.heading": "Delete post",
"confirmations.admin.delete_status.confirm": "Supprimer le statut",
"confirmations.admin.delete_status.heading": "Supprimer le statut",
"confirmations.admin.delete_status.message": "You are about to delete a post by @{acct}. This action cannot be undone.",
"confirmations.admin.delete_user.confirm": "Delete @{name}",
"confirmations.admin.delete_user.heading": "Delete @{acct}",
Expand All @@ -338,8 +338,8 @@
"confirmations.cancel_editing.heading": "Cancel post editing",
"confirmations.cancel_editing.message": "Are you sure you want to cancel editing this post? All changes will be lost.",
"confirmations.delete.confirm": "Supprimer",
"confirmations.delete.heading": "Delete post",
"confirmations.delete.message": "Confirmez-vous la suppression de ce pouet ?",
"confirmations.delete.heading": "Supprimer le statut",
"confirmations.delete.message": "Confirmez-vous la suppression de ce statut ?",
"confirmations.delete_list.confirm": "Supprimer",
"confirmations.delete_list.heading": "Delete list",
"confirmations.delete_list.message": "Êtes-vous sûr·e de vouloir supprimer définitivement cette liste ?",
Expand All @@ -350,16 +350,16 @@
"confirmations.mute.heading": "Mute @{name}",
"confirmations.mute.message": "Êtes-vous sûr·e de vouloir masquer {name} ?",
"confirmations.redraft.confirm": "Effacer et ré-écrire",
"confirmations.redraft.heading": "Delete & redraft",
"confirmations.redraft.heading": "Effacer et ré-écrire",
"confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le ré-écrire ? Ses partages ainsi que ses mises en favori seront perdu·e·s et ses réponses seront orphelines.",
"confirmations.register.needs_approval": "Your account will be manually approved by an admin. Please be patient while we review your details.",
"confirmations.register.needs_approval.header": "Approval needed",
"confirmations.register.needs_confirmation": "Please check your inbox at {email} for confirmation instructions. You will need to verify your email address to continue.",
"confirmations.register.needs_confirmation.header": "Confirmation needed",
"confirmations.remove_from_followers.confirm": "Remove",
"confirmations.remove_from_followers.message": "Are you sure you want to remove {name} from your followers?",
"confirmations.register.needs_approval": "Votre compte va être vérifié manuellement par un administrateur.",
"confirmations.register.needs_approval.header": "Vérification nécessaire",
"confirmations.register.needs_confirmation": "Veuillez vérifier votre boîte mail à {email}, vous y trouverez les instructions de confirmation. Il est nécessaire de confirmer votre adresse email pour poursuivre.",
"confirmations.register.needs_confirmation.header": "Confirmation nécessaire",
"confirmations.remove_from_followers.confirm": "Supprimer",
"confirmations.remove_from_followers.message": "Êtes-vous sûr·e de vouloir supprimer {name} de vos abonnés ?",
"confirmations.reply.confirm": "Répondre",
"confirmations.reply.message": "Répondre maintenant écrasera le message que vous composez actuellement. Êtes-vous sûr de vouloir continuer ?",
"confirmations.reply.message": "Répondre maintenant écrasera le message que vous composez actuellement. Êtes-vous sûr·e de vouloir continuer ?",
"confirmations.scheduled_status_delete.confirm": "Annuler",
"confirmations.scheduled_status_delete.heading": "Cancel scheduled post",
"confirmations.scheduled_status_delete.message": "Are you sure you want to cancel this scheduled post?",
Expand Down Expand Up @@ -468,7 +468,7 @@
"emoji_button.travel": "Lieux & Voyages",
"empty_column.account_blocked": "You are blocked by @{accountUsername}.",
"empty_column.account_favourited_statuses": "This user doesn't have any liked posts yet.",
"empty_column.account_timeline": "Aucun pouet ici !",
"empty_column.account_timeline": "Aucun statut ici !",
"empty_column.account_unavailable": "Profil non disponible",
"empty_column.aliases": "You haven't created any account alias yet.",
"empty_column.aliases.suggestions": "There are no account suggestions available for the provided term.",
Expand All @@ -477,8 +477,8 @@
"empty_column.community": "Le fil public local est vide. Écrivez donc quelque chose pour le remplir !",
"empty_column.direct": "Vous n’avez pas encore de messages directs. Lorsque vous en enverrez ou recevrez un, il s’affichera ici.",
"empty_column.domain_blocks": "Il n’y a aucun domaine caché pour le moment.",
"empty_column.favourited_statuses": "Vous n’avez aucun pouet favoris pour le moment. Lorsque vous en mettrez un en favori, il apparaîtra ici.",
"empty_column.favourites": "Personne n’a encore mis ce pouet en favori. Lorsque quelqu’un le fera, il apparaîtra ici.",
"empty_column.favourited_statuses": "Vous n’avez aucun statut favoris pour le moment. Lorsque vous en mettrez un en favori, il apparaîtra ici.",
"empty_column.favourites": "Personne n’a encore mis ce statut en favori. Lorsque quelqu’un le fera, il apparaîtra ici.",
"empty_column.filters": "You haven't created any muted words yet.",
"empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
"empty_column.follow_requests": "Vous n’avez pas encore de demande de suivi. Lorsque vous en recevrez une, elle apparaîtra ici.",
Expand Down Expand Up @@ -653,15 +653,15 @@
"keyboard_shortcuts.my_profile": "pour ouvrir votre profil",
"keyboard_shortcuts.notifications": "pour ouvrir votre colonne de notifications",
"keyboard_shortcuts.open_media": "to open media",
"keyboard_shortcuts.pinned": "pour ouvrir une liste des pouets épinglés",
"keyboard_shortcuts.pinned": "pour ouvrir une liste des statuts épinglés",
"keyboard_shortcuts.profile": "pour ouvrir le profil de l’auteur·rice",
"keyboard_shortcuts.react": "to react",
"keyboard_shortcuts.reply": "pour répondre",
"keyboard_shortcuts.requests": "pour ouvrir la liste de demandes de suivi",
"keyboard_shortcuts.search": "pour cibler la recherche",
"keyboard_shortcuts.toggle_hidden": "pour afficher/cacher un texte derrière CW",
"keyboard_shortcuts.toggle_sensitivity": "pour afficher/cacher les médias",
"keyboard_shortcuts.toot": "pour démarrer un tout nouveau pouet",
"keyboard_shortcuts.toot": "pour démarrer un tout nouveau statut",
"keyboard_shortcuts.unfocus": "pour quitter la zone de composition/recherche",
"keyboard_shortcuts.up": "pour remonter dans la liste",
"landing_page_modal.download": "Download",
Expand Down Expand Up @@ -726,7 +726,7 @@
"migration.move_account.success": "Account successfully moved.",
"migration.submit": "Move followers",
"missing_description_modal.cancel": "Annuler",
"missing_description_modal.continue": "Post",
"missing_description_modal.continue": "Publier",
"missing_description_modal.description": "Continue anyway?",
"missing_description_modal.text": "You have not entered a description for all attachments. Continue anyway?",
"missing_indicator.label": "Non trouvé",
Expand All @@ -746,11 +746,11 @@
"navigation_bar.account_aliases": "Alias de compte",
"navigation_bar.account_migration": "Migrer le compte",
"navigation_bar.blocks": "Comptes bloqués",
"navigation_bar.compose": "Rédiger un nouveau toot",
"navigation_bar.compose": "Rédiger un nouveau statut",
"navigation_bar.compose_direct": "Direct message",
"navigation_bar.compose_edit": "Edit post",
"navigation_bar.compose_quote": "Quote post",
"navigation_bar.compose_reply": "Reply to post",
"navigation_bar.compose_edit": "Editer le statut",
"navigation_bar.compose_quote": "Citer le statut",
"navigation_bar.compose_reply": "Répondre",
"navigation_bar.domain_blocks": "Domaines cachés",
"navigation_bar.favourites": "Favoris",
"navigation_bar.filters": "Mots silenciés",
Expand Down Expand Up @@ -885,7 +885,7 @@
"registration.captcha.placeholder": "Saisissez le texte visible dans l'image",
"registration.closed_message": "{instance} is not accepting new members",
"registration.closed_title": "Registrations Closed",
"registration.confirmation_modal.close": "Close",
"registration.confirmation_modal.close": "Fermer",
"registration.fields.confirm_placeholder": "Mot de passe (encore)",
"registration.fields.email_placeholder": "Adresse e-mail",
"registration.fields.password_placeholder": "Mot de passe",
Expand Down Expand Up @@ -971,7 +971,7 @@
"search_results.accounts": "Comptes",
"search_results.filter_message": "You are searching for posts from @{acct}.",
"search_results.hashtags": "Hashtags",
"search_results.statuses": "Pouets",
"search_results.statuses": "Statuts",
"security.codes.fail": "Failed to fetch backup codes",
"security.confirm.fail": "Incorrect code or password. Try again.",
"security.delete_account.fail": "Echec de la suppression de compte.",
Expand Down Expand Up @@ -1065,7 +1065,7 @@
"status.cancel_reblog_private": "Dé-booster",
"status.cannot_reblog": "Cette publication ne peut être boostée",
"status.chat": "Chat with @{name}",
"status.copy": "Copier le lien vers le pouet",
"status.copy": "Copier le lien vers le statut",
"status.delete": "Effacer",
"status.detailed_status": "Vue détaillée de la conversation",
"status.direct": "Envoyer un message direct à @{name}",
Expand All @@ -1081,7 +1081,7 @@
"status.mute_conversation": "Masquer la conversation",
"status.open": "Déplier ce statut",
"status.pin": "Épingler sur le profil",
"status.pinned": "Pouet épinglé",
"status.pinned": "Statut épinglé",
"status.quote": "Quote post",
"status.reactions.cry": "Sad",
"status.reactions.empty": "No one has reacted to this post yet. When someone does, they will show up here.",
Expand All @@ -1095,7 +1095,7 @@
"status.reblog": "Partager",
"status.reblog_private": "Booster vers l’audience originale",
"status.reblogged_by": "{name} a partagé :",
"status.reblogs.empty": "Personne n’a encore partagé ce pouet. Lorsque quelqu’un le fera, il apparaîtra ici.",
"status.reblogs.empty": "Personne n’a encore partagé ce statut. Lorsque quelqu’un le fera, il apparaîtra ici.",
"status.redraft": "Effacer et ré-écrire",
"status.remove_account_from_group": "Remove account from group",
"status.remove_post_from_group": "Remove post from group",
Expand All @@ -1110,10 +1110,10 @@
"status.show_less_all": "Tout replier",
"status.show_more": "Déplier",
"status.show_more_all": "Tout déplier",
"status.title": "Post",
"status.title": "Statut",
"status.title_direct": "Direct message",
"status.unbookmark": "Remove bookmark",
"status.unbookmarked": "Bookmark removed.",
"status.unbookmark": "Supprimer le marque-page",
"status.unbookmarked": "Marque-page supprimé.",
"status.unmute_conversation": "Ne plus masquer la conversation",
"status.unpin": "Retirer du profil",
"status_list.queue_label": "Click to see {count} new {count, plural, one {post} other {posts}}",
Expand Down
4 changes: 2 additions & 2 deletions app/soapbox/normalizers/instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
fromJS,
} from 'immutable';

import { parseVersion, PLEROMA } from 'soapbox/utils/features';
import { parseVersion, PLEROMA, AKKOMA } from 'soapbox/utils/features';
import { mergeDefined } from 'soapbox/utils/normalizers';
import { isNumber } from 'soapbox/utils/numbers';

Expand Down Expand Up @@ -84,7 +84,7 @@ const pleromaToMastodonConfig = (instance: ImmutableMap<string, any>) => {
};

// Get the software's default attachment limit
const getAttachmentLimit = (software: string | null) => software === PLEROMA ? Infinity : 4;
const getAttachmentLimit = (software: string | null) => (software === PLEROMA || software === AKKOMA) ? Infinity : 4;

// Normalize version
const normalizeVersion = (instance: ImmutableMap<string, any>) => {
Expand Down
Loading

0 comments on commit 26060a3

Please sign in to comment.