From 660781afd9fe96de44e16725ad27f82922f628e8 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 12 Jul 2022 10:38:57 +0900 Subject: [PATCH 001/197] Fix crash at startup if TensorFlow is not supported (#8984) * Lazy loading tensorflow * CHANGELOG * CHANGELOG * Check CPU flags * . --- CHANGELOG.md | 7 ++++++ .../backend/src/services/detect-sensitive.ts | 24 +++++++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 37e3d52a0..1e35a2e66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,13 @@ You should also include the user name that made the change. --> +## 12.x.x (unreleased) + +### Improvements + +### Bugfixes +- Server: Fix crash at startup if TensorFlow is not supported @mei23 + ## 12.112.3 (2022/07/09) ### Improvements diff --git a/packages/backend/src/services/detect-sensitive.ts b/packages/backend/src/services/detect-sensitive.ts index 0fa263599..2ade39d52 100644 --- a/packages/backend/src/services/detect-sensitive.ts +++ b/packages/backend/src/services/detect-sensitive.ts @@ -2,19 +2,34 @@ import * as fs from 'node:fs'; import { fileURLToPath } from 'node:url'; import { dirname } from 'node:path'; import * as nsfw from 'nsfwjs'; -import * as tf from '@tensorflow/tfjs-node'; +import si from 'systeminformation'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); +const REQUIRED_CPU_FLAGS = ['avx2', 'fma']; +let isSupportedCpu: undefined | boolean = undefined; + let model: nsfw.NSFWJS; export async function detectSensitive(path: string): Promise { try { + if (isSupportedCpu === undefined) { + const cpuFlags = await getCpuFlags(); + isSupportedCpu = REQUIRED_CPU_FLAGS.every(required => cpuFlags.includes(required)); + } + + if (!isSupportedCpu) { + console.error('This CPU cannot use TensorFlow.'); + return null; + } + + const tf = await import('@tensorflow/tfjs-node'); + if (model == null) model = await nsfw.load(`file://${_dirname}/../../nsfw-model/`, { size: 299 }); const buffer = await fs.promises.readFile(path); - const image = await tf.node.decodeImage(buffer, 3) as tf.Tensor3D; + const image = await tf.node.decodeImage(buffer, 3) as any; try { const predictions = await model.classify(image); return predictions; @@ -26,3 +41,8 @@ export async function detectSensitive(path: string): Promise { + const str = await si.cpuFlags(); + return str.split(/\s+/); +} From 4550a4459bb9fc021211e438d135d464c018ce47 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 12 Jul 2022 12:03:38 +0900 Subject: [PATCH 002/197] feat: support syntax for mfm --- CHANGELOG.md | 1 + packages/backend/src/mfm/to-html.ts | 6 ++++++ packages/client/src/components/mfm.ts | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e35a2e66..f6644f016 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ You should also include the user name that made the change. ## 12.x.x (unreleased) ### Improvements +- Support syntax for MFM ### Bugfixes - Server: Fix crash at startup if TensorFlow is not supported @mei23 diff --git a/packages/backend/src/mfm/to-html.ts b/packages/backend/src/mfm/to-html.ts index 5b382063e..bcb5c86a3 100644 --- a/packages/backend/src/mfm/to-html.ts +++ b/packages/backend/src/mfm/to-html.ts @@ -145,6 +145,12 @@ export function toHtml(nodes: mfm.MfmNode[] | null, mentionedRemoteUsers: IMenti a.textContent = node.props.content; return a; }, + + plain(node) { + const el = doc.createElement('span'); + appendChildren(node.children, el); + return el; + }, }; appendChildren(nodes, doc.body); diff --git a/packages/client/src/components/mfm.ts b/packages/client/src/components/mfm.ts index 14ec5ffc8..16ae45bfe 100644 --- a/packages/client/src/components/mfm.ts +++ b/packages/client/src/components/mfm.ts @@ -312,6 +312,10 @@ export default defineComponent({ })]; } + case 'plain': { + return [h('span', genEl(token.children))]; + } + default: { console.error('unrecognized ast type:', token.type); From d7247e2db253cdbb651aa4bcc388cc89a9735b39 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 12 Jul 2022 22:42:50 +0900 Subject: [PATCH 003/197] chore(client): tweak ui --- packages/client/src/components/chart.vue | 2 +- packages/client/src/components/ui/super-menu.vue | 4 ++-- packages/client/src/pages/admin/overview.vue | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/client/src/components/chart.vue b/packages/client/src/components/chart.vue index fc7c4ff95..31e95404f 100644 --- a/packages/client/src/components/chart.vue +++ b/packages/client/src/components/chart.vue @@ -316,7 +316,7 @@ const render = () => { plugins: [{ id: 'vLine', beforeDraw(chart, args, options) { - if (chart.tooltip._active && chart.tooltip._active.length) { + if (chart.tooltip?._active?.length) { const activePoint = chart.tooltip._active[0]; const ctx = chart.ctx; const x = activePoint.element.x; diff --git a/packages/client/src/components/ui/super-menu.vue b/packages/client/src/components/ui/super-menu.vue index 78f524036..8ce2dc5dc 100644 --- a/packages/client/src/components/ui/super-menu.vue +++ b/packages/client/src/components/ui/super-menu.vue @@ -30,7 +30,7 @@ export default defineComponent({ props: { def: { type: Array, - required: true + required: true, }, grid: { type: Boolean, @@ -64,7 +64,7 @@ export default defineComponent({ box-sizing: border-box; padding: 10px 16px 10px 8px; border-radius: 9px; - font-size: 0.95em; + font-size: 0.9em; &:hover { text-decoration: none; diff --git a/packages/client/src/pages/admin/overview.vue b/packages/client/src/pages/admin/overview.vue index 7e085106b..d7c3ab7cc 100644 --- a/packages/client/src/pages/admin/overview.vue +++ b/packages/client/src/pages/admin/overview.vue @@ -355,7 +355,7 @@ async function renderChart() { plugins: [{ id: 'vLine', beforeDraw(chart, args, options) { - if (chart.tooltip._active && chart.tooltip._active.length) { + if (chart.tooltip?._active?.length) { const activePoint = chart.tooltip._active[0]; const ctx = chart.ctx; const x = activePoint.element.x; From 05a342009fcd214ab1ad11dbda58a383075dcec2 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 13 Jul 2022 16:33:18 +0900 Subject: [PATCH 004/197] :art: --- packages/client/src/scripts/theme.ts | 4 ++-- .../src/themes/{d-lime-green.json5 => d-green-lime.json5} | 4 ++-- .../src/themes/{d-orange-green.json5 => d-green-orange.json5} | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) rename packages/client/src/themes/{d-lime-green.json5 => d-green-lime.json5} (88%) rename packages/client/src/themes/{d-orange-green.json5 => d-green-orange.json5} (88%) diff --git a/packages/client/src/scripts/theme.ts b/packages/client/src/scripts/theme.ts index eb82044b3..77d1df082 100644 --- a/packages/client/src/scripts/theme.ts +++ b/packages/client/src/scripts/theme.ts @@ -31,8 +31,8 @@ export const getBuiltinThemes = () => Promise.all( 'd-astro', 'd-future', 'd-botanical', - 'd-lime-green', - 'd-orange-green', + 'd-green-lime', + 'd-green-orange', 'd-cherry', 'd-ice', ].map(name => import(`../themes/${name}.json5`).then(({ default: _default }): Theme => _default)), diff --git a/packages/client/src/themes/d-lime-green.json5 b/packages/client/src/themes/d-green-lime.json5 similarity index 88% rename from packages/client/src/themes/d-lime-green.json5 rename to packages/client/src/themes/d-green-lime.json5 index 17617687b..a6983b9ac 100644 --- a/packages/client/src/themes/d-lime-green.json5 +++ b/packages/client/src/themes/d-green-lime.json5 @@ -1,7 +1,7 @@ { id: '02816013-8107-440f-877e-865083ffe194', - name: 'Mi Lime+Green Dark', + name: 'Mi Green+Lime Dark', author: 'syuilo', base: 'dark', @@ -19,6 +19,6 @@ popup: '#293330', renote: '@accent', mentionMe: '#ffaa00', - link: '#2bceff', + link: '#24d7ce', }, } diff --git a/packages/client/src/themes/d-orange-green.json5 b/packages/client/src/themes/d-green-orange.json5 similarity index 88% rename from packages/client/src/themes/d-orange-green.json5 rename to packages/client/src/themes/d-green-orange.json5 index f0e15f476..63c961565 100644 --- a/packages/client/src/themes/d-orange-green.json5 +++ b/packages/client/src/themes/d-green-orange.json5 @@ -1,7 +1,7 @@ { id: 'dc489603-27b5-424a-9b25-1ff6aec9824a', - name: 'Mi Orange+Green Dark', + name: 'Mi Green+Orange Dark', author: 'syuilo', base: 'dark', @@ -19,6 +19,6 @@ popup: '#293330', renote: '@accent', mentionMe: '#ffaa00', - link: '#2bceff', + link: '#24d7ce', }, } From b08ead1dcef34c19a61895aab371576099c5ea1c Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 13 Jul 2022 16:33:39 +0900 Subject: [PATCH 005/197] chore(client): fix mention style --- packages/client/src/components/mention.vue | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/client/src/components/mention.vue b/packages/client/src/components/mention.vue index e35652297..cf6943777 100644 --- a/packages/client/src/components/mention.vue +++ b/packages/client/src/components/mention.vue @@ -61,9 +61,8 @@ useCssModule(); border-radius: 100%; } - > .host { + > .main > .host { opacity: 0.5; } } - From 170b1b89bad60193c7da7a32d5df0fd31140fd76 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 13 Jul 2022 16:33:52 +0900 Subject: [PATCH 006/197] chore(client): fix type def --- packages/client/src/components/form/input.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/client/src/components/form/input.vue b/packages/client/src/components/form/input.vue index ec1ad20de..1cc391217 100644 --- a/packages/client/src/components/form/input.vue +++ b/packages/client/src/components/form/input.vue @@ -41,7 +41,7 @@ import { useInterval } from '@/scripts/use-interval'; const props = defineProps<{ modelValue: string | number; - type?: 'text' | 'number' | 'password' | 'email' | 'url' | 'date' | 'time'; + type?: 'text' | 'number' | 'password' | 'email' | 'url' | 'date' | 'time' | 'search'; required?: boolean; readonly?: boolean; disabled?: boolean; From 0bcfa2d04f308387aaa3a34ab7ec4804c9c34e09 Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 13 Jul 2022 18:09:41 +0900 Subject: [PATCH 007/197] chore(client): tweak explore page --- packages/client/src/pages/explore.users.vue | 7 ++++++- packages/client/src/pages/explore.vue | 13 +++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/client/src/pages/explore.users.vue b/packages/client/src/pages/explore.users.vue index bdc96b33a..8af37ab52 100644 --- a/packages/client/src/pages/explore.users.vue +++ b/packages/client/src/pages/explore.users.vue @@ -1,5 +1,9 @@