diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-23 20:13:46 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-23 20:13:46 +0900 |
| commit | a5df2b029329e7a7c7287c8df8fc9f7adbcaba96 (patch) | |
| tree | e96e7ab9a9c71160dba5fdc8c55d3b12194b4bc5 /packages | |
| parent | Merge branch 'develop' (diff) | |
| parent | 13.2.0 (diff) | |
| download | misskey-a5df2b029329e7a7c7287c8df8fc9f7adbcaba96.tar.gz misskey-a5df2b029329e7a7c7287c8df8fc9f7adbcaba96.tar.bz2 misskey-a5df2b029329e7a7c7287c8df8fc9f7adbcaba96.zip | |
Merge branch 'develop'
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/backend/package.json | 8 | ||||
| -rw-r--r-- | packages/backend/src/boot/common.ts | 35 | ||||
| -rw-r--r-- | packages/backend/src/boot/master.ts | 33 | ||||
| -rw-r--r-- | packages/backend/src/boot/worker.ts | 23 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkAchievements.vue | 6 | ||||
| -rw-r--r-- | packages/frontend/src/components/MkReactionsViewer.reaction.vue | 2 | ||||
| -rw-r--r-- | packages/frontend/src/pages/about-misskey.vue | 65 | ||||
| -rw-r--r-- | packages/frontend/src/pages/admin/object-storage.vue | 2 | ||||
| -rw-r--r-- | packages/frontend/src/pages/emojis.emoji.vue | 9 | ||||
| -rw-r--r-- | packages/frontend/src/pages/user/achievements.vue | 2 | ||||
| -rw-r--r-- | packages/frontend/src/scripts/aiscript/ui.ts | 2 |
11 files changed, 133 insertions, 54 deletions
diff --git a/packages/backend/package.json b/packages/backend/package.json index be9012021f..565de4310d 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -23,9 +23,9 @@ "@tensorflow/tfjs-node": "4.1.0" }, "dependencies": { - "@bull-board/api": "^4.10.2", - "@bull-board/fastify": "^4.10.2", - "@bull-board/ui": "^4.10.2", + "@bull-board/api": "^4.11.0", + "@bull-board/fastify": "^4.11.0", + "@bull-board/ui": "^4.11.0", "@discordapp/twemoji": "14.0.2", "@fastify/accepts": "4.1.0", "@fastify/cookie": "^8.3.0", @@ -120,7 +120,7 @@ "typeorm": "0.3.11", "typescript": "4.9.4", "ulid": "2.3.0", - "undici": "^5.15.1", + "undici": "^5.16.0", "unzipper": "0.10.11", "uuid": "9.0.0", "vary": "1.1.2", diff --git a/packages/backend/src/boot/common.ts b/packages/backend/src/boot/common.ts new file mode 100644 index 0000000000..04aa26e652 --- /dev/null +++ b/packages/backend/src/boot/common.ts @@ -0,0 +1,35 @@ +import { NestFactory } from '@nestjs/core'; +import { ChartManagementService } from '@/core/chart/ChartManagementService.js'; +import { QueueProcessorService } from '@/queue/QueueProcessorService.js'; +import { NestLogger } from '@/NestLogger.js'; +import { QueueProcessorModule } from '@/queue/QueueProcessorModule.js'; +import { JanitorService } from '@/daemons/JanitorService.js'; +import { QueueStatsService } from '@/daemons/QueueStatsService.js'; +import { ServerStatsService } from '@/daemons/ServerStatsService.js'; +import { ServerService } from '@/server/ServerService.js'; +import { MainModule } from '@/MainModule.js'; + +export async function server() { + const app = await NestFactory.createApplicationContext(MainModule, { + logger: new NestLogger(), + }); + app.enableShutdownHooks(); + + const serverService = app.get(ServerService); + serverService.launch(); + + app.get(ChartManagementService).start(); + app.get(JanitorService).start(); + app.get(QueueStatsService).start(); + app.get(ServerStatsService).start(); +} + +export async function jobQueue() { + const jobQueue = await NestFactory.createApplicationContext(QueueProcessorModule, { + logger: new NestLogger(), + }); + jobQueue.enableShutdownHooks(); + + jobQueue.get(QueueProcessorService).start(); + jobQueue.get(ChartManagementService).start(); +} diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 93cb3131ba..f5d936fadf 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -6,21 +6,12 @@ import cluster from 'node:cluster'; import chalk from 'chalk'; import chalkTemplate from 'chalk-template'; import semver from 'semver'; -import { NestFactory } from '@nestjs/core'; import Logger from '@/logger.js'; import { loadConfig } from '@/config.js'; import type { Config } from '@/config.js'; -import { lessThan } from '@/misc/prelude/array.js'; import { showMachineInfo } from '@/misc/show-machine-info.js'; -import { DaemonModule } from '@/daemons/DaemonModule.js'; -import { JanitorService } from '@/daemons/JanitorService.js'; -import { QueueStatsService } from '@/daemons/QueueStatsService.js'; -import { ServerStatsService } from '@/daemons/ServerStatsService.js'; -import { NestLogger } from '@/NestLogger.js'; -import { ChartManagementService } from '@/core/chart/ChartManagementService.js'; -import { ServerService } from '@/server/ServerService.js'; -import { MainModule } from '@/MainModule.js'; -import { envOption } from '../env.js'; +import { envOption } from '@/env.js'; +import { jobQueue, server } from './common.js'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); @@ -73,14 +64,13 @@ export async function masterMain() { process.exit(1); } - const app = await NestFactory.createApplicationContext(MainModule, { - logger: new NestLogger(), - }); - app.enableShutdownHooks(); - - // start server - const serverService = app.get(ServerService); - serverService.launch(); + if (envOption.onlyServer) { + await server(); + } else if (envOption.onlyQueue) { + await jobQueue(); + } else { + await server(); + } bootLogger.succ('Misskey initialized'); @@ -89,11 +79,6 @@ export async function masterMain() { } bootLogger.succ(`Now listening on port ${config.port} on ${config.url}`, null, true); - - app.get(ChartManagementService).start(); - app.get(JanitorService).start(); - app.get(QueueStatsService).start(); - app.get(ServerStatsService).start(); } function showEnvironment(): void { diff --git a/packages/backend/src/boot/worker.ts b/packages/backend/src/boot/worker.ts index e0574643b7..ab75aaa572 100644 --- a/packages/backend/src/boot/worker.ts +++ b/packages/backend/src/boot/worker.ts @@ -1,23 +1,18 @@ import cluster from 'node:cluster'; -import { NestFactory } from '@nestjs/core'; -import { ChartManagementService } from '@/core/chart/ChartManagementService.js'; -import { QueueProcessorService } from '@/queue/QueueProcessorService.js'; -import { NestLogger } from '@/NestLogger.js'; -import { QueueProcessorModule } from '@/queue/QueueProcessorModule.js'; +import { envOption } from '@/env.js'; +import { jobQueue, server } from './common.js'; /** * Init worker process */ export async function workerMain() { - const jobQueue = await NestFactory.createApplicationContext(QueueProcessorModule, { - logger: new NestLogger(), - }); - jobQueue.enableShutdownHooks(); - - // start job queue - jobQueue.get(QueueProcessorService).start(); - - jobQueue.get(ChartManagementService).start(); + if (envOption.onlyServer) { + await server(); + } else if (envOption.onlyQueue) { + await jobQueue(); + } else { + await jobQueue(); + } if (cluster.isWorker) { // Send a 'ready' message to parent process diff --git a/packages/frontend/src/components/MkAchievements.vue b/packages/frontend/src/components/MkAchievements.vue index 64fea96354..19d04721d8 100644 --- a/packages/frontend/src/components/MkAchievements.vue +++ b/packages/frontend/src/components/MkAchievements.vue @@ -16,8 +16,8 @@ <time v-tooltip="new Date(achievement.unlockedAt).toLocaleString()">{{ new Date(achievement.unlockedAt).getFullYear() }}/{{ new Date(achievement.unlockedAt).getMonth() + 1 }}/{{ new Date(achievement.unlockedAt).getDate() }}</time> </span> </div> - <div :class="$style.description">{{ i18n.ts._achievements._types['_' + achievement.name].description }}</div> - <div v-if="i18n.ts._achievements._types['_' + achievement.name].flavor" :class="$style.flavor">{{ i18n.ts._achievements._types['_' + achievement.name].flavor }}</div> + <div :class="$style.description">{{ withDescription ? i18n.ts._achievements._types['_' + achievement.name].description : '???' }}</div> + <div v-if="i18n.ts._achievements._types['_' + achievement.name].flavor && withDescription" :class="$style.flavor">{{ i18n.ts._achievements._types['_' + achievement.name].flavor }}</div> </div> </div> <template v-if="withLocked"> @@ -49,8 +49,10 @@ import { ACHIEVEMENT_TYPES, ACHIEVEMENT_BADGES, claimAchievement } from '@/scrip const props = withDefaults(defineProps<{ user: misskey.entities.User; withLocked: boolean; + withDescription: boolean; }>(), { withLocked: true, + withDescription: true, }); let achievements = $ref(); diff --git a/packages/frontend/src/components/MkReactionsViewer.reaction.vue b/packages/frontend/src/components/MkReactionsViewer.reaction.vue index ec4042d18c..eed6b46594 100644 --- a/packages/frontend/src/components/MkReactionsViewer.reaction.vue +++ b/packages/frontend/src/components/MkReactionsViewer.reaction.vue @@ -21,6 +21,7 @@ import { useTooltip } from '@/scripts/use-tooltip'; import { $i } from '@/account'; import MkReactionEffect from '@/components/MkReactionEffect.vue'; import { claimAchievement } from '@/scripts/achievements'; +import { defaultStore } from '@/store'; const props = defineProps<{ reaction: string; @@ -61,6 +62,7 @@ const toggleReaction = () => { const anime = () => { if (document.hidden) return; + if (!defaultStore.state.animation) return; const rect = buttonEl.value.getBoundingClientRect(); const x = rect.left + 16; diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue index 82f4e30a45..bc63d7159a 100644 --- a/packages/frontend/src/pages/about-misskey.vue +++ b/packages/frontend/src/pages/about-misskey.vue @@ -40,11 +40,31 @@ </FormSection> <FormSection> <template #label>{{ i18n.ts._aboutMisskey.contributors }}</template> - <div class="_formLinksGrid"> - <FormLink to="https://github.com/syuilo" external>@syuilo</FormLink> - <FormLink to="https://github.com/tamaina" external>@tamaina</FormLink> - <FormLink to="https://github.com/acid-chicken" external>@acid-chicken</FormLink> - <FormLink to="https://github.com/rinsuki" external>@rinsuki</FormLink> + <div :class="$style.contributors"> + <a href="https://github.com/syuilo" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/4439005?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@syuilo</span> + </a> + <a href="https://github.com/tamaina" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/7973572?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@tamaina</span> + </a> + <a href="https://github.com/acid-chicken" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/20679825?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@acid-chicken</span> + </a> + <a href="https://github.com/rinsuki" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/6533808?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@rinsuki</span> + </a> + <a href="https://github.com/mei23" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/30769358?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@mei23</span> + </a> + <a href="https://github.com/robflop" target="_blank" :class="$style.contributor"> + <img src="https://avatars.githubusercontent.com/u/8159402?v=4" :class="$style.contributorAvatar"> + <span :class="$style.contributorUsername">@robflop</span> + </a> </div> <template #caption><MkLink url="https://github.com/misskey-dev/misskey/graphs/contributors">{{ i18n.ts._aboutMisskey.allContributors }}</MkLink></template> </FormSection> @@ -295,3 +315,38 @@ definePageMetadata({ } } </style> + +<style lang="scss" module> +.contributors { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); + grid-gap: 12px; +} + +.contributor { + display: flex; + align-items: center; + padding: 12px; + background: var(--buttonBg); + border-radius: 6px; + + &:hover { + text-decoration: none; + background: var(--buttonHoverBg); + } + + &.active { + color: var(--accent); + background: var(--buttonHoverBg); + } +} + +.contributorAvatar { + width: 30px; + border-radius: 100%; +} + +.contributorUsername { + margin-left: 12px; +} +</style> diff --git a/packages/frontend/src/pages/admin/object-storage.vue b/packages/frontend/src/pages/admin/object-storage.vue index 54d7e09532..6a6af637ed 100644 --- a/packages/frontend/src/pages/admin/object-storage.vue +++ b/packages/frontend/src/pages/admin/object-storage.vue @@ -38,7 +38,7 @@ <template #label>Access key</template> </MkInput> - <MkInput v-model="objectStorageSecretKey"> + <MkInput v-model="objectStorageSecretKey" type="password"> <template #prefix><i class="ti ti-key"></i></template> <template #label>Secret key</template> </MkInput> diff --git a/packages/frontend/src/pages/emojis.emoji.vue b/packages/frontend/src/pages/emojis.emoji.vue index fb3bce570c..0edc290801 100644 --- a/packages/frontend/src/pages/emojis.emoji.vue +++ b/packages/frontend/src/pages/emojis.emoji.vue @@ -1,6 +1,6 @@ <template> <button class="zuvgdzyu _button" @click="menu"> - <img :src="`/emoji/${emoji.name}.webp`" class="img" loading="lazy"/> + <img :src="emoji.url" class="img" loading="lazy"/> <div class="body"> <div class="name _monospace">{{ emoji.name }}</div> <div class="info">{{ emoji.aliases.join(' ') }}</div> @@ -15,7 +15,12 @@ import copyToClipboard from '@/scripts/copy-to-clipboard'; import { i18n } from '@/i18n'; const props = defineProps<{ - emoji: Record<string, unknown>; // TODO + emoji: { + name: string; + aliases: string[]; + category: string; + url: string; + }; }>(); function menu(ev) { diff --git a/packages/frontend/src/pages/user/achievements.vue b/packages/frontend/src/pages/user/achievements.vue index eaea26db4a..615613b7fc 100644 --- a/packages/frontend/src/pages/user/achievements.vue +++ b/packages/frontend/src/pages/user/achievements.vue @@ -1,6 +1,6 @@ <template> <MkSpacer :content-max="1200"> - <MkAchievements :user="user" :with-locked="false"/> + <MkAchievements :user="user" :with-locked="false" :with-description="$i != null && (props.user.id === $i.id)"/> </MkSpacer> </template> diff --git a/packages/frontend/src/scripts/aiscript/ui.ts b/packages/frontend/src/scripts/aiscript/ui.ts index b1895a5f33..fb73c0b4b7 100644 --- a/packages/frontend/src/scripts/aiscript/ui.ts +++ b/packages/frontend/src/scripts/aiscript/ui.ts @@ -303,7 +303,7 @@ function getButtonOptions(def: values.Value | undefined, call: (fn: values.VFn, if (primary) utils.assertBoolean(primary); const rounded = def.value.get('rounded'); if (rounded) utils.assertBoolean(rounded); - const disabled = button.value.get('disabled'); + const disabled = def.value.get('disabled'); if (disabled) utils.assertBoolean(disabled); return { |