diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d2b3f715..b43fb528f 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 000000000..ab29bef2b Binary files /dev/null and b/assets/user-unknown.png differ diff --git a/locales/ar-SA.yml b/locales/ar-SA.yml index 4c4be9445..d7f038393 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 c5bbbddc0..81fb263a7 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 f60365b01..6d2961ce3 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 fdd676f4b..0733f0e47 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 57300fbcd..c3964fff6 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 44c7f49f1..06df4ce8e 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 5402a05e4..dbb0bf166 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 db0cf7f20..66850335b 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 c8aa28df5..db0b7e84e 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 a8e653f79..1764c366c 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 9e1fdd482..e9ce6ef77 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 2b94bd679..ae9a5e79b 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 2bf490c98..526db07fd 100644 --- a/src/client/components/global/header.vue +++ b/src/client/components/global/header.vue @@ -2,8 +2,8 @@