diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d2b3f7159..b43fb528f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,20 @@ --> +## 12.94.0 (2021/10/25) + +### Improvements +- クライアント: 画像ビューアを強化 +- クライアント: メンションにユーザーのアバターを表示するように +- クライアント: デザインの調整 +- クライアント: twemojiをセルフホスティングするように + +### Bugfixes +- クライアント: CWで画像が隠されたとき、画像の高さがおかしいことになる問題を修正 + +### NOTE +- このバージョンから、iOS 15未満のサポートがされなくなります。対象のバージョンをお使いの方は、iOSのバージョンアップを行ってください。 + ## 12.93.2 (2021/10/23) ### Bugfixes diff --git a/assets/user-unknown.png b/assets/user-unknown.png new file mode 100644 index 0000000000..ab29bef2b1 Binary files /dev/null and b/assets/user-unknown.png differ diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 4c4be9445e..d7f038393f 100644 --- a/locales/ar-SA.yml +++ b/locales/ar-SA.yml @@ -77,7 +77,9 @@ error: "خطأ" somethingHappened: "حدث خطأ" retry: "حاول مجددًا" pageLoadError: "فشل تحميل الصفحة" +pageLoadErrorDescription: "عادة ما يكون السبب خطأ في الشبكة أو التخزين المؤقت للمتصفح. امسح التخزين المؤقت ثم أعد المحاولة لاحقًا." serverIsDead: "الخادم لا يستجيب، حاول بعد قليل" +youShouldUpgradeClient: "حدّث الصفحة لعرضها." enterListName: "اسم القائمة" privacy: "الخصوصية" makeFollowManuallyApprove: "القبول يدويا طلبات الإشتراك" @@ -110,6 +112,7 @@ unsuspend: "ألغ التعليق" blockConfirm: "أمتأكد من حجب هذا الحساب؟" unblockConfirm: "أمتأكد من إلغاء حجب هذا الحساب؟" selectList: "اختر قائمة" +selectAntenna: "اختر هوائيًا" editWidgetsExit: "تم" customEmojis: "إيموجي مخصص" emoji: "الوجوه التعبيرية" @@ -120,6 +123,7 @@ addEmoji: "إضافة إيموجي" settingGuide: "الإعدادات المستحسنة" cacheRemoteFiles: "خزن مؤقتا الملفات البعيدة" autoAcceptFollowed: "اقبل طلبات المتابعة تلقائيا من الحسابات المتابَعة" +addAccount: "أضف حساباً" loginFailed: "فشل الولوج" showOnRemote: "رؤيته على مثيل الخادم البُعدي" general: "الرئيسية" @@ -136,8 +140,10 @@ recipient: "المرسَل إليه·ها" annotation: "التعليقات" federation: "الفديرالية" instances: "مثيل الخادم" +registeredAt: "مسجل في" latestRequestSentAt: "آخر طلب أرسِل في" latestRequestReceivedAt: "آخر طلب تُلقي في" +latestStatus: "الحالات الأخيرة" storageUsage: "مساحة التخزين المستخدمة" charts: "المنحنيات البيانية" perHour: "في الساعة" @@ -157,6 +163,8 @@ disk: "قرص التخزين" instanceInfo: "معلومات مثيل الخادم" statistics: "الإحصائيات" clearQueue: "تفريغ قائمة الإنتظار" +clearQueueConfirmTitle: "أتريد مسح الطابور؟" +clearCachedFiles: "امسح التخزين المؤقت" muteAndBlock: "تم كتمها / تم حجبها" mutedUsers: "الحسابات التي تم كتمها" blockedUsers: "الحسابات التي تم حظرها" @@ -495,6 +503,7 @@ pollVotesCount: "عدد الاستطلاعات المرسلة" pollVotedCount: "عدد الاستطلاعات المستلمة" yes: "نعم" no: "لا" +clearCache: "امسح التخزين المؤقت" currentVersion: "الإصدار الحالي" latestVersion: "آخر نسخة مستقرة" usageAmount: "الإستخدام" diff --git a/locales/de-DE.yml b/locales/de-DE.yml index c5bbbddc07..81fb263a7f 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -795,10 +795,10 @@ itsOff: "Ausgeschaltet" emailRequiredForSignup: "Angaben einer Email-Adresse als benötigt markieren" unread: "Ungelesen" filter: "Filter" -controllPanel: "Systemsteuerung" manageAccounts: "Benutzerkonten verwalten" makeReactionsPublic: "Reaktionsverlauf veröffentlichen" makeReactionsPublicDescription: "Jeder wird die Liste deiner gesendeten Reaktionen einsehen können." +classic: "Classic" _signup: almostThere: "Fast geschafft" emailAddressInfo: "Bitte gib deine Email-Adresse ein." diff --git a/locales/en-US.yml b/locales/en-US.yml index f60365b012..6d2961ce3d 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -795,10 +795,11 @@ itsOff: "Disabled" emailRequiredForSignup: "Require email address for sign-up" unread: "Unread" filter: "Filter" -controllPanel: "Control Panel" +controlPanel: "Control Panel" manageAccounts: "Manage Accounts" makeReactionsPublic: "Set reaction history to public" makeReactionsPublicDescription: "This will make the list of all your past reactions publicly visible." +classic: "Classic" _signup: almostThere: "Almost there" emailAddressInfo: "Please enter your email address." diff --git a/locales/eo-UY.yml b/locales/eo-UY.yml index fdd676f4b8..0733f0e475 100644 --- a/locales/eo-UY.yml +++ b/locales/eo-UY.yml @@ -542,7 +542,7 @@ troubleshooting: "Problemsolvi" learnMore: "Lernu pli" translate: "Traduki" translatedFrom: "Tradukita el {x}" -controllPanel: "Ŝaltpodio" +controlPanel: "Ŝaltpodio" _docs: continueReading: "Legi plu" features: "Funkcioj" diff --git a/locales/fr-FR.yml b/locales/fr-FR.yml index 57300fbcde..c3964fff6d 100644 --- a/locales/fr-FR.yml +++ b/locales/fr-FR.yml @@ -795,7 +795,7 @@ itsOff: "Désactivé" emailRequiredForSignup: "Une adresse e-mail est nécessaire pour créer un compte" unread: "Non lu" filter: "Filtre" -controllPanel: "Panneau de contrôle" +controlPanel: "Panneau de contrôle" manageAccounts: "Gérer les comptes" _signup: almostThere: "Bientôt fini" diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 44c7f49f1c..06df4ce8e9 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -780,7 +780,7 @@ translatedFrom: "Terjemahkan dari {x}" accountDeletionInProgress: "Penghapusan akun sedang dalam proses" usernameInfo: "Nama yang mengidentifikasikan akun kamu dari yang lain pada server ini. Kamu dapat menggunakan alfabet (a~z, A~Z), digit (0~9) atau garis bawah (_). Username tidak dapat diubah setelahnya." keepCw: "Biarkan Peringatan Konten" -controllPanel: "Panel kontrol" +controlPanel: "Panel kontrol" _accountDelete: accountDelete: "Hapus akun" mayTakeTime: "Karena penghapusan akun merupakan proses yang berat dan intensif, kemungkinan dapat membutuhkan waktu untuk menyelesaikan tergantung daripada berapa banyak konten yang kamu buat dan berapa banyak berkas yang telah kamu unggah." diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 5402a05e4f..dbb0bf1664 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -795,10 +795,11 @@ itsOff: "オフになっています" emailRequiredForSignup: "アカウント登録にメールアドレスを必須にする" unread: "未読" filter: "フィルタ" -controllPanel: "コントロールパネル" +controlPanel: "コントロールパネル" manageAccounts: "アカウントを管理" makeReactionsPublic: "リアクション一覧を公開する" makeReactionsPublicDescription: "あなたがしたリアクション一覧を誰でも見れるようにします。" +classic: "クラシック" _signup: almostThere: "ほとんど完了です" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index db0cf7f20c..66850335be 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -787,7 +787,7 @@ pubSub: "Pub/Sub 계정" lastCommunication: "마지막 통신" resolved: "해결됨" unresolved: "해결되지 않음" -controllPanel: "제어판" +controlPanel: "제어판" _accountDelete: accountDelete: "계정 삭제" mayTakeTime: "계정 삭제는 서버에 부하를 가하기 때문에, 작성한 콘텐츠나 업로드한 파일의 수가 많으면 완료까지 시간이 걸릴 수 있습니다." diff --git a/locales/ru-RU.yml b/locales/ru-RU.yml index c8aa28df5e..db0b7e84eb 100644 --- a/locales/ru-RU.yml +++ b/locales/ru-RU.yml @@ -784,7 +784,7 @@ accountDeletionInProgress: "В настоящее время выполняет usernameInfo: "Имя, которое отличает вашу учетную запись от других на этом сервере. Вы можете использовать алфавит (a~z, A~Z), цифры (0~9) или символы подчеркивания (_). Имена пользователей не могут быть изменены позже." aiChanMode: "ИИ режим" keepCw: "Сохраняйте Предупреждения о содержимом" -controllPanel: "Панель управления" +controlPanel: "Панель управления" manageAccounts: "Управление аккаунтом" _docs: continueReading: "Читать подробнее" diff --git a/locales/zh-CN.yml b/locales/zh-CN.yml index a8e653f797..1764c366cf 100644 --- a/locales/zh-CN.yml +++ b/locales/zh-CN.yml @@ -795,8 +795,9 @@ itsOff: "已关闭" emailRequiredForSignup: "注册账户需要电子邮件地址" unread: "未读" filter: "筛选" -controllPanel: "控制面板" +controlPanel: "控制面板" manageAccounts: "管理账户" +classic: "经典" _signup: almostThere: "即将完成" emailAddressInfo: "请输入您所使用的电子邮件地址" diff --git a/package.json b/package.json index 9e1fdd4824..e9ce6ef77e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,6 @@ { "name": "misskey", - "author": "syuilo ", - "version": "12.93.2", + "version": "12.94.0", "codename": "indigo", "repository": { "type": "git", @@ -38,6 +37,7 @@ "lodash": "^4.17.21" }, "dependencies": { + "@discordapp/twemoji": "13.1.0", "@elastic/elasticsearch": "7.11.0", "@koa/cors": "3.1.0", "@koa/multer": "3.0.0", @@ -51,18 +51,15 @@ "@types/cbor": "6.0.0", "@types/dateformat": "3.0.1", "@types/escape-regexp": "0.0.0", - "@types/glob": "7.1.4", + "@types/glob": "7.2.0", "@types/gulp": "4.0.9", "@types/gulp-rename": "2.0.1", "@types/is-url": "1.2.30", - "@types/js-yaml": "4.0.3", + "@types/js-yaml": "4.0.4", "@types/jsdom": "16.2.13", "@types/jsonld": "1.5.6", "@types/katex": "0.11.1", "@types/koa": "2.13.4", - "@types/koa__cors": "3.0.3", - "@types/koa__multer": "2.0.3", - "@types/koa__router": "8.0.8", "@types/koa-bodyparser": "4.3.3", "@types/koa-cors": "0.0.2", "@types/koa-favicon": "2.0.21", @@ -70,15 +67,18 @@ "@types/koa-mount": "4.0.1", "@types/koa-send": "4.1.3", "@types/koa-views": "7.0.0", + "@types/koa__cors": "3.0.3", + "@types/koa__multer": "2.0.4", + "@types/koa__router": "8.0.8", "@types/markdown-it": "12.2.3", - "@types/matter-js": "0.17.5", + "@types/matter-js": "0.17.6", "@types/mocha": "8.2.3", - "@types/node": "16.10.3", + "@types/node": "16.11.4", "@types/node-fetch": "2.5.12", "@types/nodemailer": "6.4.4", "@types/nprogress": "0.2.0", "@types/oauth": "0.9.1", - "@types/parse5": "6.0.1", + "@types/parse5": "6.0.2", "@types/parsimmon": "1.10.6", "@types/portscanner": "2.1.1", "@types/pug": "2.0.5", @@ -96,21 +96,20 @@ "@types/speakeasy": "2.0.6", "@types/throttle-debounce": "2.1.0", "@types/tinycolor2": "1.4.3", - "@types/tmp": "0.2.1", + "@types/tmp": "0.2.2", "@types/uuid": "8.3.1", "@types/web-push": "3.3.2", "@types/webpack": "5.28.0", "@types/webpack-stream": "3.2.12", "@types/websocket": "1.0.4", "@types/ws": "8.2.0", - "@typescript-eslint/parser": "5.0.0", + "@typescript-eslint/parser": "5.1.0", "@vue/compiler-sfc": "3.2.20", "abort-controller": "3.0.0", - "apexcharts": "3.28.3", "autobind-decorator": "2.4.0", "autosize": "4.0.4", "autwh": "0.1.0", - "aws-sdk": "2.1003.0", + "aws-sdk": "2.1013.0", "bcryptjs": "2.4.3", "blurhash": "1.1.4", "broadcast-channel": "4.2.0", @@ -119,7 +118,7 @@ "cafy": "15.2.1", "cbor": "8.0.2", "chalk": "4.1.2", - "chart.js": "3.5.1", + "chart.js": "3.6.0", "chartjs-adapter-date-fns": "2.0.0", "chartjs-plugin-zoom": "1.1.1", "cli-highlight": "2.1.11", @@ -132,8 +131,8 @@ "date-fns": "2.25.0", "dateformat": "4.5.1", "escape-regexp": "0.0.1", - "eslint": "8.0.1", - "eslint-plugin-vue": "7.19.1", + "eslint": "8.1.0", + "eslint-plugin-vue": "7.20.0", "eventemitter3": "4.0.7", "feed": "4.2.2", "file-type": "16.5.3", @@ -159,7 +158,7 @@ "jsonld": "5.2.0", "jsrsasign": "8.0.20", "katex": "0.13.18", - "koa": "2.13.3", + "koa": "2.13.4", "koa-bodyparser": "4.3.0", "koa-favicon": "2.1.0", "koa-json-body": "5.3.0", @@ -173,7 +172,7 @@ "markdown-it-anchor": "7.1.0", "matter-js": "0.17.1", "mfm-js": "0.20.0", - "misskey-js": "0.0.6", + "misskey-js": "0.0.8", "mocha": "8.4.0", "ms": "2.1.3", "multer": "1.4.3", @@ -183,8 +182,9 @@ "os-utils": "0.0.14", "parse5": "6.0.1", "pg": "8.7.1", + "photoswipe": "git://github.com/dimsemenov/photoswipe#v5-beta", "portscanner": "2.2.0", - "postcss": "8.3.9", + "postcss": "8.3.11", "postcss-loader": "6.2.0", "prismjs": "1.25.0", "private-ip": "2.3.0", @@ -206,17 +206,17 @@ "rimraf": "3.0.2", "rndstr": "1.0.0", "s-age": "1.1.2", - "sass": "1.43.2", + "sass": "1.43.3", "sass-loader": "12.2.0", "seedrandom": "3.0.5", - "sharp": "0.29.1", + "sharp": "0.29.2", "speakeasy": "2.0.0", "strict-event-emitter-types": "2.0.0", "stringz": "2.1.0", - "style-loader": "3.3.0", + "style-loader": "3.3.1", "summaly": "2.4.1", "syslog-pro": "1.0.0", - "systeminformation": "5.9.7", + "systeminformation": "5.9.8", "syuilo-password-strength": "0.0.1", "textarea-caret": "3.1.0", "three": "0.117.1", @@ -224,7 +224,7 @@ "tinycolor2": "1.4.2", "tmp": "0.2.1", "ts-loader": "9.2.6", - "ts-node": "10.3.0", + "ts-node": "10.4.0", "tsc-alias": "1.3.10", "tsconfig-paths": "3.11.0", "tslint": "6.1.3", @@ -244,8 +244,8 @@ "vue-svg-loader": "0.17.0-beta.2", "vuedraggable": "4.0.1", "web-push": "3.4.5", - "webpack": "5.58.2", - "webpack-cli": "4.9.0", + "webpack": "5.59.1", + "webpack-cli": "4.9.1", "websocket": "1.0.34", "ws": "8.2.3", "xev": "2.0.1" diff --git a/src/client/components/chart.vue b/src/client/components/chart.vue index 2b94bd679d..ae9a5e79b1 100644 --- a/src/client/components/chart.vue +++ b/src/client/components/chart.vue @@ -89,6 +89,16 @@ export default defineComponent({ required: false, default: false }, + stacked: { + type: Boolean, + required: false, + default: false + }, + aspectRatio: { + type: Number, + required: false, + default: null + }, }, setup(props) { @@ -157,7 +167,7 @@ export default defineComponent({ })), }, options: { - aspectRatio: 2.5, + aspectRatio: props.aspectRatio || 2.5, layout: { padding: { left: 16, @@ -174,7 +184,6 @@ export default defineComponent({ unit: props.span === 'day' ? 'month' : 'day', }, grid: { - display: props.detailed, color: gridColor, borderColor: 'rgb(0, 0, 0, 0)', }, @@ -190,6 +199,7 @@ export default defineComponent({ }, y: { position: 'left', + stacked: props.stacked, grid: { color: gridColor, borderColor: 'rgb(0, 0, 0, 0)', @@ -204,6 +214,7 @@ export default defineComponent({ }, plugins: { legend: { + display: props.detailed, position: 'bottom', labels: { boxWidth: 16, @@ -583,6 +594,30 @@ export default defineComponent({ }; }; + const fetchPerUserNotesChart = async (): Promise => { + const raw = await os.api('charts/user/notes', { userId: props.args.user.id, limit: props.limit, span: props.span }); + return { + series: [...(props.args.withoutAll ? [] : [{ + name: 'All', + type: 'line', + borderDash: [5, 5], + data: format(sum(raw.inc, negate(raw.dec))), + }]), { + name: 'Renotes', + type: 'area', + data: format(raw.diffs.renote), + }, { + name: 'Replies', + type: 'area', + data: format(raw.diffs.reply), + }, { + name: 'Normal', + type: 'area', + data: format(raw.diffs.normal), + }], + }; + }; + const fetchAndRender = async () => { const fetchData = () => { switch (props.src) { @@ -611,6 +646,8 @@ export default defineComponent({ case 'instance-drive-usage-total': return fetchInstanceDriveUsageChart(true); case 'instance-drive-files': return fetchInstanceDriveFilesChart(false); case 'instance-drive-files-total': return fetchInstanceDriveFilesChart(true); + + case 'per-user-notes': return fetchPerUserNotesChart(); } }; fetching.value = true; diff --git a/src/client/components/global/header.vue b/src/client/components/global/header.vue index 2bf490c98a..526db07fd3 100644 --- a/src/client/components/global/header.vue +++ b/src/client/components/global/header.vue @@ -2,8 +2,8 @@