summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2021-03-03 01:04:45 +0900
committersyuilo <syuilotan@yahoo.co.jp>2021-03-03 01:04:45 +0900
commit9a4a534c92f6c9c112438f2a494de9d0d707d46d (patch)
tree791dc0180be776a0513bd14fd48bad1de6e9659a
parentMerge branch 'develop' (diff)
parent12.73.0 (diff)
downloadmisskey-9a4a534c92f6c9c112438f2a494de9d0d707d46d.tar.gz
misskey-9a4a534c92f6c9c112438f2a494de9d0d707d46d.tar.bz2
misskey-9a4a534c92f6c9c112438f2a494de9d0d707d46d.zip
Merge branch 'develop'
-rw-r--r--gulpfile.ts4
-rw-r--r--locales/fr-FR.yml235
-rw-r--r--package.json6
-rw-r--r--src/client/components/autocomplete.vue9
-rw-r--r--src/client/components/channel-preview.vue3
-rw-r--r--src/client/components/drive.file.vue3
-rw-r--r--src/client/components/emoji-picker.vue7
-rw-r--r--src/client/components/form/input.vue3
-rw-r--r--src/client/components/form/link.vue9
-rw-r--r--src/client/components/global/a.vue5
-rw-r--r--src/client/components/global/avatar.vue3
-rw-r--r--src/client/components/global/misskey-flavored-markdown.vue3
-rw-r--r--src/client/components/instance-stats.vue3
-rw-r--r--src/client/components/instance-ticker.vue3
-rw-r--r--src/client/components/media-banner.vue6
-rw-r--r--src/client/components/media-image.vue3
-rw-r--r--src/client/components/media-list.vue3
-rw-r--r--src/client/components/media-video.vue3
-rw-r--r--src/client/components/note-detailed.vue6
-rw-r--r--src/client/components/note-header.vue6
-rw-r--r--src/client/components/note-preview.vue3
-rw-r--r--src/client/components/note.vue9
-rw-r--r--src/client/components/notification.vue6
-rw-r--r--src/client/components/poll.vue3
-rw-r--r--src/client/components/post-form-attaches.vue3
-rw-r--r--src/client/components/sidebar.vue3
-rw-r--r--src/client/components/toast.vue3
-rw-r--r--src/client/components/ui/button.vue6
-rw-r--r--src/client/components/ui/container.vue3
-rw-r--r--src/client/components/ui/input.vue6
-rw-r--r--src/client/components/ui/menu.vue3
-rw-r--r--src/client/components/ui/modal-window.vue6
-rw-r--r--src/client/components/ui/range.vue3
-rw-r--r--src/client/components/ui/window.vue6
-rw-r--r--src/client/components/url-preview.vue6
-rw-r--r--src/client/components/user-info.vue3
-rw-r--r--src/client/components/user-preview.vue3
-rw-r--r--src/client/components/users-dialog.vue6
-rw-r--r--src/client/components/visibility-picker.vue3
-rw-r--r--src/client/init.ts1
-rw-r--r--src/client/os.ts2
-rw-r--r--src/client/pages/about-misskey.vue2
-rw-r--r--src/client/pages/follow-requests.vue6
-rw-r--r--src/client/pages/instance/emojis.vue18
-rw-r--r--src/client/pages/messaging/index.vue9
-rw-r--r--src/client/pages/messaging/messaging-room.message.vue9
-rw-r--r--src/client/pages/page-editor/page-editor.container.vue3
-rw-r--r--src/client/pages/reversi/game.board.vue3
-rw-r--r--src/client/pages/reversi/game.setting.vue3
-rw-r--r--src/client/pages/settings/drive.vue3
-rw-r--r--src/client/pages/settings/other.vue7
-rw-r--r--src/client/pages/settings/security.vue3
-rw-r--r--src/client/pages/settings/theme.vue3
-rw-r--r--src/client/pages/user/index.vue24
-rw-r--r--src/client/pages/welcome.entrance.a.vue3
-rw-r--r--src/client/pages/welcome.entrance.b.vue3
-rw-r--r--src/client/pages/welcome.setup.vue3
-rw-r--r--src/client/style.scss11
-rw-r--r--src/client/ui/_common_/header.vue3
-rw-r--r--src/client/ui/_common_/upload.vue6
-rw-r--r--src/client/ui/chat/index.vue12
-rw-r--r--src/client/ui/chat/note-header.vue6
-rw-r--r--src/client/ui/chat/note-preview.vue3
-rw-r--r--src/client/ui/chat/note.vue6
-rw-r--r--src/client/ui/deck/column.vue6
-rw-r--r--src/client/ui/visitor/header.vue6
-rw-r--r--src/client/widgets/calendar.vue3
-rw-r--r--src/client/widgets/federation.vue9
-rw-r--r--src/client/widgets/rss.vue3
-rw-r--r--src/client/widgets/trends.vue9
-rw-r--r--src/docs/fr-FR/aiscript.md2
-rw-r--r--src/docs/fr-FR/deck.md22
-rw-r--r--src/docs/fr-FR/follow.md2
-rw-r--r--src/docs/fr-FR/keyboard-shortcut.md74
-rw-r--r--src/docs/fr-FR/mfm.md2
-rw-r--r--src/docs/fr-FR/mute.md16
-rw-r--r--src/docs/fr-FR/reaction.md6
-rw-r--r--src/docs/fr-FR/theme.md22
-rw-r--r--src/docs/fr-FR/timelines.md10
-rw-r--r--src/server/web/bios.css40
-rw-r--r--src/server/web/bios.js87
-rw-r--r--src/server/web/boot.js83
-rw-r--r--src/server/web/cli.css19
-rw-r--r--src/server/web/cli.js55
-rw-r--r--src/server/web/index.ts12
-rw-r--r--src/server/web/views/bios.pug20
-rw-r--r--src/server/web/views/cli.pug21
-rw-r--r--yarn.lock34
88 files changed, 733 insertions, 389 deletions
diff --git a/gulpfile.ts b/gulpfile.ts
index bdc20089cd..b394e4f44c 100644
--- a/gulpfile.ts
+++ b/gulpfile.ts
@@ -45,7 +45,7 @@ gulp.task('build:copy:locales', cb => {
});
gulp.task('build:client:script', () => {
- return gulp.src(['./src/server/web/boot.js'])
+ return gulp.src(['./src/server/web/boot.js', './src/server/web/bios.js', './src/server/web/cli.js'])
.pipe(replace('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({
@@ -55,7 +55,7 @@ gulp.task('build:client:script', () => {
});
gulp.task('build:client:style', () => {
- return gulp.src(['./src/server/web/style.css'])
+ return gulp.src(['./src/server/web/style.css', './src/server/web/bios.css', './src/server/web/cli.css'])
.pipe(cssnano())
.pipe(gulp.dest('./built/server/web/'));
});
diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml
index c2b2521523..a3cd8a4fa3 100644
--- a/locales/fr-FR.yml
+++ b/locales/fr-FR.yml
@@ -17,7 +17,7 @@ noNotes: "Aucune note"
noNotifications: "Aucune notification"
instance: "Instance"
settings: "Paramètres"
-basicSettings: "Paramètres basiques"
+basicSettings: "Paramètres généraux"
otherSettings: "Autres paramètres"
openInWindow: "Ouvrir dans une nouvelle fenêtre"
profile: "Profil"
@@ -34,7 +34,7 @@ addUser: "Ajouter un·e utilisateur·rice"
favorite: "Ajouter aux favoris"
favorites: "Favoris"
unfavorite: "Retirer des favoris"
-favorited: "Ajouter à mes favoris"
+favorited: "Ajouté à mes favoris"
alreadyFavorited: "Déjà ajouté aux favoris."
cantFavorite: "Impossible d'ajouter aux favoris."
pin: "Épingler sur le profil"
@@ -62,7 +62,7 @@ import: "Importer"
export: "Exporter"
files: "Fichiers"
download: "Télécharger"
-driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes avec ce fichier joint seront aussi supprimées."
+driveFileDeleteConfirm: "Êtes-vous sûr·e de vouloir supprimer le fichier \"{name}\" ? Les notes liées à ce fichier seront aussi supprimées."
unfollowConfirm: "Désirez-vous vous désabonner de {name} ?"
exportRequested: "Vous avez demandé une exportation. L’opération pourrait prendre un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive."
importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps."
@@ -88,12 +88,13 @@ follow: "S’abonner"
followRequest: "Demande d’abonnement"
followRequests: "Demandes d’abonnement"
unfollow: "Se désabonner"
-followRequestPending: "En attente d’approbation"
-enterEmoji: "ou entrez un émoji"
-renote: "Renote"
-unrenote: "Annuler Renote"
-renoted: "Republier"
+followRequestPending: "Demande d'abonnement en attente de confirmation"
+enterEmoji: "Insérer un émoji"
+renote: "Partager"
+unrenote: "Annuler le partage"
+renoted: "Republié !"
cantRenote: "Ce message ne peut pas être republié."
+cantReRenote: "Impossible de repartager un partage."
quote: "Citer"
pinnedNote: "Note épinglée"
pinned: "Épingler sur le profil"
@@ -103,13 +104,14 @@ sensitive: "Contenu sensible"
add: "Ajouter"
reaction: "Réactions"
reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de réactions."
+reactionSettingDescription2: "Déplacer pour réorganiser, cliquer pour effacer, utiliser « + » pour ajouter."
rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible"
-unmarkAsSensitive: "Enlever le marquage comme sensible"
+unmarkAsSensitive: "Supprimer le marquage comme sensible"
enterFileName: "Entrer le nom du fichier"
mute: "Mettre en sourdine"
-unmute: "Enlever la sourdine"
+unmute: "Ne plus masquer"
block: "Bloquer"
unblock: "Débloquer"
suspend: "Suspendre"
@@ -122,7 +124,7 @@ selectList: "Sélectionner une liste"
selectAntenna: "Sélectionner une antenne"
selectWidget: "Sélectionner un widget"
editWidgets: "Modifier les widgets"
-editWidgetsExit: "Fait"
+editWidgetsExit: "Valider les modifications"
customEmojis: "Émojis personnalisés"
emoji: "Émoji"
emojiName: "Nom de l’émoji"
@@ -132,9 +134,9 @@ settingGuide: "Configuration proposée"
cacheRemoteFiles: "Mise en cache des fichiers distants"
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis l’instance distante. La désactiver diminuera certes l’utilisation de l’espace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées."
flagAsBot: "Ce compte est un robot"
-flagAsBotDescription: "Si ce compte est contrôlé par un programme, définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
+flagAsBotDescription: "Si ce compte est géré de manière automatisée , définissez cette option. Si elle est activée, elle agira comme un marqueur pour les autres développeurs afin d'éviter des chaînes d'interaction sans fin avec d'autres robots et d'ajuster les systèmes internes de Misskey pour traiter ce compte comme un robot."
flagAsCat: "Ce compte est un chat"
-flagAsCatDescription: "Activez cette option pour que ce compte soit marqué comme un chat."
+flagAsCatDescription: "Vous pouvez activer l'option \"Je suis un chat \" pour ce compte."
autoAcceptFollowed: "Accepter automatiquement les demandes d’abonnement venant d’utilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion"
@@ -150,7 +152,7 @@ proxyAccount: "Compte proxy"
proxyAccountDescription: "Un compte proxy se comporte, dans certaines conditions, comme un·e abonné·e distant·e pour les utilisateurs d'autres instances. Par exemple, quand un·e utilisateur·rice ajoute un·e utilisateur·rice distant·e à une liste, ses notes ne seront pas visibles sur l'instance si personne ne suit cet·te utilisateur·rice. Le compte proxy va donc suivre cet·te utilisateur·rice pour que ses notes soient acheminées."
host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice"
-recipient: "Correspondant·e"
+recipient: "Destinataire"
annotation: "Commentaires"
federation: "Fédération"
instances: "Instance"
@@ -169,7 +171,7 @@ software: "Logiciel"
version: "Version"
metadata: "Métadonnées"
withNFiles: "{n} fichier(s)"
-monitor: "Écran de contrôle"
+monitor: "Contrôle"
jobQueue: "File d’attente"
cpuAndMemory: "Processeur et mémoire"
network: "Réseau"
@@ -178,9 +180,9 @@ instanceInfo: "Informations sur l’instance"
statistics: "Statistiques"
clearQueue: "Vider la file d’attente"
clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file d’attente ?"
-clearQueueConfirmText: "Les notes non distribuées ne seront pas livrées. Normalement, vous n'avez PAS besoin d'effectuer cette opération."
+clearQueueConfirmText: "Les notes non distribuées ne seront pas délivrées. Normalement, vous n'avez pas besoin d'effectuer cette opération."
clearCachedFiles: "Vider le cache"
-clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider le cache de fichiers distants ?"
+clearCachedFilesConfirm: "Êtes-vous sûr·e de vouloir vider tout le cache de fichiers distants ?"
blockedInstances: "Instances bloquées"
blockedInstancesDescription: "Listez les instances que vous désirez bloquer, une par ligne. Ces instances ne seront plus en capacité d'interagir avec votre instance."
muteAndBlock: "Masqué·e·s / Bloqué·e·s"
@@ -193,7 +195,7 @@ pinLimitExceeded: "Vous ne pouvez plus épingler d’autres notes."
intro: "L’installation de Misskey est terminée ! Veuillez créer un compte administrateur."
done: "Terminé"
processing: "Traitement en cours"
-preview: "Prévisualisation"
+preview: "Aperçu"
default: "Par défaut"
noCustomEmojis: "Il n'y a pas d’émoji"
noJobs: "Il n’y a aucune tâche planifiée"
@@ -204,7 +206,7 @@ all: "Tous"
subscribing: "Abonné"
publishing: "Publié"
notResponding: "Ne répond pas"
-instanceFollowing: "Abonnements une instance"
+instanceFollowing: "Suivre une instance"
instanceFollowers: "Abonné·e·s de l’instance"
instanceUsers: "Utilisateur·rice·s de cette l’instance"
changePassword: "Modifier votre mot de passe"
@@ -217,15 +219,15 @@ attachFile: "Joindre un fichier"
more: "Plus !"
featured: "Tendances"
usernameOrUserId: "Nom d’utilisateur·rice ou ID utilisateur"
-noSuchUser: "Utilisateur·rice non trouvé"
+noSuchUser: "Utilisateur·rice non trouvé·e"
lookup: "Recherche"
announcements: "Annonces"
imageUrl: "URL de l’image"
remove: "Supprimer"
removed: "Supprimé"
-removeAreYouSure: "Supprimer «{x}» ?"
-deleteAreYouSure: "Supprimer «{x}» ?"
-resetAreYouSure: "Réinitialiser ?"
+removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
+deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
+resetAreYouSure: "Voulez-vous réinitialiser ?"
saved: "Enregistré"
messaging: "Discuter"
upload: "Téléverser"
@@ -257,28 +259,28 @@ themeForLightMode: "Thème à utiliser en Mode Clair"
themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Clair"
dark: "Sombre"
-lightThemes: "Thème clair"
-darkThemes: "Thème sombre"
-syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil"
+lightThemes: "Thèmes clairs"
+darkThemes: "Thèmes sombres"
+syncDeviceDarkMode: "Utiliser le mode sombre de votre appareil"
drive: "Drive"
fileName: "Nom du fichier"
selectFile: "Choisir le fichier"
selectFiles: "Choisir les fichiers"
selectFolder: "Sélectionnez un dossier"
selectFolders: "Sélectionnez des dossiers"
-renameFile: "Renommer le ficher"
+renameFile: "Renommer le fichier"
folderName: "Nom du dossier"
createFolder: "Créer un dossier"
renameFolder: "Renommer le dossier"
deleteFolder: "Supprimer le dossier"
-addFile: "Ajoutez un fichier"
+addFile: "Ajouter un fichier"
emptyDrive: "Le Drive est vide"
emptyFolder: "Le dossier est vide"
-unableToDelete: "Ne peut pas être supprimé"
+unableToDelete: "Suppression impossible"
inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
-hasChildFilesOrFolders: "Ce dossier n'est pas vide, il ne peut donc pas être supprimé"
+hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide."
copyUrl: "Copier l’URL"
rename: "Renommer"
avatar: "Avatar"
@@ -288,7 +290,7 @@ whenServerDisconnected: "Lorsque la connexion au serveur est perdue"
disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir"
doNothing: "Ignorer"
-reloadConfirm: "Voulez-vous recharger le fil ?"
+reloadConfirm: "Voulez-vous recharger?"
watch: "Surveiller"
unwatch: "Ne plus surveiller"
accept: "Autoriser"
@@ -325,6 +327,9 @@ bannerUrl: "URL de l’image de la bannière"
basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e"
pinnedUsersDescription: "Listez les utilisateur·rice·s que vous souhaitez voir épinglé·e·s sur la page \"Découvrir\", un·e par ligne."
+pinnedPages: "Pages épinglées"
+pinnedPagesDescription: "Inscrivez le chemin des pages que vous souhaitez épingler en haut de la page de l'instance. Séparez les pages d'un retour à la ligne."
+pinnedClipId: "Identifiant du clip épinglé"
pinnedNotes: "Note épinglée"
hcaptcha: "hCaptcha"
enableHcaptcha: "Activer hCaptcha"
@@ -354,7 +359,7 @@ notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints"
silence: "Mettre en sourdine"
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre l’utilisateur·rice en sourdine ?"
-unsilence: "Annuler la mise en sourdine"
+unsilence: "Annuler la sourdine"
unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
@@ -433,6 +438,7 @@ signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec d’authentification. Veuillez vérifier que votre nom d’utilisateur et mot de passe sont corrects."
tapSecurityKey: "Appuyez sur votre clé de sécurité"
or: "OU"
+language: "Langue"
uiLanguage: "Langue d’affichage de l’interface"
groupInvited: "Invité au groupe"
aboutX: "À propos de {x}"
@@ -482,6 +488,7 @@ objectStorageUseSSL: "Utiliser SSL"
objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API"
objectStorageUseProxy: "Se connecter via proxy"
objectStorageUseProxyDesc: "Désactivez-le si vous n'utilisez pas Proxy pour la connexion de stockage d'objets"
+objectStorageSetPublicRead: "Régler sur « public » lors de l'envoi"
serverLogs: "Journaux serveur"
deleteAll: "Supprimer tout"
showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité"
@@ -489,6 +496,7 @@ newNoteRecived: "Vous avez une nouvelle note"
sounds: "Sons"
listen: "Écouter"
none: "Rien"
+showInPage: "Afficher dans la page"
popout: "Fenêtre contextuelle"
volume: "Volume"
masterVolume: "Volume"
@@ -517,7 +525,7 @@ deleteAllFilesConfirm: "Êtes vous surs de vouloir supprimer tous les fichiers ?
removeAllFollowing: "Retenir tous les abonnements"
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si l’instance n’existe plus."
userSuspended: "Cette utilisateur·trice a été suspendue."
-userSilenced: "Cette utilisateur·trice a été masquer."
+userSilenced: "Cette utilisateur·trice a été mis·e en sourdine."
sidebar: "Barre latérale"
divider: "Séparateur"
addItem: "Ajouter élément"
@@ -545,6 +553,7 @@ plugins: "Extensions"
deck: "Deck"
undeck: "Quitter le deck"
useBlurEffectForModal: "Utiliser un effet de flou pour les modals"
+useFullReactionPicker: "Utiliser l'intégralité du panneau de réactions"
width: "Largeur"
height: "Hauteur"
large: "Grand"
@@ -591,36 +600,64 @@ useGlobalSetting: "Utiliser paramètre général"
useGlobalSettingDesc: "S'il est activé, les paramètres de notification de votre compte seront utilisés. S'il est désactivé, des configurations individuelles peuvent être effectuées."
other: "Autre"
regenerateLoginToken: "Régénérer le jeton de connexion"
+regenerateLoginTokenDescription: "Générer un nouveau jeton d'authentification. Cette opération ne devrait pas être nécessaire ; lors de la génération d'un nouveau jeton, tous les appareils seront déconnectés. "
setMultipleBySeparatingWithSpace: "Vous pouvez définir plus d’un, séparés par des espaces."
fileIdOrUrl: "ID du fichier ou URL"
chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture"
+behavior: "Comportement"
abuseReports: "Signalements"
reportAbuse: "Signalements"
reportAbuseOf: "Signaler {name}"
+fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien."
+abuseReported: "Le rapport est envoyé. Merci."
send: "Envoyer"
abuseMarkAsResolved: "Marquer le signalement comme résolu"
openInNewTab: "Ouvrir dans un nouvel onglet"
+openInSideView: "Ouvrir en vue latérale"
+defaultNavigationBehaviour: "Navigation par défaut"
+editTheseSettingsMayBreakAccount: "La modification de ces paramètres peut endommager votre compte."
waitingFor: "En attente de {x}"
random: "Aléatoire"
+system: "Système"
+switchUi: "Modifier l'interface utilisateur"
+desktop: "Bureau"
clip: "Clip"
+optional: "Facultatif"
createNewClip: "Créer un nouveau clip"
public: "Public"
+i18nInfo: "Misskey est traduit dans différentes langues par des bénévoles. Vous pouvez contribuer à {link}."
manageAccessTokens: "Gérer les jetons d'accès"
accountInfo: " Informations du compte "
notesCount: "Nombre de notes"
repliesCount: "Nombre de réponses envoyées"
renotesCount: "Nombre de notes repartagées"
repliedCount: "Nombre de réponses reçues"
+renotedCount: "Nombre de Renotes"
followingCount: "Nombre de comptes suivis"
+followersCount: "Nombre d'abonnés"
+sentReactionsCount: "Nombre de réactions envoyées"
+receivedReactionsCount: "Nombre de réactions reçues"
+pollVotesCount: "Nombre de votes envoyés"
+pollVotedCount: "Nombre de votes reçus"
+yes: "Oui"
+no: "Non"
driveFilesCount: "Nombre de fichiers dans le Drive"
+driveUsage: "Utilisation du Drive"
noCrawle: "Refuser l'indexation par les robots"
noCrawleDescription: "Demandez aux moteurs de recherche de ne pas indexer votre page de profil, vos notes, vos pages, etc."
lockedAccountInfo: "À moins que vous ne définissiez la visibilité de votre note sur \"Abonné-e-s\", vos notes sont visibles par tous, même si vous exigez que les followers soient approuvés manuellement."
+alwaysMarkSensitive: "Marquer les médias comme contenu sensible par défaut"
loadRawImages: "Affichage complet des images jointes au lieu des vignettes"
disableShowingAnimatedImages: "Désactiver l'animation des images"
verificationEmailSent: "Un e-mail de vérification a été envoyé. Veuillez accéder au lien pour compléter la vérification."
notSet: "Non défini"
emailVerified: "Votre adresse e-mail a été vérifiée."
+noteFavoritesCount: "Nombre de notes dans les favoris"
+pageLikesCount: "Nombre de pages aimées"
+pageLikedCount: "Nombre de vos pages aimées"
+reversiCount: "Nombre de parties de Reversi"
+contact: "Contact"
+useSystemFont: "Utiliser la police par défaut du système"
clips: "Clip"
experimentalFeatures: "Fonctionnalités expérimentales"
developer: "Développeur"
@@ -631,6 +668,7 @@ left: "Gauche"
center: "Centrer"
wide: "Large"
narrow: "Condensé"
+reloadToApplySetting: "Vos paramètres seront appliqués lorsque vous rechargerez la page. Souhaitez-vous recharger ?"
showTitlebar: "Afficher la barre de titre"
clearCache: "Vider le cache"
onlineUsersCount: "{n} utilisateur(s) en ligne"
@@ -640,18 +678,43 @@ sendErrorReports: "Envoyer les rapports d’erreur"
sendErrorReportsDescription: "Lorsqu'il est activé, des informations détaillées sur les erreurs sont partagées avec Misskey lorsqu'un problème survient, ce qui contribue à améliorer la qualité de Misskey."
myTheme: "Mes thèmes"
backgroundColor: "Arrière-plan"
+accentColor: "Accentuation"
textColor: "Texte"
saveAs: "Enregistrer sous ..."
advanced: "Avancé"
value: "Valeur"
+updatedAt: "Mis à jour le"
saveConfirm: "Voulez-vous sauvegarder les modifications?"
+deleteConfirm: "Confirmez-vous la suppression?"
+invalidValue: "Cette valeur est invalide."
+registry: "Registre"
closeAccount: "Fermer le compte"
+currentVersion: "Version actuelle"
+latestVersion: "Dernière version "
+youAreRunningUpToDateClient: "Votre client est à jour."
+newVersionOfClientAvailable: "Une nouvelle version de votre client est disponible."
usageAmount: "Utilisation"
capacity: "Capacité "
inUse: "utilisé"
+editCode: "Modifier le code"
+apply: "Appliquer"
+receiveAnnouncementFromInstance: "Recevoir les messages d'information de l'instance"
+emailNotification: "Notifications par mail"
+inChannelSearch: "Chercher dans le canal"
+useReactionPickerForContextMenu: "Clic-droit pour ouvrir le panneau de réactions"
+typingUsers: "{users} est en train d'écrire"
+jumpToSpecifiedDate: "Se rendre à la date"
+showingPastTimeline: "Un fil ancien est affiché"
+clear: "Effacer"
_email:
_follow:
title: "Vous suit"
+ _receiveFollowRequest:
+ title: "Vous avez reçu une demande de suivi"
+_plugin:
+ install: "Installation de plugin"
+ installWarn: "N’installez que des extensions provenant de sources de confiance."
+ manage: "Gestion des plugins"
_registry:
key: "Clé "
keys: "Clé "
@@ -667,31 +730,88 @@ _aboutMisskey:
morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰"
patrons: "Contributeurs"
_nsfw:
- respect: "Cacher les médias sensibles"
+ respect: "Cacher les médias marqués comme contenu sensible"
ignore: "Afficher les médias sensibles"
force: "Cacher tous les médias"
_mfm:
+ cheatSheet: "Antisèche MFM"
+ intro: "MFM est un langage Markdown spécifique utilisable ici et là dans Misskey. Vous pouvez vérifier ici les structures utilisables avec MFM."
+ dummy: "La Fédiverse s'agrandit avec Misskey"
mention: "Mentionner"
+ mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant une arobase suivie d'un nom d'utilisateur"
hashtag: "Hashtags"
+ hashtagDescription: "Vous pouvez afficher un mot-dièse en utilisant un croisillon et du texte"
+ url: "URL"
+ urlDescription: "L'adresse web peut être affichée."
link: "Lien"
+ linkDescription: "Une partie précise d'une phrase peut être liée à l'adresse web."
bold: "Gras"
+ boldDescription: "Il est possible de mettre le texte en exergue en le mettant en gras."
+ small: "Diminuer l'emphase"
+ smallDescription: "Le contenu peut être affiché en petit et fin."
center: "Centrée"
+ centerDescription: "Le contenu peut être centré"
+ inlineCode: "Code (inline)"
+ blockCode: "Bloc de code"
quote: "Citer"
quoteDescription: "Affiche le contenu sous forme de citation."
emoji: "Émojis personnalisés"
search: "Rechercher"
flip: "Inverser"
+ x2: "Grand"
+ x2Description: "Afficher le contenu en grand."
+ x3: "Très grand"
+ x3Description: "Afficher le contenu en très grand."
+ x4: "Plus grand"
+ x4Description: "Afficher le contenu en plus grand."
+ blur: "Flou"
+ blurDescription: "Le contenu peut être flouté ; il sera visible en le survolant avec le curseur."
font: "Police de caractères"
+ fontDescription: "Il est possible de choisir la police."
_reversi:
+ reversi: "Reversi"
+ gameSettings: "Réglages de la partie"
+ chooseBoard: "Choix du plateau"
+ blackOrWhite: "Pions blancs/Pions noirs"
+ blackIs: "{name} joue les pions noirs"
+ rules: "Règles"
+ botSettings: "Options du bot"
+ thisGameIsStartedSoon: "La partie commencera dans quelques secondes"
+ waitingForOther: "En attente que l'adversaire soit prêt"
+ waitingForMe: "En attente que vous soyez prêt"
+ waitingBoth: "Préparez-vous"
+ ready: "Prêt"
+ cancelReady: "Recommencer la préparation"
+ opponentTurn: "Tour de l’adversaire"
+ myTurn: "C’est votre tour"
+ turnOf: "Tour de {name}"
+ pastTurnOf: "Tour de {name}"
+ surrender: "Abandonner"
+ surrendered: "Par abandon"
+ drawn: "Match nul"
+ won: "{name} a gagné"
+ black: "Noirs"
+ white: "Blancs"
total: "Total"
+ turnCount: "Tour {count}"
+ myGames: "Mes parties"
+ allGames: "Toutes les parties"
+ ended: "Fin de partie"
+ playing: "En cours"
+ isLlotheo: "Celui ou celle qui a le moins de pièces gagne (Llotheo)"
+ canPutEverywhere: "Les pions peuvent être placés partout "
+_instanceTicker:
+ none: "Cacher "
_serverDisconnectedBehavior:
reload: "Rechargement automatique"
quiet: "Afficher un avertissement discret"
_channel:
create: "Créer un canal"
edit: "Éditer le canal"
+ setBanner: "Sélectionner la bannière"
removeBanner: "Supprimer la bannière"
featured: "Tendances"
+ following: "Abonné·e"
usersCount: "{n} Participants"
notesCount: "{n} Notes"
_sidebar:
@@ -699,9 +819,9 @@ _sidebar:
icon: "Avatar"
hide: "Masquer"
_wordMute:
- muteWords: "Mot à mettre en sourdine"
+ muteWords: "Mots à filtrer"
muteWordsDescription: "Séparer avec des espaces pour la condition AND. Séparer avec un saut de ligne pour une condition OR."
- mutedNotes: "Notes mises en sourdine"
+ mutedNotes: "Notes filtrées"
_theme:
explore: "Explorer les thèmes"
install: "Installer un thème"
@@ -709,6 +829,7 @@ _theme:
code: "Code du thème"
installed: "{name} a été installé"
installedThemes: "Thèmes installés"
+ builtinThemes: "Thèmes intégrés"
alreadyInstalled: "Ce thème est déjà installé"
invalid: "Le format du thème n'est pas valide"
make: "Créer un thème"
@@ -733,16 +854,25 @@ _theme:
header: "Entête"
navBg: "Fond de la barre latérale"
navFg: "Texte de la barre latérale"
+ navHoverFg: "Texte de la barre latérale (survolé)"
+ navActive: "Texte de la barre latérale (actif)"
+ navIndicator: "Indicateur de barre latérale"
link: "Lien"
hashtag: "Hashtags"
mention: "Mentionner"
mentionMe: "Mentions (Moi)"
- renote: "Renote"
+ renote: "Partager"
divider: "Séparateur"
+ scrollbarHandle: "Poignée de la barre de navigation"
+ scrollbarHandleHover: "Poignée de la barre de navigation (survolée)"
infoWarnFg: "Texte d’avertissement"
cwBg: "Arrière-plan du CW"
+ buttonBg: "Arrière-plan du bouton"
+ buttonHoverBg: "Arrière-plan du bouton (survolé)"
+ inputBorder: "Cadre de la zone de texte"
badge: "Badge"
messageBg: "Arrière plan de la discussion"
+ fgHighlighted: "Texte mis en évidence"
_sfx:
note: "Nouvelle note"
noteMy: "Ma note"
@@ -811,8 +941,8 @@ _permissions:
"write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter"
- "read:mutes": "Voir les comptes muets"
- "write:mutes": "Gérer les comptes muets"
+ "read:mutes": "Voir les comptes masqués"
+ "write:mutes": "Gérer les comptes masqués"
"write:notes": "Créer / supprimer des notes"
"read:notifications": "Afficher les notifications"
"write:notifications": "Gérer vos notifications"
@@ -861,8 +991,12 @@ _widgets:
digitalClock: "Horloge numérique"
federation: "Fédération"
postForm: "Formulaire à publier"
+ slideshow: "Diaporama"
button: "Bouton"
+ onlineUsers: "Utilisateurs en ligne"
jobQueue: "File d’attente"
+ serverMetric: "Statistiques du serveur"
+ aiscript: "Console AiScript"
_cw:
hide: "Masquer"
show: "Afficher plus …"
@@ -917,12 +1051,17 @@ _profile:
username: "Nom d’utilisateur·rice"
description: "À propos de moi"
youCanIncludeHashtags: "Vous pouvez également inclure des hashtags."
+ metadata: "Informations supplémentaires"
+ metadataEdit: "Éditer les informations supplémentaires"
+ metadataDescription: "Vous pouvez afficher jusqu'à quatre informations supplémentaires dans votre profil."
metadataLabel: "Étiquette"
metadataContent: "Contenu"
+ changeAvatar: "Changer l'image de profil"
+ changeBanner: "Changer de bannière"
_exportOrImport:
allNotes: "Toutes les notes"
followingList: "Abonnements"
- muteList: "Mettre en sourdine"
+ muteList: "Liste des comptes maqués"
blockingList: "Bloquer"
userLists: "Listes"
_charts:
@@ -1025,6 +1164,7 @@ _pages:
created: "La page a été créée !"
updated: "La page a été mise à jour !"
deleted: "La page a bien été supprimée"
+ pageSetting: "Paramètres de la Page"
nameAlreadyExists: "La URL de page spécifiée existe déjà"
invalidNameTitle: "La URL de la page spécifiée n’est pas valide"
invalidNameText: "Assurez-vous qu’il n’est pas vide"
@@ -1035,6 +1175,7 @@ _pages:
unlike: "Je n’aime pas"
my: "Mes pages"
liked: "Pages favorites"
+ featured: "Populaire"
inspector: "Inspecteur"
contents: "Contenu"
content: "Bloc de page"
@@ -1090,6 +1231,9 @@ _pages:
id: "Toile ID"
width: "Largeur"
height: "Hauteur"
+ _note:
+ id: "Identifiant de la note"
+ detailed: "Afficher les détails"
switch: "Basculer"
_switch:
name: "Nom de la variable"
@@ -1322,19 +1466,28 @@ _notification:
follow: "Abonnements"
mention: "Mentionner"
reply: "Réponses"
- renote: "Renote"
+ renote: "Partager"
quote: "Citer"
reaction: "Réactions"
+ receiveFollowRequest: "Demande d'abonnement reçue"
+ followRequestAccepted: "Demande d'abonnement acceptée"
groupInvited: "Invité aux groupes"
app: "Notifications provenant des apps"
_deck:
alwaysShowMainColumn: "Toujours afficher la colonne principale"
columnAlign: "Aligner les colonnes"
+ columnMargin: "Marge entre les colonnes"
+ columnHeaderHeight: "Taille de l'en-tête de colonne"
addColumn: "Ajouter une colonne"
swapLeft: "Déplacer à gauche"
swapRight: "Déplacer à droite"
+ swapUp: "Déplacer vers le haut"
+ swapDown: "Déplacer vers le bas"
stackLeft: "Empiler à gauche"
+ popRight: "Vers la droite"
+ profile: "Profil"
_columns:
+ main: "Principale"
widgets: "Widgets"
notifications: "Notifications"
tl: "Fil"
diff --git a/package.json b/package.json
index 21a42f98d6..98d856ccc3 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
- "version": "12.72.0",
+ "version": "12.73.0",
"codename": "indigo",
"repository": {
"type": "git",
@@ -120,7 +120,7 @@
"broadcast-channel": "3.4.1",
"bull": "3.20.1",
"cafy": "15.2.1",
- "cbor": "7.0.1",
+ "cbor": "7.0.3",
"chalk": "4.1.0",
"chart.js": "2.9.4",
"cli-highlight": "2.1.10",
@@ -250,7 +250,7 @@
"vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2",
"vue-prism-editor": "2.0.0-alpha.2",
- "vue-router": "4.0.3",
+ "vue-router": "4.0.4",
"vue-style-loader": "4.1.2",
"vuedraggable": "4.0.1",
"web-push": "3.4.4",
diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue
index 1fe74adc66..ae742610f7 100644
--- a/src/client/components/autocomplete.vue
+++ b/src/client/components/autocomplete.vue
@@ -401,8 +401,7 @@ export default defineComponent({
z-index: 65535;
max-width: 100%;
margin-top: calc(1em + 8px);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
transition: top 0.1s ease, left 0.1s ease;
> ol {
@@ -419,8 +418,7 @@ export default defineComponent({
align-items: center;
padding: 4px 12px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 0.9em;
cursor: default;
@@ -429,8 +427,7 @@ export default defineComponent({
}
* {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/src/client/components/channel-preview.vue b/src/client/components/channel-preview.vue
index 3e24774f52..e222ad7ae7 100644
--- a/src/client/components/channel-preview.vue
+++ b/src/client/components/channel-preview.vue
@@ -66,8 +66,7 @@ export default defineComponent({
<style lang="scss" scoped>
.eftoefju {
display: block;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
width: 100%;
&:hover {
diff --git a/src/client/components/drive.file.vue b/src/client/components/drive.file.vue
index 80283f997b..d2b8b95f73 100644
--- a/src/client/components/drive.file.vue
+++ b/src/client/components/drive.file.vue
@@ -342,8 +342,7 @@ export default defineComponent({
text-align: center;
word-break: break-all;
color: var(--fg);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .ext {
opacity: 0.5;
diff --git a/src/client/components/emoji-picker.vue b/src/client/components/emoji-picker.vue
index 7c82211993..f7eaeb2bfe 100644
--- a/src/client/components/emoji-picker.vue
+++ b/src/client/components/emoji-picker.vue
@@ -62,10 +62,6 @@
<header class="_acrylic">{{ $ts.emoji }}</header>
<XSection v-for="category in categories" :emojis="emojilist.filter(e => e.category === category).map(e => e.char)">{{ category }}</XSection>
</div>
- <div>
- <header class="_acrylic">{{ $ts.tags }}</header>
- <XSection v-for="tag in emojiTags" :emojis="customEmojis.filter(e => e.aliases.includes(tag)).map(e => ':' + e.name + ':')">{{ tag }}</XSection>
- </div>
</div>
<div class="tabs">
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><Fa :icon="faAsterisk" fixed-width/></button>
@@ -86,7 +82,7 @@ import Particle from '@/components/particle.vue';
import * as os from '@/os';
import { isDeviceTouch } from '@/scripts/is-device-touch';
import { isMobile } from '@/scripts/is-mobile';
-import { emojiCategories, emojiTags } from '@/instance';
+import { emojiCategories } from '@/instance';
import XSection from './emoji-picker.section.vue';
export default defineComponent({
@@ -115,7 +111,6 @@ export default defineComponent({
height: this.asReactionPicker ? this.$store.state.reactionPickerHeight : 2,
big: this.asReactionPicker ? isDeviceTouch : false,
customEmojiCategories: emojiCategories,
- emojiTags,
customEmojis: this.$instance.emojis,
q: null,
searchResultCustom: [],
diff --git a/src/client/components/form/input.vue b/src/client/components/form/input.vue
index f16d8be026..f0aa6b0534 100644
--- a/src/client/components/form/input.vue
+++ b/src/client/components/form/input.vue
@@ -261,8 +261,7 @@ export default defineComponent({
display: inline-block;
min-width: 16px;
max-width: 150px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
diff --git a/src/client/components/form/link.vue b/src/client/components/form/link.vue
index 6f0ae0e5f7..2efc6b58c9 100644
--- a/src/client/components/form/link.vue
+++ b/src/client/components/form/link.vue
@@ -8,7 +8,7 @@
<Fa :icon="faExternalLinkAlt" class="icon"/>
</span>
</a>
- <MkA class="main _button _formPanel _formClickable" :class="{ active }" :to="to" v-else>
+ <MkA class="main _button _formPanel _formClickable" :class="{ active }" :to="to" :behavior="behavior" v-else>
<span class="icon"><slot name="icon"></slot></span>
<span class="text"><slot></slot></span>
<span class="right">
@@ -38,6 +38,10 @@ export default defineComponent({
type: Boolean,
required: false
},
+ behavior: {
+ type: String,
+ required: false,
+ },
},
data() {
return {
@@ -83,8 +87,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
padding-right: 12px;
}
diff --git a/src/client/components/global/a.vue b/src/client/components/global/a.vue
index cf894deaba..d293cb571f 100644
--- a/src/client/components/global/a.vue
+++ b/src/client/components/global/a.vue
@@ -98,6 +98,11 @@ export default defineComponent({
},
nav() {
+ if (this.behavior === 'browser') {
+ location.href = this.to;
+ return;
+ }
+
if (this.to.startsWith('/my/messaging')) {
if (ColdDeviceStorage.get('chatOpenBehavior') === 'window') return this.window();
if (ColdDeviceStorage.get('chatOpenBehavior') === 'popout') return this.popout();
diff --git a/src/client/components/global/avatar.vue b/src/client/components/global/avatar.vue
index 8930bb4a0c..d2f25fa41e 100644
--- a/src/client/components/global/avatar.vue
+++ b/src/client/components/global/avatar.vue
@@ -101,8 +101,7 @@ export default defineComponent({
top: 0;
border-radius: 100%;
z-index: 1;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
object-fit: cover;
width: 100%;
height: 100%;
diff --git a/src/client/components/global/misskey-flavored-markdown.vue b/src/client/components/global/misskey-flavored-markdown.vue
index 0b34ccbfb4..a3f443d5d8 100644
--- a/src/client/components/global/misskey-flavored-markdown.vue
+++ b/src/client/components/global/misskey-flavored-markdown.vue
@@ -126,8 +126,7 @@ export default defineComponent({
&.nowrap {
white-space: pre;
word-wrap: normal; // https://codeday.me/jp/qa/20190424/690106.html
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/src/client/components/instance-stats.vue b/src/client/components/instance-stats.vue
index 80070996fc..e9b496180a 100644
--- a/src/client/components/instance-stats.vue
+++ b/src/client/components/instance-stats.vue
@@ -692,8 +692,7 @@ export default defineComponent({
> dd {
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
}
diff --git a/src/client/components/instance-ticker.vue b/src/client/components/instance-ticker.vue
index fa46f8edc4..1ce5a1c2c1 100644
--- a/src/client/components/instance-ticker.vue
+++ b/src/client/components/instance-ticker.vue
@@ -44,8 +44,7 @@ export default defineComponent({
height: $height;
border-radius: 4px 0 0 4px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
color: #fff;
> .icon {
diff --git a/src/client/components/media-banner.vue b/src/client/components/media-banner.vue
index 4fc6701d36..a2e1776d09 100644
--- a/src/client/components/media-banner.vue
+++ b/src/client/components/media-banner.vue
@@ -62,8 +62,7 @@ export default defineComponent({
width: 100%;
border-radius: 4px;
margin-top: 4px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .download,
> .sensitive {
@@ -78,8 +77,7 @@ export default defineComponent({
}
> b {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/src/client/components/media-image.vue b/src/client/components/media-image.vue
index 5f55d88388..9f3898ec56 100644
--- a/src/client/components/media-image.vue
+++ b/src/client/components/media-image.vue
@@ -143,8 +143,7 @@ export default defineComponent({
> a {
display: block;
cursor: zoom-in;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
width: 100%;
height: 100%;
background-position: center;
diff --git a/src/client/components/media-list.vue b/src/client/components/media-list.vue
index 61482266ab..36fbb4bd06 100644
--- a/src/client/components/media-list.vue
+++ b/src/client/components/media-list.vue
@@ -105,8 +105,7 @@ export default defineComponent({
grid-gap: 4px;
> * {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
border-radius: 6px;
}
diff --git a/src/client/components/media-video.vue b/src/client/components/media-video.vue
index dbde40f666..3788947206 100644
--- a/src/client/components/media-video.vue
+++ b/src/client/components/media-video.vue
@@ -78,8 +78,7 @@ export default defineComponent({
align-items: center;
font-size: 3.5em;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
background-position: center;
background-size: cover;
width: 100%;
diff --git a/src/client/components/note-detailed.vue b/src/client/components/note-detailed.vue
index 7df87c6b01..b5bc054e5e 100644
--- a/src/client/components/note-detailed.vue
+++ b/src/client/components/note-detailed.vue
@@ -886,8 +886,7 @@ export default defineComponent({
.note {
position: relative;
transition: box-shadow 0.1s ease;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
contain: content;
&:focus-visible {
@@ -947,8 +946,7 @@ export default defineComponent({
}
> span {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;
diff --git a/src/client/components/note-header.vue b/src/client/components/note-header.vue
index aed4225067..1f7a07bac3 100644
--- a/src/client/components/note-header.vue
+++ b/src/client/components/note-header.vue
@@ -61,8 +61,7 @@ export default defineComponent({
display: block;
margin: 0 .5em 0 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 1em;
font-weight: bold;
text-decoration: none;
@@ -91,8 +90,7 @@ export default defineComponent({
> .username {
margin: 0 .5em 0 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/src/client/components/note-preview.vue b/src/client/components/note-preview.vue
index 4715c299b5..4ea97d17ee 100644
--- a/src/client/components/note-preview.vue
+++ b/src/client/components/note-preview.vue
@@ -50,8 +50,7 @@ export default defineComponent({
display: flex;
margin: 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 0.95em;
> .avatar {
diff --git a/src/client/components/note.vue b/src/client/components/note.vue
index dab7643762..bc2f87fe85 100644
--- a/src/client/components/note.vue
+++ b/src/client/components/note.vue
@@ -861,8 +861,7 @@ export default defineComponent({
.tkcbzcuz {
position: relative;
transition: box-shadow 0.1s ease;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
contain: content;
// これらの指定はパフォーマンス向上には有効だが、ノートの高さは一定でないため、
@@ -949,8 +948,7 @@ export default defineComponent({
}
> span {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;
@@ -1022,8 +1020,7 @@ export default defineComponent({
&.collapsed {
position: relative;
max-height: 9em;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .fade {
display: block;
diff --git a/src/client/components/notification.vue b/src/client/components/notification.vue
index a0cfe4f213..2fe8500891 100644
--- a/src/client/components/notification.vue
+++ b/src/client/components/notification.vue
@@ -257,8 +257,7 @@ export default defineComponent({
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
> .time {
@@ -269,8 +268,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
> [data-icon] {
diff --git a/src/client/components/poll.vue b/src/client/components/poll.vue
index 01bbefe36d..7f13e135aa 100644
--- a/src/client/components/poll.vue
+++ b/src/client/components/poll.vue
@@ -112,8 +112,7 @@ export default defineComponent({
padding: 4px 8px;
border: solid 1px var(--divider);
border-radius: 4px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
cursor: pointer;
&:hover {
diff --git a/src/client/components/post-form-attaches.vue b/src/client/components/post-form-attaches.vue
index 3b5cb75c19..230c944de1 100644
--- a/src/client/components/post-form-attaches.vue
+++ b/src/client/components/post-form-attaches.vue
@@ -127,8 +127,7 @@ export default defineComponent({
height: 64px;
margin-right: 4px;
border-radius: 4px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
cursor: move;
&:hover > .remove {
diff --git a/src/client/components/sidebar.vue b/src/client/components/sidebar.vue
index 6460043244..f7c50a2ba5 100644
--- a/src/client/components/sidebar.vue
+++ b/src/client/components/sidebar.vue
@@ -390,8 +390,7 @@ export default defineComponent({
font-size: $ui-font-size;
line-height: 3rem;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
width: 100%;
text-align: left;
diff --git a/src/client/components/toast.vue b/src/client/components/toast.vue
index 49c14789b7..fb0de68092 100644
--- a/src/client/components/toast.vue
+++ b/src/client/components/toast.vue
@@ -67,8 +67,7 @@ export default defineComponent({
height: 100%;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
border-radius: 8px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
}
</style>
diff --git a/src/client/components/ui/button.vue b/src/client/components/ui/button.vue
index e98c5efcc0..3901e8ae44 100644
--- a/src/client/components/ui/button.vue
+++ b/src/client/components/ui/button.vue
@@ -124,8 +124,7 @@ export default defineComponent({
text-decoration: none;
background: var(--buttonBg);
border-radius: 999px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
&:not(:disabled):hover {
background: var(--buttonHoverBg);
@@ -213,8 +212,7 @@ export default defineComponent({
width: 100%;
height: 100%;
border-radius: 6px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
::v-deep(div) {
position: absolute;
diff --git a/src/client/components/ui/container.vue b/src/client/components/ui/container.vue
index b9360e92fa..c3353cca89 100644
--- a/src/client/components/ui/container.vue
+++ b/src/client/components/ui/container.vue
@@ -116,8 +116,7 @@ export default defineComponent({
.ukygtjoj {
position: relative;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
&.naked {
background: transparent !important;
diff --git a/src/client/components/ui/input.vue b/src/client/components/ui/input.vue
index cea1ec1b7f..1c5222f8f2 100644
--- a/src/client/components/ui/input.vue
+++ b/src/client/components/ui/input.vue
@@ -298,8 +298,7 @@ export default defineComponent({
transform: scale(.75);
white-space: nowrap;
width: 133%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
> .warning {
@@ -355,8 +354,7 @@ export default defineComponent({
display: inline-block;
min-width: 16px;
max-width: 150px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
diff --git a/src/client/components/ui/menu.vue b/src/client/components/ui/menu.vue
index c9accf7c31..c2033402e3 100644
--- a/src/client/components/ui/menu.vue
+++ b/src/client/components/ui/menu.vue
@@ -155,8 +155,7 @@ export default defineComponent({
font-size: 0.9em;
line-height: 20px;
text-align: center;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
&.danger {
diff --git a/src/client/components/ui/modal-window.vue b/src/client/components/ui/modal-window.vue
index 3965b537e5..2cdf961379 100644
--- a/src/client/components/ui/modal-window.vue
+++ b/src/client/components/ui/modal-window.vue
@@ -89,8 +89,7 @@ export default defineComponent({
<style lang="scss" scoped>
.ebkgoccj {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
display: flex;
flex-direction: column;
contain: content;
@@ -124,8 +123,7 @@ export default defineComponent({
padding-left: 32px;
font-weight: bold;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
pointer-events: none;
diff --git a/src/client/components/ui/range.vue b/src/client/components/ui/range.vue
index cbdf07d6b6..4cfe66a8fc 100644
--- a/src/client/components/ui/range.vue
+++ b/src/client/components/ui/range.vue
@@ -89,8 +89,7 @@ export default defineComponent({
pointer-events: none;
font-size: 16px;
color: var(--inputLabel);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
> input {
diff --git a/src/client/components/ui/window.vue b/src/client/components/ui/window.vue
index 4d3b048c11..501a3bf8ee 100644
--- a/src/client/components/ui/window.vue
+++ b/src/client/components/ui/window.vue
@@ -402,8 +402,7 @@ export default defineComponent({
}
> .body {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
display: flex;
flex-direction: column;
contain: content;
@@ -438,8 +437,7 @@ export default defineComponent({
position: relative;
line-height: var(--height);
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
text-align: center;
cursor: move;
diff --git a/src/client/components/url-preview.vue b/src/client/components/url-preview.vue
index a7068d1619..7a59068710 100644
--- a/src/client/components/url-preview.vue
+++ b/src/client/components/url-preview.vue
@@ -244,8 +244,7 @@ export default defineComponent({
font-size: 14px;
box-shadow: 0 0 0 1px var(--divider);
border-radius: 8px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
&:hover {
text-decoration: none;
@@ -327,8 +326,7 @@ export default defineComponent({
&.compact {
> article {
> header h1, p, footer {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
diff --git a/src/client/components/user-info.vue b/src/client/components/user-info.vue
index b744f21929..711e367411 100644
--- a/src/client/components/user-info.vue
+++ b/src/client/components/user-info.vue
@@ -110,8 +110,7 @@ export default defineComponent({
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
}
diff --git a/src/client/components/user-preview.vue b/src/client/components/user-preview.vue
index 86e53228ce..c4588e478a 100644
--- a/src/client/components/user-preview.vue
+++ b/src/client/components/user-preview.vue
@@ -111,8 +111,7 @@ export default defineComponent({
position: absolute;
z-index: 11000;
width: 300px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
transform-origin: center top;
> .info {
diff --git a/src/client/components/users-dialog.vue b/src/client/components/users-dialog.vue
index af47391c5d..014748adc6 100644
--- a/src/client/components/users-dialog.vue
+++ b/src/client/components/users-dialog.vue
@@ -66,8 +66,7 @@ export default defineComponent({
height: 350px;
background: var(--panel);
border-radius: var(--radius);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
display: flex;
flex-direction: column;
@@ -128,8 +127,7 @@ export default defineComponent({
> .body {
padding: 0 8px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .name {
display: block;
diff --git a/src/client/components/visibility-picker.vue b/src/client/components/visibility-picker.vue
index 66dd9c2aed..e518f48d0d 100644
--- a/src/client/components/visibility-picker.vue
+++ b/src/client/components/visibility-picker.vue
@@ -141,8 +141,7 @@ export default defineComponent({
> *:nth-child(2) {
flex: 1 1 auto;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
> span:first-child {
diff --git a/src/client/init.ts b/src/client/init.ts
index 6a539a0e1d..b3c53db7bb 100644
--- a/src/client/init.ts
+++ b/src/client/init.ts
@@ -67,6 +67,7 @@ console.info(`Misskey v${version}`);
// boot.jsのやつを解除
window.onerror = null;
+window.onunhandledrejection = null;
if (_DEV_) {
console.warn('Development mode!!!');
diff --git a/src/client/os.ts b/src/client/os.ts
index e97c2d7ba0..2b72391bf5 100644
--- a/src/client/os.ts
+++ b/src/client/os.ts
@@ -305,7 +305,7 @@ export async function pickEmoji(src?: HTMLElement, opts) {
type AwaitType<T> =
T extends Promise<infer U> ? U :
- T extends (...args: Array<any>) => Promise<infer V> ? V :
+ T extends (...args: any[]) => Promise<infer V> ? V :
T;
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;
diff --git a/src/client/pages/about-misskey.vue b/src/client/pages/about-misskey.vue
index fa47a80492..7022a924b0 100644
--- a/src/client/pages/about-misskey.vue
+++ b/src/client/pages/about-misskey.vue
@@ -1,5 +1,5 @@
<template>
-<div style="overflow: hidden; overflow: clip;">
+<div style="overflow: hidden;">
<FormBase class="znqjceqz">
<div id="debug"></div>
<section class="_formItem about">
diff --git a/src/client/pages/follow-requests.vue b/src/client/pages/follow-requests.vue
index 18f39642e4..04d739088f 100644
--- a/src/client/pages/follow-requests.vue
+++ b/src/client/pages/follow-requests.vue
@@ -104,8 +104,7 @@ export default defineComponent({
display: block;
white-space: nowrap;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
margin: 0;
}
@@ -125,8 +124,7 @@ export default defineComponent({
width: 55%;
line-height: 42px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
opacity: 0.7;
font-size: 14px;
diff --git a/src/client/pages/instance/emojis.vue b/src/client/pages/instance/emojis.vue
index 71b6c11b2d..6a51813bb2 100644
--- a/src/client/pages/instance/emojis.vue
+++ b/src/client/pages/instance/emojis.vue
@@ -178,20 +178,17 @@ export default defineComponent({
> .body {
padding: 0 0 0 8px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .name {
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
> .info {
opacity: 0.5;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
}
}
@@ -222,20 +219,17 @@ export default defineComponent({
> .body {
padding: 0 0 0 8px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .name {
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
> .info {
opacity: 0.5;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
}
}
diff --git a/src/client/pages/messaging/index.vue b/src/client/pages/messaging/index.vue
index 8e7fe5134a..aefc31f3bc 100644
--- a/src/client/pages/messaging/index.vue
+++ b/src/client/pages/messaging/index.vue
@@ -226,14 +226,12 @@ export default defineComponent({
align-items: center;
margin-bottom: 2px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .name {
margin: 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
font-size: 1em;
font-weight: bold;
@@ -264,8 +262,7 @@ export default defineComponent({
display: block;
margin: 0 0 0 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
overflow-wrap: break-word;
font-size: 1.1em;
color: var(--faceText);
diff --git a/src/client/pages/messaging/messaging-room.message.vue b/src/client/pages/messaging/messaging-room.message.vue
index 3d994c2666..d379c0c3c0 100644
--- a/src/client/pages/messaging/messaging-room.message.vue
+++ b/src/client/pages/messaging/messaging-room.message.vue
@@ -154,8 +154,7 @@ export default defineComponent({
display: block;
margin: 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
overflow-wrap: break-word;
font-size: 1em;
color: rgba(#000, 0.5);
@@ -165,8 +164,7 @@ export default defineComponent({
display: block;
margin: 0;
padding: 12px 18px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
overflow-wrap: break-word;
word-break: break-word;
font-size: 1em;
@@ -184,8 +182,7 @@ export default defineComponent({
display: block;
max-width: 100%;
border-radius: 16px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-decoration: none;
&:hover {
diff --git a/src/client/pages/page-editor/page-editor.container.vue b/src/client/pages/page-editor/page-editor.container.vue
index 5e89b8c2bf..46e2dca157 100644
--- a/src/client/pages/page-editor/page-editor.container.vue
+++ b/src/client/pages/page-editor/page-editor.container.vue
@@ -74,8 +74,7 @@ export default defineComponent({
<style lang="scss" scoped>
.cpjygsrt {
position: relative;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
background: var(--panel);
border: solid 2px var(--X12);
border-radius: 6px;
diff --git a/src/client/pages/reversi/game.board.vue b/src/client/pages/reversi/game.board.vue
index a3c7900d20..8ce232af07 100644
--- a/src/client/pages/reversi/game.board.vue
+++ b/src/client/pages/reversi/game.board.vue
@@ -434,8 +434,7 @@ export default defineComponent({
> div {
background: transparent;
border-radius: 6px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
* {
pointer-events: none;
diff --git a/src/client/pages/reversi/game.setting.vue b/src/client/pages/reversi/game.setting.vue
index 3ed4d2c67b..404e560a06 100644
--- a/src/client/pages/reversi/game.setting.vue
+++ b/src/client/pages/reversi/game.setting.vue
@@ -333,8 +333,7 @@ export default defineComponent({
background: transparent;
border: solid 2px var(--divider);
border-radius: 6px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
cursor: pointer;
* {
diff --git a/src/client/pages/settings/drive.vue b/src/client/pages/settings/drive.vue
index 869af77f37..8ca8bc9eec 100644
--- a/src/client/pages/settings/drive.vue
+++ b/src/client/pages/settings/drive.vue
@@ -230,8 +230,7 @@ export default defineComponent({
$size: 12px;
background: rgba(0, 0, 0, 0.1);
border-radius: ($size / 2);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> div {
height: $size;
diff --git a/src/client/pages/settings/other.vue b/src/client/pages/settings/other.vue
index c0b9625098..a14e101328 100644
--- a/src/client/pages/settings/other.vue
+++ b/src/client/pages/settings/other.vue
@@ -23,13 +23,16 @@
<FormLink to="/settings/registry"><template #icon><Fa :icon="faCogs"/></template>{{ $ts.registry }}</FormLink>
+ <FormLink to="/bios" behavior="browser"><template #icon><Fa :icon="faDoorOpen"/></template>BIOS</FormLink>
+ <FormLink to="/cli" behavior="browser"><template #icon><Fa :icon="faDoorOpen"/></template>CLI</FormLink>
+
<FormButton @click="closeAccount" danger>{{ $ts.closeAccount }}</FormButton>
</FormBase>
</template>
<script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue';
-import { faEllipsisH, faCogs } from '@fortawesome/free-solid-svg-icons';
+import { faEllipsisH, faCogs, faDoorOpen } from '@fortawesome/free-solid-svg-icons';
import FormSwitch from '@/components/form/switch.vue';
import FormSelect from '@/components/form/select.vue';
import FormLink from '@/components/form/link.vue';
@@ -61,7 +64,7 @@ export default defineComponent({
icon: faEllipsisH
},
debug,
- faCogs
+ faCogs, faDoorOpen,
}
},
diff --git a/src/client/pages/settings/security.vue b/src/client/pages/settings/security.vue
index 913e0e64bf..cdb5705c0b 100644
--- a/src/client/pages/settings/security.vue
+++ b/src/client/pages/settings/security.vue
@@ -144,8 +144,7 @@ export default defineComponent({
flex: 1;
min-width: 0;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
margin-right: 12px;
}
diff --git a/src/client/pages/settings/theme.vue b/src/client/pages/settings/theme.vue
index e230a2276b..ac57c51df4 100644
--- a/src/client/pages/settings/theme.vue
+++ b/src/client/pages/settings/theme.vue
@@ -184,8 +184,7 @@ export default defineComponent({
position: absolute;
top: 50%;
left: 50%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
padding: 0 100px;
transform: translate3d(-50%, -50%, 0);
diff --git a/src/client/pages/user/index.vue b/src/client/pages/user/index.vue
index 959170f526..5229db9ee3 100644
--- a/src/client/pages/user/index.vue
+++ b/src/client/pages/user/index.vue
@@ -369,8 +369,7 @@ export default defineComponent({
position: relative;
height: 450px;
border-radius: 16px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
background-size: cover;
background-position: center;
@@ -473,8 +472,7 @@ export default defineComponent({
> .name {
width: 30%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
@@ -482,8 +480,7 @@ export default defineComponent({
> .value {
width: 70%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin: 0;
@@ -545,8 +542,7 @@ export default defineComponent({
.ftskorzw.narrow {
max-width: 100vw;
box-sizing: border-box;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .punished {
font-size: 0.8em;
@@ -557,14 +553,12 @@ export default defineComponent({
> .main {
position: relative;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .banner-container {
position: relative;
height: 250px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
background-size: cover;
background-position: center;
@@ -709,8 +703,7 @@ export default defineComponent({
> .name {
width: 30%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
@@ -719,8 +712,7 @@ export default defineComponent({
> .value {
width: 70%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin: 0;
diff --git a/src/client/pages/welcome.entrance.a.vue b/src/client/pages/welcome.entrance.a.vue
index 46a52f4189..4d356774eb 100644
--- a/src/client/pages/welcome.entrance.a.vue
+++ b/src/client/pages/welcome.entrance.a.vue
@@ -167,8 +167,7 @@ export default defineComponent({
margin: auto;
width: 500px;
height: calc(100% - 128px);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
-webkit-mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
diff --git a/src/client/pages/welcome.entrance.b.vue b/src/client/pages/welcome.entrance.b.vue
index 0dc91359d0..8a6f60e726 100644
--- a/src/client/pages/welcome.entrance.b.vue
+++ b/src/client/pages/welcome.entrance.b.vue
@@ -151,8 +151,7 @@ export default defineComponent({
margin: auto;
width: 500px;
height: calc(100% - 128px);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
-webkit-mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
mask-image: linear-gradient(0deg, rgba(0,0,0,0) 0%, rgba(0,0,0,1) 128px, rgba(0,0,0,1) calc(100% - 128px), rgba(0,0,0,0) 100%);
}
diff --git a/src/client/pages/welcome.setup.vue b/src/client/pages/welcome.setup.vue
index 9c1315cc40..bc994099ac 100644
--- a/src/client/pages/welcome.setup.vue
+++ b/src/client/pages/welcome.setup.vue
@@ -71,8 +71,7 @@ export default defineComponent({
.mk-setup {
border-radius: var(--radius);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> h1 {
margin: 0;
diff --git a/src/client/style.scss b/src/client/style.scss
index aa2face04e..b6a83d967e 100644
--- a/src/client/style.scss
+++ b/src/client/style.scss
@@ -241,8 +241,7 @@ hr {
border-radius: var(--radius);
//border: var(--panelBorder);
box-shadow: var(--panelShadow);
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
}
._card {
@@ -458,14 +457,6 @@ hr {
opacity: 0.7;
}
-// TODO: refactor: 全てのvueファイル中の text-overflow: ellipsis; している箇所をこのクラスを使って置き換える
-._oneline {
- white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
- text-overflow: ellipsis;
-}
-
._monospace {
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
}
diff --git a/src/client/ui/_common_/header.vue b/src/client/ui/_common_/header.vue
index 3f4796d7a1..f150653a84 100644
--- a/src/client/ui/_common_/header.vue
+++ b/src/client/ui/_common_/header.vue
@@ -132,8 +132,7 @@ export default defineComponent({
display: inline-block;
vertical-align: bottom;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
padding: 0 16px;
position: relative;
diff --git a/src/client/ui/_common_/upload.vue b/src/client/ui/_common_/upload.vue
index 6262d0b725..c1986737d7 100644
--- a/src/client/ui/_common_/upload.vue
+++ b/src/client/ui/_common_/upload.vue
@@ -89,8 +89,7 @@ export default defineComponent({
font-size: 0.8em;
white-space: nowrap;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
flex-shrink: 1;
}
.mk-uploader > ol > li > .top > .name > [data-icon] {
@@ -120,8 +119,7 @@ export default defineComponent({
background: transparent;
border: none;
border-radius: 4px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
grid-column: 2/3;
grid-row: 2/3;
z-index: 2;
diff --git a/src/client/ui/chat/index.vue b/src/client/ui/chat/index.vue
index c106e9a444..26c81a1aa9 100644
--- a/src/client/ui/chat/index.vue
+++ b/src/client/ui/chat/index.vue
@@ -427,8 +427,7 @@ export default defineComponent({
> .text {
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
font-size: 0.9em;
}
@@ -483,8 +482,7 @@ export default defineComponent({
padding: 6px 8px;
border-radius: 4px;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
&:hover {
@@ -547,8 +545,7 @@ export default defineComponent({
}
> .title {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
@@ -559,8 +556,7 @@ export default defineComponent({
font-size: 0.8em;
font-weight: normal;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
}
diff --git a/src/client/ui/chat/note-header.vue b/src/client/ui/chat/note-header.vue
index a33e5bafed..cda8ae00e2 100644
--- a/src/client/ui/chat/note-header.vue
+++ b/src/client/ui/chat/note-header.vue
@@ -62,8 +62,7 @@ export default defineComponent({
display: block;
margin: 0 .5em 0 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 1em;
font-weight: bold;
text-decoration: none;
@@ -92,8 +91,7 @@ export default defineComponent({
> .username {
margin: 0 .5em 0 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
}
diff --git a/src/client/ui/chat/note-preview.vue b/src/client/ui/chat/note-preview.vue
index 6ec66c921b..4861473701 100644
--- a/src/client/ui/chat/note-preview.vue
+++ b/src/client/ui/chat/note-preview.vue
@@ -50,8 +50,7 @@ export default defineComponent({
display: flex;
margin: 0;
padding: 0;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 0.95em;
> .avatar {
diff --git a/src/client/ui/chat/note.vue b/src/client/ui/chat/note.vue
index 75b92a32f2..bd7bbc5a4f 100644
--- a/src/client/ui/chat/note.vue
+++ b/src/client/ui/chat/note.vue
@@ -955,8 +955,7 @@ export default defineComponent({
}
> span {
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
flex-shrink: 1;
text-overflow: ellipsis;
white-space: nowrap;
@@ -1029,8 +1028,7 @@ export default defineComponent({
&.collapsed {
position: relative;
max-height: 9em;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .fade {
display: block;
diff --git a/src/client/ui/deck/column.vue b/src/client/ui/deck/column.vue
index 11e9e536da..d0a39965b1 100644
--- a/src/client/ui/deck/column.vue
+++ b/src/client/ui/deck/column.vue
@@ -268,8 +268,7 @@ export default defineComponent({
--section-padding: 10px;
height: 100%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
contain: content;
&.draghover {
@@ -359,8 +358,7 @@ export default defineComponent({
> .header {
display: inline-block;
align-items: center;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
diff --git a/src/client/ui/visitor/header.vue b/src/client/ui/visitor/header.vue
index 7a57a70360..9a7bf96fc0 100644
--- a/src/client/ui/visitor/header.vue
+++ b/src/client/ui/visitor/header.vue
@@ -125,8 +125,7 @@ export default defineComponent({
display: inline-block;
vertical-align: bottom;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
position: relative;
@@ -207,8 +206,7 @@ export default defineComponent({
> .title {
flex: 1;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
position: relative;
text-align: center;
diff --git a/src/client/widgets/calendar.vue b/src/client/widgets/calendar.vue
index 5bc24cb690..545072e87b 100644
--- a/src/client/widgets/calendar.vue
+++ b/src/client/widgets/calendar.vue
@@ -171,8 +171,7 @@ export default defineComponent({
> .meter {
width: 100%;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
background: var(--X11);
border-radius: 8px;
diff --git a/src/client/widgets/federation.vue b/src/client/widgets/federation.vue
index f05ad65c2f..6e76bc40e9 100644
--- a/src/client/widgets/federation.vue
+++ b/src/client/widgets/federation.vue
@@ -89,8 +89,7 @@ export default defineComponent({
$bodyInfoHieght: 16px;
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .instances {
.chart-move {
@@ -114,8 +113,7 @@ export default defineComponent({
> .body {
flex: 1;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 0.9em;
color: var(--fg);
@@ -123,8 +121,7 @@ export default defineComponent({
display: block;
width: 100%;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
line-height: $bodyTitleHieght;
}
diff --git a/src/client/widgets/rss.vue b/src/client/widgets/rss.vue
index 3ad801efae..1140a4252f 100644
--- a/src/client/widgets/rss.vue
+++ b/src/client/widgets/rss.vue
@@ -80,8 +80,7 @@ export default defineComponent({
color: var(--fg);
white-space: nowrap;
text-overflow: ellipsis;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
&:nth-child(even) {
background: rgba(#000, 0.05);
diff --git a/src/client/widgets/trends.vue b/src/client/widgets/trends.vue
index b5fc6fb6f0..3734573e3c 100644
--- a/src/client/widgets/trends.vue
+++ b/src/client/widgets/trends.vue
@@ -68,8 +68,7 @@ export default defineComponent({
<style lang="scss" scoped>
.wbrkwala {
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
> .tags {
.chart-move {
@@ -84,8 +83,7 @@ export default defineComponent({
> .tag {
flex: 1;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
font-size: 0.9em;
color: var(--fg);
@@ -93,8 +91,7 @@ export default defineComponent({
display: block;
width: 100%;
white-space: nowrap;
- overflow: hidden; // overflow: clip; をSafariが対応したら消す
- overflow: clip;
+ overflow: hidden;
text-overflow: ellipsis;
line-height: 18px;
}
diff --git a/src/docs/fr-FR/aiscript.md b/src/docs/fr-FR/aiscript.md
index cd29b4ebad..8e3843ce88 100644
--- a/src/docs/fr-FR/aiscript.md
+++ b/src/docs/fr-FR/aiscript.md
@@ -1,4 +1,4 @@
# AiScript
## Fonction
-デフォルトで値渡しです。
+Réglé sur « passage par copie » par défaut
diff --git a/src/docs/fr-FR/deck.md b/src/docs/fr-FR/deck.md
index 73e9efdaaf..310463e00e 100644
--- a/src/docs/fr-FR/deck.md
+++ b/src/docs/fr-FR/deck.md
@@ -1,18 +1,18 @@
# Deck
-デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。
+Le deck est une des interfaces utilisateurs disponibles.Sa particularité est de former une interface riche en contenus et hautement personnalisable grâce à l'affichage de plusieurs colonnes.
-## カラムの追加
-デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
+## Ajouter une colonne
+Vous pouvez ajouter une colonne en cliquant avec le clic-droit sur « ajouter une colonne » dans l'arrière-plan du deck.
-## カラムの移動
-カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
+## Déplacer une colonne
+Vous pouvez déplacer une colonne à la place d'une autre en la faisant glisser. Il est en outre possible de réorganiser les colonnes depuis le menu des colonnes — en faisant un clic-droit dans l'en-tête de colonne.
-## カラムの水平分割
-カラムは左右だけでなく、上下に並べることもできます。 カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。 上下分割を解除するには、カラムメニューの「右に出す」を選択します。
+## Division horizontale des colonnes
+Il est possible d'agencer les colonnes horizontalement. Depuis le menu de colonne, cliquez sur « empiler à gauche » pour la déplacer sous la colonne de gauche. Cliquez sur « déplacer à droite » pour annuler.
-## カラムの設定
-カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
+## Configuration de la colonne
+Vous pouvez éditer la configuration de la colonne en cliquant sur « édition » dans le menu de colonne. Vous pourrez y changer le nom ou la largeur de la colonne.
-## デッキの設定
-デッキに関する設定は、[settings/deck](/settings/deck)で行えます。
+## Configuration du deck
+Vous trouverez les options de configuration du deck à [settings/deck](/settings/deck)
diff --git a/src/docs/fr-FR/follow.md b/src/docs/fr-FR/follow.md
index 93c8428e20..0b0766e1be 100644
--- a/src/docs/fr-FR/follow.md
+++ b/src/docs/fr-FR/follow.md
@@ -1,2 +1,2 @@
# Abonnements
-ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。 ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。
+Lorsque vous suivez un utilisateur, les publication de celui-ci apparaissent dans votre fil. Cela n'inclut toutefois pas ses réponses aux autres utilisateurs. Cliquez une nouvelle fois pour vous désabonner.
diff --git a/src/docs/fr-FR/keyboard-shortcut.md b/src/docs/fr-FR/keyboard-shortcut.md
index 35bebbcde2..1223224f44 100644
--- a/src/docs/fr-FR/keyboard-shortcut.md
+++ b/src/docs/fr-FR/keyboard-shortcut.md
@@ -1,68 +1,68 @@
-# キーボードショートカット
+# Raccourcis clavier
-## Global
-これらのショートカットは基本的にどこでも使えます。
+## Général
+Ces raccourcis sont utilisables dans n'importe quel contexte.
<table>
<thead>
- <tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
+ <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead>
<tbody>
- <tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>新規投稿</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr>
- <tr><td><kbd class="key">T</kbd></td><td>タイムラインの最も新しい投稿にフォーカス</td><td><b>T</b>imeline, <b>T</b>op</td></tr>
- <tr><td><kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">N</kbd></kbd></td><td>通知を表示/隠す</td><td><b>N</b>otifications</td></tr>
+ <tr><td><kbd class="key">P</kbd>, <kbd class="key">N</kbd></td><td>Rédiger une nouvelle publication</td><td><b>P</b>ost, <b>N</b>ew, <b>N</b>ote</td></tr>
+ <tr><td><kbd class="key">T</kbd></td><td>Afficher la dernière publication</td><td><b>T</b>imeline, <b>T</b>op</td></tr>
+ <tr><td><kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">N</kbd></kbd></td><td>Afficher/cacher les notifications</td><td><b>N</b>otifications</td></tr>
<tr><td><kbd class="key">S</kbd></td><td>Rechercher</td><td><b>S</b>earch</td></tr>
- <tr><td><kbd class="key">H</kbd>, <kbd class="key">?</kbd></td><td>ヘルプを表示</td><td><b>H</b>elp</td></tr>
+ <tr><td><kbd class="key">H</kbd>, <kbd class="key">?</kbd></td><td>Afficher l'aide</td><td><b>H</b>elp</td></tr>
</tbody>
</table>
-## 投稿にフォーカスされた状態
+## Actions concernant les publications
<table>
<thead>
- <tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
+ <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead>
<tbody>
- <tr><td><kbd class="key">↑</kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>上の投稿にフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">↓</kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>下の投稿にフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">R</kbd></td><td>返信フォームを開く</td><td><b>R</b>eply</td></tr>
- <tr><td><kbd class="key">Q</kbd></td><td>Renoteフォームを開く</td><td><b>Q</b>uote</td></tr>
- <tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>即刻Renoteする(フォームを開かずに)</td><td>-</td></tr>
- <tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</td></tr>
- <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションをする(対応については後述)</td><td>-</td></tr>
- <tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
- <tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>投稿を削除</td><td><b>D</b>elete</tr>
- <tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
- <tr><td><kbd class="key">S</kbd></td><td>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</td></tr>
- <tr><td><kbd class="key">Esc</kbd></td><td>フォーカスを外す</td><td>-</td></tr>
+ <tr><td><kbd class="key">↑</kbd>, <kbd class="key">K</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>Déplacer le focus sur la publication du dessus</td><td>-</td></tr>
+ <tr><td><kbd class="key">↓</kbd>, <kbd class="key">J</kbd>, <kbd class="key">Tab</kbd></td><td>Déplacer le focus sur la publication du dessous</td><td>-</td></tr>
+ <tr><td><kbd class="key">R</kbd></td><td>Ouvrir la fenêtre de réponse</td><td><b>R</b>eply</td></tr>
+ <tr><td><kbd class="key">Q</kbd></td><td>Ouvrir la fenêtre de Renote</td><td><b>Q</b>uote</td></tr>
+ <tr><td><kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">Q</kbd></kbd></td><td>Renote rapide (sans ouvrir de fenêtre)</td><td>-</td></tr>
+ <tr><td><kbd class="key">E</kbd>, <kbd class="key">A</kbd>, <kbd class="key">+</kbd></td><td>Ouvrir la fenêtre de réactions</td><td><b>E</b>mote, re<b>A</b>ction</td></tr>
+ <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>Utiliser la réaction attribuée au chiffre</td><td>-</td></tr>
+ <tr><td><kbd class="key">F</kbd>, <kbd class="key">B</kbd></td><td>Ajouter à mes favoris</td><td><b>F</b>avorite, <b>B</b>ookmark</td></tr>
+ <tr><td><kbd class="key">Del</kbd>, <kbd class="group"><kbd class="key">Ctrl</kbd> + <kbd class="key">D</kbd></kbd></td><td>Supprimer la publication</td><td><b>D</b>elete</tr>
+ <tr><td><kbd class="key">M</kbd>, <kbd class="key">O</kbd></td><td>Ouvrir le menu des publications</td><td><b>M</b>ore, <b>O</b>ther</td></tr>
+ <tr><td><kbd class="key">S</kbd></td><td>Afficher ou cacher le contenu marqué CW</td><td><b>S</b>how, <b>S</b>ee</td></tr>
+ <tr><td><kbd class="key">Esc</kbd></td><td>Quitter le focus</td><td>-</td></tr>
</tbody>
</table>
-## Renoteフォーム
+## Formulaire de Renote
<table>
<thead>
- <tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
+ <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead>
<tbody>
- <tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</td><td>-</td></tr>
- <tr><td><kbd class="key">Q</kbd></td><td>フォームを展開する</td><td><b>Q</b>uote</td></tr>
- <tr><td><kbd class="key">Esc</kbd></td><td>フォームを閉じる</td><td>-</td></tr>
+ <tr><td><kbd class="key">Enter</kbd></td><td>Renoter</td><td>-</td></tr>
+ <tr><td><kbd class="key">Q</kbd></td><td>Ouvrir la fenêtre</td><td><b>Q</b>uote</td></tr>
+ <tr><td><kbd class="key">Esc</kbd></td><td>Fermer la fenêtre</td><td>-</td></tr>
</tbody>
</table>
-## リアクションフォーム
-デフォルトで「👍」にフォーカスが当たっている状態です。
+## Fenêtre de réactions
+La réaction sélectionnée par défaut est « 👍 ».
<table>
<thead>
- <tr><th>ショートカット</th><th>効果</th><th>由来</th></tr>
+ <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead>
<tbody>
- <tr><td><kbd class="key">↑</kbd>, <kbd class="key">K</kbd></td><td>上のリアクションにフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">↓</kbd>, <kbd class="key">J</kbd></td><td>下のリアクションにフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">←</kbd>, <kbd class="key">H</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>左のリアクションにフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">→</kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>右のリアクションにフォーカスを移動</td><td>-</td></tr>
- <tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>リアクション確定</td><td>-</td></tr>
- <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>数字に対応したリアクションで確定</td><td>-</td></tr>
- <tr><td><kbd class="key">Esc</kbd></td><td>リアクションするのをやめる</td><td>-</td></tr>
+ <tr><td><kbd class="key">↑</kbd>, <kbd class="key">K</kbd></td><td>Déplacer le focus vers la réaction du dessus</td><td>-</td></tr>
+ <tr><td><kbd class="key">↓</kbd>, <kbd class="key">J</kbd></td><td>Déplacer le focus vers la réaction du dessous</td><td>-</td></tr>
+ <tr><td><kbd class="key">←</kbd>, <kbd class="key">H</kbd>, <kbd class="group"><kbd class="key">Shift</kbd> + <kbd class="key">Tab</kbd></kbd></td><td>Déplacer le focus vers la réaction de gauche</td><td>-</td></tr>
+ <tr><td><kbd class="key">→</kbd>, <kbd class="key">L</kbd>, <kbd class="key">Tab</kbd></td><td>Déplacer le focus vers la réaction de droite</td><td>-</td></tr>
+ <tr><td><kbd class="key">Enter</kbd>, <kbd class="key">Space</kbd>, <kbd class="key">+</kbd></td><td>Sélectionner la réaction</td><td>-</td></tr>
+ <tr><td><kbd class="key">0</kbd>~<kbd class="key">9</kbd></td><td>Utiliser la réaction correspondant au chiffre</td><td>-</td></tr>
+ <tr><td><kbd class="key">Esc</kbd></td><td>Annuler la réaction</td><td>-</td></tr>
</tbody>
</table>
diff --git a/src/docs/fr-FR/mfm.md b/src/docs/fr-FR/mfm.md
index e237287acc..107911c0ad 100644
--- a/src/docs/fr-FR/mfm.md
+++ b/src/docs/fr-FR/mfm.md
@@ -1,2 +1,2 @@
# MFM
-MFMは、Misskey Flavored Markdownの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。 MFMで使用可能な構文は[MFMチートシート](/mfm-cheat-sheet)で確認できます。
+MFM – abréviation de Misskey Flavored Markdown – est un langage Markdown spécifique utilisable ici et là dans Misskey. Vous pouvez vérifier les structures utilisables dans [l'antisèche MFM](/mfm-cheat-sheet).
diff --git a/src/docs/fr-FR/mute.md b/src/docs/fr-FR/mute.md
index 051dddfa92..1374abb08e 100644
--- a/src/docs/fr-FR/mute.md
+++ b/src/docs/fr-FR/mute.md
@@ -1,13 +1,13 @@
-# Mettre en sourdine
+# Ignorer
-ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
+Le contenu afférent à un utilisateur ne vous sera plus présenté dès lors que vous l'ignorez :
-* タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
-* そのユーザーからの通知
-* メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
+* les publications de cet utilisateur dans le fil ou les résultats de recherche, de même que ses réponses et Renotes ;
+* les notifications touchant à cet utilisateur ;
+* l'historique des messages avec cet utilisateur.
-ユーザーをミュートするには、対象のユーザーのユーザーページに表示されている「ミュート」ボタンを押します。
+Pour ignorer un utilisateur, utilisez le bouton « ignorer » de sa page de profil.
-ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
+L'utilisateur que vous ignorez ne sera pas prévenu. De même, vous ne serez pas prévenu lorsque vous serez ignoré par un autre utilisateur.
-設定>ミュート から、自分がミュートしているユーザー一覧を確認することができます。
+Vous pouvez vérifier la liste des utilisateurs ignorés depuis l'onglet « ignorés » de vos paramètres.
diff --git a/src/docs/fr-FR/reaction.md b/src/docs/fr-FR/reaction.md
index d0df055304..ee98405607 100644
--- a/src/docs/fr-FR/reaction.md
+++ b/src/docs/fr-FR/reaction.md
@@ -1,8 +1,8 @@
# Réactions
-他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。 リアクションするには、ノートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。 リアクションには[カスタム絵文字](./custom-emoji)も使用できます。
+Les réactions vous permettent d'interagir facilement avec les notes des autres utilisateurs en y attribuant des émoticônes. Pour réagir, cliquez sur le « + » de la note afin d'afficher le panneau de sélection puis choisissez une émoticône. Il est également possible d'utiliser des [émoticônes personnalisées](./custom-emoji).
-## リアクションピッカーのカスタマイズ
-ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。 設定の「リアクション」で設定します。
+## Personnalisation du panneau de réactions
+Il est possible de choisir les émoticônes affichés dans le panneau de réactions dans l'onglet « réactions » des paramètres.
## リモート投稿へのリアクションについて
リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。
diff --git a/src/docs/fr-FR/theme.md b/src/docs/fr-FR/theme.md
index 9c706c826e..4fd1c211c7 100644
--- a/src/docs/fr-FR/theme.md
+++ b/src/docs/fr-FR/theme.md
@@ -1,11 +1,11 @@
# Thème
-テーマを設定して、Misskeyクライアントの見た目を変更できます。
+Vous pouvez modifier l'apparence de votre client Misskey à l'aide de thèmes.
-## テーマの設定
-設定 > テーマ
+## Paramètres de thème
+Paramètres > Thèmes
-## テーマを作成する
+## Créer un thème
テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
``` js
{
@@ -33,13 +33,13 @@
```
-* `id` ... テーマの一意なID。UUIDをおすすめします。
-* `name` ... テーマ名
-* `author` ... テーマの作者
-* `desc` ... テーマの説明(オプション)
-* `base` ... 明るいテーマか、暗いテーマか
- * `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
- * テーマはここで設定されたベーステーマを継承します。
+* `id` ... L'identifiant unique du thème. L'utilisation d'un UUID est recommandée ;
+* `name` ... Nom du thème ;
+* `author` ... Auteur du thème ;
+* `desc` ... Description du thème (facultatif) ;
+* `base` ... Thème clair ou sombre :
+ * Sélectionnez `light` pour définir le thème comme thème clair et `dark` pour le définir comme sombre,
+ * Le thème héritera des valeurs par défaut du thème spécifié ici ;
* `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義
diff --git a/src/docs/fr-FR/timelines.md b/src/docs/fr-FR/timelines.md
index c674db8240..308dccaaa0 100644
--- a/src/docs/fr-FR/timelines.md
+++ b/src/docs/fr-FR/timelines.md
@@ -1,15 +1,15 @@
-# タイムラインの比較
+# Comparaison des fils
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## Principal
-自分のフォローしているユーザーの投稿
+Les publications des utilisateurs que vous suivez
## Local
-全てのローカルユーザーの「ホーム」指定されていない投稿
+Les publications des utilisateurs de votre instance. Les notes publiées avec le statut « principal » n'y sont pas affichées.
## Social
-自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿
+Regroupe le fil principal et le fil local
## Global
-全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿
+Toutes les publications reçues par l'instance, qu'elles soient locales ou non. Les notes publiées avec le statut « principal » n'y sont pas affichées.
diff --git a/src/server/web/bios.css b/src/server/web/bios.css
new file mode 100644
index 0000000000..b0da3ee39b
--- /dev/null
+++ b/src/server/web/bios.css
@@ -0,0 +1,40 @@
+* {
+ font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
+}
+
+html {
+ background: #ffb4e1;
+}
+
+main {
+ background: #dedede;
+}
+main > .tabs {
+ padding: 16px;
+ border-bottom: solid 4px #c3c3c3;
+}
+
+#lsEditor > .adder {
+ margin: 16px;
+ padding: 16px;
+ border: solid 2px #c3c3c3;
+}
+#lsEditor > .adder > textarea {
+ display: block;
+ width: 100%;
+ min-height: 5em;
+ box-sizing: border-box;
+}
+#lsEditor > .record {
+ padding: 16px;
+ border-bottom: solid 1px #c3c3c3;
+}
+#lsEditor > .record > header {
+ font-weight: bold;
+}
+#lsEditor > .record > textarea {
+ display: block;
+ width: 100%;
+ min-height: 5em;
+ box-sizing: border-box;
+}
diff --git a/src/server/web/bios.js b/src/server/web/bios.js
new file mode 100644
index 0000000000..d06dee801a
--- /dev/null
+++ b/src/server/web/bios.js
@@ -0,0 +1,87 @@
+'use strict';
+
+window.onload = async () => {
+ const account = JSON.parse(localStorage.getItem('account'));
+ const i = account.token;
+
+ const api = (endpoint, data = {}) => {
+ const promise = new Promise((resolve, reject) => {
+ // Append a credential
+ if (i) data.i = i;
+
+ // Send request
+ fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
+ method: 'POST',
+ body: JSON.stringify(data),
+ credentials: 'omit',
+ cache: 'no-cache'
+ }).then(async (res) => {
+ const body = res.status === 204 ? null : await res.json();
+
+ if (res.status === 200) {
+ resolve(body);
+ } else if (res.status === 204) {
+ resolve();
+ } else {
+ reject(body.error);
+ }
+ }).catch(reject);
+ });
+
+ return promise;
+ };
+
+ const content = document.getElementById('content');
+
+ document.getElementById('ls').addEventListener('click', () => {
+ content.innerHTML = '';
+
+ const lsEditor = document.createElement('div');
+ lsEditor.id = 'lsEditor';
+
+ const adder = document.createElement('div');
+ adder.classList.add('adder');
+ const addKeyInput = document.createElement('input');
+ const addValueTextarea = document.createElement('textarea');
+ const addButton = document.createElement('button');
+ addButton.textContent = 'add';
+ addButton.addEventListener('click', () => {
+ localStorage.setItem(addKeyInput.value, addValueTextarea.value);
+ location.reload();
+ });
+
+ adder.appendChild(addKeyInput);
+ adder.appendChild(addValueTextarea);
+ adder.appendChild(addButton);
+ lsEditor.appendChild(adder);
+
+ for (let i = 0; i < localStorage.length; i++) {
+ const k = localStorage.key(i);
+ const record = document.createElement('div');
+ record.classList.add('record');
+ const header = document.createElement('header');
+ header.textContent = k;
+ const textarea = document.createElement('textarea');
+ textarea.textContent = localStorage.getItem(k);
+ const saveButton = document.createElement('button');
+ saveButton.textContent = 'save';
+ saveButton.addEventListener('click', () => {
+ localStorage.setItem(k, textarea.value);
+ location.reload();
+ });
+ const removeButton = document.createElement('button');
+ removeButton.textContent = 'remove';
+ removeButton.addEventListener('click', () => {
+ localStorage.removeItem(k);
+ location.reload();
+ });
+ record.appendChild(header);
+ record.appendChild(textarea);
+ record.appendChild(saveButton);
+ record.appendChild(removeButton);
+ lsEditor.appendChild(record);
+ }
+
+ content.appendChild(lsEditor);
+ });
+};
diff --git a/src/server/web/boot.js b/src/server/web/boot.js
index 6347c5566e..1c94e6e4f4 100644
--- a/src/server/web/boot.js
+++ b/src/server/web/boot.js
@@ -11,12 +11,15 @@
'use strict';
-window.onerror = (e) => {
- document.documentElement.innerHTML = '問題が発生しました。';
-};
-
// ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
(async () => {
+ window.onerror = (e) => {
+ renderError('SOMETHING_HAPPENED', e.toString());
+ };
+ window.onunhandledrejection = (e) => {
+ renderError('SOMETHING_HAPPENED_IN_PROMISE', e.toString());
+ };
+
const v = localStorage.getItem('v') || VERSION;
//#region Detect language & fetch translations
@@ -38,9 +41,17 @@ window.onerror = (e) => {
}
const res = await fetch(`/assets/locales/${lang}.${v}.json`);
- localStorage.setItem('lang', lang);
- localStorage.setItem('locale', await res.text());
- localStorage.setItem('localeVersion', v);
+ if (res.status === 200) {
+ localStorage.setItem('lang', lang);
+ localStorage.setItem('locale', await res.text());
+ localStorage.setItem('localeVersion', v);
+ } else if (localeOutdated) {
+ // nop
+ } else {
+ renderError('LOCALE_FETCH_FAILED');
+ checkUpdate();
+ return;
+ }
}
//#endregion
@@ -56,24 +67,8 @@ window.onerror = (e) => {
script.setAttribute('async', 'true');
script.setAttribute('defer', 'true');
script.addEventListener('error', async () => {
- document.documentElement.innerHTML = '読み込みに失敗しました。';
-
- // TODO: サーバーが落ちている場合などのエラーハンドリング
- const res = await fetch('/api/meta', {
- method: 'POST',
- cache: 'no-cache'
- });
-
- const meta = await res.json();
-
- if (meta.version != v) {
- localStorage.setItem('v', meta.version);
- alert(
- 'Misskeyの新しいバージョンがあります。ページを再度読み込みします。' +
- '\n\n' +
- 'New version of Misskey available. The page will be reloaded.');
- refresh();
- }
+ renderError('APP_FETCH_FAILED');
+ checkUpdate();
});
head.appendChild(script);
//#endregion
@@ -113,6 +108,44 @@ window.onerror = (e) => {
}
// eslint-disable-next-line no-inner-declarations
+ function renderError(code, details) {
+ document.documentElement.innerHTML = `
+ <h1>⚠エラーが発生しました</h1>
+ <p>問題が解決しない場合は管理者までお問い合わせください。以下のオプションを試すこともできます:</p>
+ <ul>
+ <li><a href="/cli">簡易クライアント</a>を起動</li>
+ <li><a href="/bios">BIOS</a>で修復を試みる</li>
+ <li><a href="/flush">キャッシュをクリア</a>する</li>
+ </ul>
+ <hr>
+ <code>ERROR CODE: ${code}</code>
+ <details>
+ ${details}
+ </details>
+ `;
+ }
+
+ // eslint-disable-next-line no-inner-declarations
+ async function checkUpdate() {
+ // TODO: サーバーが落ちている場合などのエラーハンドリング
+ const res = await fetch('/api/meta', {
+ method: 'POST',
+ cache: 'no-cache'
+ });
+
+ const meta = await res.json();
+
+ if (meta.version != v) {
+ localStorage.setItem('v', meta.version);
+ alert(
+ 'Misskeyの新しいバージョンがあります。ページを再度読み込みします。' +
+ '\n\n' +
+ 'New version of Misskey available. The page will be reloaded.');
+ refresh();
+ }
+ }
+
+ // eslint-disable-next-line no-inner-declarations
function refresh() {
// Random
localStorage.setItem('salt', Math.random().toString().substr(2, 8));
diff --git a/src/server/web/cli.css b/src/server/web/cli.css
new file mode 100644
index 0000000000..07cd27830b
--- /dev/null
+++ b/src/server/web/cli.css
@@ -0,0 +1,19 @@
+* {
+ font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
+}
+
+html {
+ background: #ffb4e1;
+}
+
+main {
+ background: #dedede;
+}
+
+#tl > div {
+ padding: 16px;
+ border-bottom: solid 1px #c3c3c3;
+}
+#tl > div > header {
+ font-weight: bold;
+}
diff --git a/src/server/web/cli.js b/src/server/web/cli.js
new file mode 100644
index 0000000000..3dff1d4860
--- /dev/null
+++ b/src/server/web/cli.js
@@ -0,0 +1,55 @@
+'use strict';
+
+window.onload = async () => {
+ const account = JSON.parse(localStorage.getItem('account'));
+ const i = account.token;
+
+ const api = (endpoint, data = {}) => {
+ const promise = new Promise((resolve, reject) => {
+ // Append a credential
+ if (i) data.i = i;
+
+ // Send request
+ fetch(endpoint.indexOf('://') > -1 ? endpoint : `/api/${endpoint}`, {
+ method: 'POST',
+ body: JSON.stringify(data),
+ credentials: 'omit',
+ cache: 'no-cache'
+ }).then(async (res) => {
+ const body = res.status === 204 ? null : await res.json();
+
+ if (res.status === 200) {
+ resolve(body);
+ } else if (res.status === 204) {
+ resolve();
+ } else {
+ reject(body.error);
+ }
+ }).catch(reject);
+ });
+
+ return promise;
+ };
+
+ document.getElementById('submit').addEventListener('click', () => {
+ api('notes/create', {
+ text: document.getElementById('text').value
+ }).then(() => {
+ location.reload();
+ });
+ });
+
+ api('notes/timeline').then(notes => {
+ const tl = document.getElementById('tl');
+ for (const note of notes) {
+ const el = document.createElement('div');
+ const name = document.createElement('header');
+ name.textContent = `${note.user.name} @${note.user.username}`;
+ const text = document.createElement('div');
+ text.textContent = `${note.text}`;
+ el.appendChild(name);
+ el.appendChild(text);
+ tl.appendChild(el);
+ }
+ });
+};
diff --git a/src/server/web/index.ts b/src/server/web/index.ts
index 8ea7e15751..a1d79100a6 100644
--- a/src/server/web/index.ts
+++ b/src/server/web/index.ts
@@ -376,6 +376,18 @@ router.get('/info', async ctx => {
});
});
+router.get('/bios', async ctx => {
+ await ctx.render('bios', {
+ version: config.version,
+ });
+});
+
+router.get('/cli', async ctx => {
+ await ctx.render('cli', {
+ version: config.version,
+ });
+});
+
const override = (source: string, target: string, depth: number = 0) =>
[, ...target.split('/').filter(x => x), ...source.split('/').filter(x => x).splice(depth)].join('/');
diff --git a/src/server/web/views/bios.pug b/src/server/web/views/bios.pug
new file mode 100644
index 0000000000..d81a3ee67f
--- /dev/null
+++ b/src/server/web/views/bios.pug
@@ -0,0 +1,20 @@
+doctype html
+
+html
+
+ head
+ meta(charset='utf-8')
+ meta(name='application-name' content='Misskey')
+ title Misskey BIOS
+ style
+ include ../bios.css
+ script
+ include ../bios.js
+
+ body
+ header
+ h1 Misskey BIOS #{version}
+ main
+ div.tabs
+ button#ls edit local storage
+ div#content
diff --git a/src/server/web/views/cli.pug b/src/server/web/views/cli.pug
new file mode 100644
index 0000000000..d2cf7c4335
--- /dev/null
+++ b/src/server/web/views/cli.pug
@@ -0,0 +1,21 @@
+doctype html
+
+html
+
+ head
+ meta(charset='utf-8')
+ meta(name='application-name' content='Misskey')
+ title Misskey Cli
+ style
+ include ../cli.css
+ script
+ include ../cli.js
+
+ body
+ header
+ h1 Misskey Cli #{version}
+ main
+ div#form
+ textarea#text
+ button#submit submit
+ div#tl
diff --git a/yarn.lock b/yarn.lock
index b8edcb8501..761a8349aa 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -214,6 +214,11 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
+"@cto.af/textdecoder@^0.0.0":
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/@cto.af/textdecoder/-/textdecoder-0.0.0.tgz#e1e8d84c936c30a0f4619971f19ca41941af9fdc"
+ integrity sha512-sJpx3F5xcVV/9jNYJQtvimo4Vfld/nD3ph+ZWtQzZ03Zo8rJC7QKQTRcIGS13Rcz80DwFNthCWMrd58vpY4ZAQ==
+
"@discoveryjs/json-ext@^0.5.0":
version "0.5.2"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
@@ -2390,12 +2395,13 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
-cbor@7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.1.tgz#b939a0ae1ce9bb76338e1d193ab2ccd9a85d55d0"
- integrity sha512-+SVEDS4B2x9aat+if8rtUbm8WdxArH2/tVKiSD8eCxy7hnVNlESd4EQQM16EOFrUCvSHECscsvq61N1FPejZtw==
+cbor@7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.3.tgz#216d292f2aedd1bb61414a8f949b63e4de11b33b"
+ integrity sha512-Io+lJytjYBJKgJqZQUz2bFaMPj+HtlsnT9kHSUiIJFqzWa05lm5/ycQ+NiZWpks3DR2Fz7j7axiTGeT57w/syg==
dependencies:
- nofilter "^2.0.0"
+ "@cto.af/textdecoder" "^0.0.0"
+ nofilter "^2.0.3"
center-align@^0.1.1:
version "0.1.3"
@@ -7000,10 +7006,12 @@ nodemailer@6.5.0:
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9"
integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==
-nofilter@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.0.tgz#57a2d7c6fcd34dd396f490d6942c4f58640b5823"
- integrity sha512-i3ck2PUWBa+trsGGBvwS3msnTowbFei5G++BgpOpT7y7VTrprXphMQP5svTdsMLdttKDZFo+5RqVWRqhmf+BwQ==
+nofilter@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.3.tgz#f5460f3cb33147005883e3f5d4476239501fa187"
+ integrity sha512-FbuXC+lK+GU2+63D1kC1ETiZo+Z7SIi7B+mxKTCH1byrh6WFvfBCN/wpherFz0a0bjGd7EKTst/cz0yLeNngug==
+ dependencies:
+ "@cto.af/textdecoder" "^0.0.0"
noop-logger@^0.1.1:
version "0.1.1"
@@ -10982,10 +10990,10 @@ vue-prism-editor@2.0.0-alpha.2:
resolved "https://registry.yarnpkg.com/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz#aa53a88efaaed628027cbb282c2b1d37fc7c5c69"
integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==
-vue-router@4.0.3:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.3.tgz#8b26050c88b2dec7e27a88835f71046b365823ec"
- integrity sha512-AD1OjtVPyQHTSpoRsEGfPpxRQwhAhxcacOYO3zJ3KNkYP/r09mileSp6kdMQKhZWP2cFsPR3E2M3PZguSN5/ww==
+vue-router@4.0.4:
+ version "4.0.4"
+ resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.4.tgz#ad9b4b7bbdad622407b4ff189b1646f48c1e9053"
+ integrity sha512-uN6PDEaYdU9aRO7mU+Dkr1uaY49hV3fucEDG/Vre/Qj8ct3RoJS16vcPrvKVzn69zDDjBV5b9Xw7fZA9r6b/Iw==
vue-style-loader@4.1.2:
version "4.1.2"