Compare commits

...

21 Commits

Author SHA1 Message Date
かっこかり 3af373a905
Merge c202c6bbea into 90e69f4d10 2025-05-04 00:08:57 +09:00
syuilo 90e69f4d10
add note 2025-05-03 21:51:58 +09:00
syuilo e76e2534d7 perf(frontend): improve MkPullToRefresh render performance 2025-05-03 21:40:18 +09:00
syuilo 27682b980c
tweak MkPullToRefresh.vue 2025-05-03 21:14:59 +09:00
syuilo ef79cc290f perf(frontend): tweak PageWithHeader 2025-05-03 20:15:18 +09:00
syuilo e7c170cf0c tweak MkPullToRefresh 2025-05-03 18:35:43 +09:00
kakkokari-gtyih c202c6bbea Merge branch 'develop' into fix-freebsd 2025-04-29 17:05:05 +09:00
かっこかり 580e933b7f
Update CHANGELOG.md 2025-02-28 18:44:39 +09:00
かっこかり 3524effc2a
Merge branch 'develop' into fix-freebsd 2025-02-28 18:44:12 +09:00
かっこかり faf0959840
Merge branch 'develop' into fix-freebsd 2025-02-26 18:50:47 +09:00
kakkokari-gtyih ab74696488 Merge remote-tracking branch 'msky/develop' into fix-freebsd 2025-02-24 14:31:23 +09:00
kakkokari-gtyih 710aa0b68e Merge branch 'develop' into fix-freebsd 2025-02-16 18:47:18 +09:00
kakkokari-gtyih 5298dc6f7a Merge branch 'develop' into fix-freebsd 2025-02-15 14:57:27 +09:00
kakkokari-gtyih 27d2ed0d58 Merge branch 'fix-freebsd' of https://github.com/kakkokari-gtyih/misskey into fix-freebsd 2025-02-15 13:06:52 +09:00
kakkokari-gtyih 5f30e1b824 Merge branch 'develop' into fix-freebsd 2025-02-15 13:06:50 +09:00
かっこかり 34d49218d2
Update packages/backend/package.json
Co-authored-by: おさむのひと <46447427+samunohito@users.noreply.github.com>
2025-02-15 10:43:59 +09:00
kakkokari-gtyih 0674ec2d3e Update Changelog 2025-02-07 21:12:26 +09:00
kakkokari-gtyih 2ba9dc4c8e indent 2025-02-07 21:10:15 +09:00
kakkokari-gtyih 3d740467f8 typo 2025-02-07 21:07:54 +09:00
kakkokari-gtyih 28da1fccc5 Update Changelog 2025-02-07 21:07:42 +09:00
Marie 03a665f3f6 fix: Allow FreeBSD to start Backend without any issues 2025-02-07 21:06:22 +09:00
7 changed files with 39 additions and 155 deletions

View File

@ -58,6 +58,8 @@
- Fix: 大文字を含むユーザの URL で照会された場合に 404 エラーを返す問題 #15813
- Fix: リードレプリカ設定時にレコードの追加・更新・削除を伴うクエリを発行した際はmasterードで実行されるように調整( #10897 )
- Fix: ファイルアップロード時の挙動を一部調整(#15895)
- Fix: FreeBSDで起動できない問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/887)
## 2025.4.0

View File

@ -80,7 +80,6 @@
"@fastify/view": "10.0.2",
"@misskey-dev/sharp-read-bmp": "1.3.0",
"@misskey-dev/summaly": "5.2.1",
"@napi-rs/canvas": "0.1.69",
"@nestjs/common": "11.1.0",
"@nestjs/core": "11.1.0",
"@nestjs/testing": "11.1.0",
@ -103,6 +102,7 @@
"body-parser": "1.20.3",
"bullmq": "5.51.1",
"cacheable-lookup": "7.0.0",
"canvas": "3.1.0",
"cbor": "9.0.2",
"chalk": "5.4.1",
"chalk-template": "1.1.0",

View File

@ -58,7 +58,7 @@ export class UserListService implements OnApplicationShutdown, OnModuleInit {
}
async onModuleInit() {
this.roleService = this.moduleRef.get(RoleService.name);
this.roleService = this.moduleRef.get(RoleService);
}
@bindThis

View File

@ -8,7 +8,7 @@
* https://en.wikipedia.org/wiki/Identicon
*/
import { createCanvas } from '@napi-rs/canvas';
import { createCanvas } from 'canvas';
import gen from 'random-seed';
const size = 128; // px
@ -100,5 +100,5 @@ export async function genIdenticon(seed: string): Promise<Buffer> {
}
}
return await canvas.encode('png');
return await canvas.toBuffer('image/png');
}

View File

@ -4,8 +4,9 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
<template>
<div ref="rootEl">
<div v-if="isPulling" :class="$style.frame" :style="`--frame-min-height: ${pullDistance / (PULL_BRAKE_BASE + (pullDistance / PULL_BRAKE_FACTOR))}px;`">
<div ref="rootEl" :class="isPulling ? $style.isPulling : null">
<!-- 小数が含まれるとレンダリングが高頻度になりすぎパフォーマンスが悪化するためround -->
<div v-if="isPulling" :class="$style.frame" :style="`--frame-min-height: ${Math.round(pullDistance / (PULL_BRAKE_BASE + (pullDistance / PULL_BRAKE_FACTOR)))}px;`">
<div :class="$style.frameContent">
<MkLoading v-if="isRefreshing" :class="$style.loader" :em="true"/>
<i v-else class="ti ti-arrow-bar-to-down" :class="[$style.icon, { [$style.refresh]: isPulledEnough }]"></i>
@ -64,13 +65,15 @@ function getScreenY(event: TouchEvent | MouseEvent | PointerEvent): number {
// When at the top of the page, disable vertical overscroll so passive touch listeners can take over.
function lockDownScroll() {
scrollEl!.style.touchAction = 'pan-x pan-down pinch-zoom';
scrollEl!.style.overscrollBehavior = 'none';
if (scrollEl == null) return;
scrollEl.style.touchAction = 'pan-x pan-down pinch-zoom';
scrollEl.style.overscrollBehavior = 'none';
}
function unlockDownScroll() {
scrollEl!.style.touchAction = 'auto';
scrollEl!.style.overscrollBehavior = 'contain';
if (scrollEl == null) return;
scrollEl.style.touchAction = 'auto';
scrollEl.style.overscrollBehavior = 'contain';
}
function moveStart(event: PointerEvent) {
@ -204,20 +207,24 @@ function refreshFinished() {
onMounted(() => {
if (rootEl.value == null) return;
scrollEl = getScrollContainer(rootEl.value);
lockDownScroll();
rootEl.value.addEventListener('pointerdown', moveStart, { passive: true });
rootEl.value.addEventListener('touchend', toggleScrollLockOnTouchEnd, { passive: true });
});
onUnmounted(() => {
rootEl.value.removeEventListener('pointerdown', moveStart);
rootEl.value.removeEventListener('touchend', toggleScrollLockOnTouchEnd);
unlockDownScroll();
if (rootEl.value) rootEl.value.removeEventListener('pointerdown', moveStart);
if (rootEl.value) rootEl.value.removeEventListener('touchend', toggleScrollLockOnTouchEnd);
});
</script>
<style lang="scss" module>
.isPulling {
will-change: contents;
}
.frame {
position: relative;
overflow: clip;

View File

@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<MkStickyContainer>
<template #header><MkPageHeader v-model:tab="tab" v-bind="pageHeaderProps"/></template>
<div :class="$style.body">
<MkSwiper v-if="swipable && (props.tabs?.length ?? 1) > 1" v-model:tab="tab" :class="$style.swiper" :tabs="props.tabs">
<MkSwiper v-if="prefer.s.enableHorizontalSwipe && swipable && (props.tabs?.length ?? 1) > 1" v-model:tab="tab" :class="$style.swiper" :tabs="props.tabs">
<slot></slot>
</MkSwiper>
<slot v-else></slot>
@ -25,6 +25,7 @@ import type { PageHeaderProps } from './MkPageHeader.vue';
import { useScrollPositionKeeper } from '@/use/use-scroll-position-keeper.js';
import MkSwiper from '@/components/MkSwiper.vue';
import { useRouter } from '@/router.js';
import { prefer } from '@/preferences.js';
const props = withDefaults(defineProps<PageHeaderProps & {
reversed?: boolean;

View File

@ -126,9 +126,6 @@ importers:
'@misskey-dev/summaly':
specifier: 5.2.1
version: 5.2.1
'@napi-rs/canvas':
specifier: 0.1.69
version: 0.1.69
'@nestjs/common':
specifier: 11.1.0
version: 11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)
@ -195,6 +192,9 @@ importers:
cacheable-lookup:
specifier: 7.0.0
version: 7.0.0
canvas:
specifier: 3.1.0
version: 3.1.0
cbor:
specifier: 9.0.2
version: 9.0.2
@ -2767,70 +2767,6 @@ packages:
resolution: {integrity: sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==}
engines: {node: '>=18'}
'@napi-rs/canvas-android-arm64@0.1.69':
resolution: {integrity: sha512-4icWTByY8zPvM9SelfQKf3I6kwXw0aI5drBOVrwfER5kjwXJd78FPSDSZkxDHjvIo9Q86ljl18Yr963ehA4sHQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
'@napi-rs/canvas-darwin-arm64@0.1.69':
resolution: {integrity: sha512-HOanhhYlHdukA+unjelT4Dg3ta7e820x87/AG2dKUMsUzH19jaeZs9bcYjzEy2vYi/dFWKz7cSv2yaIOudB8Yg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@napi-rs/canvas-darwin-x64@0.1.69':
resolution: {integrity: sha512-SIp7WfhxAPnSVK9bkFfJp+84rbATCIq9jMUzDwpCLhQ+v+OqtXe4pggX1oeV+62/HK6BT1t18qRmJfyqwJ9f3g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@napi-rs/canvas-linux-arm-gnueabihf@0.1.69':
resolution: {integrity: sha512-Ls+KujCp6TGpkuMVFvrlx+CxtL+casdkrprFjqIuOAnB30Mct6bCEr+I83Tu29s3nNq4EzIGjdmA3fFAZG/Dtw==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@napi-rs/canvas-linux-arm64-gnu@0.1.69':
resolution: {integrity: sha512-m8VcGmeSBNRbHZBd1srvdM1aq/ScS2y8KqGqmCCEgJlytYK4jdULzAo2K/BPKE1v3xvn8oUPZDLI/NBJbJkEoA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@napi-rs/canvas-linux-arm64-musl@0.1.69':
resolution: {integrity: sha512-a3xjNRIeK2m2ZORGv2moBvv3vbkaFZG1QKMeiEv/BKij+rkztuEhTJGMar+buICFgS0fLgphXXsKNkUSJb7eRQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
'@napi-rs/canvas-linux-riscv64-gnu@0.1.69':
resolution: {integrity: sha512-pClUoJF5wdC9AvD0mc15G9JffL1Q85nuH1rLSQPRkGmGmQOtRjw5E9xNbanz7oFUiPbjH7xcAXUjVAcf7tdgPQ==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
'@napi-rs/canvas-linux-x64-gnu@0.1.69':
resolution: {integrity: sha512-96X3bFAmzemfw84Ts6Jg/omL86uuynvK06MWGR/mp3JYNumY9RXofA14eF/kJIYelbYFWXcwpbcBR71lJ6G/YQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@napi-rs/canvas-linux-x64-musl@0.1.69':
resolution: {integrity: sha512-2QTsEFO72Kwkj53W9hc5y1FAUvdGx0V+pjJB+9oQF6Ys9+y989GyPIl5wZDzeh8nIJW6koZZ1eFa8pD+pA5BFQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
'@napi-rs/canvas-win32-x64-msvc@0.1.69':
resolution: {integrity: sha512-Q4YA8kVnKarApBVLu7F8icGlIfSll5Glswo5hY6gPS4Is2dCI8+ig9OeDM8RlwYevUIxKq8lZBypN8Q1iLAQ7w==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@napi-rs/canvas@0.1.69':
resolution: {integrity: sha512-ydvNeJMRm+l3T14yCoUKqjYQiEdXDq1isznI93LEBGYssXKfSaLNLHOkeM4z9Fnw9Pkt2EKOCAtW9cS4b00Zcg==}
engines: {node: '>= 10'}
'@nestjs/common@11.1.0':
resolution: {integrity: sha512-8MrajltjtIN6eW9cTpv+1IZogqz2Zsrc8YDt0LwQPUq8cSq0j50DETdQpPsNMeib+p9avkV41+NrzGk1z2o5Wg==}
peerDependencies:
@ -12736,49 +12672,6 @@ snapshots:
outvariant: 1.4.3
strict-event-emitter: 0.5.1
'@napi-rs/canvas-android-arm64@0.1.69':
optional: true
'@napi-rs/canvas-darwin-arm64@0.1.69':
optional: true
'@napi-rs/canvas-darwin-x64@0.1.69':
optional: true
'@napi-rs/canvas-linux-arm-gnueabihf@0.1.69':
optional: true
'@napi-rs/canvas-linux-arm64-gnu@0.1.69':
optional: true
'@napi-rs/canvas-linux-arm64-musl@0.1.69':
optional: true
'@napi-rs/canvas-linux-riscv64-gnu@0.1.69':
optional: true
'@napi-rs/canvas-linux-x64-gnu@0.1.69':
optional: true
'@napi-rs/canvas-linux-x64-musl@0.1.69':
optional: true
'@napi-rs/canvas-win32-x64-msvc@0.1.69':
optional: true
'@napi-rs/canvas@0.1.69':
optionalDependencies:
'@napi-rs/canvas-android-arm64': 0.1.69
'@napi-rs/canvas-darwin-arm64': 0.1.69
'@napi-rs/canvas-darwin-x64': 0.1.69
'@napi-rs/canvas-linux-arm-gnueabihf': 0.1.69
'@napi-rs/canvas-linux-arm64-gnu': 0.1.69
'@napi-rs/canvas-linux-arm64-musl': 0.1.69
'@napi-rs/canvas-linux-riscv64-gnu': 0.1.69
'@napi-rs/canvas-linux-x64-gnu': 0.1.69
'@napi-rs/canvas-linux-x64-musl': 0.1.69
'@napi-rs/canvas-win32-x64-msvc': 0.1.69
'@nestjs/common@11.1.0(reflect-metadata@0.2.2)(rxjs@7.8.2)':
dependencies:
file-type: 20.4.1
@ -15664,7 +15557,6 @@ snapshots:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
optional: true
blob-util@2.0.2: {}
@ -15868,7 +15760,6 @@ snapshots:
dependencies:
node-addon-api: 7.1.1
prebuild-install: 7.1.3
optional: true
caseless@0.12.0: {}
@ -15974,8 +15865,7 @@ snapshots:
dependencies:
readdirp: 4.1.2
chownr@1.1.4:
optional: true
chownr@1.1.4: {}
chownr@2.0.0: {}
@ -16475,8 +16365,7 @@ snapshots:
which-collection: 1.0.1
which-typed-array: 1.1.15
deep-extend@0.6.0:
optional: true
deep-extend@0.6.0: {}
deep-is@0.1.4: {}
@ -16523,8 +16412,7 @@ snapshots:
detect-libc@2.0.3: {}
detect-libc@2.0.4:
optional: true
detect-libc@2.0.4: {}
detect-newline@3.1.0: {}
@ -17150,8 +17038,7 @@ snapshots:
exit@0.1.2: {}
expand-template@2.0.3:
optional: true
expand-template@2.0.3: {}
expect-type@1.2.1: {}
@ -17498,8 +17385,7 @@ snapshots:
from@0.1.7: {}
fs-constants@1.0.0:
optional: true
fs-constants@1.0.0: {}
fs-extra@11.3.0:
dependencies:
@ -17649,8 +17535,7 @@ snapshots:
dependencies:
assert-plus: 1.0.0
github-from-package@0.0.0:
optional: true
github-from-package@0.0.0: {}
glob-parent@5.1.2:
dependencies:
@ -19438,8 +19323,7 @@ snapshots:
minipass: 7.1.2
rimraf: 5.0.10
mkdirp-classic@0.5.3:
optional: true
mkdirp-classic@0.5.3: {}
mkdirp@0.5.6:
dependencies:
@ -19539,8 +19423,7 @@ snapshots:
nanoid@5.1.5: {}
napi-build-utils@2.0.0:
optional: true
napi-build-utils@2.0.0: {}
natural-compare@1.4.0: {}
@ -19581,15 +19464,13 @@ snapshots:
node-abi@3.74.0:
dependencies:
semver: 7.7.1
optional: true
node-abort-controller@3.1.1: {}
node-addon-api@3.2.1:
optional: true
node-addon-api@7.1.1:
optional: true
node-addon-api@7.1.1: {}
node-domexception@1.0.0: {}
@ -20288,7 +20169,6 @@ snapshots:
simple-get: 4.0.1
tar-fs: 2.1.2
tunnel-agent: 0.6.0
optional: true
prelude-ls@1.2.1: {}
@ -20531,7 +20411,6 @@ snapshots:
ini: 1.3.8
minimist: 1.2.8
strip-json-comments: 2.0.1
optional: true
rdf-canonize@3.4.0:
dependencies:
@ -21053,15 +20932,13 @@ snapshots:
signal-exit@4.1.0: {}
simple-concat@1.0.1:
optional: true
simple-concat@1.0.1: {}
simple-get@4.0.1:
dependencies:
decompress-response: 6.0.0
once: 1.4.0
simple-concat: 1.0.1
optional: true
simple-oauth2@5.1.0:
dependencies:
@ -21445,8 +21322,7 @@ snapshots:
dependencies:
min-indent: 1.0.1
strip-json-comments@2.0.1:
optional: true
strip-json-comments@2.0.1: {}
strip-json-comments@3.1.1: {}
@ -21509,7 +21385,6 @@ snapshots:
mkdirp-classic: 0.5.3
pump: 3.0.2
tar-stream: 2.2.0
optional: true
tar-stream@2.2.0:
dependencies:
@ -21518,7 +21393,6 @@ snapshots:
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
optional: true
tar-stream@3.1.6:
dependencies: