From bbd618a2581e6cb716a864c5123bde4968a1211f Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 28 Jul 2023 14:09:04 +0900 Subject: [PATCH 1/6] Update CHANGELOG.md --- CHANGELOG.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5385b800ef..98e6675489 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ +## 2023.8.0 (unreleased) + +### General +- OAuth 2.0のサポート + +### Client +- + +### Server +- + ## 13.14.2 ### Client From 339086995f54197e84e9904e4778b355b02479a0 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Fri, 28 Jul 2023 10:46:43 +0200 Subject: [PATCH 2/6] chore(frontend): support Spotify for brainDiver (#11407) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(frontend): support Spotify for brainDiver * no lowercase * album * syntax fix * Update packages/frontend/src/components/MkPostForm.vue Co-authored-by: Acid Chicken (硫酸鶏) * reformat --------- Co-authored-by: Acid Chicken (硫酸鶏) --- .../frontend/src/components/MkPostForm.vue | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/frontend/src/components/MkPostForm.vue b/packages/frontend/src/components/MkPostForm.vue index f1eac354ea..afbec98d61 100644 --- a/packages/frontend/src/components/MkPostForm.vue +++ b/packages/frontend/src/components/MkPostForm.vue @@ -751,18 +751,25 @@ async function post(ev?: MouseEvent) { claimAchievement('notes1'); } - const text = postData.text?.toLowerCase() ?? ''; - if ((text.includes('love') || text.includes('❤')) && text.includes('misskey')) { + const text = postData.text ?? ''; + const lowerCase = text.toLowerCase(); + if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('misskey')) { claimAchievement('iLoveMisskey'); } - if ( - text.includes('https://youtu.be/Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://www.youtube.com/watch?v=Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://m.youtube.com/watch?v=Efrlqw8ytg4'.toLowerCase()) || - text.includes('https://youtu.be/XVCwzwxdHuA'.toLowerCase()) || - text.includes('https://www.youtube.com/watch?v=XVCwzwxdHuA'.toLowerCase()) || - text.includes('https://m.youtube.com/watch?v=XVCwzwxdHuA'.toLowerCase()) - ) { + if ([ + 'https://youtu.be/Efrlqw8ytg4', + 'https://www.youtube.com/watch?v=Efrlqw8ytg4', + 'https://m.youtube.com/watch?v=Efrlqw8ytg4', + + 'https://youtu.be/XVCwzwxdHuA', + 'https://www.youtube.com/watch?v=XVCwzwxdHuA', + 'https://m.youtube.com/watch?v=XVCwzwxdHuA', + + 'https://open.spotify.com/track/3Cuj0mZrlLoXx9nydNi7RB', + 'https://open.spotify.com/track/7anfcaNPQWlWCwyCHmZqNy', + 'https://open.spotify.com/track/5Odr16TvEN4my22K9nbH7l', + 'https://open.spotify.com/album/5bOlxyl4igOrp2DwVQxBco', + ].some(url => text.includes(url))) { claimAchievement('brainDiver'); } From 5096be06ac3498444bacc6ccc2107247369ae914 Mon Sep 17 00:00:00 2001 From: woxtu Date: Sat, 29 Jul 2023 15:17:29 +0900 Subject: [PATCH 3/6] Remove an unused dependency (#11405) --- packages/backend/package.json | 1 - packages/backend/src/boot/master.ts | 1 - pnpm-lock.yaml | 3 --- 3 files changed, 5 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index 75ed142592..bbca9e59c4 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -147,7 +147,6 @@ "rss-parser": "3.13.0", "rxjs": "7.8.1", "sanitize-html": "2.11.0", - "semver": "7.5.4", "sharp": "0.32.3", "sharp-read-bmp": "github:misskey-dev/sharp-read-bmp", "slacc": "0.0.10", diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 5dd7d7baf1..0bf23c770b 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -10,7 +10,6 @@ import * as os from 'node:os'; import cluster from 'node:cluster'; import chalk from 'chalk'; import chalkTemplate from 'chalk-template'; -import semver from 'semver'; import Logger from '@/logger.js'; import { loadConfig } from '@/config.js'; import type { Config } from '@/config.js'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42aeb357c5..7bd90b8a05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -341,9 +341,6 @@ importers: sanitize-html: specifier: 2.11.0 version: 2.11.0 - semver: - specifier: 7.5.4 - version: 7.5.4 sharp: specifier: 0.32.3 version: 0.32.3 From a52f63ec6a94cb61cdd3ae4130f10439ef8188d6 Mon Sep 17 00:00:00 2001 From: Kagami Sascha Rosylight Date: Mon, 31 Jul 2023 05:22:57 +0200 Subject: [PATCH 4/6] fix(frontend, misskey-js): make block switch work (#11429) * fix(frontend, misskey-js): make block switch work * Update CHANGELOG.md --- CHANGELOG.md | 2 +- packages/frontend/src/pages/instance-info.vue | 29 ++++++++++++------- packages/misskey-js/etc/misskey-js.api.md | 13 +++++++-- packages/misskey-js/src/api.types.ts | 4 +-- packages/misskey-js/src/entities.ts | 8 ++++- 5 files changed, 38 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98e6675489..3029a93b70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,7 +18,7 @@ - OAuth 2.0のサポート ### Client -- +- Fix: サーバー情報画面(`/instance-info/{domain}`)でブロックができないのを修正 ### Server - diff --git a/packages/frontend/src/pages/instance-info.vue b/packages/frontend/src/pages/instance-info.vue index 54f2cd7def..24355c0556 100644 --- a/packages/frontend/src/pages/instance-info.vue +++ b/packages/frontend/src/pages/instance-info.vue @@ -34,8 +34,8 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts.stopActivityDelivery }} - {{ i18n.ts.blockThisInstance }} + {{ i18n.ts.stopActivityDelivery }} + {{ i18n.ts.blockThisInstance }} Refresh metadata
@@ -129,7 +129,7 @@ import MkSelect from '@/components/MkSelect.vue'; import MkSwitch from '@/components/MkSwitch.vue'; import * as os from '@/os'; import number from '@/filters/number'; -import { iAmModerator } from '@/account'; +import { iAmModerator, iAmAdmin } from '@/account'; import { definePageMetadata } from '@/scripts/page-metadata'; import { i18n } from '@/i18n'; import MkUserCardMini from '@/components/MkUserCardMini.vue'; @@ -143,11 +143,11 @@ const props = defineProps<{ let tab = $ref('overview'); let chartSrc = $ref('instance-requests'); -let meta = $ref(null); +let meta = $ref(null); let instance = $ref(null); let suspended = $ref(false); let isBlocked = $ref(false); -let faviconUrl = $ref(null); +let faviconUrl = $ref(null); const usersPagination = { endpoint: iAmModerator ? 'admin/show-users' : 'users' as const, @@ -160,7 +160,10 @@ const usersPagination = { offsetMode: true, }; -async function fetch() { +async function fetch(): Promise { + if (iAmAdmin) { + meta = await os.api('admin/meta'); + } instance = await os.api('federation/show-instance', { host: props.host, }); @@ -169,21 +172,25 @@ async function fetch() { faviconUrl = getProxiedImageUrlNullable(instance.faviconUrl, 'preview') ?? getProxiedImageUrlNullable(instance.iconUrl, 'preview'); } -async function toggleBlock(ev) { - if (meta == null) return; +async function toggleBlock(): Promise { + if (!meta) throw new Error('No meta?'); + if (!instance) throw new Error('No instance?'); + const { host } = instance; await os.api('admin/update-meta', { - blockedHosts: isBlocked ? meta.blockedHosts.concat([instance.host]) : meta.blockedHosts.filter(x => x !== instance.host), + blockedHosts: isBlocked ? meta.blockedHosts.concat([host]) : meta.blockedHosts.filter(x => x !== host), }); } -async function toggleSuspend(v) { +async function toggleSuspend(): Promise { + if (!instance) throw new Error('No instance?'); await os.api('admin/federation/update-instance', { host: instance.host, isSuspended: suspended, }); } -function refreshMetadata() { +function refreshMetadata(): void { + if (!instance) throw new Error('No instance?'); os.api('admin/federation/refresh-remote-instance-metadata', { host: instance.host, }); diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 65d6e2e0b1..9d872f98e7 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -17,6 +17,11 @@ export type Acct = { // @public (undocumented) type Ad = TODO_2; +// @public (undocumented) +type AdminInstanceMetadata = DetailedInstanceMetadata & { + blockedHosts: string[]; +}; + // @public (undocumented) type Announcement = { id: ID; @@ -329,8 +334,8 @@ export type Endpoints = { res: TODO; }; 'admin/meta': { - req: TODO; - res: TODO; + req: NoParams; + res: AdminInstanceMetadata; }; 'admin/reset-password': { req: TODO; @@ -2226,6 +2231,7 @@ declare namespace entities { LiteInstanceMetadata, DetailedInstanceMetadata, InstanceMetadata, + AdminInstanceMetadata, ServerInfo, Stats, Page, @@ -2317,7 +2323,7 @@ type ID = string; // @public (undocumented) type Instance = { id: ID; - caughtAt: DateString; + firstRetrievedAt: DateString; host: string; usersCount: number; notesCount: number; @@ -2331,6 +2337,7 @@ type Instance = { lastCommunicatedAt: DateString; isNotResponding: boolean; isSuspended: boolean; + isBlocked: boolean; softwareName: string | null; softwareVersion: string | null; openRegistrations: boolean | null; diff --git a/packages/misskey-js/src/api.types.ts b/packages/misskey-js/src/api.types.ts index 343977f4be..de9af99168 100644 --- a/packages/misskey-js/src/api.types.ts +++ b/packages/misskey-js/src/api.types.ts @@ -2,7 +2,7 @@ import type { Ad, Announcement, Antenna, App, AuthSession, Blocking, Channel, Clip, DateString, DetailedInstanceMetadata, DriveFile, DriveFolder, Following, FollowingFolloweePopulated, FollowingFollowerPopulated, FollowRequest, GalleryPost, Instance, LiteInstanceMetadata, MeDetailed, - Note, NoteFavorite, OriginType, Page, ServerInfo, Stats, User, UserDetailed, MeSignup, UserGroup, UserList, UserSorting, Notification, NoteReaction, Signin, MessagingMessage, Invite, InviteLimit, + Note, NoteFavorite, OriginType, Page, ServerInfo, Stats, User, UserDetailed, MeSignup, UserGroup, UserList, UserSorting, Notification, NoteReaction, Signin, MessagingMessage, Invite, InviteLimit, AdminInstanceMetadata, } from './entities.js'; type TODO = Record | null; @@ -20,7 +20,7 @@ export type Endpoints = { 'admin/get-table-stats': { req: TODO; res: TODO; }; 'admin/invite': { req: TODO; res: TODO; }; 'admin/logs': { req: TODO; res: TODO; }; - 'admin/meta': { req: TODO; res: TODO; }; + 'admin/meta': { req: NoParams; res: AdminInstanceMetadata; }; 'admin/reset-password': { req: TODO; res: TODO; }; 'admin/resolve-abuse-user-report': { req: TODO; res: TODO; }; 'admin/resync-chart': { req: TODO; res: TODO; }; diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index ea85bedf63..b9771d1964 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -346,6 +346,11 @@ export type DetailedInstanceMetadata = LiteInstanceMetadata & { export type InstanceMetadata = LiteInstanceMetadata | DetailedInstanceMetadata; +export type AdminInstanceMetadata = DetailedInstanceMetadata & { + // TODO: There are more fields. + blockedHosts: string[]; +}; + export type ServerInfo = { machine: string; cpu: { @@ -482,7 +487,7 @@ export type Blocking = { export type Instance = { id: ID; - caughtAt: DateString; + firstRetrievedAt: DateString; host: string; usersCount: number; notesCount: number; @@ -496,6 +501,7 @@ export type Instance = { lastCommunicatedAt: DateString; isNotResponding: boolean; isSuspended: boolean; + isBlocked: boolean; softwareName: string | null; softwareVersion: string | null; openRegistrations: boolean | null; From bdf390eb7e5b1c17b80eef951419feebbedc03d7 Mon Sep 17 00:00:00 2001 From: tamaina Date: Mon, 31 Jul 2023 14:13:34 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix(frontend):=20=E6=9C=AA=E8=AA=AD?= =?UTF-8?q?=E3=81=AE=E3=81=8A=E7=9F=A5=E3=82=89=E3=81=9B=E3=81=AE=E3=80=8C?= =?UTF-8?q?=E3=82=8F=E3=81=8B=E3=81=A3=E3=81=9F=E3=80=8D=E3=82=92=E3=82=AF?= =?UTF-8?q?=E3=83=AA=E3=83=83=E3=82=AF=E3=83=BB=E3=82=BF=E3=83=83=E3=83=97?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=82=82=E3=81=9D=E3=81=AE=E5=A0=B4=E3=81=A7?= =?UTF-8?q?=E3=80=8C=E3=82=8F=E3=81=8B=E3=81=A3=E3=81=9F=E3=80=8D=E3=81=8C?= =?UTF-8?q?=E6=B6=88=E3=81=88=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#11433)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(frontend): 未読のお知らせの「わかった」をクリック・タップしてもその場で「わかった」が消えない問題を修正 * remove comment * clean up * :v: * add CHANGELOG --- CHANGELOG.md | 1 + packages/frontend/src/pages/announcements.vue | 24 ++++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3029a93b70..9aa5bf2fa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ ### Client - Fix: サーバー情報画面(`/instance-info/{domain}`)でブロックができないのを修正 +- Fix: 未読のお知らせの「わかった」をクリック・タップしてもその場で「わかった」が消えない問題を修正 ### Server - diff --git a/packages/frontend/src/pages/announcements.vue b/packages/frontend/src/pages/announcements.vue index c04db7c4b5..dd166d3c51 100644 --- a/packages/frontend/src/pages/announcements.vue +++ b/packages/frontend/src/pages/announcements.vue @@ -7,15 +7,15 @@ SPDX-License-Identifier: AGPL-3.0-only - -
+ +
🆕 {{ announcement.title }}
@@ -24,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only