From 9d9e8a3c4ecb00b545e0bd52b1a548fa0cc1098f Mon Sep 17 00:00:00 2001 From: Masaya Suzuki <15100604+massongit@users.noreply.github.com> Date: Fri, 3 Feb 2023 03:11:26 +0900 Subject: [PATCH 001/127] CONTRIBUTING: yarn -> pnpm (#9771) --- CONTRIBUTING.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4689543d5..658db0066 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -44,7 +44,7 @@ Thank you for your PR! Before creating a PR, please check the following: - Check if there are any documents that need to be created or updated due to this change. - If you have added a feature or fixed a bug, please add a test case if possible. - Please make sure that tests and Lint are passed in advance. - - You can run it with `yarn test` and `yarn lint`. [See more info](#testing) + - You can run it with `pnpm test` and `pnpm lint`. [See more info](#testing) - If this PR includes UI changes, please attach a screenshot in the text. Thanks for your cooperation 🤗 @@ -102,7 +102,7 @@ If your language is not listed in Crowdin, please open an issue. During development, it is useful to use the ``` -yarn dev +pnpm dev ``` command. @@ -127,12 +127,12 @@ Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.y Run all test. ``` -yarn test +pnpm test ``` #### Run specify test ``` -yarn jest -- foo.ts +pnpm jest -- foo.ts ``` ### e2e tests @@ -177,9 +177,9 @@ vue-routerとの最大の違いは、niraxは複数のルーターが存在す これにより、アプリ内ウィンドウでブラウザとは個別にルーティングすることなどが可能になります。 ## Notes -### How to resolve conflictions occurred at yarn.lock? +### How to resolve conflictions occurred at pnpm-lock.yaml? -Just execute `yarn` to fix it. +Just execute `pnpm` to fix it. ### INSERTするときにはsaveではなくinsertを使用する #6441 @@ -265,7 +265,7 @@ MongoDBは`null`で返してきてたので、その感覚で`if (x === null)` ### Migration作成方法 packages/backendで: ```sh -yarn dlx typeorm migration:generate -d ormconfig.js -o +pnpm dlx typeorm migration:generate -d ormconfig.js -o ``` - 生成後、ファイルをmigration下に移してください From 01778e11dc921da21e1fe246f833ac27006a5691 Mon Sep 17 00:00:00 2001 From: Masaya Suzuki <15100604+massongit@users.noreply.github.com> Date: Fri, 3 Feb 2023 03:11:50 +0900 Subject: [PATCH 002/127] =?UTF-8?q?CONTRIBUTING:=20=E3=83=86=E3=82=B9?= =?UTF-8?q?=E3=83=88=E3=81=8C=E9=85=8D=E7=BD=AE=E3=81=95=E3=82=8C=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=82=8B=E5=A0=B4=E6=89=80=E3=81=AE=E8=A8=98=E8=BF=B0?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3=20(#9772)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 658db0066..811e4219e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -112,7 +112,7 @@ command. - Service Worker is watched by esbuild. ## Testing -- Test codes are located in [`/test`](/test). +- Test codes are located in [`/packages/backend/test`](/packages/backend/test). ### Run test Create a config file. From 88c3957085f577babe5280b28a68a946101b9027 Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 3 Feb 2023 14:03:34 +0900 Subject: [PATCH 003/127] enhance(client): hidden ads when canHideAds is true --- packages/frontend/src/components/global/MkAd.vue | 10 +--------- packages/frontend/src/store.ts | 4 ---- 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/packages/frontend/src/components/global/MkAd.vue b/packages/frontend/src/components/global/MkAd.vue index a518484a5..2bb432e15 100644 --- a/packages/frontend/src/components/global/MkAd.vue +++ b/packages/frontend/src/components/global/MkAd.vue @@ -11,7 +11,6 @@
Ads by {{ host }}
{{ $ts._ad.reduceFrequencyOfThisAd }} - {{ $ts._ad.hide }} @@ -83,7 +82,7 @@ const choseAd = (): Ad | null => { }; const chosen = ref(choseAd()); -let shouldHide = $ref(chosen.value && $i && $i.policies.canHideAds && defaultStore.state.hiddenAds.includes(chosen.value.id)); +const shouldHide = $ref($i && $i.policies.canHideAds); function reduceFrequency(): void { if (chosen.value == null) return; @@ -93,13 +92,6 @@ function reduceFrequency(): void { chosen.value = choseAd(); showMenu.value = false; } - -function hide() { - if (chosen.value == null) return; - defaultStore.push('hiddenAds', chosen.value.id); - os.success(); - shouldHide = true; -} diff --git a/packages/frontend/src/pages/admin/roles.editor.vue b/packages/frontend/src/pages/admin/roles.editor.vue index ae5ef39ba..086537a94 100644 --- a/packages/frontend/src/pages/admin/roles.editor.vue +++ b/packages/frontend/src/pages/admin/roles.editor.vue @@ -13,6 +13,10 @@ + + + + @@ -35,6 +39,21 @@ + + + + + + + + + + + + + + +
@@ -358,16 +377,6 @@
- - - - - - - - - -
{{ role ? i18n.ts.save : i18n.ts.create }}
@@ -426,9 +435,11 @@ let name = $ref(role?.name ?? 'New Role'); let description = $ref(role?.description ?? ''); let rolePermission = $ref(role?.isAdministrator ? 'administrator' : role?.isModerator ? 'moderator' : 'normal'); let color = $ref(role?.color ?? null); +let iconUrl = $ref(role?.iconUrl ?? null); let target = $ref(role?.target ?? 'manual'); let condFormula = $ref(role?.condFormula ?? { id: uuid(), type: 'isRemote' }); let isPublic = $ref(role?.isPublic ?? false); +let asBadge = $ref(role?.asBadge ?? false); let canEditMembersByModerator = $ref(role?.canEditMembersByModerator ?? false); const policies = reactive>({}); @@ -466,11 +477,13 @@ async function save() { name, description, color: color === '' ? null : color, + iconUrl: iconUrl === '' ? null : iconUrl, target, condFormula, isAdministrator: rolePermission === 'administrator', isModerator: rolePermission === 'moderator', isPublic, + asBadge, canEditMembersByModerator, policies, }); @@ -480,11 +493,13 @@ async function save() { name, description, color: color === '' ? null : color, + iconUrl: iconUrl === '' ? null : iconUrl, target, condFormula, isAdministrator: rolePermission === 'administrator', isModerator: rolePermission === 'moderator', isPublic, + asBadge, canEditMembersByModerator, policies, }); diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index c960b3127..56858a937 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -39,7 +39,10 @@
- {{ role.name }} + + + {{ role.name }} +
From c9ec08704eafde29752a7beca40c2b1e79b4bc25 Mon Sep 17 00:00:00 2001 From: Masaya Suzuki <15100604+massongit@users.noreply.github.com> Date: Sun, 5 Feb 2023 13:33:21 +0900 Subject: [PATCH 039/127] =?UTF-8?q?fix:=20=E3=82=A4=E3=83=B3=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E3=82=B3=E3=83=BC=E3=83=89=E3=82=92=E6=8A=98?= =?UTF-8?q?=E3=82=8A=E8=BF=94=E3=81=97=E3=81=A6=E8=A1=A8=E7=A4=BA=E3=81=99?= =?UTF-8?q?=E3=82=8B=20(#9801)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/frontend/src/components/MkCode.core.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkCode.core.vue b/packages/frontend/src/components/MkCode.core.vue index b07402882..b656307d9 100644 --- a/packages/frontend/src/components/MkCode.core.vue +++ b/packages/frontend/src/components/MkCode.core.vue @@ -1,6 +1,6 @@ From 505ecf6c1f23c6a5b1cf65abb02700073adbedd2 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sun, 5 Feb 2023 13:51:59 +0900 Subject: [PATCH 040/127] Deny UNIX domain socket (#9802) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Deny UNIX domain socket * got v12ならこれが使える? --- packages/backend/src/core/DownloadService.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/src/core/DownloadService.ts b/packages/backend/src/core/DownloadService.ts index a971e06fd..852c1f32e 100644 --- a/packages/backend/src/core/DownloadService.ts +++ b/packages/backend/src/core/DownloadService.ts @@ -60,6 +60,7 @@ export class DownloadService { retry: { limit: 0, }, + enableUnixSockets: false, }).on('response', (res: Got.Response) => { if ((process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test') && !this.config.proxy && res.ip) { if (this.isPrivateIp(res.ip)) { From 04f92bd6888b611c03962ffc202bc67f9592a372 Mon Sep 17 00:00:00 2001 From: futchitwo <74236683+futchitwo@users.noreply.github.com> Date: Sun, 5 Feb 2023 14:02:54 +0900 Subject: [PATCH 041/127] feat: timeline page for non-login users (#9795) --- packages/frontend/src/pages/timeline.vue | 23 +++++++++++++-- packages/frontend/src/router.ts | 3 ++ packages/frontend/src/ui/visitor.vue | 4 +-- packages/frontend/src/ui/visitor/b.vue | 19 +++++++++++-- packages/frontend/src/ui/visitor/header.vue | 31 ++++----------------- 5 files changed, 47 insertions(+), 33 deletions(-) diff --git a/packages/frontend/src/pages/timeline.vue b/packages/frontend/src/pages/timeline.vue index 59dc1114d..080772951 100644 --- a/packages/frontend/src/pages/timeline.vue +++ b/packages/frontend/src/pages/timeline.vue @@ -1,9 +1,9 @@ From 650187deaff1b2950d9471ac3ac9fdc2db942863 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 8 Feb 2023 17:48:02 +0900 Subject: [PATCH 068/127] perf(client): do not render custom emojis in user names #9778 --- packages/backend/src/core/CustomEmojiService.ts | 8 -------- .../src/core/entities/UserEntityService.ts | 2 +- .../frontend/src/components/MkAbuseReport.vue | 2 +- .../frontend/src/components/MkAutocomplete.vue | 2 +- packages/frontend/src/components/MkMenu.vue | 2 +- packages/frontend/src/components/MkNote.vue | 4 ++-- .../frontend/src/components/MkNoteDetailed.vue | 6 +++--- packages/frontend/src/components/MkNoteHeader.vue | 2 +- .../frontend/src/components/MkNotePreview.vue | 2 +- .../frontend/src/components/MkNotification.vue | 2 +- .../src/components/MkReactionsViewer.details.vue | 2 +- .../frontend/src/components/MkUserCardMini.vue | 2 +- packages/frontend/src/components/MkUserInfo.vue | 5 +++-- .../frontend/src/components/MkUserPreview.vue | 2 +- .../src/components/MkUserSelectDialog.vue | 4 ++-- .../frontend/src/components/MkUsersTooltip.vue | 2 +- .../global/MkMisskeyFlavoredMarkdown.vue | 9 +-------- .../src/components/global/MkPageHeader.vue | 2 +- .../frontend/src/components/global/MkUserName.vue | 15 --------------- packages/frontend/src/components/index.ts | 3 --- packages/frontend/src/pages/clip.vue | 2 +- packages/frontend/src/pages/follow-requests.vue | 2 +- packages/frontend/src/pages/gallery/post.vue | 2 +- packages/frontend/src/pages/messaging/index.vue | 2 +- packages/frontend/src/pages/my-lists/list.vue | 2 +- packages/frontend/src/pages/note.vue | 2 +- packages/frontend/src/pages/page.vue | 2 +- packages/frontend/src/pages/settings/accounts.vue | 4 +--- packages/frontend/src/pages/user-info.vue | 2 +- packages/frontend/src/pages/user/home.vue | 4 ++-- packages/frontend/src/style.scss | 7 +++++++ packages/frontend/src/widgets/WidgetProfile.vue | 4 +--- 32 files changed, 42 insertions(+), 71 deletions(-) delete mode 100644 packages/frontend/src/components/global/MkUserName.vue diff --git a/packages/backend/src/core/CustomEmojiService.ts b/packages/backend/src/core/CustomEmojiService.ts index 63f031944..3ac796fb2 100644 --- a/packages/backend/src/core/CustomEmojiService.ts +++ b/packages/backend/src/core/CustomEmojiService.ts @@ -150,17 +150,9 @@ export class CustomEmojiService { if (note.renote) { emojis = emojis.concat(note.renote.emojis .map(e => this.parseEmojiStr(e, note.renote!.userHost))); - if (note.renote.user) { - emojis = emojis.concat(note.renote.user.emojis - .map(e => this.parseEmojiStr(e, note.renote!.userHost))); - } } const customReactions = Object.keys(note.reactions).map(x => this.reactionService.decodeReaction(x)).filter(x => x.name != null) as typeof emojis; emojis = emojis.concat(customReactions); - if (note.user) { - emojis = emojis.concat(note.user.emojis - .map(e => this.parseEmojiStr(e, note.userHost))); - } } return emojis.filter(x => x.name != null && x.host != null) as { name: string; host: string; }[]; } diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index eea9d5567..09b69d509 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -413,7 +413,6 @@ export class UserEntityService implements OnModuleInit { faviconUrl: instance.faviconUrl, themeColor: instance.themeColor, } : undefined) : undefined, - emojis: this.customEmojiService.populateEmojis(user.emojis, user.host), onlineStatus: this.getOnlineStatus(user), // パフォーマンス上の理由でローカルユーザーのみ badgeRoles: user.host == null ? this.roleService.getUserBadgeRoles(user.id).then(rs => rs.map(r => ({ @@ -464,6 +463,7 @@ export class UserEntityService implements OnModuleInit { isModerator: role.isModerator, isAdministrator: role.isAdministrator, }))), + emojis: this.customEmojiService.populateEmojis(user.emojis, user.host), } : {}), ...(opts.detail && isMe ? { diff --git a/packages/frontend/src/components/MkAbuseReport.vue b/packages/frontend/src/components/MkAbuseReport.vue index 0e18a5a83..701dd8bb3 100644 --- a/packages/frontend/src/components/MkAbuseReport.vue +++ b/packages/frontend/src/components/MkAbuseReport.vue @@ -4,7 +4,7 @@
- + {{ report.targetUser.name ?? report.targetUser.username }}
diff --git a/packages/frontend/src/components/MkAutocomplete.vue b/packages/frontend/src/components/MkAutocomplete.vue index e523b988b..595e393e0 100644 --- a/packages/frontend/src/components/MkAutocomplete.vue +++ b/packages/frontend/src/components/MkAutocomplete.vue @@ -4,7 +4,7 @@
  • - + {{ user.name ?? user.username }} @{{ acct(user) }}
  • diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue index eee77a947..2185a3ed0 100644 --- a/packages/frontend/src/components/MkMenu.vue +++ b/packages/frontend/src/components/MkMenu.vue @@ -27,7 +27,7 @@ diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue index 351861ac1..a77158c86 100644 --- a/packages/frontend/src/components/MkNote.vue +++ b/packages/frontend/src/components/MkNote.vue @@ -17,7 +17,7 @@ @@ -108,7 +108,7 @@ diff --git a/packages/frontend/src/components/MkNoteDetailed.vue b/packages/frontend/src/components/MkNoteDetailed.vue index 0da06c4f1..b632a7739 100644 --- a/packages/frontend/src/components/MkNoteDetailed.vue +++ b/packages/frontend/src/components/MkNoteDetailed.vue @@ -16,7 +16,7 @@ @@ -39,7 +39,7 @@
    - + {{ appearNote.user.name ?? appearNote.user.username }} bot
    @@ -125,7 +125,7 @@ diff --git a/packages/frontend/src/components/MkNoteHeader.vue b/packages/frontend/src/components/MkNoteHeader.vue index 6b43f1466..d86a37ed5 100644 --- a/packages/frontend/src/components/MkNoteHeader.vue +++ b/packages/frontend/src/components/MkNoteHeader.vue @@ -1,7 +1,7 @@
    - {{ (showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt }} - {{ i18n.ts.cancel }} + {{ okText ?? ((showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt) }} + {{ cancelText ?? i18n.ts.cancel }}
    {{ action.text }} @@ -82,6 +82,8 @@ const props = withDefaults(defineProps<{ showOkButton?: boolean; showCancelButton?: boolean; cancelableByBgClick?: boolean; + okText?: string; + cancelText?: string; }>(), { type: 'info', showOkButton: true, diff --git a/packages/frontend/src/os.ts b/packages/frontend/src/os.ts index 52469b6d0..e21a21ef7 100644 --- a/packages/frontend/src/os.ts +++ b/packages/frontend/src/os.ts @@ -171,6 +171,8 @@ export function confirm(props: { type: 'error' | 'info' | 'success' | 'warning' | 'waiting' | 'question'; title?: string | null; text?: string | null; + okText?: string; + cancelText?: string; }): Promise<{ canceled: boolean }> { return new Promise((resolve, reject) => { popup(MkDialog, { diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue index da7d3d370..3647e90ce 100644 --- a/packages/frontend/src/pages/settings/profile.vue +++ b/packages/frontend/src/pages/settings/profile.vue @@ -150,6 +150,8 @@ function changeAvatar(ev) { const { canceled } = await os.confirm({ type: 'question', text: i18n.t('cropImageAsk'), + okText: i18n.ts.cropYes, + cancelText: i18n.ts.cropNo, }); if (!canceled) { @@ -174,6 +176,8 @@ function changeBanner(ev) { const { canceled } = await os.confirm({ type: 'question', text: i18n.t('cropImageAsk'), + okText: i18n.ts.cropYes, + cancelText: i18n.ts.cropNo, }); if (!canceled) { From 3c504b4b08ee22af1f2b668e97929aafa03c60ad Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 10 Feb 2023 11:04:11 +0900 Subject: [PATCH 127/127] chore(client): improve usability --- packages/frontend/src/components/MkCwButton.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/frontend/src/components/MkCwButton.vue b/packages/frontend/src/components/MkCwButton.vue index 651b20cef..e0885f555 100644 --- a/packages/frontend/src/components/MkCwButton.vue +++ b/packages/frontend/src/components/MkCwButton.vue @@ -1,5 +1,5 @@