Merge branch 'develop' into sw-notification-action

This commit is contained in:
tamaina 2021-03-03 13:41:12 +09:00
commit 35fe912e5f
88 changed files with 757 additions and 435 deletions

View file

@ -45,7 +45,7 @@ gulp.task('build:copy:locales', cb => {
}); });
gulp.task('build:client:script', () => { 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('VERSION', JSON.stringify(meta.version)))
.pipe(replace('LANGS', JSON.stringify(Object.keys(locales)))) .pipe(replace('LANGS', JSON.stringify(Object.keys(locales))))
.pipe(terser({ .pipe(terser({
@ -55,7 +55,7 @@ gulp.task('build:client:script', () => {
}); });
gulp.task('build:client:style', () => { 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(cssnano())
.pipe(gulp.dest('./built/server/web/')); .pipe(gulp.dest('./built/server/web/'));
}); });

View file

@ -17,7 +17,7 @@ noNotes: "Aucune note"
noNotifications: "Aucune notification" noNotifications: "Aucune notification"
instance: "Instance" instance: "Instance"
settings: "Paramètres" settings: "Paramètres"
basicSettings: "Paramètres basiques" basicSettings: "Paramètres généraux"
otherSettings: "Autres paramètres" otherSettings: "Autres paramètres"
openInWindow: "Ouvrir dans une nouvelle fenêtre" openInWindow: "Ouvrir dans une nouvelle fenêtre"
profile: "Profil" profile: "Profil"
@ -34,7 +34,7 @@ addUser: "Ajouter un·e utilisateur·rice"
favorite: "Ajouter aux favoris" favorite: "Ajouter aux favoris"
favorites: "Favoris" favorites: "Favoris"
unfavorite: "Retirer des favoris" unfavorite: "Retirer des favoris"
favorited: "Ajouter à mes favoris" favorited: "Ajouté à mes favoris"
alreadyFavorited: "Déjà ajouté aux favoris." alreadyFavorited: "Déjà ajouté aux favoris."
cantFavorite: "Impossible d'ajouter aux favoris." cantFavorite: "Impossible d'ajouter aux favoris."
pin: "Épingler sur le profil" pin: "Épingler sur le profil"
@ -62,7 +62,7 @@ import: "Importer"
export: "Exporter" export: "Exporter"
files: "Fichiers" files: "Fichiers"
download: "Télécharger" 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} ?" unfollowConfirm: "Désirez-vous vous désabonner de {name} ?"
exportRequested: "Vous avez demandé une exportation. Lopération pourrait prendre un peu de temps. Une terminée, le fichier résultant sera ajouté au Drive." exportRequested: "Vous avez demandé une exportation. Lopé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." importRequested: "Vous avez initié un import. Cela pourrait prendre un peu de temps."
@ -88,12 +88,13 @@ follow: "Sabonner"
followRequest: "Demande dabonnement" followRequest: "Demande dabonnement"
followRequests: "Demandes dabonnement" followRequests: "Demandes dabonnement"
unfollow: "Se désabonner" unfollow: "Se désabonner"
followRequestPending: "En attente dapprobation" followRequestPending: "Demande d'abonnement en attente de confirmation"
enterEmoji: "ou entrez un émoji" enterEmoji: "Insérer un émoji"
renote: "Renote" renote: "Partager"
unrenote: "Annuler Renote" unrenote: "Annuler le partage"
renoted: "Republier" renoted: "Republié !"
cantRenote: "Ce message ne peut pas être republié." cantRenote: "Ce message ne peut pas être republié."
cantReRenote: "Impossible de repartager un partage."
quote: "Citer" quote: "Citer"
pinnedNote: "Note épinglée" pinnedNote: "Note épinglée"
pinned: "Épingler sur le profil" pinned: "Épingler sur le profil"
@ -103,13 +104,14 @@ sensitive: "Contenu sensible"
add: "Ajouter" add: "Ajouter"
reaction: "Réactions" reaction: "Réactions"
reactionSettingDescription: "Choisissez vos réactions préférées que vous souhaitez épingler dans le sélecteur de 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" rememberNoteVisibility: "Se souvenir de la visibilité des notes"
attachCancel: "Supprimer le fichier attaché" attachCancel: "Supprimer le fichier attaché"
markAsSensitive: "Marquer comme sensible" markAsSensitive: "Marquer comme sensible"
unmarkAsSensitive: "Enlever le marquage comme sensible" unmarkAsSensitive: "Supprimer le marquage comme sensible"
enterFileName: "Entrer le nom du fichier" enterFileName: "Entrer le nom du fichier"
mute: "Mettre en sourdine" mute: "Mettre en sourdine"
unmute: "Enlever la sourdine" unmute: "Ne plus masquer"
block: "Bloquer" block: "Bloquer"
unblock: "Débloquer" unblock: "Débloquer"
suspend: "Suspendre" suspend: "Suspendre"
@ -122,7 +124,7 @@ selectList: "Sélectionner une liste"
selectAntenna: "Sélectionner une antenne" selectAntenna: "Sélectionner une antenne"
selectWidget: "Sélectionner un widget" selectWidget: "Sélectionner un widget"
editWidgets: "Modifier les widgets" editWidgets: "Modifier les widgets"
editWidgetsExit: "Fait" editWidgetsExit: "Valider les modifications"
customEmojis: "Émojis personnalisés" customEmojis: "Émojis personnalisés"
emoji: "Émoji" emoji: "Émoji"
emojiName: "Nom de lémoji" emojiName: "Nom de lémoji"
@ -132,9 +134,9 @@ settingGuide: "Configuration proposée"
cacheRemoteFiles: "Mise en cache des fichiers distants" cacheRemoteFiles: "Mise en cache des fichiers distants"
cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis linstance distante. La désactiver diminuera certes lutilisation de lespace de stockage local mais augmentera le trafic réseau puisque les miniatures ne seront plus générées." cacheRemoteFilesDescription: "Lorsque cette option est désactivée, les fichiers distants sont chargés directement depuis linstance distante. La désactiver diminuera certes lutilisation de lespace 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" 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" 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 dabonnement venant dutilisateur·rice·s que vous suivez" autoAcceptFollowed: "Accepter automatiquement les demandes dabonnement venant dutilisateur·rice·s que vous suivez"
addAcount: "Ajouter un compte" addAcount: "Ajouter un compte"
loginFailed: "Échec de la connexion" 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." 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" host: "Hôte"
selectUser: "Sélectionner un·e utilisateur·rice" selectUser: "Sélectionner un·e utilisateur·rice"
recipient: "Correspondant·e" recipient: "Destinataire"
annotation: "Commentaires" annotation: "Commentaires"
federation: "Fédération" federation: "Fédération"
instances: "Instance" instances: "Instance"
@ -169,7 +171,7 @@ software: "Logiciel"
version: "Version" version: "Version"
metadata: "Métadonnées" metadata: "Métadonnées"
withNFiles: "{n} fichier(s)" withNFiles: "{n} fichier(s)"
monitor: "Écran de contrôle" monitor: "Contrôle"
jobQueue: "File dattente" jobQueue: "File dattente"
cpuAndMemory: "Processeur et mémoire" cpuAndMemory: "Processeur et mémoire"
network: "Réseau" network: "Réseau"
@ -178,9 +180,9 @@ instanceInfo: "Informations sur linstance"
statistics: "Statistiques" statistics: "Statistiques"
clearQueue: "Vider la file dattente" clearQueue: "Vider la file dattente"
clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file dattente ?" clearQueueConfirmTitle: "Êtes-vous sûr·e de vouloir vider la file dattente ?"
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" 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" 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." 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" muteAndBlock: "Masqué·e·s / Bloqué·e·s"
@ -193,7 +195,7 @@ pinLimitExceeded: "Vous ne pouvez plus épingler dautres notes."
intro: "Linstallation de Misskey est terminée ! Veuillez créer un compte administrateur." intro: "Linstallation de Misskey est terminée ! Veuillez créer un compte administrateur."
done: "Terminé" done: "Terminé"
processing: "Traitement en cours" processing: "Traitement en cours"
preview: "Prévisualisation" preview: "Aperçu"
default: "Par défaut" default: "Par défaut"
noCustomEmojis: "Il n'y a pas démoji" noCustomEmojis: "Il n'y a pas démoji"
noJobs: "Il ny a aucune tâche planifiée" noJobs: "Il ny a aucune tâche planifiée"
@ -204,7 +206,7 @@ all: "Tous"
subscribing: "Abonné" subscribing: "Abonné"
publishing: "Publié" publishing: "Publié"
notResponding: "Ne répond pas" notResponding: "Ne répond pas"
instanceFollowing: "Abonnements une instance" instanceFollowing: "Suivre une instance"
instanceFollowers: "Abonné·e·s de linstance" instanceFollowers: "Abonné·e·s de linstance"
instanceUsers: "Utilisateur·rice·s de cette linstance" instanceUsers: "Utilisateur·rice·s de cette linstance"
changePassword: "Modifier votre mot de passe" changePassword: "Modifier votre mot de passe"
@ -217,15 +219,15 @@ attachFile: "Joindre un fichier"
more: "Plus !" more: "Plus !"
featured: "Tendances" featured: "Tendances"
usernameOrUserId: "Nom dutilisateur·rice ou ID utilisateur" usernameOrUserId: "Nom dutilisateur·rice ou ID utilisateur"
noSuchUser: "Utilisateur·rice non trouvé" noSuchUser: "Utilisateur·rice non trouvé·e"
lookup: "Recherche" lookup: "Recherche"
announcements: "Annonces" announcements: "Annonces"
imageUrl: "URL de limage" imageUrl: "URL de limage"
remove: "Supprimer" remove: "Supprimer"
removed: "Supprimé" removed: "Supprimé"
removeAreYouSure: "Supprimer «{x}» ?" removeAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
deleteAreYouSure: "Supprimer «{x}» ?" deleteAreYouSure: "Êtes-vous sûr·e de vouloir supprimer「{x}」?"
resetAreYouSure: "Réinitialiser ?" resetAreYouSure: "Voulez-vous réinitialiser ?"
saved: "Enregistré" saved: "Enregistré"
messaging: "Discuter" messaging: "Discuter"
upload: "Téléverser" upload: "Téléverser"
@ -257,28 +259,28 @@ themeForLightMode: "Thème à utiliser en Mode Clair"
themeForDarkMode: "Thème à utiliser en Mode Sombre" themeForDarkMode: "Thème à utiliser en Mode Sombre"
light: "Clair" light: "Clair"
dark: "Sombre" dark: "Sombre"
lightThemes: "Thème clair" lightThemes: "Thèmes clairs"
darkThemes: "Thème sombre" darkThemes: "Thèmes sombres"
syncDeviceDarkMode: "Synchronisez le mode sombre avec les paramètres de votre appareil" syncDeviceDarkMode: "Utiliser le mode sombre de votre appareil"
drive: "Drive" drive: "Drive"
fileName: "Nom du fichier" fileName: "Nom du fichier"
selectFile: "Choisir le fichier" selectFile: "Choisir le fichier"
selectFiles: "Choisir les fichiers" selectFiles: "Choisir les fichiers"
selectFolder: "Sélectionnez un dossier" selectFolder: "Sélectionnez un dossier"
selectFolders: "Sélectionnez des dossiers" selectFolders: "Sélectionnez des dossiers"
renameFile: "Renommer le ficher" renameFile: "Renommer le fichier"
folderName: "Nom du dossier" folderName: "Nom du dossier"
createFolder: "Créer un dossier" createFolder: "Créer un dossier"
renameFolder: "Renommer le dossier" renameFolder: "Renommer le dossier"
deleteFolder: "Supprimer le dossier" deleteFolder: "Supprimer le dossier"
addFile: "Ajoutez un fichier" addFile: "Ajouter un fichier"
emptyDrive: "Le Drive est vide" emptyDrive: "Le Drive est vide"
emptyFolder: "Le dossier est vide" emptyFolder: "Le dossier est vide"
unableToDelete: "Ne peut pas être supprimé" unableToDelete: "Suppression impossible"
inputNewFileName: "Entrez un nouveau nom de fichier" inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewFolderName: "Entrez un nouveau nom de dossier" inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer." 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 lURL" copyUrl: "Copier lURL"
rename: "Renommer" rename: "Renommer"
avatar: "Avatar" avatar: "Avatar"
@ -288,7 +290,7 @@ whenServerDisconnected: "Lorsque la connexion au serveur est perdue"
disconnectedFromServer: "Déconnecté·e du serveur" disconnectedFromServer: "Déconnecté·e du serveur"
reload: "Rafraîchir" reload: "Rafraîchir"
doNothing: "Ignorer" doNothing: "Ignorer"
reloadConfirm: "Voulez-vous recharger le fil ?" reloadConfirm: "Voulez-vous recharger?"
watch: "Surveiller" watch: "Surveiller"
unwatch: "Ne plus surveiller" unwatch: "Ne plus surveiller"
accept: "Autoriser" accept: "Autoriser"
@ -325,6 +327,9 @@ bannerUrl: "URL de limage de la bannière"
basicInfo: "Informations basiques" basicInfo: "Informations basiques"
pinnedUsers: "Utilisateur·rice épinglé·e" 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." 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" pinnedNotes: "Note épinglée"
hcaptcha: "hCaptcha" hcaptcha: "hCaptcha"
enableHcaptcha: "Activer hCaptcha" enableHcaptcha: "Activer hCaptcha"
@ -354,7 +359,7 @@ notesAndReplies: "Notes et Réponses"
withFiles: "Avec fichiers joints" withFiles: "Avec fichiers joints"
silence: "Mettre en sourdine" silence: "Mettre en sourdine"
silenceConfirm: "Êtes-vous sûr·e de vouloir mettre lutilisateur·rice en sourdine ?" silenceConfirm: "Êtes-vous sûr·e de vouloir mettre lutilisateur·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 ?" unsilenceConfirm: "Êtes-vous sûr·e de vouloir annuler la mise en sourdine de cette utilisateur·rice ?"
popularUsers: "Utilisateur·rice·s populaires" popularUsers: "Utilisateur·rice·s populaires"
recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment" recentlyUpdatedUsers: "Utilisateur·rice·s actif·ve·s récemment"
@ -433,6 +438,7 @@ signinWith: "Connectez-vous avec {x}"
signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects." signinFailed: "Échec dauthentification. Veuillez vérifier que votre nom dutilisateur et mot de passe sont corrects."
tapSecurityKey: "Appuyez sur votre clé de sécurité" tapSecurityKey: "Appuyez sur votre clé de sécurité"
or: "OU" or: "OU"
language: "Langue"
uiLanguage: "Langue daffichage de linterface" uiLanguage: "Langue daffichage de linterface"
groupInvited: "Invité au groupe" groupInvited: "Invité au groupe"
aboutX: "À propos de {x}" 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" objectStorageUseSSLDesc: "Désactivez-le si vous n'utilisez pas HTTPS pour la connexion API"
objectStorageUseProxy: "Se connecter via proxy" objectStorageUseProxy: "Se connecter via proxy"
objectStorageUseProxyDesc: "Désactivez-le si vous n'utilisez pas Proxy pour la connexion de stockage d'objets" 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" serverLogs: "Journaux serveur"
deleteAll: "Supprimer tout" deleteAll: "Supprimer tout"
showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité" showFixedPostForm: "Afficher le formulaire en haut du fil d'actualité"
@ -489,6 +496,7 @@ newNoteRecived: "Vous avez une nouvelle note"
sounds: "Sons" sounds: "Sons"
listen: "Écouter" listen: "Écouter"
none: "Rien" none: "Rien"
showInPage: "Afficher dans la page"
popout: "Fenêtre contextuelle" popout: "Fenêtre contextuelle"
volume: "Volume" volume: "Volume"
masterVolume: "Volume" masterVolume: "Volume"
@ -517,7 +525,7 @@ deleteAllFilesConfirm: "Êtes vous surs de vouloir supprimer tous les fichiers ?
removeAllFollowing: "Retenir tous les abonnements" removeAllFollowing: "Retenir tous les abonnements"
removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si linstance nexiste plus." removeAllFollowingDescription: "Se désabonner de tous les comptes de {host}. Veuillez lancer cette action uniquement si linstance nexiste plus."
userSuspended: "Cette utilisateur·trice a été suspendue." 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" sidebar: "Barre latérale"
divider: "Séparateur" divider: "Séparateur"
addItem: "Ajouter élément" addItem: "Ajouter élément"
@ -545,6 +553,7 @@ plugins: "Extensions"
deck: "Deck" deck: "Deck"
undeck: "Quitter le deck" undeck: "Quitter le deck"
useBlurEffectForModal: "Utiliser un effet de flou pour les modals" useBlurEffectForModal: "Utiliser un effet de flou pour les modals"
useFullReactionPicker: "Utiliser l'intégralité du panneau de réactions"
width: "Largeur" width: "Largeur"
height: "Hauteur" height: "Hauteur"
large: "Grand" 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." 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" other: "Autre"
regenerateLoginToken: "Régénérer le jeton de connexion" 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 dun, séparés par des espaces." setMultipleBySeparatingWithSpace: "Vous pouvez définir plus dun, séparés par des espaces."
fileIdOrUrl: "ID du fichier ou URL" fileIdOrUrl: "ID du fichier ou URL"
chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture" chatOpenBehavior: "Comportement de la fenêtre de discussion lors de son ouverture"
behavior: "Comportement"
abuseReports: "Signalements" abuseReports: "Signalements"
reportAbuse: "Signalements" reportAbuse: "Signalements"
reportAbuseOf: "Signaler {name}" 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" send: "Envoyer"
abuseMarkAsResolved: "Marquer le signalement comme résolu" abuseMarkAsResolved: "Marquer le signalement comme résolu"
openInNewTab: "Ouvrir dans un nouvel onglet" 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}" waitingFor: "En attente de {x}"
random: "Aléatoire" random: "Aléatoire"
system: "Système"
switchUi: "Modifier l'interface utilisateur"
desktop: "Bureau"
clip: "Clip" clip: "Clip"
optional: "Facultatif"
createNewClip: "Créer un nouveau clip" createNewClip: "Créer un nouveau clip"
public: "Public" 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" manageAccessTokens: "Gérer les jetons d'accès"
accountInfo: " Informations du compte " accountInfo: " Informations du compte "
notesCount: "Nombre de notes" notesCount: "Nombre de notes"
repliesCount: "Nombre de réponses envoyées" repliesCount: "Nombre de réponses envoyées"
renotesCount: "Nombre de notes repartagées" renotesCount: "Nombre de notes repartagées"
repliedCount: "Nombre de réponses reçues" repliedCount: "Nombre de réponses reçues"
renotedCount: "Nombre de Renotes"
followingCount: "Nombre de comptes suivis" 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" driveFilesCount: "Nombre de fichiers dans le Drive"
driveUsage: "Utilisation du Drive"
noCrawle: "Refuser l'indexation par les robots" 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." 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." 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" loadRawImages: "Affichage complet des images jointes au lieu des vignettes"
disableShowingAnimatedImages: "Désactiver l'animation des images" 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." 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" notSet: "Non défini"
emailVerified: "Votre adresse e-mail a été vérifiée." 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" clips: "Clip"
experimentalFeatures: "Fonctionnalités expérimentales" experimentalFeatures: "Fonctionnalités expérimentales"
developer: "Développeur" developer: "Développeur"
@ -631,6 +668,7 @@ left: "Gauche"
center: "Centrer" center: "Centrer"
wide: "Large" wide: "Large"
narrow: "Condensé" narrow: "Condensé"
reloadToApplySetting: "Vos paramètres seront appliqués lorsque vous rechargerez la page. Souhaitez-vous recharger ?"
showTitlebar: "Afficher la barre de titre" showTitlebar: "Afficher la barre de titre"
clearCache: "Vider le cache" clearCache: "Vider le cache"
onlineUsersCount: "{n} utilisateur(s) en ligne" onlineUsersCount: "{n} utilisateur(s) en ligne"
@ -640,18 +678,43 @@ sendErrorReports: "Envoyer les rapports derreur"
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." 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" myTheme: "Mes thèmes"
backgroundColor: "Arrière-plan" backgroundColor: "Arrière-plan"
accentColor: "Accentuation"
textColor: "Texte" textColor: "Texte"
saveAs: "Enregistrer sous ..." saveAs: "Enregistrer sous ..."
advanced: "Avancé" advanced: "Avancé"
value: "Valeur" value: "Valeur"
updatedAt: "Mis à jour le"
saveConfirm: "Voulez-vous sauvegarder les modifications?" saveConfirm: "Voulez-vous sauvegarder les modifications?"
deleteConfirm: "Confirmez-vous la suppression?"
invalidValue: "Cette valeur est invalide."
registry: "Registre"
closeAccount: "Fermer le compte" 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" usageAmount: "Utilisation"
capacity: "Capacité " capacity: "Capacité "
inUse: "utilisé" 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: _email:
_follow: _follow:
title: "Vous suit" title: "Vous suit"
_receiveFollowRequest:
title: "Vous avez reçu une demande de suivi"
_plugin:
install: "Installation de plugin"
installWarn: "Ninstallez que des extensions provenant de sources de confiance."
manage: "Gestion des plugins"
_registry: _registry:
key: "Clé " key: "Clé "
keys: "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 ! 🥰" morePatrons: "Nous apprécions vraiment le soutien de nombreuses autres personnes non mentionnées ici. Merci à toutes et à tous ! 🥰"
patrons: "Contributeurs" patrons: "Contributeurs"
_nsfw: _nsfw:
respect: "Cacher les médias sensibles" respect: "Cacher les médias marqués comme contenu sensible"
ignore: "Afficher les médias sensibles" ignore: "Afficher les médias sensibles"
force: "Cacher tous les médias" force: "Cacher tous les médias"
_mfm: _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" mention: "Mentionner"
mentionDescription: "Vous pouvez afficher un utilisateur spécifique en indiquant une arobase suivie d'un nom d'utilisateur"
hashtag: "Hashtags" 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" link: "Lien"
linkDescription: "Une partie précise d'une phrase peut être liée à l'adresse web."
bold: "Gras" 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" center: "Centrée"
centerDescription: "Le contenu peut être centré"
inlineCode: "Code (inline)"
blockCode: "Bloc de code"
quote: "Citer" quote: "Citer"
quoteDescription: "Affiche le contenu sous forme de citation." quoteDescription: "Affiche le contenu sous forme de citation."
emoji: "Émojis personnalisés" emoji: "Émojis personnalisés"
search: "Rechercher" search: "Rechercher"
flip: "Inverser" 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" font: "Police de caractères"
fontDescription: "Il est possible de choisir la police."
_reversi: _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 ladversaire"
myTurn: "Cest 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" 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: _serverDisconnectedBehavior:
reload: "Rechargement automatique" reload: "Rechargement automatique"
quiet: "Afficher un avertissement discret" quiet: "Afficher un avertissement discret"
_channel: _channel:
create: "Créer un canal" create: "Créer un canal"
edit: "Éditer le canal" edit: "Éditer le canal"
setBanner: "Sélectionner la bannière"
removeBanner: "Supprimer la bannière" removeBanner: "Supprimer la bannière"
featured: "Tendances" featured: "Tendances"
following: "Abonné·e"
usersCount: "{n} Participants" usersCount: "{n} Participants"
notesCount: "{n} Notes" notesCount: "{n} Notes"
_sidebar: _sidebar:
@ -699,9 +819,9 @@ _sidebar:
icon: "Avatar" icon: "Avatar"
hide: "Masquer" hide: "Masquer"
_wordMute: _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." 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: _theme:
explore: "Explorer les thèmes" explore: "Explorer les thèmes"
install: "Installer un thème" install: "Installer un thème"
@ -709,6 +829,7 @@ _theme:
code: "Code du thème" code: "Code du thème"
installed: "{name} a été installé" installed: "{name} a été installé"
installedThemes: "Thèmes installés" installedThemes: "Thèmes installés"
builtinThemes: "Thèmes intégrés"
alreadyInstalled: "Ce thème est déjà installé" alreadyInstalled: "Ce thème est déjà installé"
invalid: "Le format du thème n'est pas valide" invalid: "Le format du thème n'est pas valide"
make: "Créer un thème" make: "Créer un thème"
@ -733,16 +854,25 @@ _theme:
header: "Entête" header: "Entête"
navBg: "Fond de la barre latérale" navBg: "Fond de la barre latérale"
navFg: "Texte 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" link: "Lien"
hashtag: "Hashtags" hashtag: "Hashtags"
mention: "Mentionner" mention: "Mentionner"
mentionMe: "Mentions (Moi)" mentionMe: "Mentions (Moi)"
renote: "Renote" renote: "Partager"
divider: "Séparateur" divider: "Séparateur"
scrollbarHandle: "Poignée de la barre de navigation"
scrollbarHandleHover: "Poignée de la barre de navigation (survolée)"
infoWarnFg: "Texte davertissement" infoWarnFg: "Texte davertissement"
cwBg: "Arrière-plan du CW" 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" badge: "Badge"
messageBg: "Arrière plan de la discussion" messageBg: "Arrière plan de la discussion"
fgHighlighted: "Texte mis en évidence"
_sfx: _sfx:
note: "Nouvelle note" note: "Nouvelle note"
noteMy: "Ma note" noteMy: "Ma note"
@ -811,8 +941,8 @@ _permissions:
"write:following": "Abonnements/Se désabonner" "write:following": "Abonnements/Se désabonner"
"read:messaging": "Cherche à discuter" "read:messaging": "Cherche à discuter"
"write:messaging": "Contrôler le discuter" "write:messaging": "Contrôler le discuter"
"read:mutes": "Voir les comptes muets" "read:mutes": "Voir les comptes masqués"
"write:mutes": "Gérer les comptes muets" "write:mutes": "Gérer les comptes masqués"
"write:notes": "Créer / supprimer des notes" "write:notes": "Créer / supprimer des notes"
"read:notifications": "Afficher les notifications" "read:notifications": "Afficher les notifications"
"write:notifications": "Gérer vos notifications" "write:notifications": "Gérer vos notifications"
@ -861,8 +991,12 @@ _widgets:
digitalClock: "Horloge numérique" digitalClock: "Horloge numérique"
federation: "Fédération" federation: "Fédération"
postForm: "Formulaire à publier" postForm: "Formulaire à publier"
slideshow: "Diaporama"
button: "Bouton" button: "Bouton"
onlineUsers: "Utilisateurs en ligne"
jobQueue: "File dattente" jobQueue: "File dattente"
serverMetric: "Statistiques du serveur"
aiscript: "Console AiScript"
_cw: _cw:
hide: "Masquer" hide: "Masquer"
show: "Afficher plus …" show: "Afficher plus …"
@ -917,12 +1051,17 @@ _profile:
username: "Nom dutilisateur·rice" username: "Nom dutilisateur·rice"
description: "À propos de moi" description: "À propos de moi"
youCanIncludeHashtags: "Vous pouvez également inclure des hashtags." 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" metadataLabel: "Étiquette"
metadataContent: "Contenu" metadataContent: "Contenu"
changeAvatar: "Changer l'image de profil"
changeBanner: "Changer de bannière"
_exportOrImport: _exportOrImport:
allNotes: "Toutes les notes" allNotes: "Toutes les notes"
followingList: "Abonnements" followingList: "Abonnements"
muteList: "Mettre en sourdine" muteList: "Liste des comptes maqués"
blockingList: "Bloquer" blockingList: "Bloquer"
userLists: "Listes" userLists: "Listes"
_charts: _charts:
@ -1025,6 +1164,7 @@ _pages:
created: "La page a été créée !" created: "La page a été créée !"
updated: "La page a été mise à jour !" updated: "La page a été mise à jour !"
deleted: "La page a bien été supprimée" 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à" nameAlreadyExists: "La URL de page spécifiée existe déjà"
invalidNameTitle: "La URL de la page spécifiée nest pas valide" invalidNameTitle: "La URL de la page spécifiée nest pas valide"
invalidNameText: "Assurez-vous quil nest pas vide" invalidNameText: "Assurez-vous quil nest pas vide"
@ -1035,6 +1175,7 @@ _pages:
unlike: "Je naime pas" unlike: "Je naime pas"
my: "Mes pages" my: "Mes pages"
liked: "Pages favorites" liked: "Pages favorites"
featured: "Populaire"
inspector: "Inspecteur" inspector: "Inspecteur"
contents: "Contenu" contents: "Contenu"
content: "Bloc de page" content: "Bloc de page"
@ -1090,6 +1231,9 @@ _pages:
id: "Toile ID" id: "Toile ID"
width: "Largeur" width: "Largeur"
height: "Hauteur" height: "Hauteur"
_note:
id: "Identifiant de la note"
detailed: "Afficher les détails"
switch: "Basculer" switch: "Basculer"
_switch: _switch:
name: "Nom de la variable" name: "Nom de la variable"
@ -1322,19 +1466,28 @@ _notification:
follow: "Abonnements" follow: "Abonnements"
mention: "Mentionner" mention: "Mentionner"
reply: "Réponses" reply: "Réponses"
renote: "Renote" renote: "Partager"
quote: "Citer" quote: "Citer"
reaction: "Réactions" reaction: "Réactions"
receiveFollowRequest: "Demande d'abonnement reçue"
followRequestAccepted: "Demande d'abonnement acceptée"
groupInvited: "Invité aux groupes" groupInvited: "Invité aux groupes"
app: "Notifications provenant des apps" app: "Notifications provenant des apps"
_deck: _deck:
alwaysShowMainColumn: "Toujours afficher la colonne principale" alwaysShowMainColumn: "Toujours afficher la colonne principale"
columnAlign: "Aligner les colonnes" columnAlign: "Aligner les colonnes"
columnMargin: "Marge entre les colonnes"
columnHeaderHeight: "Taille de l'en-tête de colonne"
addColumn: "Ajouter une colonne" addColumn: "Ajouter une colonne"
swapLeft: "Déplacer à gauche" swapLeft: "Déplacer à gauche"
swapRight: "Déplacer à droite" swapRight: "Déplacer à droite"
swapUp: "Déplacer vers le haut"
swapDown: "Déplacer vers le bas"
stackLeft: "Empiler à gauche" stackLeft: "Empiler à gauche"
popRight: "Vers la droite"
profile: "Profil"
_columns: _columns:
main: "Principale"
widgets: "Widgets" widgets: "Widgets"
notifications: "Notifications" notifications: "Notifications"
tl: "Fil" tl: "Fil"

View file

@ -1,7 +1,7 @@
{ {
"name": "misskey", "name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>", "author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.72.0", "version": "12.73.0",
"codename": "indigo", "codename": "indigo",
"repository": { "repository": {
"type": "git", "type": "git",
@ -62,7 +62,7 @@
"@types/is-url": "1.2.28", "@types/is-url": "1.2.28",
"@types/js-yaml": "4.0.0", "@types/js-yaml": "4.0.0",
"@types/jsdom": "16.2.6", "@types/jsdom": "16.2.6",
"@types/jsonld": "1.5.3", "@types/jsonld": "1.5.4",
"@types/katex": "0.11.0", "@types/katex": "0.11.0",
"@types/koa": "2.13.0", "@types/koa": "2.13.0",
"@types/koa-bodyparser": "4.3.0", "@types/koa-bodyparser": "4.3.0",
@ -120,7 +120,7 @@
"broadcast-channel": "3.4.1", "broadcast-channel": "3.4.1",
"bull": "3.20.1", "bull": "3.20.1",
"cafy": "15.2.1", "cafy": "15.2.1",
"cbor": "7.0.1", "cbor": "7.0.3",
"chalk": "4.1.0", "chalk": "4.1.0",
"chart.js": "2.9.4", "chart.js": "2.9.4",
"cli-highlight": "2.1.10", "cli-highlight": "2.1.10",
@ -134,7 +134,7 @@
"diskusage": "1.1.3", "diskusage": "1.1.3",
"double-ended-queue": "2.1.0-0", "double-ended-queue": "2.1.0-0",
"escape-regexp": "0.0.1", "escape-regexp": "0.0.1",
"eslint": "7.20.0", "eslint": "7.21.0",
"eslint-plugin-vue": "7.6.0", "eslint-plugin-vue": "7.6.0",
"eventemitter3": "4.0.7", "eventemitter3": "4.0.7",
"feed": "4.2.2", "feed": "4.2.2",
@ -250,7 +250,7 @@
"vue-json-pretty": "1.7.1", "vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2", "vue-loader": "16.1.2",
"vue-prism-editor": "2.0.0-alpha.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", "vue-style-loader": "4.1.2",
"vuedraggable": "4.0.1", "vuedraggable": "4.0.1",
"web-push": "3.4.4", "web-push": "3.4.4",

View file

@ -401,8 +401,7 @@ export default defineComponent({
z-index: 65535; z-index: 65535;
max-width: 100%; max-width: 100%;
margin-top: calc(1em + 8px); margin-top: calc(1em + 8px);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
transition: top 0.1s ease, left 0.1s ease; transition: top 0.1s ease, left 0.1s ease;
> ol { > ol {
@ -419,8 +418,7 @@ export default defineComponent({
align-items: center; align-items: center;
padding: 4px 12px; padding: 4px 12px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 0.9em; font-size: 0.9em;
cursor: default; cursor: default;
@ -429,8 +427,7 @@ export default defineComponent({
} }
* { * {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -66,8 +66,7 @@ export default defineComponent({
<style lang="scss" scoped> <style lang="scss" scoped>
.eftoefju { .eftoefju {
display: block; display: block;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
width: 100%; width: 100%;
&:hover { &:hover {

View file

@ -342,8 +342,7 @@ export default defineComponent({
text-align: center; text-align: center;
word-break: break-all; word-break: break-all;
color: var(--fg); color: var(--fg);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .ext { > .ext {
opacity: 0.5; opacity: 0.5;

View file

@ -62,10 +62,6 @@
<header class="_acrylic">{{ $ts.emoji }}</header> <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> <XSection v-for="category in categories" :emojis="emojilist.filter(e => e.category === category).map(e => e.char)">{{ category }}</XSection>
</div> </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>
<div class="tabs"> <div class="tabs">
<button class="_button tab" :class="{ active: tab === 'index' }" @click="tab = 'index'"><Fa :icon="faAsterisk" fixed-width/></button> <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 * as os from '@/os';
import { isDeviceTouch } from '@/scripts/is-device-touch'; import { isDeviceTouch } from '@/scripts/is-device-touch';
import { isMobile } from '@/scripts/is-mobile'; import { isMobile } from '@/scripts/is-mobile';
import { emojiCategories, emojiTags } from '@/instance'; import { emojiCategories } from '@/instance';
import XSection from './emoji-picker.section.vue'; import XSection from './emoji-picker.section.vue';
export default defineComponent({ export default defineComponent({
@ -115,7 +111,6 @@ export default defineComponent({
height: this.asReactionPicker ? this.$store.state.reactionPickerHeight : 2, height: this.asReactionPicker ? this.$store.state.reactionPickerHeight : 2,
big: this.asReactionPicker ? isDeviceTouch : false, big: this.asReactionPicker ? isDeviceTouch : false,
customEmojiCategories: emojiCategories, customEmojiCategories: emojiCategories,
emojiTags,
customEmojis: this.$instance.emojis, customEmojis: this.$instance.emojis,
q: null, q: null,
searchResultCustom: [], searchResultCustom: [],

View file

@ -261,8 +261,7 @@ export default defineComponent({
display: inline-block; display: inline-block;
min-width: 16px; min-width: 16px;
max-width: 150px; max-width: 150px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -8,7 +8,7 @@
<Fa :icon="faExternalLinkAlt" class="icon"/> <Fa :icon="faExternalLinkAlt" class="icon"/>
</span> </span>
</a> </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="icon"><slot name="icon"></slot></span>
<span class="text"><slot></slot></span> <span class="text"><slot></slot></span>
<span class="right"> <span class="right">
@ -38,6 +38,10 @@ export default defineComponent({
type: Boolean, type: Boolean,
required: false required: false
}, },
behavior: {
type: String,
required: false,
},
}, },
data() { data() {
return { return {
@ -83,8 +87,7 @@ export default defineComponent({
> .text { > .text {
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
padding-right: 12px; padding-right: 12px;
} }

View file

@ -98,6 +98,11 @@ export default defineComponent({
}, },
nav() { nav() {
if (this.behavior === 'browser') {
location.href = this.to;
return;
}
if (this.to.startsWith('/my/messaging')) { if (this.to.startsWith('/my/messaging')) {
if (ColdDeviceStorage.get('chatOpenBehavior') === 'window') return this.window(); if (ColdDeviceStorage.get('chatOpenBehavior') === 'window') return this.window();
if (ColdDeviceStorage.get('chatOpenBehavior') === 'popout') return this.popout(); if (ColdDeviceStorage.get('chatOpenBehavior') === 'popout') return this.popout();

View file

@ -101,8 +101,7 @@ export default defineComponent({
top: 0; top: 0;
border-radius: 100%; border-radius: 100%;
z-index: 1; z-index: 1;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
object-fit: cover; object-fit: cover;
width: 100%; width: 100%;
height: 100%; height: 100%;

View file

@ -126,8 +126,7 @@ export default defineComponent({
&.nowrap { &.nowrap {
white-space: pre; white-space: pre;
word-wrap: normal; // https://codeday.me/jp/qa/20190424/690106.html word-wrap: normal; // https://codeday.me/jp/qa/20190424/690106.html
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -692,8 +692,7 @@ export default defineComponent({
> dd { > dd {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
} }

View file

@ -44,8 +44,7 @@ export default defineComponent({
height: $height; height: $height;
border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
color: #fff; color: #fff;
> .icon { > .icon {

View file

@ -62,8 +62,7 @@ export default defineComponent({
width: 100%; width: 100%;
border-radius: 4px; border-radius: 4px;
margin-top: 4px; margin-top: 4px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .download, > .download,
> .sensitive { > .sensitive {
@ -78,8 +77,7 @@ export default defineComponent({
} }
> b { > b {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -143,8 +143,7 @@ export default defineComponent({
> a { > a {
display: block; display: block;
cursor: zoom-in; cursor: zoom-in;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
width: 100%; width: 100%;
height: 100%; height: 100%;
background-position: center; background-position: center;

View file

@ -105,8 +105,7 @@ export default defineComponent({
grid-gap: 4px; grid-gap: 4px;
> * { > * {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
border-radius: 6px; border-radius: 6px;
} }

View file

@ -78,8 +78,7 @@ export default defineComponent({
align-items: center; align-items: center;
font-size: 3.5em; font-size: 3.5em;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
background-position: center; background-position: center;
background-size: cover; background-size: cover;
width: 100%; width: 100%;

View file

@ -886,8 +886,7 @@ export default defineComponent({
.note { .note {
position: relative; position: relative;
transition: box-shadow 0.1s ease; transition: box-shadow 0.1s ease;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
contain: content; contain: content;
&:focus-visible { &:focus-visible {
@ -947,8 +946,7 @@ export default defineComponent({
} }
> span { > span {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
flex-shrink: 1; flex-shrink: 1;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;

View file

@ -61,8 +61,7 @@ export default defineComponent({
display: block; display: block;
margin: 0 .5em 0 0; margin: 0 .5em 0 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 1em; font-size: 1em;
font-weight: bold; font-weight: bold;
text-decoration: none; text-decoration: none;
@ -91,8 +90,7 @@ export default defineComponent({
> .username { > .username {
margin: 0 .5em 0 0; margin: 0 .5em 0 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -50,8 +50,7 @@ export default defineComponent({
display: flex; display: flex;
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 0.95em; font-size: 0.95em;
> .avatar { > .avatar {

View file

@ -861,8 +861,7 @@ export default defineComponent({
.tkcbzcuz { .tkcbzcuz {
position: relative; position: relative;
transition: box-shadow 0.1s ease; transition: box-shadow 0.1s ease;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
contain: content; contain: content;
// //
@ -949,8 +948,7 @@ export default defineComponent({
} }
> span { > span {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
flex-shrink: 1; flex-shrink: 1;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
@ -1022,8 +1020,7 @@ export default defineComponent({
&.collapsed { &.collapsed {
position: relative; position: relative;
max-height: 9em; max-height: 9em;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .fade { > .fade {
display: block; display: block;

View file

@ -268,8 +268,7 @@ export default defineComponent({
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
min-width: 0; min-width: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
> .time { > .time {
@ -280,8 +279,7 @@ export default defineComponent({
> .text { > .text {
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
> [data-icon] { > [data-icon] {

View file

@ -112,8 +112,7 @@ export default defineComponent({
padding: 4px 8px; padding: 4px 8px;
border: solid 1px var(--divider); border: solid 1px var(--divider);
border-radius: 4px; border-radius: 4px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
cursor: pointer; cursor: pointer;
&:hover { &:hover {

View file

@ -127,8 +127,7 @@ export default defineComponent({
height: 64px; height: 64px;
margin-right: 4px; margin-right: 4px;
border-radius: 4px; border-radius: 4px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
cursor: move; cursor: move;
&:hover > .remove { &:hover > .remove {

View file

@ -390,8 +390,7 @@ export default defineComponent({
font-size: $ui-font-size; font-size: $ui-font-size;
line-height: 3rem; line-height: 3rem;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
width: 100%; width: 100%;
text-align: left; text-align: left;

View file

@ -67,8 +67,7 @@ export default defineComponent({
height: 100%; height: 100%;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
border-radius: 8px; border-radius: 8px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
} }
</style> </style>

View file

@ -124,8 +124,7 @@ export default defineComponent({
text-decoration: none; text-decoration: none;
background: var(--buttonBg); background: var(--buttonBg);
border-radius: 999px; border-radius: 999px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
&:not(:disabled):hover { &:not(:disabled):hover {
background: var(--buttonHoverBg); background: var(--buttonHoverBg);
@ -213,8 +212,7 @@ export default defineComponent({
width: 100%; width: 100%;
height: 100%; height: 100%;
border-radius: 6px; border-radius: 6px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
::v-deep(div) { ::v-deep(div) {
position: absolute; position: absolute;

View file

@ -116,8 +116,7 @@ export default defineComponent({
.ukygtjoj { .ukygtjoj {
position: relative; position: relative;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
&.naked { &.naked {
background: transparent !important; background: transparent !important;

View file

@ -298,8 +298,7 @@ export default defineComponent({
transform: scale(.75); transform: scale(.75);
white-space: nowrap; white-space: nowrap;
width: 133%; width: 133%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
> .warning { > .warning {
@ -355,8 +354,7 @@ export default defineComponent({
display: inline-block; display: inline-block;
min-width: 16px; min-width: 16px;
max-width: 150px; max-width: 150px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -155,8 +155,7 @@ export default defineComponent({
font-size: 0.9em; font-size: 0.9em;
line-height: 20px; line-height: 20px;
text-align: center; text-align: center;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
&.danger { &.danger {

View file

@ -89,8 +89,7 @@ export default defineComponent({
<style lang="scss" scoped> <style lang="scss" scoped>
.ebkgoccj { .ebkgoccj {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
contain: content; contain: content;
@ -124,8 +123,7 @@ export default defineComponent({
padding-left: 32px; padding-left: 32px;
font-weight: bold; font-weight: bold;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
pointer-events: none; pointer-events: none;

View file

@ -89,8 +89,7 @@ export default defineComponent({
pointer-events: none; pointer-events: none;
font-size: 16px; font-size: 16px;
color: var(--inputLabel); color: var(--inputLabel);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
> input { > input {

View file

@ -402,8 +402,7 @@ export default defineComponent({
} }
> .body { > .body {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
contain: content; contain: content;
@ -438,8 +437,7 @@ export default defineComponent({
position: relative; position: relative;
line-height: var(--height); line-height: var(--height);
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
text-align: center; text-align: center;
cursor: move; cursor: move;

View file

@ -244,8 +244,7 @@ export default defineComponent({
font-size: 14px; font-size: 14px;
box-shadow: 0 0 0 1px var(--divider); box-shadow: 0 0 0 1px var(--divider);
border-radius: 8px; border-radius: 8px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
&:hover { &:hover {
text-decoration: none; text-decoration: none;
@ -327,8 +326,7 @@ export default defineComponent({
&.compact { &.compact {
> article { > article {
> header h1, p, footer { > header h1, p, footer {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -110,8 +110,7 @@ export default defineComponent({
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 3; -webkit-line-clamp: 3;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
} }

View file

@ -111,8 +111,7 @@ export default defineComponent({
position: absolute; position: absolute;
z-index: 11000; z-index: 11000;
width: 300px; width: 300px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
transform-origin: center top; transform-origin: center top;
> .info { > .info {

View file

@ -66,8 +66,7 @@ export default defineComponent({
height: 350px; height: 350px;
background: var(--panel); background: var(--panel);
border-radius: var(--radius); border-radius: var(--radius);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -128,8 +127,7 @@ export default defineComponent({
> .body { > .body {
padding: 0 8px; padding: 0 8px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .name { > .name {
display: block; display: block;

View file

@ -141,8 +141,7 @@ export default defineComponent({
> *:nth-child(2) { > *:nth-child(2) {
flex: 1 1 auto; flex: 1 1 auto;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
> span:first-child { > span:first-child {

View file

@ -76,6 +76,7 @@ console.info(`Misskey v${version}`);
// boot.jsのやつを解除 // boot.jsのやつを解除
window.onerror = null; window.onerror = null;
window.onunhandledrejection = null;
if (_DEV_) { if (_DEV_) {
console.warn('Development mode!!!'); console.warn('Development mode!!!');

View file

@ -305,7 +305,7 @@ export async function pickEmoji(src?: HTMLElement, opts) {
type AwaitType<T> = type AwaitType<T> =
T extends Promise<infer U> ? U : T extends Promise<infer U> ? U :
T extends (...args: Array<any>) => Promise<infer V> ? V : T extends (...args: any[]) => Promise<infer V> ? V :
T; T;
let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null; let openingEmojiPicker: AwaitType<ReturnType<typeof popup>> | null = null;
let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null; let activeTextarea: HTMLTextAreaElement | HTMLInputElement | null = null;

View file

@ -1,5 +1,5 @@
<template> <template>
<div style="overflow: hidden; overflow: clip;"> <div style="overflow: hidden;">
<FormBase class="znqjceqz"> <FormBase class="znqjceqz">
<div id="debug"></div> <div id="debug"></div>
<section class="_formItem about"> <section class="_formItem about">

View file

@ -104,8 +104,7 @@ export default defineComponent({
display: block; display: block;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
margin: 0; margin: 0;
} }
@ -125,8 +124,7 @@ export default defineComponent({
width: 55%; width: 55%;
line-height: 42px; line-height: 42px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
opacity: 0.7; opacity: 0.7;
font-size: 14px; font-size: 14px;

View file

@ -178,20 +178,17 @@ export default defineComponent({
> .body { > .body {
padding: 0 0 0 8px; padding: 0 0 0 8px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .name { > .name {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
> .info { > .info {
opacity: 0.5; opacity: 0.5;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
} }
} }
@ -222,20 +219,17 @@ export default defineComponent({
> .body { > .body {
padding: 0 0 0 8px; padding: 0 0 0 8px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .name { > .name {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
> .info { > .info {
opacity: 0.5; opacity: 0.5;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
} }
} }
} }

View file

@ -226,14 +226,12 @@ export default defineComponent({
align-items: center; align-items: center;
margin-bottom: 2px; margin-bottom: 2px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .name { > .name {
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
font-size: 1em; font-size: 1em;
font-weight: bold; font-weight: bold;
@ -264,8 +262,7 @@ export default defineComponent({
display: block; display: block;
margin: 0 0 0 0; margin: 0 0 0 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
overflow-wrap: break-word; overflow-wrap: break-word;
font-size: 1.1em; font-size: 1.1em;
color: var(--faceText); color: var(--faceText);

View file

@ -154,8 +154,7 @@ export default defineComponent({
display: block; display: block;
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
overflow-wrap: break-word; overflow-wrap: break-word;
font-size: 1em; font-size: 1em;
color: rgba(#000, 0.5); color: rgba(#000, 0.5);
@ -165,8 +164,7 @@ export default defineComponent({
display: block; display: block;
margin: 0; margin: 0;
padding: 12px 18px; padding: 12px 18px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
overflow-wrap: break-word; overflow-wrap: break-word;
word-break: break-word; word-break: break-word;
font-size: 1em; font-size: 1em;
@ -184,8 +182,7 @@ export default defineComponent({
display: block; display: block;
max-width: 100%; max-width: 100%;
border-radius: 16px; border-radius: 16px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-decoration: none; text-decoration: none;
&:hover { &:hover {

View file

@ -74,8 +74,7 @@ export default defineComponent({
<style lang="scss" scoped> <style lang="scss" scoped>
.cpjygsrt { .cpjygsrt {
position: relative; position: relative;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
background: var(--panel); background: var(--panel);
border: solid 2px var(--X12); border: solid 2px var(--X12);
border-radius: 6px; border-radius: 6px;

View file

@ -434,8 +434,7 @@ export default defineComponent({
> div { > div {
background: transparent; background: transparent;
border-radius: 6px; border-radius: 6px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
* { * {
pointer-events: none; pointer-events: none;

View file

@ -333,8 +333,7 @@ export default defineComponent({
background: transparent; background: transparent;
border: solid 2px var(--divider); border: solid 2px var(--divider);
border-radius: 6px; border-radius: 6px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
cursor: pointer; cursor: pointer;
* { * {

View file

@ -230,8 +230,7 @@ export default defineComponent({
$size: 12px; $size: 12px;
background: rgba(0, 0, 0, 0.1); background: rgba(0, 0, 0, 0.1);
border-radius: ($size / 2); border-radius: ($size / 2);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> div { > div {
height: $size; height: $size;

View file

@ -23,13 +23,16 @@
<FormLink to="/settings/registry"><template #icon><Fa :icon="faCogs"/></template>{{ $ts.registry }}</FormLink> <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> <FormButton @click="closeAccount" danger>{{ $ts.closeAccount }}</FormButton>
</FormBase> </FormBase>
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineAsyncComponent, defineComponent } from 'vue'; 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 FormSwitch from '@/components/form/switch.vue';
import FormSelect from '@/components/form/select.vue'; import FormSelect from '@/components/form/select.vue';
import FormLink from '@/components/form/link.vue'; import FormLink from '@/components/form/link.vue';
@ -61,7 +64,7 @@ export default defineComponent({
icon: faEllipsisH icon: faEllipsisH
}, },
debug, debug,
faCogs faCogs, faDoorOpen,
} }
}, },

View file

@ -144,8 +144,7 @@ export default defineComponent({
flex: 1; flex: 1;
min-width: 0; min-width: 0;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
margin-right: 12px; margin-right: 12px;
} }

View file

@ -184,8 +184,7 @@ export default defineComponent({
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
padding: 0 100px; padding: 0 100px;
transform: translate3d(-50%, -50%, 0); transform: translate3d(-50%, -50%, 0);

View file

@ -369,8 +369,7 @@ export default defineComponent({
position: relative; position: relative;
height: 450px; height: 450px;
border-radius: 16px; border-radius: 16px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
@ -473,8 +472,7 @@ export default defineComponent({
> .name { > .name {
width: 30%; width: 30%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
font-weight: bold; font-weight: bold;
@ -482,8 +480,7 @@ export default defineComponent({
> .value { > .value {
width: 70%; width: 70%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
margin: 0; margin: 0;
@ -545,8 +542,7 @@ export default defineComponent({
.ftskorzw.narrow { .ftskorzw.narrow {
max-width: 100vw; max-width: 100vw;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .punished { > .punished {
font-size: 0.8em; font-size: 0.8em;
@ -557,14 +553,12 @@ export default defineComponent({
> .main { > .main {
position: relative; position: relative;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .banner-container { > .banner-container {
position: relative; position: relative;
height: 250px; height: 250px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
background-size: cover; background-size: cover;
background-position: center; background-position: center;
@ -709,8 +703,7 @@ export default defineComponent({
> .name { > .name {
width: 30%; width: 30%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
font-weight: bold; font-weight: bold;
@ -719,8 +712,7 @@ export default defineComponent({
> .value { > .value {
width: 70%; width: 70%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
margin: 0; margin: 0;

View file

@ -167,8 +167,7 @@ export default defineComponent({
margin: auto; margin: auto;
width: 500px; width: 500px;
height: calc(100% - 128px); height: calc(100% - 128px);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
-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%); -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%); 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%);

View file

@ -151,8 +151,7 @@ export default defineComponent({
margin: auto; margin: auto;
width: 500px; width: 500px;
height: calc(100% - 128px); height: calc(100% - 128px);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
-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%); -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%); 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%);
} }

View file

@ -71,8 +71,7 @@ export default defineComponent({
.mk-setup { .mk-setup {
border-radius: var(--radius); border-radius: var(--radius);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1); box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> h1 { > h1 {
margin: 0; margin: 0;

View file

@ -241,8 +241,7 @@ hr {
border-radius: var(--radius); border-radius: var(--radius);
//border: var(--panelBorder); //border: var(--panelBorder);
box-shadow: var(--panelShadow); box-shadow: var(--panelShadow);
overflow: hidden; // overflow: clip; をSafariが対応したら消す overflow: hidden;
overflow: clip;
} }
._card { ._card {
@ -458,14 +457,6 @@ hr {
opacity: 0.7; opacity: 0.7;
} }
// TODO: refactor: 全てのvueファイル中の text-overflow: ellipsis; している箇所をこのクラスを使って置き換える
._oneline {
white-space: nowrap;
overflow: hidden; // overflow: clip; をSafariが対応したら消す
overflow: clip;
text-overflow: ellipsis;
}
._monospace { ._monospace {
font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace; font-family: Fira code, Fira Mono, Consolas, Menlo, Courier, monospace;
} }

View file

@ -132,8 +132,7 @@ export default defineComponent({
display: inline-block; display: inline-block;
vertical-align: bottom; vertical-align: bottom;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
padding: 0 16px; padding: 0 16px;
position: relative; position: relative;

View file

@ -89,8 +89,7 @@ export default defineComponent({
font-size: 0.8em; font-size: 0.8em;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
flex-shrink: 1; flex-shrink: 1;
} }
.mk-uploader > ol > li > .top > .name > [data-icon] { .mk-uploader > ol > li > .top > .name > [data-icon] {
@ -120,8 +119,7 @@ export default defineComponent({
background: transparent; background: transparent;
border: none; border: none;
border-radius: 4px; border-radius: 4px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
grid-column: 2/3; grid-column: 2/3;
grid-row: 2/3; grid-row: 2/3;
z-index: 2; z-index: 2;

View file

@ -427,8 +427,7 @@ export default defineComponent({
> .text { > .text {
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
font-size: 0.9em; font-size: 0.9em;
} }
@ -483,8 +482,7 @@ export default defineComponent({
padding: 6px 8px; padding: 6px 8px;
border-radius: 4px; border-radius: 4px;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
&:hover { &:hover {
@ -547,8 +545,7 @@ export default defineComponent({
} }
> .title { > .title {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
min-width: 0; min-width: 0;
@ -559,8 +556,7 @@ export default defineComponent({
font-size: 0.8em; font-size: 0.8em;
font-weight: normal; font-weight: normal;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }

View file

@ -62,8 +62,7 @@ export default defineComponent({
display: block; display: block;
margin: 0 .5em 0 0; margin: 0 .5em 0 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 1em; font-size: 1em;
font-weight: bold; font-weight: bold;
text-decoration: none; text-decoration: none;
@ -92,8 +91,7 @@ export default defineComponent({
> .username { > .username {
margin: 0 .5em 0 0; margin: 0 .5em 0 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
} }

View file

@ -50,8 +50,7 @@ export default defineComponent({
display: flex; display: flex;
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 0.95em; font-size: 0.95em;
> .avatar { > .avatar {

View file

@ -955,8 +955,7 @@ export default defineComponent({
} }
> span { > span {
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
flex-shrink: 1; flex-shrink: 1;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
@ -1029,8 +1028,7 @@ export default defineComponent({
&.collapsed { &.collapsed {
position: relative; position: relative;
max-height: 9em; max-height: 9em;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .fade { > .fade {
display: block; display: block;

View file

@ -268,8 +268,7 @@ export default defineComponent({
--section-padding: 10px; --section-padding: 10px;
height: 100%; height: 100%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
contain: content; contain: content;
&.draghover { &.draghover {
@ -359,8 +358,7 @@ export default defineComponent({
> .header { > .header {
display: inline-block; display: inline-block;
align-items: center; align-items: center;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }

View file

@ -125,8 +125,7 @@ export default defineComponent({
display: inline-block; display: inline-block;
vertical-align: bottom; vertical-align: bottom;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
position: relative; position: relative;
@ -207,8 +206,7 @@ export default defineComponent({
> .title { > .title {
flex: 1; flex: 1;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
position: relative; position: relative;
text-align: center; text-align: center;

View file

@ -171,8 +171,7 @@ export default defineComponent({
> .meter { > .meter {
width: 100%; width: 100%;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
background: var(--X11); background: var(--X11);
border-radius: 8px; border-radius: 8px;

View file

@ -89,8 +89,7 @@ export default defineComponent({
$bodyInfoHieght: 16px; $bodyInfoHieght: 16px;
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px; height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .instances { > .instances {
.chart-move { .chart-move {
@ -114,8 +113,7 @@ export default defineComponent({
> .body { > .body {
flex: 1; flex: 1;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 0.9em; font-size: 0.9em;
color: var(--fg); color: var(--fg);
@ -123,8 +121,7 @@ export default defineComponent({
display: block; display: block;
width: 100%; width: 100%;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
line-height: $bodyTitleHieght; line-height: $bodyTitleHieght;
} }

View file

@ -80,8 +80,7 @@ export default defineComponent({
color: var(--fg); color: var(--fg);
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
&:nth-child(even) { &:nth-child(even) {
background: rgba(#000, 0.05); background: rgba(#000, 0.05);

View file

@ -68,8 +68,7 @@ export default defineComponent({
<style lang="scss" scoped> <style lang="scss" scoped>
.wbrkwala { .wbrkwala {
height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px; height: (62px + 1px) + (62px + 1px) + (62px + 1px) + (62px + 1px) + 62px;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
> .tags { > .tags {
.chart-move { .chart-move {
@ -84,8 +83,7 @@ export default defineComponent({
> .tag { > .tag {
flex: 1; flex: 1;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
font-size: 0.9em; font-size: 0.9em;
color: var(--fg); color: var(--fg);
@ -93,8 +91,7 @@ export default defineComponent({
display: block; display: block;
width: 100%; width: 100%;
white-space: nowrap; white-space: nowrap;
overflow: hidden; // overflow: clip; Safari overflow: hidden;
overflow: clip;
text-overflow: ellipsis; text-overflow: ellipsis;
line-height: 18px; line-height: 18px;
} }

View file

@ -1,4 +1,4 @@
# AiScript # AiScript
## Fonction ## Fonction
デフォルトで値渡しです。 Réglé sur « passage par copie » par défaut

View file

@ -1,18 +1,18 @@
# Deck # 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.
## デッキの設定 ## Configuration du deck
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。 Vous trouverez les options de configuration du deck à [settings/deck](/settings/deck)

View file

@ -1,2 +1,2 @@
# Abonnements # 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.

View file

@ -1,68 +1,68 @@
# キーボードショートカット # Raccourcis clavier
## Global ## Général
これらのショートカットは基本的にどこでも使えます。 Ces raccourcis sont utilisables dans n'importe quel contexte.
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead> </thead>
<tbody> <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">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>タイムラインの最も新しい投稿にフォーカス</td><td><b>T</b>imeline, <b>T</b>op</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>通知を表示/隠す</td><td><b>N</b>otifications</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">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> </tbody>
</table> </table>
## 投稿にフォーカスされた状態 ## Actions concernant les publications
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead> </thead>
<tbody> <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">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>下の投稿にフォーカスを移動</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>返信フォームを開く</td><td><b>R</b>eply</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>Renoteフォームを開く</td><td><b>Q</b>uote</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する(フォームを開かずに)</td><td>-</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>リアクションフォームを開く</td><td><b>E</b>mote, re<b>A</b>ction</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>数字に対応したリアクションをする(対応については後述)</td><td>-</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>お気に入りに登録</td><td><b>F</b>avorite, <b>B</b>ookmark</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>投稿を削除</td><td><b>D</b>elete</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>投稿に対するメニューを開く</td><td><b>M</b>ore, <b>O</b>ther</td></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>CWで隠された部分を表示 or 隠す</td><td><b>S</b>how, <b>S</b>ee</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>フォーカスを外す</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Quitter le focus</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>
## Renoteフォーム ## Formulaire de Renote
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead> </thead>
<tbody> <tbody>
<tr><td><kbd class="key">Enter</kbd></td><td>Renoteする</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>フォームを展開する</td><td><b>Q</b>uote</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>フォームを閉じる</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Fermer la fenêtre</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>
## リアクションフォーム ## Fenêtre de réactions
デフォルトで「👍」にフォーカスが当たっている状態です。 La réaction sélectionnée par défaut est « 👍 ».
<table> <table>
<thead> <thead>
<tr><th>ショートカット</th><th>効果</th><th>由来</th></tr> <tr><th>Raccourci</th><th>Effet</th><th>Accès universel</th></tr>
</thead> </thead>
<tbody> <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">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>下のリアクションにフォーカスを移動</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>左のリアクションにフォーカスを移動</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>右のリアクションにフォーカスを移動</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>リアクション確定</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>数字に対応したリアクションで確定</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>リアクションするのをやめる</td><td>-</td></tr> <tr><td><kbd class="key">Esc</kbd></td><td>Annuler la réaction</td><td>-</td></tr>
</tbody> </tbody>
</table> </table>

View file

@ -1,2 +1,2 @@
# MFM # 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).

View file

@ -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.

View file

@ -1,8 +1,8 @@
# Réactions # 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であったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。 リアクションはMisskeyオリジナルの機能であるため、リモートインスタンスがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。 また、相手がMisskeyであったとしても、カスタム絵文字リアクションは伝わらず、自動的に「👍」等にフォールバックされます。

View file

@ -1,11 +1,11 @@
# Thème # 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で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。 テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
``` js ``` js
{ {
@ -33,13 +33,13 @@
``` ```
* `id` ... テーマの一意なID。UUIDをおすすめします。 * `id` ... L'identifiant unique du thème. L'utilisation d'un UUID est recommandée ;
* `name` ... テーマ名 * `name` ... Nom du thème ;
* `author` ... テーマの作者 * `author` ... Auteur du thème ;
* `desc` ... テーマの説明(オプション) * `desc` ... Description du thème (facultatif) ;
* `base` ... 明るいテーマか、暗いテーマか * `base` ... Thème clair ou sombre :
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。 * 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` ... テーマのスタイル定義。これから説明します。 * `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義 ### テーマのスタイル定義

View file

@ -1,15 +1,15 @@
# タイムラインの比較 # Comparaison des fils
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## Principal ## Principal
自分のフォローしているユーザーの投稿 Les publications des utilisateurs que vous suivez
## Local ## Local
全てのローカルユーザーの「ホーム」指定されていない投稿 Les publications des utilisateurs de votre instance. Les notes publiées avec le statut « principal » n'y sont pas affichées.
## Social ## Social
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿 Regroupe le fil principal et le fil local
## Global ## 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.

40
src/server/web/bios.css Normal file
View file

@ -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;
}

87
src/server/web/bios.js Normal file
View file

@ -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);
});
};

View file

@ -11,12 +11,15 @@
'use strict'; 'use strict';
window.onerror = (e) => {
document.documentElement.innerHTML = '問題が発生しました。';
};
// ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので // ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
(async () => { (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; const v = localStorage.getItem('v') || VERSION;
//#region Detect language & fetch translations //#region Detect language & fetch translations
@ -38,9 +41,17 @@ window.onerror = (e) => {
} }
const res = await fetch(`/assets/locales/${lang}.${v}.json`); const res = await fetch(`/assets/locales/${lang}.${v}.json`);
localStorage.setItem('lang', lang); if (res.status === 200) {
localStorage.setItem('locale', await res.text()); localStorage.setItem('lang', lang);
localStorage.setItem('localeVersion', v); localStorage.setItem('locale', await res.text());
localStorage.setItem('localeVersion', v);
} else if (localeOutdated) {
// nop
} else {
renderError('LOCALE_FETCH_FAILED');
checkUpdate();
return;
}
} }
//#endregion //#endregion
@ -56,24 +67,8 @@ window.onerror = (e) => {
script.setAttribute('async', 'true'); script.setAttribute('async', 'true');
script.setAttribute('defer', 'true'); script.setAttribute('defer', 'true');
script.addEventListener('error', async () => { script.addEventListener('error', async () => {
document.documentElement.innerHTML = '読み込みに失敗しました。'; renderError('APP_FETCH_FAILED');
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();
}
}); });
head.appendChild(script); head.appendChild(script);
//#endregion //#endregion
@ -112,6 +107,44 @@ window.onerror = (e) => {
document.documentElement.style.backgroundImage = `url(${wallpaper})`; document.documentElement.style.backgroundImage = `url(${wallpaper})`;
} }
// 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 // eslint-disable-next-line no-inner-declarations
function refresh() { function refresh() {
// Random // Random

19
src/server/web/cli.css Normal file
View file

@ -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;
}

55
src/server/web/cli.js Normal file
View file

@ -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);
}
});
};

View file

@ -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) => const override = (source: string, target: string, depth: number = 0) =>
[, ...target.split('/').filter(x => x), ...source.split('/').filter(x => x).splice(depth)].join('/'); [, ...target.split('/').filter(x => x), ...source.split('/').filter(x => x).splice(depth)].join('/');

View file

@ -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

View file

@ -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

100
yarn.lock
View file

@ -9,14 +9,7 @@
dependencies: dependencies:
"@babel/highlight" "^7.10.4" "@babel/highlight" "^7.10.4"
"@babel/code-frame@^7.0.0": "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
dependencies:
"@babel/highlight" "^7.8.3"
"@babel/code-frame@^7.12.13":
version "7.12.13" version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658"
integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==
@ -106,11 +99,6 @@
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed"
integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==
"@babel/helper-validator-identifier@^7.9.0":
version "7.9.5"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80"
integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g==
"@babel/helper-validator-option@^7.12.17": "@babel/helper-validator-option@^7.12.17":
version "7.12.17" version "7.12.17"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831"
@ -125,15 +113,6 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/highlight@^7.8.3":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079"
integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==
dependencies:
"@babel/helper-validator-identifier" "^7.9.0"
chalk "^2.0.0"
js-tokens "^4.0.0"
"@babel/parser@^7.12.0", "@babel/parser@^7.6.0": "@babel/parser@^7.12.0", "@babel/parser@^7.6.0":
version "7.12.0" version "7.12.0"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.0.tgz#2ad388f3960045b22f9b7d4bf85e80b15a1c9e3a" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.0.tgz#2ad388f3960045b22f9b7d4bf85e80b15a1c9e3a"
@ -214,6 +193,11 @@
lodash "^4.17.19" lodash "^4.17.19"
to-fast-properties "^2.0.0" 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": "@discoveryjs/json-ext@^0.5.0":
version "0.5.2" version "0.5.2"
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752"
@ -230,10 +214,10 @@
pump "^3.0.0" pump "^3.0.0"
secure-json-parse "^2.1.0" secure-json-parse "^2.1.0"
"@eslint/eslintrc@^0.3.0": "@eslint/eslintrc@^0.4.0":
version "0.3.0" version "0.4.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.0.tgz#99cc0a0584d72f1df38b900fb062ba995f395547"
integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== integrity sha512-2ZPCc+uNbjV5ERJr+aKSPRwZgKd2z11x0EgLvb1PURmUrn9QNRXFqje0Ldq454PfAVyaJYyrDvvIKSFP4NnBog==
dependencies: dependencies:
ajv "^6.12.4" ajv "^6.12.4"
debug "^4.1.1" debug "^4.1.1"
@ -242,7 +226,6 @@
ignore "^4.0.6" ignore "^4.0.6"
import-fresh "^3.2.1" import-fresh "^3.2.1"
js-yaml "^3.13.1" js-yaml "^3.13.1"
lodash "^4.17.20"
minimatch "^3.0.4" minimatch "^3.0.4"
strip-json-comments "^3.1.1" strip-json-comments "^3.1.1"
@ -717,10 +700,10 @@
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.6.tgz#f4c7ec43e81b319a9815115031709f26987891f0"
integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw== integrity sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==
"@types/jsonld@1.5.3": "@types/jsonld@1.5.4":
version "1.5.3" version "1.5.4"
resolved "https://registry.yarnpkg.com/@types/jsonld/-/jsonld-1.5.3.tgz#5bef463655522eef0530db0011bdc119573b759b" resolved "https://registry.yarnpkg.com/@types/jsonld/-/jsonld-1.5.4.tgz#37e7869fae65bd9b35aa3467cbfc60c52f881a36"
integrity sha512-xDjKgwTBOrdevh46a6dota4Lusrn0R6lC1EKEQkBhTrOx4xzGpQKZ/JsXPx7NP2N9qVj7AYo6k5ubWtXAYJkLw== integrity sha512-e51UoELQzKJWGsVNqoKI5nnXazupqoOYTBMAGe3Iram0sWxeVTzgk38BKYgmOZmuIXaMFfuAz1ZimK2oyQNnRA==
"@types/katex@0.11.0": "@types/katex@0.11.0":
version "0.11.0" version "0.11.0"
@ -2390,12 +2373,13 @@ caseless@~0.12.0:
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
cbor@7.0.1: cbor@7.0.3:
version "7.0.1" version "7.0.3"
resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.1.tgz#b939a0ae1ce9bb76338e1d193ab2ccd9a85d55d0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-7.0.3.tgz#216d292f2aedd1bb61414a8f949b63e4de11b33b"
integrity sha512-+SVEDS4B2x9aat+if8rtUbm8WdxArH2/tVKiSD8eCxy7hnVNlESd4EQQM16EOFrUCvSHECscsvq61N1FPejZtw== integrity sha512-Io+lJytjYBJKgJqZQUz2bFaMPj+HtlsnT9kHSUiIJFqzWa05lm5/ycQ+NiZWpks3DR2Fz7j7axiTGeT57w/syg==
dependencies: dependencies:
nofilter "^2.0.0" "@cto.af/textdecoder" "^0.0.0"
nofilter "^2.0.3"
center-align@^0.1.1: center-align@^0.1.1:
version "0.1.3" version "0.1.3"
@ -3986,13 +3970,13 @@ eslint-visitor-keys@^2.0.0:
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
eslint@7.20.0: eslint@7.21.0:
version "7.20.0" version "7.21.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.20.0.tgz#db07c4ca4eda2e2316e7aa57ac7fc91ec550bdc7" resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.21.0.tgz#4ecd5b8c5b44f5dedc9b8a110b01bbfeb15d1c83"
integrity sha512-qGi0CTcOGP2OtCQBgWZlQjcTuP0XkIpYFj25XtRTQSHC+umNnp7UMshr2G8SLsRFYDdAPFeHOsiteadmMH02Yw== integrity sha512-W2aJbXpMNofUp0ztQaF40fveSsJBjlSCSWpy//gzfTvwC+USs/nceBrKmlJOiM8r1bLwP2EuYkCqArn/6QTIgg==
dependencies: dependencies:
"@babel/code-frame" "7.12.11" "@babel/code-frame" "7.12.11"
"@eslint/eslintrc" "^0.3.0" "@eslint/eslintrc" "^0.4.0"
ajv "^6.10.0" ajv "^6.10.0"
chalk "^4.0.0" chalk "^4.0.0"
cross-spawn "^7.0.2" cross-spawn "^7.0.2"
@ -4005,7 +3989,7 @@ eslint@7.20.0:
espree "^7.3.1" espree "^7.3.1"
esquery "^1.4.0" esquery "^1.4.0"
esutils "^2.0.2" esutils "^2.0.2"
file-entry-cache "^6.0.0" file-entry-cache "^6.0.1"
functional-red-black-tree "^1.0.1" functional-red-black-tree "^1.0.1"
glob-parent "^5.0.0" glob-parent "^5.0.0"
globals "^12.1.0" globals "^12.1.0"
@ -4293,10 +4277,10 @@ figlet@^1.1.1:
resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.3.0.tgz#c49e3d92907ba13bebadc7124f76ba71f1f32ef0" resolved "https://registry.yarnpkg.com/figlet/-/figlet-1.3.0.tgz#c49e3d92907ba13bebadc7124f76ba71f1f32ef0"
integrity sha512-f7A8aOJAfyehLJ7lQ6rEA8WJw7kOk3lfWRi5piSjkzbK5YkI5sqO8eiLHz1ehO+DM0QYB85i8VfA6XIGUbU1dg== integrity sha512-f7A8aOJAfyehLJ7lQ6rEA8WJw7kOk3lfWRi5piSjkzbK5YkI5sqO8eiLHz1ehO+DM0QYB85i8VfA6XIGUbU1dg==
file-entry-cache@^6.0.0: file-entry-cache@^6.0.1:
version "6.0.0" version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
dependencies: dependencies:
flat-cache "^3.0.4" flat-cache "^3.0.4"
@ -7000,10 +6984,12 @@ nodemailer@6.5.0:
resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9"
integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw== integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw==
nofilter@^2.0.0: nofilter@^2.0.3:
version "2.0.0" version "2.0.3"
resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.0.tgz#57a2d7c6fcd34dd396f490d6942c4f58640b5823" resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-2.0.3.tgz#f5460f3cb33147005883e3f5d4476239501fa187"
integrity sha512-i3ck2PUWBa+trsGGBvwS3msnTowbFei5G++BgpOpT7y7VTrprXphMQP5svTdsMLdttKDZFo+5RqVWRqhmf+BwQ== integrity sha512-FbuXC+lK+GU2+63D1kC1ETiZo+Z7SIi7B+mxKTCH1byrh6WFvfBCN/wpherFz0a0bjGd7EKTst/cz0yLeNngug==
dependencies:
"@cto.af/textdecoder" "^0.0.0"
noop-logger@^0.1.1: noop-logger@^0.1.1:
version "0.1.1" version "0.1.1"
@ -8534,9 +8520,9 @@ pug-attrs@^2.0.4:
pug-runtime "^2.0.5" pug-runtime "^2.0.5"
pug-code-gen@^2.0.2: pug-code-gen@^2.0.2:
version "2.0.2" version "2.0.3"
resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz#ad0967162aea077dcf787838d94ed14acb0217c2" resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.3.tgz#122eb9ada9b5bf601705fe15aaa0a7d26bc134ab"
integrity sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw== integrity sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==
dependencies: dependencies:
constantinople "^3.1.2" constantinople "^3.1.2"
doctypes "^1.1.0" doctypes "^1.1.0"
@ -10982,10 +10968,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" resolved "https://registry.yarnpkg.com/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz#aa53a88efaaed628027cbb282c2b1d37fc7c5c69"
integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w== integrity sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==
vue-router@4.0.3: vue-router@4.0.4:
version "4.0.3" version "4.0.4"
resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.3.tgz#8b26050c88b2dec7e27a88835f71046b365823ec" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.4.tgz#ad9b4b7bbdad622407b4ff189b1646f48c1e9053"
integrity sha512-AD1OjtVPyQHTSpoRsEGfPpxRQwhAhxcacOYO3zJ3KNkYP/r09mileSp6kdMQKhZWP2cFsPR3E2M3PZguSN5/ww== integrity sha512-uN6PDEaYdU9aRO7mU+Dkr1uaY49hV3fucEDG/Vre/Qj8ct3RoJS16vcPrvKVzn69zDDjBV5b9Xw7fZA9r6b/Iw==
vue-style-loader@4.1.2: vue-style-loader@4.1.2:
version "4.1.2" version "4.1.2"