diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ca5870e76..559e2d8f62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,43 @@ ChangeLog ========= +12.44.1 (2020/7/29) +------------------- +### 🐛Fixes +- 通知が流れない問題を修正 [9f94f60](https://github.com/syuilo/misskey/commit/9f94f60ededccfb3ff109aef1241be633d27eaa7) + +12.44.0 (2020/7/29) +------------------- +### ✨Improvements +- ワードミュートの実装 [#6594](https://github.com/syuilo/misskey/pull/6594) +- ページのリストをタブUIに [6b8354c](https://github.com/syuilo/misskey/commit/6b8354ccbfa1d96b4445013d2e93af8e06550516) +- プラグインを無効にできるように [595ad04](https://github.com/syuilo/misskey/commit/595ad04ddbbf9ff9fc6842f345d4738a9f1cc150) +- AiScript: ノート書き換えAPI [30df8ea](https://github.com/syuilo/misskey/commit/30df8ea1213013072f139aa26a635330457cf2bc) +- クライアントのソースコードのリファクタ [b5a1fdd](https://github.com/syuilo/misskey/commit/b5a1fdd4c7597ebdd4ab6022e189da9ca3451dbb), [14b7f05](https://github.com/syuilo/misskey/commit/14b7f05af40ede154a767334dbbefc3458584290), [0efa969](https://github.com/syuilo/misskey/commit/0efa969a153a060d232a0e31b10577ece87faeae), [a8adc46](https://github.com/syuilo/misskey/commit/a8adc46f3ba42e86c64a64f2633f5796aeca01f4), [1b9d316](https://github.com/syuilo/misskey/commit/1b9d316e7c2446211f4b5b6ec27dce0d9b4f0968) + +12.43.0 (2020/7/26) +------------------- +*このアップデートでは、データベースのマイグレーション(`npm run migrate`/`yarn migrate`)が必要です。* + +### ✨Improvements +- 連合ウィジェットを追加 [186b26e](https://github.com/syuilo/misskey/commit/186b26e103d5dc893a741ab9c5805b5dc81f14c0), [e1f2e36](https://github.com/syuilo/misskey/commit/e1f2e364a4347a8da78a32ed741c789a288d3957), [bd54e44](https://github.com/syuilo/misskey/commit/bd54e44b35f7aeae8766054322e2908881323041), [58211fc](https://github.com/syuilo/misskey/commit/58211fc6a72536b066bd8a78fb4bb083cfc1051a), [e5863c2](https://github.com/syuilo/misskey/commit/e5863c2867c1ee8d0d6f2257de7f7fc7791cf8a6), [55be9cc](https://github.com/syuilo/misskey/commit/55be9cc9d130cca541cfe0569885db4d79a58128) + * 連合ウィジェットは、最近着信のあったリモートのインスタンスを表示します。 +- リモートのインスタンスのアイコンを取得して表示するように [#6591](https://github.com/syuilo/misskey/pull/6591), [b07d037](https://github.com/syuilo/misskey/commit/b07d037cb5b1531c38cb2d56ff612bdba5c58a3f), [3f2ffce](https://github.com/syuilo/misskey/commit/3f2ffcea97b6496053fd4027192976bfad2626b0) +- インスタンス設定の不足分を追加 [#6576](https://github.com/syuilo/misskey/pull/6576) +- クライアントでのソースコードのリファクタ・パフォーマンス改善 + * lintでのエラーを修正 [#6568](https://github.com/syuilo/misskey/pull/6568) + * ~~vue-i18nのv-tを使うように [9c30b23](https://github.com/syuilo/misskey/commit/9c30b23358699a530f2bcb0f5ae6efe17146bcb3)~~ [166bc19](https://github.com/syuilo/misskey/commit/166bc19131ae4b40bdd5e85269729f6eb5e3d931) + * 静的な内容にv-onceを付加 [da874f3](https://github.com/syuilo/misskey/commit/da874f3383088dddbf7ce441b0c9d8f6512dfc9b) + +### 🐛Fixes +- 投票の残り時間表示の修正 [#6565](https://github.com/syuilo/misskey/pull/6565) +- blurhashにした影響で猫耳の色をアイコンに合わせられなくなっているのを修正 [#6585](https://github.com/syuilo/misskey/pull/6585), [7e2b6b6](https://github.com/syuilo/misskey/commit/7e2b6b6369a5eecad2374b84527dca1a712053c9) +- 脆弱性のある依存関係をアップデート [#6572](https://github.com/syuilo/misskey/pull/6572) +- blurhashのテストを修正 [#6573](https://github.com/syuilo/misskey/pull/6573) +- Deckであなた宛て・ダイレクトカラムを追加するとメインカラムに文字が重なる問題を修正 [#6577](https://github.com/syuilo/misskey/pull/6577) +- Deckの翻訳を追加 [#6567](https://github.com/syuilo/misskey/pull/6567) +- アンテナカラムの挙動を正常化 [#6567](https://github.com/syuilo/misskey/pull/6567) +- ウィジェットカラムの挙動を正常化して編集モードの見栄えを良くした [#6567](https://github.com/syuilo/misskey/pull/6567) + 12.42.0 (2020/7/19) ------------------- *このアップデートでは、データベースのマイグレーション(`npm run migrate`/`yarn migrate`)が必要です。* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9612d6e2bd..2ffe6dc2e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,12 @@ # Contribution guide :v: Thanks for your contributions :v: +## When you contribute... +- 任意のIssueについて、せっかく実装してくださっても、実装方法や設計の認識が揃ってないとマージできない/しないことになりかねないので、初めにそのIssue上で着手することを宣言し、必要に応じて他メンバーと実装方法や設計のすり合わせを行ってください。宣言することは作業が他の人と被るのを防止する効果もあります。 + - 設計に迷った時はプロジェクトリーダーの判断を仰いでください。 +- 時間や優先度の都合上、提出してくださったPRが長期間放置されることもありますがご理解ください。 + - 温度感高めで見てほしいものは責付いてください。 + ## Issues Feature suggestions and bug reports are filed in https://github.com/syuilo/misskey/issues . diff --git a/README.md b/README.md index aacdfee96c..263e7b44ca 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Roujo Oliver Maximilian Seidel weepjp -Jon Leibowitz kiritan みなしま Eduardo Quiros @@ -120,7 +119,6 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Roujo Oliver Maximilian Seidel weepjp -Jon Leibowitz kiritan みなしま Eduardo Quiros @@ -135,7 +133,7 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Nie(sha) osapon 見当かなみ -YuzuRyo61 +Wataru Manji (manji0) Nesakko Demogrognard @@ -146,9 +144,10 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). Nie(sha) osapon 見当かなみ -YuzuRyo61 +Wataru Manji (manji0) + @@ -156,8 +155,8 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). - + @@ -165,50 +164,51 @@ Please see the [Contribution Guide](./CONTRIBUTING.md). -
YuzuRyo61 mewl hayabusa S Y Takumi SugitaYUKIMOCHI totokoro sheeta.s motcha
YuzuRyo61 mewl hayabusa S Y Takumi SugitaYUKIMOCHI totokoro sheeta.s motcha
+ - - + - + - - + - + -
motcha axtuki1 Satsuki Yanagi takimura aqz tamaina012 nafuchoco Atsuko Tominaganatalie natalie EBISUME noellabo CG Hekovic
motcha axtuki1 Satsuki Yanagi takimura aqz tamaina012 nafuchoco nafuchoco Atsuko Tominaganatalie natalie EBISUME noellabo CG Hekovic
+ + + +
Hekovic uroco @99Chandler Nokotaro Takeda nenohi Efertone Takashi Shibuya
Hekovic uroco @99Chandler Nokotaro Takeda nenohi Efertone Takashi Shibuya
-**Last updated:** Tue, 02 Jun 2020 00:00:08 UTC +**Last updated:** Tue, 14 Jul 2020 09:00:09 UTC [backer-url]: #backers diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 5cdf07e3ec..fc41376954 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -193,6 +193,7 @@ rename: "إعادة التسمية" avatar: "الصورة الرمزية" banner: "الصورة الرأسية" nsfw: "محتوى حساس" +disconnectedFromServer: "قُطِع الإتصال بالخادم" reload: "انعش" doNothing: "تجاهل" watch: "راقب" @@ -255,6 +256,7 @@ unregister: "إلغاء التسجيل" passwordLessLogin: "لِج مِن دون كلمة سرية" resetPassword: "أعد تعيين كلمتك السرية" newPasswordIs: "كلمتك السرية الجديدة هي {password}" +autoReloadWhenDisconnected: "إنعاش تلقائي عندما يُقطَع الإتصال بالخادم" autoNoteWatch: "راقب الملاحظات تلقائيا" share: "شارِك" notFound: "غير موجود" @@ -311,6 +313,7 @@ remote: "بُعدي" total: "المجموع" weekOverWeekChanges: "أسبوعيا" dayOverDayChanges: "يوميا" +appearance: "المظهر" clinetSettings: "إعدادات التطبيق" accountSettings: "إعدادات الحساب" promotion: "ترقية" @@ -341,8 +344,21 @@ addRelay: "إضافة مُرحّل" addedRelays: "المرحلات التي تم إضافتها" deletedNote: "ملاحظة محذوفة" invisibleNote: "ملاحظة مخفية" +poll: "استطلاع رأي" +themeEditor: "مصمم القوالب" +plugins: "الإضافات" +pluginInstallWarn: "يرجى تنصيب إضافات ذات مصدر موثوق منه فقط." +smtpHost: "المضيف" +smtpUser: "اسم المستخدم" +smtpPass: "الكلمة السرية" _theme: explore: "استكشف قوالب المظهر" + install: "تنصيب قالب" + manage: "إدارة القوالب" + code: "شيفرة القالب" + installed: "تم تنصيب {name}" + make: "إنشاء قالب" + alpha: "الشفافية" keys: messageBg: "خلفية الدردشة" _sfx: @@ -392,18 +408,29 @@ _widgets: rss: "تدفق RSS" activity: "النشاط" photos: "الصور" + federation: "الفديرالية" _cw: hide: "إخفاء" show: "عرض المزيد" chars: "{count} أحرف" files: "{count} ملفات" _poll: + noOnlyOneChoice: "تحتاج إلى خيارَين على الأقل" + choiceN: "الخيار {n}" + noMore: "لا يمكنك إضافة خيارات أخرى" + canMultipleVote: "السماح بالإجابات المتعددة" + expiration: "ينتهي استطلاع الرأي في" + infinite: "أبدًا" at: "تاريخ الإنتهاء" + after: "ينتهي بعد…" deadlineDate: "تاريخ الانتهاء" deadlineTime: "سا" duration: "المدة" + votesCount: "{n} أصوات" + totalVotes: "المجموع {n} أصوات" vote: "قم بالتصويت" showResult: "اعرض النتائج" + voted: "تم التصويت" closed: "انتهى" remainingDays: "{d} أيام و {h} ساعات متبقية" remainingHours: "{h} ساعات و {m} دقائق متبقية" @@ -469,9 +496,13 @@ _pages: types: array: "القوائم" _notification: + youGotPoll: "شارك {name} في استطلاع الرأي" youGotMessagingMessageFromUser: "لقد تلقيت رسالة مِن {name}" youGotMessagingMessageFromGroup: "لقد أرسِلَت رسالة إلى الفريق {name}" youWereFollowed: "يتابعك" + _types: + follow: "المتابَعون" + quote: "اقتبس" _deck: _columns: notifications: "الإشعارات" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 25e7290462..8485f3bd0e 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -104,6 +104,8 @@ unblockConfirm: "Möchtest du diese Blockierung wirklich aufheben?" suspendConfirm: "Möchtest du diesen Benutzer wirklich sperren?" unsuspendConfirm: "Möchtest du die Sperrung dieses Benutzers wirklich aufheben?" selectList: "Wähle eine Liste aus" +selectAntenna: "Antenne auswählen" +selectWidget: "Widget auswählen" customEmojis: "Benutzerdefinierte Emojis" emoji: "Emoji" emojiName: "Emojiname" @@ -442,7 +444,7 @@ remote: "Fremd" total: "Gesamt" weekOverWeekChanges: "Wöchentlich" dayOverDayChanges: "Täglich" -accessibility: "Barrierefreiheit" +appearance: "Aussehen" clinetSettings: "Client-Einstellungen" accountSettings: "Benutzerkonto-Einstellungen" promotion: "Hervorgehoben" @@ -528,6 +530,40 @@ plugins: "Plugins" pluginInstallWarn: "Installiere nur vertrauenswürdige Plugins." deck: "Deck" undeck: "Deck verlassen" +useBlurEffectForModal: "Weichzeichnungseffekt für Modals verwenden" +generateAccessToken: "Zugriffstoken generieren" +permission: "Berechtigungen" +enableAll: "Alle aktivieren" +disableAll: "Alle deaktivieren" +tokenRequested: "Benutzerkontozugriff gewähren" +pluginTokenRequestedDescription: "Dieses Plugin wird die hier konfigurierten Berechtigungen verwenden können." +notificationType: "Benachrichtigungstyp" +edit: "Bearbeiten" +useStarForReactionFallback: "Verwende ★ falls das Reaktions-Emoji unbekannt ist" +emailConfig: "Email-Server Konfiguration" +enableEmail: "Email-Versand aktivieren" +emailConfigInfo: "Zur Email-Bestätigung bei Registrierung und zum Zurücksetzen des Passworts verwendet" +email: "Email-Adresse" +smtpConfig: "SMTP-Server Konfiguration" +smtpHost: "Host" +smtpPort: "Port" +smtpUser: "Benutzername" +smtpPass: "Passwort" +emptyToDisableSmtpAuth: "Benutzername und Passwort leer lassen um SMTP-Verifizierung zu deaktivieren" +smtpSecure: "Für SMTP-Verbindungen implizit SSL/TLS verwenden" +smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest" +testEmail: "Email-Versand testen" +wordMute: "Wort-Stummschaltung" +userSaysSomething: "{name} hat etwas gesagt." +makeActive: "Aktivieren" +_wordMute: + muteWords: "Wort stummschalten" + muteWordsDescription: "Mit Leerzeichen für eine \"UND\"-Verknüpfung trennen, durch Zeilenumbrüche für eine \"ODER\"-Verknüpfung trennen." + muteWordsDescription2: "Umgib Schlüsselworter mit Schrägstrichen, um Reguläre Ausdrücke zu verwenden." + softDescription: "Notizen, die die eingestellten Konditionen erfüllen, in der Chronik ausblenden" + hardDescription: "Verhindern, dass Notizen, die die eingestellten Konditionen erfüllen, der Chronik hinzugefügt werden. Zudem werden diese Notizen auch nicht der Chronik hinzugefügt, falls die Konditionen geändert werden." + soft: "Leicht" + hard: "Schwer" _theme: explore: "Themen erforschen" install: "Thema installieren" @@ -548,7 +584,7 @@ _theme: func: "Funktionen" funcKind: "Funktionstyp" argument: "Parameter" - basedProp: "Name der referenzierten Eigenschaft" + basedProp: "Referenzierte Eigenschaft" alpha: "Transparenz" darken: "Verdunkeln" lighten: "Erhellen" @@ -713,6 +749,7 @@ _widgets: activity: "Aktivität" photos: "Fotos" digitalClock: "Digitaluhr" + federation: "Föderation" _cw: hide: "Ausblenden" show: "Mehr anzeigen" @@ -1166,10 +1203,26 @@ _notification: youReceivedFollowRequest: "Du hast eine Follow-Anfrage erhalten" yourFollowRequestAccepted: "Deine Follow-Anfrage wurde akzeptiert" youWereInvitedToGroup: "Du wurdest in eine Gruppe eingeladen" + _types: + all: "Alle" + follow: "Folgt" + mention: "Erwähnung" + reply: "Antworten" + renote: "Renote" + quote: "Zitieren" + reaction: "Reaktionen" + pollVote: "Umfragen" + receiveFollowRequest: "Follow-Anfragen" _deck: alwaysShowMainColumn: "Hauptspalte immer zeigen" columnAlign: "Spalten ausrichten" addColumn: "Spalte hinzufügen" + swapLeft: "Nach links verschieben" + swapRight: "Nach rechts verschieben" + swapUp: "Nach oben verschieben" + swapDown: "Nach unten verschieben" + stackLeft: "Nach links stapeln" + popRight: "Nach rechts vom Stapel nehmen" _columns: widgets: "Widgets" notifications: "Benachrichtigungen" diff --git a/locales/en-US.yml b/locales/en-US.yml index d08191ad5e..aa4ada2b85 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -104,6 +104,8 @@ unblockConfirm: "Are you sure that you want to unblock this account?" suspendConfirm: "Are you sure that you want to suspend this account?" unsuspendConfirm: "Are you sure you that want to unsuspend this account?" selectList: "Select a list" +selectAntenna: "Select an Antenna" +selectWidget: "Select a widget" customEmojis: "Custom Emoji" emoji: "Emoji" emojiName: "Emoji name" @@ -442,7 +444,7 @@ remote: "Remote" total: "Total" weekOverWeekChanges: "Weekly" dayOverDayChanges: "Daily" -accessibility: "Accessibility" +appearance: "Appearance" clinetSettings: "Client Settings" accountSettings: "Account Settings" promotion: "Promoted" @@ -528,6 +530,40 @@ plugins: "Plugins" pluginInstallWarn: "Please do not install untrustworthy plugins." deck: "Deck" undeck: "Leave Deck" +useBlurEffectForModal: "Use blur effect for modals" +generateAccessToken: "Generate access token" +permission: "Permissions" +enableAll: "Enable all" +disableAll: "Disable all" +tokenRequested: "Grant access to account" +pluginTokenRequestedDescription: "This plugin will be able to use the permissions set here." +notificationType: "Notification type" +edit: "Edit" +useStarForReactionFallback: "Use ★ as fallback if the reaction emoji is unknown" +emailConfig: "Email server configuration" +enableEmail: "Enable email distribution" +emailConfigInfo: "Used to confirm your email during sign-up and if you forget your password" +email: "Email Address" +smtpConfig: "SMTP Server configuration" +smtpHost: "Host" +smtpPort: "Port" +smtpUser: "Username" +smtpPass: "Password" +emptyToDisableSmtpAuth: "Leave username and password empty to disable SMTP verification" +smtpSecure: "Use implicit SSL/TLS for SMTP connections" +smtpSecureInfo: "Turn this off when using STARTTLS" +testEmail: "Test email delivery" +wordMute: "Word mute" +userSaysSomething: "{name} said something" +makeActive: "Activate" +_wordMute: + muteWords: "Word to mute" + muteWordsDescription: "Separate with spaces for AND condition. Separate with line breaks for OR." + muteWordsDescription2: "Surround keywords by slashes to use regular expressions." + softDescription: "Hide notes fulfilling the set conditions from the timeline." + hardDescription: "Prevent notes fulfilling the set conditions from being added to the timeline. In addition, these notes will not be added to the timeline even if the conditions are changed." + soft: "Soft" + hard: "Hard" _theme: explore: "Explore Themes" install: "Install theme" @@ -548,7 +584,7 @@ _theme: func: "Functions" funcKind: "Function type" argument: "Argument" - basedProp: "Name of the referenced property" + basedProp: "Referenced property" alpha: "Opacity" darken: "Darken" lighten: "Lighten" @@ -713,6 +749,7 @@ _widgets: activity: "Activity" photos: "Photos" digitalClock: "Digital clock" + federation: "Federation" _cw: hide: "Hide" show: "Load more" @@ -1166,10 +1203,26 @@ _notification: youReceivedFollowRequest: "You've received a follow request" yourFollowRequestAccepted: "Your follow request was accepted" youWereInvitedToGroup: "Invited to group" + _types: + all: "All" + follow: "Following" + mention: "Mention" + reply: "Replies" + renote: "Renote" + quote: "Quote" + reaction: "Reaction" + pollVote: "Polls" + receiveFollowRequest: "Follow requests" _deck: alwaysShowMainColumn: "Always show main column" columnAlign: "Align columns" addColumn: "Add column" + swapLeft: "Swap to left" + swapRight: "Swap to right" + swapUp: "Swap with above" + swapDown: "Swap with below" + stackLeft: "Stack on the left" + popRight: "Pop to the right" _columns: widgets: "Widgets" notifications: "Notifications" diff --git a/locales/es-ES.yml b/locales/es-ES.yml index e2a160c589..cc5d468816 100644 --- a/locales/es-ES.yml +++ b/locales/es-ES.yml @@ -442,7 +442,7 @@ remote: "Remoto" total: "Total" weekOverWeekChanges: "Dif semanal" dayOverDayChanges: "Dif diaria" -accessibility: "Accesibilidad" +appearance: "Apariencia" clinetSettings: "Ajustes del cliente" accountSettings: "Ajustes de cuenta" promotion: "Promovido" @@ -526,6 +526,29 @@ leaveConfirm: "Hay modificaciones sin guardar. ¿Desea descartarlas?" manage: "Administrar" plugins: "Plugins" pluginInstallWarn: "Por favor no instale plugins que no son de confianza" +deck: "Deck" +undeck: "Quitar deck" +useBlurEffectForModal: "Usar efecto borroso en modales" +generateAccessToken: "Generar token de acceso" +permission: "Permisos" +enableAll: "Activar todo" +disableAll: "Desactivar todo" +tokenRequested: "Permiso de acceso a la cuenta" +pluginTokenRequestedDescription: "Este plugin podrá usar los permisos descritos aquí" +useStarForReactionFallback: "En caso de que los emojis de reacciones no sean claros, usar en su lugar una estrella" +emailConfig: "Configuración del servidor de correos" +enableEmail: "Activar el envío de correos electrónicos" +emailConfigInfo: "Usar en caso de validación de correo electrónico y pedido de contraseña" +email: "Correo electrónico" +smtpConfig: "Configuración del servidor SMTP" +smtpHost: "Host" +smtpPort: "Puerto" +smtpUser: "Nombre de usuario" +smtpPass: "Contraseña" +emptyToDisableSmtpAuth: "Deje el nombre del usuario y la contraseña en blanco para deshabilitar la autenticación SMTP" +smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP" +smtpSecureInfo: "Apagar cuando se use STARTTLS" +testEmail: "Prueba de envío" _theme: explore: "Explorar temas" install: "Instalar tema" @@ -711,6 +734,7 @@ _widgets: activity: "Actividad" photos: "Fotos" digitalClock: "Reloj digital" + federation: "Federación" _cw: hide: "Ocultar" show: "Ver más" @@ -1164,9 +1188,16 @@ _notification: youReceivedFollowRequest: "Has mandado una solicitud de seguimiento" yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada" youWereInvitedToGroup: "Invitado al grupo" + _types: + follow: "Siguiendo" + mention: "Menciones" + renote: "Renotar" + quote: "Citar" + reaction: "Reacción" _deck: alwaysShowMainColumn: "Siempre mostrar la columna principal" columnAlign: "Alinear columnas" + addColumn: "Agregar columna" _columns: widgets: "Widgets" notifications: "Notificaciones" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index b055f59678..b4aa5513a7 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -104,6 +104,8 @@ unblockConfirm: "Êtes-vous sûr·e de vouloir débloquer ce compte ?" suspendConfirm: "Êtes-vous sûr·e de vouloir suspendre ce compte ?" unsuspendConfirm: "Êtes-vous sûr·e de vouloir annuler la suspension de ce compte ?" selectList: "Sélectionner une liste" +selectAntenna: "Sélectionner une antenne" +selectWidget: "Sélectionner un widget" customEmojis: "Émojis personnalisés" emoji: "Émoji" emojiName: "Nom de l’émoji" @@ -442,7 +444,7 @@ remote: "Distant" total: "Total" weekOverWeekChanges: "Diff hebdo" dayOverDayChanges: "Diff quotidien" -accessibility: "Accessibilité" +appearance: "Aspect" clinetSettings: "Paramètres du client" accountSettings: "Paramètres du compte" promotion: "Promu" @@ -522,8 +524,25 @@ expandTweet: "Étendre le tweet" themeEditor: "Éditeur de thèmes" description: "Description" author: "Auteur·rice" +leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?" manage: "Gestion" plugins: "Extensions" +pluginInstallWarn: "N’installez que des extensions provenant de sources de confiance." +deck: "Deck" +undeck: "Quitter le deck" +useBlurEffectForModal: "Utiliser un effet de flou pour les modals" +generateAccessToken: "Générer un jeton d'accès" +permission: "Autorisations " +enableAll: "Tout activer" +disableAll: "Tout désactiver" +tokenRequested: "Autoriser l'accès au compte" +pluginTokenRequestedDescription: "Ce plugin pourra utiliser les autorisations définies ici." +notificationType: "Type de notifications" +edit: "Editer" +emailConfig: "Configuration du serveur email" +smtpHost: "Hôte" +smtpUser: "Nom d’utilisateur·rice" +smtpPass: "Mot de passe" _theme: explore: "Explorer les thèmes" install: "Installer un thème" @@ -536,10 +555,12 @@ _theme: base: "Base" defaultValue: "Valeur par défaut" color: "Couleur" + key: "Clé " func: "Fonction" argument: "Argument" alpha: "Transparence" darken: "Assombrir" + importInfo: "Vous pouvez importer un thème vers l’éditeur de thèmes en saisissant son code ici." keys: bg: "Arrière-plan" fg: "Texte" @@ -549,10 +570,15 @@ _theme: shadow: "Ombre" header: "Entête" navBg: "Fond de la barre latérale" + navFg: "Texte de la barre latérale" + link: "Lien" hashtag: "Hashtags" mention: "Mentionner" + mentionMe: "Mentions (Moi)" renote: "Renote" divider: "Séparateur" + infoWarnFg: "Texte d’avertissement" + badge: "Badge" messageBg: "Arrière plan de la discussion" _sfx: note: "Nouvelle note" @@ -667,6 +693,8 @@ _widgets: rss: "Lecteur de flux RSS" activity: "Activité" photos: "Photos" + digitalClock: "Horloge numérique" + federation: "Fédération" _cw: hide: "Masquer" show: "Afficher plus …" @@ -1120,9 +1148,16 @@ _notification: youReceivedFollowRequest: "Vous avez reçu une demande d’abonnement" yourFollowRequestAccepted: "Votre demande d’abonnement a été accepté" youWereInvitedToGroup: "Invité au groupe" + _types: + follow: "Abonnements" + mention: "Mentionner" + renote: "Renote" + quote: "Citer" + reaction: "Réactions" _deck: alwaysShowMainColumn: "Toujours afficher la colonne principale" columnAlign: "Aligner les colonnes" + addColumn: "Ajouter une colonne" _columns: widgets: "Widgets" notifications: "Notifications" diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index ec767aafa9..06b53f26a0 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -104,6 +104,8 @@ unblockConfirm: "ブロック解除しますか?" suspendConfirm: "凍結しますか?" unsuspendConfirm: "解凍しますか?" selectList: "リストを選択" +selectAntenna: "アンテナを選択" +selectWidget: "ウィジェットを選択" customEmojis: "カスタム絵文字" emoji: "絵文字" emojiName: "絵文字名" @@ -535,6 +537,34 @@ enableAll: "全て有効にする" disableAll: "全て無効にする" tokenRequested: "アカウントへのアクセス許可" pluginTokenRequestedDescription: "このプラグインはここで設定した権限を行使できるようになります。" +notificationType: "通知の種類" +edit: "編集" +useStarForReactionFallback: "リアクション絵文字が不明な場合、代わりに★を使う" +emailConfig: "メールサーバー設定" +enableEmail: "メール配信機能を有効化する" +emailConfigInfo: "メールアドレスの確認やパスワードリセットの際に使います" +email: "メールアドレス" +smtpConfig: "SMTP サーバーの設定" +smtpHost: "ホスト" +smtpPort: "ポート" +smtpUser: "ユーザー名" +smtpPass: "パスワード" +emptyToDisableSmtpAuth: "ユーザー名とパスワードを空欄にすることで、SMTP認証を無効化出来ます" +smtpSecure: "SMTP 接続に暗黙的なSSL/TLSを使用する" +smtpSecureInfo: "STARTTLS使用時はオフにします。" +testEmail: "配信テスト" +wordMute: "ワードミュート" +userSaysSomething: "{name}が何かを言いました" +makeActive: "アクティブにする" + +_wordMute: + muteWords: "ミュートするワード" + muteWordsDescription: "スペースで区切るとAND指定になり、改行で区切るとOR指定になります。" + muteWordsDescription2: "キーワードをスラッシュで囲むと正規表現になります。" + softDescription: "指定した条件のノートをタイムラインから隠します。" + hardDescription: "指定した条件のノートをタイムラインに追加しないようにします。追加されなかったノートは、条件を変更しても除外されたままになります。" + soft: "ソフト" + hard: "ハード" _theme: explore: "テーマを探す" @@ -1211,10 +1241,27 @@ _notification: yourFollowRequestAccepted: "フォローリクエストが承認されました" youWereInvitedToGroup: "グループに招待されました" + _types: + all: "すべて" + follow: "フォロー" + mention: "メンション" + reply: "リプライ" + renote: "Renote" + quote: "引用" + reaction: "リアクション" + pollVote: "投票" + receiveFollowRequest: "フォローリクエスト" + _deck: alwaysShowMainColumn: "常にメインカラムを表示" columnAlign: "カラムの寄せ" addColumn: "カラムを追加" + swapLeft: "左に移動" + swapRight: "右に移動" + swapUp: "上に移動" + swapDown: "下に移動" + stackLeft: "左に重ねる" + popRight: "右に出す" _columns: widgets: "ウィジェット" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index 16a344b188..b12c3d45e0 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -295,6 +295,7 @@ proxyRemoteFilesDescription: "この設定を入れると、保存しとらん driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" inMb: "メガバイト単位" +recaptcha: "reCAPTCHA" avoidMultiCaptchaConfirm: "ぎょうさんのCaptchaをつこてしまうと、仲良うせんことがあるんや。他のCaptchaをなおしとこか?別にキャンセルしてもろうたらCaptchaは消されへんで済むけど知らんで。" antennas: "アンテナ" manageAntennas: "アンテナいじる" @@ -352,6 +353,9 @@ notFoundDescription: "指定されたURLに該当するページはあらへん close: "さいなら" joinedGroups: "参加しとるグループ" invites: "来てや" +smtpHost: "ホスト" +smtpUser: "ユーザー名" +smtpPass: "パスワード" _theme: keys: renote: "Renote" @@ -386,6 +390,7 @@ _widgets: notifications: "通知" timeline: "タイムライン" activity: "アクティビティ" + federation: "連合" _cw: show: "もっとあるやろ!" _poll: @@ -434,6 +439,11 @@ _pages: array: "リスト" _notification: youWereFollowed: "フォローされたで" + _types: + follow: "フォロー" + renote: "Renote" + quote: "引用" + reaction: "リアクション" _deck: _columns: notifications: "通知" diff --git a/locales/kab-KAB.yml b/locales/kab-KAB.yml index 4f754f4617..14aaa53e70 100644 --- a/locales/kab-KAB.yml +++ b/locales/kab-KAB.yml @@ -33,6 +33,8 @@ youHaveNoLists: "Ulac ɣur-k·m ula d yiwet n tabdart" remove: "Kkes" userList: "Tibdarin" uiLanguage: "Tutlayt n wegrudem" +smtpUser: "Isem n umseqdac" +smtpPass: "Awal uffir" _theme: keys: mention: "Bder" @@ -80,6 +82,9 @@ _pages: array: "Tibdarin" _notification: youWereFollowed: "Yeṭṭafaṛ-ik·em-id" + _types: + follow: "Ig ṭṭafaṛ" + mention: "Bder" _deck: _columns: notifications: "Ilɣuyen" diff --git a/locales/kn-IN.yml b/locales/kn-IN.yml index 49368dde9b..7a3b162aca 100644 --- a/locales/kn-IN.yml +++ b/locales/kn-IN.yml @@ -54,6 +54,8 @@ driveFileDeleteConfirm: "\"{name}\" ಕಡತವನ್ನು ಅಳಿಸಲು unfollowConfirm: "{name}ಅನ್ನು ಹಿಂಬಾಲಿಸದಿರುವುದೇ?" instances: "ನಿದರ್ಶನ" remove: "ಅಳಿಸು" +smtpUser: "ಬಳಕೆಹೆಸರು" +smtpPass: "ಗುಪ್ತಪದ" _sfx: notification: "ಅಧಿಸೂಚನೆಗಳು" _widgets: diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index f7ffa4de67..51e4c618e0 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -442,7 +442,6 @@ remote: "리모트" total: "합계" weekOverWeekChanges: "지난주보다" dayOverDayChanges: "어제보다" -accessibility: "접근성" clinetSettings: "클라이언트 설정" accountSettings: "계정 설정" promotion: "프로모션" @@ -528,6 +527,9 @@ plugins: "플러그인" pluginInstallWarn: "신뢰할 수 없는 플러그인은 설치하지 마십시오." deck: "덱" undeck: "덱 해제" +smtpHost: "호스트" +smtpUser: "유저명" +smtpPass: "비밀번호" _theme: explore: "테마 찾아보기" install: "테마 설치" @@ -665,6 +667,8 @@ _widgets: rss: "RSS 리더" activity: "활동" photos: "사진" + digitalClock: "디지털 시계" + federation: "연합" _cw: hide: "숨기기" show: "더 보기" @@ -1116,8 +1120,15 @@ _notification: youReceivedFollowRequest: "새로운 팔로우 요청이 있습니다" yourFollowRequestAccepted: "팔로우 요청이 수락되었습니다" youWereInvitedToGroup: "그룹에 초대되었습니다" + _types: + follow: "팔로잉" + mention: "멘션" + renote: "Renote" + quote: "인용" + reaction: "리액션" _deck: _columns: + widgets: "위젯" notifications: "알림" tl: "타임라인" antenna: "안테나" diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index 1a2c922ce8..b31a191bee 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -31,6 +31,7 @@ importAndExport: "Импорт / Экспорт" files: "Файл" instances: "Экземпляр" remove: "Удалить" +smtpPass: "Пароль" _sfx: notification: "Уведомления" _widgets: diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index a4291d2e48..d0ad7e8f3a 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -86,8 +86,8 @@ you: "您" clickToShow: "点击以显示" sensitive: "阅读注意" add: "添加" -reaction: "反应" -reactionSettingDescription: "选择您想要固定在反应选择器中的反应。" +reaction: "回应" +reactionSettingDescription: "选择您想要置顶的回应。" rememberNoteVisibility: "记录公开范围" attachCancel: "删除附件" markAsSensitive: "阅读注意" @@ -104,6 +104,7 @@ unblockConfirm: "确定要解除屏蔽吗?" suspendConfirm: "要冻结吗?" unsuspendConfirm: "要解除冻结吗?" selectList: "选择列表" +selectWidget: "选择小工具" customEmojis: "自定义Emoji" emoji: "表情符号" emojiName: "Emoji 名称" @@ -364,7 +365,7 @@ resetPassword: "重置密码" newPasswordIs: "新的密码是「{password}」" autoReloadWhenDisconnected: "断开连接时自动重新加载" autoNoteWatch: "自动关注帖子" -autoNoteWatchDescription: "让您能够收到关于「反应」和回复其他用户的帖子的通知。" +autoNoteWatchDescription: "让您能够收到关于「回应」和回复其他用户的帖子的通知。" reduceUiAnimation: "减少UI动画" share: "分享" notFound: "未找到" @@ -442,7 +443,7 @@ remote: "远程" total: "总计" weekOverWeekChanges: "与前一周相比" dayOverDayChanges: "与前一日相比" -accessibility: "辅助功能" +appearance: "外观" clinetSettings: "客户端设置" accountSettings: "账户设置" promotion: "推广" @@ -528,6 +529,29 @@ plugins: "插件" pluginInstallWarn: "请不要安装不明来源的插件" deck: "Deck" undeck: "取消Deck" +useBlurEffectForModal: "模态框使用模糊效果" +generateAccessToken: "生成访问令牌" +permission: "权限" +enableAll: "启用全部" +disableAll: "禁用全部" +tokenRequested: "允许访问账户" +pluginTokenRequestedDescription: "此插件将能够拥有此处设置的权限" +notificationType: "通知类型" +edit: "编辑" +useStarForReactionFallback: "如果回应的颜文字未知,则使用★作为代替" +emailConfig: "邮件服务器设置" +enableEmail: "启用发送邮件功能" +emailConfigInfo: "用于确认电子邮件和密码重置" +email: "邮件地址" +smtpConfig: "SMTP服务器设置" +smtpHost: "主机名" +smtpPort: "端口" +smtpUser: "用户名" +smtpPass: "密码" +emptyToDisableSmtpAuth: "用户名和密码留空可以禁用SMTP验证" +smtpSecure: "在 SMTP 连接中使用隐式 SSL / TLS" +smtpSecureInfo: "使用STARTTLS时关闭。" +testEmail: "邮件发送测试" _theme: explore: "寻找主题" install: "安装主题" @@ -536,7 +560,7 @@ _theme: installed: "{name} 已安装" alreadyInstalled: "此主题已经安装" invalid: "主题格式错误" - make: "主题制作" + make: "制作主题" base: "基于" addConstant: "添加常量" constant: "常量" @@ -574,7 +598,7 @@ _theme: mention: "提及" mentionMe: "提及" renote: "转发" - modalBg: "模块背景" + modalBg: "模态框背景" divider: "分割线" scrollbarHandle: "滚动条" scrollbarHandleHover: "滚动条(悬停)" @@ -596,6 +620,8 @@ _theme: wallpaperOverlay: "壁纸叠加层" badge: "徽章" messageBg: "聊天背景" + accentDarken: "强调色(暗)" + accentLighten: "强调色(亮)" fgHighlighted: "高亮显示文本" _sfx: note: "帖子" @@ -638,8 +664,8 @@ _tutorial: step5_3: "要关注其他用户,请单击他的头像,然后在他的个人资料上按下“关注”按钮。" step5_4: "如果用户的名称旁边有锁定图标,则该用户需要手动批准您的关注请求。" step6_1: "现在,您将可以在时间线上看到其他用户的帖子。" - step6_2: "您还可以在其他人的帖子上进行「反应」,以快速做出简单回复。" - step6_3: "在他人的贴子上按下「+」图标,即可选择想要的表情来进行「反应」。" + step6_2: "您还可以在其他人的帖子上进行「回应」,以快速做出简单回复。" + step6_3: "在他人的贴子上按下「+」图标,即可选择想要的表情来进行「回应」。" step7_1: "对Misskey基本操作的简单介绍,到此结束了。 辛苦了!" step7_2: "如果你想了解更多有关Misskey的信息,请参见{help}。" step7_3: "接下来,享受Misskey带来的乐趣吧🚀" @@ -711,6 +737,7 @@ _widgets: activity: "活动" photos: "照片" digitalClock: "数字时钟" + federation: "联邦宇宙" _cw: hide: "隐藏" show: "查看更多" @@ -1164,11 +1191,18 @@ _notification: youReceivedFollowRequest: "您有新的关注请求" yourFollowRequestAccepted: "您的关注请求已通过" youWereInvitedToGroup: "您有新的群组邀请" + _types: + follow: "关注中" + mention: "提及" + renote: "转发" + quote: "引用" + reaction: "回应" _deck: alwaysShowMainColumn: "总是显示主列" columnAlign: "列对齐" + addColumn: "添加列" _columns: - widgets: "小部件" + widgets: "小工具" notifications: "通知" tl: "时间线" antenna: "天线" diff --git a/locales/zh-TW.yml b/locales/zh-TW.yml index be4b4302dd..bebe468e7f 100644 --- a/locales/zh-TW.yml +++ b/locales/zh-TW.yml @@ -4,13 +4,13 @@ introMisskey: "歡迎! Misskey是一個開源的去中心化的社群網站。 monthAndDay: "{month}月 {day}日" search: "搜尋" notifications: "通知" -username: "用戶名" +username: "使用名稱" password: "密碼" -fetchingAsApObject: "從Fediverse尋找中..." -ok: "OK" +fetchingAsApObject: "從 Fediverse 查詢中..." +ok: "確定" gotIt: "知道了" cancel: "取消" -enterUsername: "輸入用戶名" +enterUsername: "輸入使用者名稱" renotedBy: "由{user}轉發" noNotes: "貼文不可用。" noNotifications: "沒有通知" @@ -24,11 +24,11 @@ loggingIn: "登入中" logout: "登出" signup: "註冊" uploading: "上傳中" -save: "保存" -users: "用戶" -addUser: "新增用戶" +save: "儲存" +users: "使用者" +addUser: "新增使用者" favorite: "收藏" -favorites: "收藏" +favorites: "已加星號" unfavorite: "取消收藏" pin: "置頂" unpin: "取消置頂" @@ -82,7 +82,7 @@ unrenote: "取消轉發貼文" quote: "引用" pinnedNote: "已置頂的貼文" you: "您" -clickToShow: "點擊查看" +clickToShow: "按一下以顯示" sensitive: "敏感內容" add: "新增" reaction: "反應" @@ -92,8 +92,8 @@ attachCancel: "移除附件" markAsSensitive: "標記為敏感內容" unmarkAsSensitive: "取消標記為敏感內容" enterFileName: "請輸入檔案名稱" -mute: "禁言" -unmute: "解除禁言" +mute: "消音" +unmute: "解除消音" block: "封鎖" unblock: "解除封鎖" suspend: "凍結" @@ -108,42 +108,48 @@ emoji: "表情符號" emojiName: "表情符號名稱" emojiUrl: "表情符號URL" addEmoji: "新增表情符號" -settingGuide: "推介設定" +settingGuide: "推薦設定" flagAsBot: "此帳戶是Bot" flagAsCat: "此帳戶是Cat" autoAcceptFollowed: "自動許可追隨" -addAcount: "新增帳戶" +addAcount: "新增帳號" loginFailed: "登入失敗" general: "一般" -wallpaper: "壁紙" +wallpaper: "桌布" setWallpaper: "設定桌布" -removeWallpaper: "移除壁紙" +removeWallpaper: "移除桌布" searchWith: "搜尋: {q}" -youHaveNoLists: "你沒有任何清單" -followConfirm: "你真的要追隨{name}嗎?" +youHaveNoLists: "沒有任何清單" +followConfirm: "你真的要關注{name}嗎?" +proxyAccount: "代理帳號" host: "主機" -selectUser: "選擇用戶" -recipient: "收件人" +selectUser: "選取使用者" +recipient: "發送至" annotation: "註解" -federation: "整合" +federation: "聯邦宇宙" instances: "實例" latestStatus: "最後狀態" storageUsage: "已使用容量" charts: "圖表" perHour: "每小時" perDay: "每日" +blockThisInstance: "封鎖此實例" operations: "操作" software: "軟體" version: "版本" +metadata: "元資料(Metadata)" withNFiles: "{n}個檔案" monitor: "監視器" +jobQueue: "佇列" cpuAndMemory: "CPU及記憶體用量" network: "網路" +disk: "硬碟" instanceInfo: "實例資訊" statistics: "統計" clearQueue: "清除佇列" clearQueueConfirmTitle: "確定要清除佇列嗎?" clearCachedFiles: "清除快取資料" +clearCachedFilesConfirm: "確定要清除緩存資料嗎?" blockedInstances: "已封鎖的實例" blockedInstancesDescription: "請逐行輸入需要封鎖的實例。已封鎖的實例將無法與本實例進行通訊。" muteAndBlock: "禁言 / 封鎖" @@ -153,14 +159,15 @@ noUsers: "無用戶" editProfile: "編輯個人檔案" noteDeleteConfirm: "確定刪除此貼文嗎?" pinLimitExceeded: "不能再置頂更多的貼文了" -intro: "Misskey安裝作業完成!請創立管理員用戶" +intro: "Misskey 部署完成!請開設管理員帳號!" done: "完成" processing: "處理中" preview: "預覽" default: "預設" noCustomEmojis: "沒有表情符號" customEmojisOfRemote: "來自其他實例的表情符號" -federating: "整合檢索中" +noJobs: "沒有任務" +federating: "整合搜索中" blocked: "已封鎖" suspended: "已凍結" all: "全部" @@ -175,12 +182,13 @@ security: "安全性" retypedNotMatch: "不相符的輸入內容" currentPassword: "現在的密碼" newPassword: "新的密碼" -newPasswordRetype: "新的密碼(再輸入一次)" +newPasswordRetype: "新的密碼(再輸入一次)" attachFile: "添加附件" more: "更多!" featured: "精選" -usernameOrUserId: "用戶名或用戶ID" -noSuchUser: "用戶不存在" +usernameOrUserId: "使用者名稱或使用者 ID" +noSuchUser: "使用者不存在" +lookup: "查詢" announcements: "公告" imageUrl: "圖片URL" remove: "刪除" @@ -373,6 +381,7 @@ passwordMatched: "密碼一致" passwordNotMatched: "密碼不一致" signinFailed: "登入失敗。 請檢查用戶名和密碼。" uiLanguage: "介面語言" +youHaveNoGroups: "找不到群組" tags: "標籤" fontSize: "字體大小" total: "合計" @@ -389,11 +398,17 @@ install: "安裝" uninstall: "解除安裝" lastUsedDate: "最後上線日期" state: "狀態" +ascendingOrder: "昇冪" +descendingOrder: "降冪" +scratchpad: "暫存記憶體" output: "輸出" deleteAllFiles: "刪除所有檔案" deleteAllFilesConfirm: "要删除所有檔案吗?" userSilenced: "該用戶已被禁言。" deletedNote: "已删除的貼文" +smtpHost: "主機" +smtpUser: "使用名稱" +smtpPass: "密碼" _theme: func: "函数" keys: @@ -469,6 +484,7 @@ _widgets: rss: "RSS閱讀器" activity: "動態" photos: "照片" + federation: "聯邦宇宙" _cw: show: "瀏覽更多" files: "{count} 個檔案" @@ -481,10 +497,10 @@ _visibility: followers: "追隨者" _profile: name: "名稱" - username: "用戶名" + username: "使用名稱" _exportOrImport: followingList: "追隨中" - muteList: "禁言" + muteList: "消音" blockingList: "封鎖" userLists: "清單" _instanceCharts: @@ -657,6 +673,12 @@ _notification: youGotPoll: "{name}已投票" youWereFollowed: "您有新的追隨者" yourFollowRequestAccepted: "您的追隨請求已通過" + _types: + follow: "追隨中" + mention: "提及" + renote: "轉發貼文" + quote: "引用" + reaction: "反應" _deck: _columns: notifications: "通知" diff --git a/migration/1595676934834-instance-icon-url.ts b/migration/1595676934834-instance-icon-url.ts new file mode 100644 index 0000000000..c75370f174 --- /dev/null +++ b/migration/1595676934834-instance-icon-url.ts @@ -0,0 +1,14 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class instanceIconUrl1595676934834 implements MigrationInterface { + name = 'instanceIconUrl1595676934834' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "instance" ADD "iconUrl" character varying(256) DEFAULT null`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "instance" DROP COLUMN "iconUrl"`); + } + +} diff --git a/migration/1595771249699-word-mute.ts b/migration/1595771249699-word-mute.ts new file mode 100644 index 0000000000..1a9114d921 --- /dev/null +++ b/migration/1595771249699-word-mute.ts @@ -0,0 +1,30 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class wordMute1595771249699 implements MigrationInterface { + name = 'wordMute1595771249699' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TABLE "muted_note" ("id" character varying(32) NOT NULL, "noteId" character varying(32) NOT NULL, "userId" character varying(32) NOT NULL, CONSTRAINT "PK_897e2eff1c0b9b64e55ca1418a4" PRIMARY KEY ("id"))`); + await queryRunner.query(`CREATE INDEX "IDX_70ab9786313d78e4201d81cdb8" ON "muted_note" ("noteId") `); + await queryRunner.query(`CREATE INDEX "IDX_d8e07aa18c2d64e86201601aec" ON "muted_note" ("userId") `); + await queryRunner.query(`CREATE UNIQUE INDEX "IDX_a8c6bfd637d3f1d67a27c48e27" ON "muted_note" ("noteId", "userId") `); + await queryRunner.query(`ALTER TABLE "user_profile" ADD "enableWordMute" boolean NOT NULL DEFAULT false`); + await queryRunner.query(`ALTER TABLE "user_profile" ADD "mutedWords" jsonb NOT NULL DEFAULT '[]'`); + await queryRunner.query(`CREATE INDEX "IDX_3befe6f999c86aff06eb0257b4" ON "user_profile" ("enableWordMute") `); + await queryRunner.query(`ALTER TABLE "muted_note" ADD CONSTRAINT "FK_70ab9786313d78e4201d81cdb89" FOREIGN KEY ("noteId") REFERENCES "note"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); + await queryRunner.query(`ALTER TABLE "muted_note" ADD CONSTRAINT "FK_d8e07aa18c2d64e86201601aec1" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE NO ACTION`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "muted_note" DROP CONSTRAINT "FK_d8e07aa18c2d64e86201601aec1"`); + await queryRunner.query(`ALTER TABLE "muted_note" DROP CONSTRAINT "FK_70ab9786313d78e4201d81cdb89"`); + await queryRunner.query(`DROP INDEX "IDX_3befe6f999c86aff06eb0257b4"`); + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "mutedWords"`); + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "enableWordMute"`); + await queryRunner.query(`DROP INDEX "IDX_a8c6bfd637d3f1d67a27c48e27"`); + await queryRunner.query(`DROP INDEX "IDX_d8e07aa18c2d64e86201601aec"`); + await queryRunner.query(`DROP INDEX "IDX_70ab9786313d78e4201d81cdb8"`); + await queryRunner.query(`DROP TABLE "muted_note"`); + } + +} diff --git a/migration/1595782306083-word-mute2.ts b/migration/1595782306083-word-mute2.ts new file mode 100644 index 0000000000..d68c12740e --- /dev/null +++ b/migration/1595782306083-word-mute2.ts @@ -0,0 +1,18 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class wordMute21595782306083 implements MigrationInterface { + name = 'wordMute21595782306083' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TYPE "muted_note_reason_enum" AS ENUM('word', 'manual', 'spam', 'other')`); + await queryRunner.query(`ALTER TABLE "muted_note" ADD "reason" "muted_note_reason_enum" NOT NULL`); + await queryRunner.query(`CREATE INDEX "IDX_636e977ff90b23676fb5624b25" ON "muted_note" ("reason") `); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`DROP INDEX "IDX_636e977ff90b23676fb5624b25"`); + await queryRunner.query(`ALTER TABLE "muted_note" DROP COLUMN "reason"`); + await queryRunner.query(`DROP TYPE "muted_note_reason_enum"`); + } + +} diff --git a/package.json b/package.json index 050276ceee..3820be3e7c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "misskey", "author": "syuilo ", - "version": "12.42.0", + "version": "12.45.0", "codename": "indigo", "repository": { "type": "git", @@ -47,7 +47,7 @@ "@koa/multer": "3.0.0", "@koa/router": "9.0.1", "@sinonjs/fake-timers": "6.0.1", - "@syuilo/aiscript": "0.8.0", + "@syuilo/aiscript": "0.10.0", "@types/bcryptjs": "2.4.2", "@types/bull": "3.14.0", "@types/cbor": "5.0.0", @@ -204,6 +204,7 @@ "random-seed": "0.3.0", "randomcolor": "0.5.4", "ratelimiter": "3.4.1", + "re2": "1.15.4", "recaptcha-promise": "0.1.3", "reconnecting-websocket": "4.4.0", "redis": "3.0.2", diff --git a/src/client/components/deck/antenna-column.vue b/src/client/components/deck/antenna-column.vue index 46426367fe..891f59e37d 100644 --- a/src/client/components/deck/antenna-column.vue +++ b/src/client/components/deck/antenna-column.vue @@ -4,7 +4,7 @@ {{ column.name }} - + @@ -33,7 +33,6 @@ export default defineComponent({ data() { return { - menu: null, faSatellite }; }, @@ -47,28 +46,36 @@ export default defineComponent({ created() { this.menu = [{ icon: faCog, - text: this.$t('antenna'), - action: async () => { - const antennas = await this.$root.api('antennas/list'); - this.$root.dialog({ - title: this.$t('antenna'), - type: null, - select: { - items: antennas.map(x => ({ - value: x, text: x.name - })) - }, - showCancelButton: true - }).then(({ canceled, result: antenna }) => { - if (canceled) return; - this.column.antennaId = antenna.id; - this.$store.commit('deviceUser/updateDeckColumn', this.column); - }); - } + text: this.$t('selectAntenna'), + action: this.setAntenna }]; }, + mounted() { + if (this.column.antennaId == null) { + this.setAntenna(); + } + }, + methods: { + async setAntenna() { + const antennas = await this.$root.api('antennas/list'); + const { canceled, result: antenna } = await this.$root.dialog({ + title: this.$t('selectAntenna'), + type: null, + select: { + items: antennas.map(x => ({ + value: x, text: x.name + })), + default: this.column.antennaId + }, + showCancelButton: true + }); + if (canceled) return; + Vue.set(this.column, 'antennaId', antenna.id); + this.$store.commit('deviceUser/updateDeckColumn', this.column); + }, + focus() { (this.$refs.timeline as any).focus(); } diff --git a/src/client/components/deck/column.vue b/src/client/components/deck/column.vue index 9dd74849cb..39b50912e2 100644 --- a/src/client/components/deck/column.vue +++ b/src/client/components/deck/column.vue @@ -150,37 +150,37 @@ export default defineComponent({ } }, null, { icon: faArrowLeft, - text: this.$t('swap-left'), + text: this.$t('_deck.swapLeft'), action: () => { this.$store.commit('deviceUser/swapLeftDeckColumn', this.column.id); } }, { icon: faArrowRight, - text: this.$t('swap-right'), + text: this.$t('_deck.swapRight'), action: () => { this.$store.commit('deviceUser/swapRightDeckColumn', this.column.id); } }, this.isStacked ? { icon: faArrowUp, - text: this.$t('swap-up'), + text: this.$t('_deck.swapUp'), action: () => { this.$store.commit('deviceUser/swapUpDeckColumn', this.column.id); } } : undefined, this.isStacked ? { icon: faArrowDown, - text: this.$t('swap-down'), + text: this.$t('_deck.swapDown'), action: () => { this.$store.commit('deviceUser/swapDownDeckColumn', this.column.id); } } : undefined, null, { icon: faWindowRestore, - text: this.$t('stack-left'), + text: this.$t('_deck.stackLeft'), action: () => { this.$store.commit('deviceUser/stackLeftDeckColumn', this.column.id); } }, this.isStacked ? { icon: faWindowMaximize, - text: this.$t('pop-right'), + text: this.$t('_deck.popRight'), action: () => { this.$store.commit('deviceUser/popRightDeckColumn', this.column.id); } diff --git a/src/client/components/deck/list-column.vue b/src/client/components/deck/list-column.vue index 8aa860e571..9dfceb4c78 100644 --- a/src/client/components/deck/list-column.vue +++ b/src/client/components/deck/list-column.vue @@ -46,7 +46,7 @@ export default defineComponent({ created() { this.menu = [{ icon: faCog, - text: this.$t('list'), + text: this.$t('selectList'), action: this.setList }]; }, @@ -61,7 +61,7 @@ export default defineComponent({ async setList() { const lists = await this.$root.api('users/lists/list'); const { canceled, result: list } = await this.$root.dialog({ - title: this.$t('list'), + title: this.$t('selectList'), type: null, select: { items: lists.map(x => ({ diff --git a/src/client/components/deck/notifications-column.vue b/src/client/components/deck/notifications-column.vue index 19ce324eac..b1e0db8769 100644 --- a/src/client/components/deck/notifications-column.vue +++ b/src/client/components/deck/notifications-column.vue @@ -45,14 +45,14 @@ export default defineComponent({ this.menu = [{ icon: faCog, - text: this.$t('@.notification-type'), + text: this.$t('notificationType'), action: () => { this.$root.dialog({ - title: this.$t('@.notification-type'), + title: this.$t('notificationType'), type: null, select: { items: ['all', 'follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote', 'receiveFollowRequest'].map(x => ({ - value: x, text: this.$t('@.notification-types.' + x) + value: x, text: this.$t(`_notification._types.${x}`) })) default: this.column.notificationType, }, diff --git a/src/client/components/deck/widgets-column.vue b/src/client/components/deck/widgets-column.vue index 2836e8a243..15b4824530 100644 --- a/src/client/components/deck/widgets-column.vue +++ b/src/client/components/deck/widgets-column.vue @@ -5,9 +5,12 @@
@@ -48,7 +60,7 @@ export default defineComponent({ created() { for (const item in this.form) { - Vue.set(this.values, item, this.form[item].default || null); + Vue.set(this.values, item, this.form[item].hasOwnProperty('default') ? this.form[item].default : null); } }, diff --git a/src/client/widgets/trends.chart.vue b/src/client/components/mini-chart.vue similarity index 100% rename from src/client/widgets/trends.chart.vue rename to src/client/components/mini-chart.vue diff --git a/src/client/components/note.vue b/src/client/components/note.vue index 885fd764ab..77dd8c39a8 100644 --- a/src/client/components/note.vue +++ b/src/client/components/note.vue @@ -1,7 +1,8 @@ + + diff --git a/src/client/components/timeline.vue b/src/client/components/timeline.vue index 252025f48a..083cf479f6 100644 --- a/src/client/components/timeline.vue +++ b/src/client/components/timeline.vue @@ -47,8 +47,7 @@ export default defineComponent({ created() { const prepend = note => { - const _note = JSON.parse(JSON.stringify(note)); // deepcopy - (this.$refs.tl as any).prepend(_note); + (this.$refs.tl as any).prepend(note); this.$emit('note'); diff --git a/src/client/init.ts b/src/client/init.ts index 472965fac6..03eee450c7 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -223,7 +223,7 @@ stream.on('emojiAdded', data => { //store.commit('instance/set', ); }); -for (const plugin of store.state.deviceUser.plugins) { +for (const plugin of store.state.deviceUser.plugins.filter(p => p.active)) { console.info('Plugin installed:', plugin.name, 'v' + plugin.version); const aiscript = new AiScript(createPluginEnv(app, { diff --git a/src/client/pages/favorites.vue b/src/client/pages/favorites.vue index 339e34442e..c235ce5ae3 100644 --- a/src/client/pages/favorites.vue +++ b/src/client/pages/favorites.vue @@ -2,7 +2,7 @@
{{ $t('favorites') }} - +
diff --git a/src/client/pages/instance/index.vue b/src/client/pages/instance/index.vue index a61793737a..0ba5d763b0 100644 --- a/src/client/pages/instance/index.vue +++ b/src/client/pages/instance/index.vue @@ -437,7 +437,7 @@ export default defineComponent({ }, onStatsLog(statsLog) { - for (const stats of statsLog.reverse()) { + for (const stats of [...statsLog].reverse()) { this.onStats(stats); } }, diff --git a/src/client/pages/instance/queue.queue.vue b/src/client/pages/instance/queue.queue.vue index ff6a389794..e020cfc095 100644 --- a/src/client/pages/instance/queue.queue.vue +++ b/src/client/pages/instance/queue.queue.vue @@ -170,7 +170,7 @@ export default defineComponent({ }, onStatsLog(statsLog) { - for (const stats of statsLog.reverse()) { + for (const stats of [...statsLog].reverse()) { this.onStats(stats); } }, diff --git a/src/client/pages/instance/settings.vue b/src/client/pages/instance/settings.vue index 7d36a0a314..4048fea6cf 100644 --- a/src/client/pages/instance/settings.vue +++ b/src/client/pages/instance/settings.vue @@ -28,6 +28,9 @@ {{ $t('enableGlobalTimeline') }} {{ $t('disablingTimelinesInfo') }}
+
+ {{ $t('useStarForReactionFallback') }} +
@@ -74,6 +77,29 @@
+
+
{{ $t('emailConfig') }}
+
+ {{ $t('enableEmail') }} + {{ $t('email') }} +
{{ $t('smtpConfig') }}
+
+ {{ $t('smtpHost') }} + {{ $t('smtpPort') }} +
+
+ {{ $t('smtpUser') }} + {{ $t('smtpPass') }} +
+ {{ $t('emptyToDisableSmtpAuth') }} + {{ $t('smtpSecure') }} +
+ {{ $t('testEmail') }} + {{ $t('save') }} +
+
+
+
{{ $t('serviceworker') }}
@@ -195,12 +221,19 @@ {{ $t('save') }}
+
+
Summaly Proxy
+
+ URL + {{ $t('save') }} +
+
diff --git a/src/client/pages/note.vue b/src/client/pages/note.vue index 3e58c7c937..458d2d8c98 100644 --- a/src/client/pages/note.vue +++ b/src/client/pages/note.vue @@ -14,7 +14,7 @@
- +
diff --git a/src/client/pages/pages.vue b/src/client/pages/pages.vue index 832cb05748..94d8744fc1 100644 --- a/src/client/pages/pages.vue +++ b/src/client/pages/pages.vue @@ -3,24 +3,20 @@ {{ $t('pages') }} - - -
- - - - -
-
+ - - -
- - - -
-
+
+ + + + +
+ +
+ + + +
@@ -31,14 +27,15 @@ import { faStickyNote, faHeart } from '@fortawesome/free-regular-svg-icons'; import MkPagePreview from '../components/page-preview.vue'; import MkPagination from '../components/ui/pagination.vue'; import MkButton from '../components/ui/button.vue'; -import MkContainer from '../components/ui/container.vue'; +import MkTab from '../components/tab.vue'; export default defineComponent({ components: { - MkPagePreview, MkPagination, MkButton, MkContainer + MkPagePreview, MkPagination, MkButton, MkTab }, data() { return { + tab: 'my', myPagesPagination: { endpoint: 'i/pages', limit: 5, diff --git a/src/client/pages/preferences/plugins.vue b/src/client/pages/preferences/plugins.vue index ca6ff72c61..2eb5725dd5 100644 --- a/src/client/pages/preferences/plugins.vue +++ b/src/client/pages/preferences/plugins.vue @@ -18,6 +18,9 @@