Merge remote-tracking branch 'origin/develop' into lll-patch

This commit is contained in:
Essem 2024-06-24 16:55:25 -05:00
commit ad7cf7f279
No known key found for this signature in database
GPG key ID: 7D497397CC3A2A8C
546 changed files with 30381 additions and 18563 deletions

View file

@ -6,7 +6,7 @@
#โ”€โ”€โ”€โ”˜ URL โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Final accessible URL seen by a user.
url: https://example.tld/
url: http://misskey.local
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
# URL SETTINGS AFTER THAT!

View file

@ -193,6 +193,21 @@ redis:
id: 'aidx'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Error tracking โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Sentry is available for error tracking.
# See the Sentry documentation for more details on options.
#sentryForBackend:
# enableNodeProfiling: true
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
#sentryForFrontend:
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Other configuration โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

View file

@ -38,7 +38,7 @@
# Option 3: If neither of the above applies to you.
# (In this case, the source code should be published
# on the Misskey interface. IT IS NOT ENOUGH TO
# DISCLOSE THE SOURCE CODE WEHN A USER REQUESTS IT BY
# DISCLOSE THE SOURCE CODE WHEN A USER REQUESTS IT BY
# E-MAIL OR OTHER MEANS. If you are not satisfied
# with this, it is recommended that you read the
# license again carefully. Anyway, enabling this
@ -205,6 +205,21 @@ redis:
id: 'aidx'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Error tracking โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Sentry is available for error tracking.
# See the Sentry documentation for more details on options.
#sentryForBackend:
# enableNodeProfiling: true
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
#sentryForFrontend:
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Other configuration โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
@ -291,5 +306,10 @@ checkActivityPubGetSignature: false
# Upload or download file size limits (bytes)
#maxFileSize: 262144000
# timeout and maximum size for imports (e.g. note imports)
#import:
# downloadTimeout: 30
# maxFileSize: 262144000
# PID File of master process
#pidFile: /tmp/misskey.pid

View file

@ -4,12 +4,10 @@
"service": "app",
"workspaceFolder": "/workspace",
"features": {
"ghcr.io/devcontainers-contrib/features/pnpm:2": {
"version": "8.9.2"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "20.10.0"
}
"version": "20.12.2"
},
"ghcr.io/devcontainers-contrib/features/corepack:1": {}
},
"forwardPorts": [3000],
"postCreateCommand": "sudo chmod 755 .devcontainer/init.sh && .devcontainer/init.sh",
@ -19,7 +17,6 @@
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"Vue.volar",
"Vue.vscode-typescript-vue-plugin",
"Orta.vscode-jest",
"dbaeumer.vscode-eslint",
"mrmlnc.vscode-json5"

View file

@ -132,6 +132,21 @@ redis:
id: 'aidx'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Error tracking โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Sentry is available for error tracking.
# See the Sentry documentation for more details on options.
#sentryForBackend:
# enableNodeProfiling: true
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
#sentryForFrontend:
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Other configuration โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

View file

@ -4,6 +4,8 @@ set -xe
sudo chown -R node /workspace
git submodule update --init
corepack install
corepack enable
pnpm config set store-dir /home/node/.local/share/pnpm/store
pnpm install --frozen-lockfile
cp .devcontainer/devcontainer.yml .config/default.yml

View file

@ -11,14 +11,18 @@ testCommit:
variables:
POSTGRES_PASSWORD: ci
script:
- apt-get update && apt-get install -y git wget curl build-essential python3
- apt-get update && apt-get install -y git wget curl build-essential python3 ffmpeg
- cp .config/ci.yml .config/default.yml
- cp .config/ci.yml .config/test.yml
- corepack enable
- corepack prepare pnpm@latest --activate
- git submodule update --init
- pnpm install --frozen-lockfile
- pnpm run build
- pnpm run migrate
- pnpm run --filter='!megalodon' test
- pnpm run --filter=backend lint
- pnpm run --filter=frontend eslint
cache:
key: test
policy: pull-push

View file

@ -1 +1 @@
20.10.0
20.12.2

View file

@ -1,95 +0,0 @@
name: Lint
on:
push:
branches:
- stable
- develop
paths:
- packages/**
pull_request:
paths:
- packages/backend/**
- packages/frontend/**
- packages/sw/**
- packages/misskey-js/**
- packages/shared/.eslintrc.js
jobs:
pnpm_install:
runs-on: docker
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
submodules: true
- uses: https://github.com/pnpm/action-setup@v2
with:
version: 8
run_install: false
- uses: https://code.forgejo.org/actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: 'pnpm'
- run: corepack enable
- run: pnpm i --frozen-lockfile
lint:
needs: [pnpm_install]
runs-on: docker
continue-on-error: true
strategy:
matrix:
workspace:
- backend
- frontend
- sw
- misskey-js
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
submodules: true
- uses: https://github.com/pnpm/action-setup@v2
with:
version: 7
run_install: false
- uses: https://code.forgejo.org/actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: 'pnpm'
- run: corepack enable
- run: pnpm i --frozen-lockfile
- run: pnpm --filter ${{ matrix.workspace }} run eslint
typecheck:
needs: [pnpm_install]
runs-on: docker
continue-on-error: true
strategy:
matrix:
workspace:
- backend
- misskey-js
steps:
- uses: actions/checkout@v4.1.1
with:
fetch-depth: 0
submodules: true
- uses: https://github.com/pnpm/action-setup@v2
with:
version: 7
run_install: false
- uses: https://code.forgejo.org/actions/setup-node@v4
with:
node-version-file: '.node-version'
cache: 'pnpm'
- run: corepack enable
- run: pnpm i --frozen-lockfile
- run: pnpm --filter misskey-js run build
if: ${{ matrix.workspace == 'backend' }}
- run: pnpm --filter misskey-reversi run build:tsc
if: ${{ matrix.workspace == 'backend' }}
- run: pnpm --filter misskey-bubble-game run build
if: ${{ matrix.workspace == 'backend' }}
- run: pnpm --filter ${{ matrix.workspace }} run typecheck

View file

@ -3,9 +3,7 @@
"editorconfig.editorconfig",
"dbaeumer.vscode-eslint",
"Vue.volar",
"Vue.vscode-typescript-vue-plugin",
"Orta.vscode-jest",
"dbaeumer.vscode-eslint",
"mrmlnc.vscode-json5"
]
}

View file

@ -7,7 +7,7 @@
"*.test.ts": "typescript"
},
"jest.jestCommandLine": "pnpm run jest",
"jest.autoRun": "off",
"jest.runMode": "on-demand",
"editor.codeActionsOnSave": {
"source.fixAll": "explicit"
},

View file

@ -1,16 +1,119 @@
<!--
## 202x.x.x (unreleased)
## Unreleased
### General
-
- Fix: ้…ไฟกๅœๆญขใ—ใŸใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นไธ€่ฆงใŒ่ฆ‹ใ‚Œใชใใชใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
### Client
-
### Server
-
-->
### Server
- ใƒใƒฃใƒผใƒˆ็”Ÿๆˆๆ™‚ใซinstance.suspentionStateใซ็ฝฎใๆ›ใˆใ‚‰ใ‚ŒใŸinstance.isSuspendedใŒๅ‚็…งใ•ใ‚Œใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃ
## 2024.5.0
### Note
- ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ‘ใƒใƒซๅ†…ใซใ‚ใ‚‹ใ‚ตใƒžใƒชใƒผใƒ—ใƒญใ‚ญใ‚ทใฎ่จญๅฎšๅ€‹ๆ‰€ใŒใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใ‹ใ‚‰ๅ…จ่ˆฌใธๅค‰ๆ›ดใจใชใ‚Šใพใ™ใ€‚
- ๆ‚ชๆ„ใฎใ‚ใ‚‹็ฌฌไธ‰่€…ใŒใƒชใƒขใƒผใƒˆใƒฆใƒผใ‚ถใƒผใซใชใ‚Šใ™ใพใ—ใŸใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ“ใƒ†ใ‚ฃใ‚’ๅ—ใ‘ๅ–ใ‚Œใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃใ—ใพใ—ใŸใ€‚่ฉณใ—ใใฏ[GitHub security advisory](https://github.com/misskey-dev/misskey/security/advisories/GHSA-2vxv-pv3m-3wvj)ใ‚’ใ”่ฆงใใ ใ•ใ„ใ€‚
- ็ฎก็†่€…ๅ‘ใ‘ๆจฉ้™ `read:admin:show-users` ใฏ `read:admin:show-user` ใซ็ตฑๅˆใ•ใ‚Œใพใ—ใŸใ€‚ๅฟ…่ฆใซๅฟœใ˜ใฆAPIใƒˆใƒผใ‚ฏใƒณใ‚’ๅ†็™บ่กŒใ—ใฆใใ ใ•ใ„ใ€‚
### General
- Feat: ใ‚จใƒฉใƒผใƒˆใƒฉใƒƒใ‚ญใƒณใ‚ฐใซSentryใ‚’ไฝฟ็”จใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸ
- Enhance: URLใƒ—ใƒฌใƒ“ใƒฅใƒผใฎๆœ‰ๅŠนๅŒ–ใƒป็„กๅŠนๅŒ–ใ‚’่จญๅฎšใงใใ‚‹ใ‚ˆใ†ใซ #13569
- Enhance: ใ‚ขใƒณใƒ†ใƒŠใงBotใซใ‚ˆใ‚‹ใƒŽใƒผใƒˆใ‚’้™คๅค–ใงใใ‚‹ใ‚ˆใ†ใซ
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/545)
- Enhance: ใ‚ฏใƒชใƒƒใƒ—ใฎใƒŽใƒผใƒˆๆ•ฐใ‚’่กจ็คบใ™ใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใ‚ณใƒณใƒ‡ใ‚ฃใ‚ทใƒงใƒŠใƒซใƒญใƒผใƒซใฎๆกไปถใจใ—ใฆไปฅไธ‹ใ‚’ๆ–ฐใŸใซ่ฟฝๅŠ  (#13667)
- ็Œซใƒฆใƒผใ‚ถใƒผใ‹
- botใƒฆใƒผใ‚ถใƒผใ‹
- ใ‚ตใ‚นใƒšใƒณใƒ‰ๆธˆใฟใƒฆใƒผใ‚ถใƒผใ‹
- ้ตใ‚ขใ‚ซใ‚ฆใƒณใƒˆใƒฆใƒผใ‚ถใƒผใ‹
- ใ€Œใ‚ขใ‚ซใ‚ฆใƒณใƒˆใ‚’่ฆ‹ใคใ‘ใ‚„ใ™ใใ™ใ‚‹ใ€ใŒๆœ‰ๅŠนใชใƒฆใƒผใ‚ถใƒผใ‹
- Enhance: Goneใ‚’ๅ‡บใ•ใšใซ็ต‚ไบ†ใ—ใŸใ‚ตใƒผใƒใƒผใธใฎ้…ไฟกๅœๆญขใ‚’่‡ชๅ‹•็š„ใซ่กŒใ†ใ‚ˆใ†ใซ
- ใ‚‚ใ—ใใฎใ‚ˆใ†ใชใ‚ตใƒผใƒใƒผใ‹ใ‚‰ใ‹ใ‚‰้…ไฟกใŒๅฑŠใ„ใŸๅ ดๅˆใซใฏ่‡ชๅ‹•็š„ใซ้…ไฟกใ‚’ๅ†้–‹ใ—ใพใ™
- Enhance: ้…ไฟกๅœๆญขใฎ็†็”ฑใ‚’่กจ็คบใ™ใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใ‚ตใƒผใƒใƒผใฎใŠๅ•ใ„ๅˆใ‚ใ›ๅ…ˆURLใ‚’่จญๅฎšใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸ
- Fix: Playไฝœๆˆๆ™‚ใซ่จญๅฎšใ—ใŸๅ…ฌ้–‹็ฏ„ๅ›ฒใŒๆฉŸ่ƒฝใ—ใฆใ„ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ๆญฃ่ฆๅŒ–ใ•ใ‚Œใฆใ„ใชใ„็Šถๆ…‹ใฎhashtagใŒ้€ฃๅˆใ•ใ‚ŒใฆใใŸhtmlใซๅซใพใ‚Œใฆใ„ใ‚‹ใจhashtagใŒๆญฃใ—ใhashtagใซๅพฉๅ…ƒใ•ใ‚Œใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใฟใคใ‘ใ‚‹ใฎใ‚ขใƒณใ‚ฑใƒผใƒˆๆฌ„ใซใฆใƒใƒฃใƒณใƒใƒซใฎใ‚ขใƒณใ‚ฑใƒผใƒˆใŒๅซใพใ‚Œใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃ
### Client
- Feat: ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ™ใ‚‹ใƒ•ใ‚กใ‚คใƒซใฎๅๅ‰ใ‚’ใƒฉใƒณใƒ€ใƒ ๆ–‡ๅญ—ๅˆ—ใซใงใใ‚‹ใ‚ˆใ†ใซ
- Feat: ๅ€‹ๅˆฅใฎใŠ็Ÿฅใ‚‰ใ›ใซใƒชใƒณใ‚ฏใง้ฃ›ในใ‚‹ใ‚ˆใ†ใซ
(Based on https://github.com/MisskeyIO/misskey/pull/639)
- Enhance: ่‡ชๅˆ†ใฎใƒŽใƒผใƒˆใฎๆทปไป˜ใƒ•ใ‚กใ‚คใƒซใ‹ใ‚‰็›ดๆŽฅใƒ•ใ‚กใ‚คใƒซใฎ่ฉณ็ดฐใƒšใƒผใ‚ธใซ้ฃ›ในใ‚‹ใ‚ˆใ†ใซ
- Enhance: ๅบƒๅ‘ŠใŒMisskeyใจๅŒไธ€ใƒ‰ใƒกใ‚คใƒณใฎๅ ดๅˆใฏRouterใง้ท็งปใ™ใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณใƒปใ„ใ„ใญใฎ็ทๆ•ฐใ‚’่กจ็คบใ™ใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณๅ—ใ‘ๅ…ฅใ‚ŒใŒใ€Œใ„ใ„ใญใฎใฟใ€ใฎๅ ดๅˆใฏใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณ็ตตๆ–‡ๅญ—ไธ€่ฆงใ‚’่กจ็คบใ—ใชใ„ใ‚ˆใ†ใซ
- Enhance: ่จญๅฎš>ใƒ—ใƒฉใ‚ฐใ‚คใƒณใฎใƒšใƒผใ‚ธใ‹ใ‚‰ใƒ—ใƒฉใ‚ฐใ‚คใƒณใฎ็ฐกๆ˜“็š„ใชใƒญใ‚ฐใ‚„ใ‚จใƒฉใƒผใ‚’่ฆ‹ใ‚‰ใ‚Œใ‚‹ใ‚ˆใ†ใซ
- ๅฎŸ่ฃ…ใฎ้ƒฝๅˆใซใ‚ˆใ‚Šใ€ใƒ—ใƒฉใ‚ฐใ‚คใƒณใฏ๏ผ‘ใคใ‚จใƒฉใƒผใ‚’่ตทใ“ใ—ใŸๆ™‚ใซๅณๆ™‚ๅœๆญขใ™ใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ—ใŸ
- Enhance: ใƒšใƒผใ‚ธใฎใƒ‡ใ‚ถใ‚คใƒณใ‚’ๅค‰ๆ›ด
- Enhance: 2่ฆ็ด ่ช่จผ๏ผˆใƒฏใƒณใ‚ฟใ‚คใƒ ใƒ‘ใ‚นใƒฏใƒผใƒ‰๏ผ‰ใฎๅ…ฅๅŠ›ๆฌ„ใ‚’ๆ”นๅ–„
- Enhance: ใ€ŒไปŠๆ—ฅ่ช•็”Ÿๆ—ฅใฎใƒ•ใ‚ฉใƒญใƒผไธญใƒฆใƒผใ‚ถใƒผใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใ‚’ๆ‰‹ๅ‹•ใงใƒชใƒญใƒผใƒ‰ใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ๆ˜ ๅƒใƒป้Ÿณๅฃฐใฎๅ†็”Ÿใซใƒ–ใƒฉใ‚ฆใ‚ถใฎใƒใ‚คใƒ†ใ‚ฃใƒ–ใƒ—ใƒฌใ‚คใƒคใƒผใ‚’ไฝฟ็”จใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ๆ˜ ๅƒใƒป้Ÿณๅฃฐใฎๅ†็”Ÿใƒกใƒ‹ใƒฅใƒผใซใ€Œๅ†็”Ÿ้€Ÿๅบฆใ€ใ€Œใƒซใƒผใƒ—ๅ†็”Ÿใ€ใ€Œใƒ”ใ‚ฏใƒใƒฃใ‚คใƒณใƒ”ใ‚ฏใƒใƒฃใ€ใ‚’่ฟฝๅŠ 
- Enhance: ๆ˜ ๅƒใƒป้Ÿณๅฃฐใฎๅ†็”Ÿใซใ‚ญใƒผใƒœใƒผใƒ‰ใ‚ทใƒงใƒผใƒˆใ‚ซใƒƒใƒˆใŒไฝฟใˆใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใƒŽใƒผใƒˆใซใคใ„ใฆใ„ใ‚‹ใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณใฎใ€Œใ‚‚ใฃใจ๏ผใ€ใ‹ใ‚‰ใ€ใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณใฎไธ€่ฆงใ‚’่กจ็คบใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใƒชใƒ—ใƒฉใ‚คใซใฆๅผ•็”จใŒใ‚ใ‚‹ๅ ดๅˆใƒ†ใ‚ญใ‚นใƒˆใŒ็ฉบใงใ‚‚ใƒŽใƒผใƒˆใงใใ‚‹ใ‚ˆใ†ใซ
- ๅผ•็”จใ—ใŸใ„ใƒŽใƒผใƒˆใฎURLใ‚’ใ‚ณใƒ”ใƒผใ—ใƒชใƒ—ใƒฉใ‚คๆŠ•็จฟ็”ป้ขใซใƒšใƒผใ‚นใƒˆใ—ใฆๆทปไป˜ใ™ใ‚‹ใ“ใจใง้”ๆˆใงใใพใ™
- Enhance: ใƒ•ใ‚ฉใƒญใƒผใ™ใ‚‹ใ‹ใฉใ†ใ‹ใฎ็ขบ่ชใƒ€ใ‚คใ‚ขใƒญใ‚ฐใ‚’ๅ‡บใ›ใ‚‹ใ‚ˆใ†ใซ
- Enhance: Playใ‚’ๆ‰‹ๅ‹•ใงใƒชใƒญใƒผใƒ‰ใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ้€šๅ ฑใฎใ‚ณใƒกใƒณใƒˆๅ†…ใฎใƒชใƒณใ‚ฏใ‚’ใ‚ฏใƒชใƒƒใ‚ฏใ—ใŸ้š›ใ€ใ‚ฆใ‚ฃใƒณใƒ‰ใ‚ฆใง้–‹ใใ‚ˆใ†ใซ
- Enhance: `Ui:C:postForm` ใŠใ‚ˆใณ `Ui:C:postFormButton` ใซ `localOnly` ใจ `visibility` ใ‚’่จญๅฎšใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: AiScriptใ‚’0.18.0ใซใƒใƒผใ‚ธใƒงใƒณใ‚ขใƒƒใƒ—
- Enhance: ้€šๅธธใฎใƒŽใƒผใƒˆใงใ‚‚ใ€ใŠๆฐ—ใซๅ…ฅใ‚Šใซ็™ป้Œฒใ—ใŸใƒใƒฃใƒณใƒใƒซใซใƒชใƒŽใƒผใƒˆใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ้•ทใ„ใƒ†ใ‚ญใ‚นใƒˆใ‚’ใƒšใƒผใ‚นใƒˆใ—ใŸ้š›ใซใƒ†ใ‚ญใ‚นใƒˆใƒ•ใ‚กใ‚คใƒซใจใ—ใฆๆทปไป˜ใ™ใ‚‹ใ‹ใฉใ†ใ‹ใ‚’้ธๆŠžใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ๆ–ฐ็€ใƒŽใƒผใƒˆใ‚’ใ‚ตใ‚ฆใƒณใƒ‰ใง้€š็Ÿฅใ™ใ‚‹ๆฉŸ่ƒฝใ‚’deck UIใซ่ฟฝๅŠ ใ—ใพใ—ใŸ
- Enhance: ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ‘ใƒใƒซใฎใ‚ฏใ‚คใƒƒใ‚ฏใ‚ขใ‚ฏใ‚ทใƒงใƒณใ‹ใ‚‰ใƒ•ใ‚กใ‚คใƒซใ‚’็…งไผšใงใใ‚‹ใ‚ˆใ†ใซ
- Enhance: ใ‚ณใƒณใƒˆใƒญใƒผใƒซใƒ‘ใƒใƒซใฎใ‚ฏใ‚คใƒƒใ‚ฏใ‚ขใ‚ฏใ‚ทใƒงใƒณใ‹ใ‚‰้€šๅธธใฎ็…งไผšใ‚’่กŒใˆใ‚‹ใ‚ˆใ†ใซ
- Fix: ไธ€้ƒจใฎใƒšใƒผใ‚ธๅ†…ใƒชใƒณใ‚ฏใŒๆญฃใ—ใๅ‹•ไฝœใ—ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ๅ‘จๅนดใฎๅฎŸ็ธพใŒ้–ๅนดใ‚’่€ƒๆ…ฎใ—ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒญใƒผใ‚ซใƒซURLใฎใƒ—ใƒฌใƒ“ใƒฅใƒผใƒใƒƒใƒ—ใ‚ขใƒƒใƒ—ใŒๅทฆไธŠใซ่กจ็คบใ•ใ‚Œใ‚‹
- Fix: WebGL2ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใชใ„ใƒ–ใƒฉใ‚ฆใ‚ถใงใ€Œๅญฃ็ฏ€ใซๅฟœใ˜ใŸ็”ป้ขใฎๆผ”ๅ‡บใ€ใŒๆœ‰ๅŠนใซใชใฃใฆใ„ใ‚‹ใจใใ€MisskeyใŒ่ตทๅ‹•ใงใใชใใชใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/459)
- Fix: ใƒšใƒผใ‚ธใ‚ฟใ‚คใƒˆใƒซใงใƒญใƒผใ‚ซใƒซใƒฆใƒผใ‚ถใƒผใจใƒชใƒขใƒผใƒˆใƒฆใƒผใ‚ถใƒผใฎๅŒบๅˆฅใŒใคใ‹ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/528)
- Fix: ใ‚ณใƒผใƒ‰ใƒ–ใƒญใƒƒใ‚ฏใฎใ‚ทใƒณใ‚ฟใƒƒใ‚ฏใ‚นใƒใ‚คใƒฉใ‚คใƒˆใงไฝฟ็”จใ•ใ‚Œใ‚‹ๅฎš็พฉใƒ•ใ‚กใ‚คใƒซใ‚’CDNใ‹ใ‚‰ๅ–ๅพ—ใ™ใ‚‹ใ‚ˆใ†ใซ #13177
- CDNใ‹ใ‚‰ๅ–ๅพ—ใ›ใšMisskeyๆœฌไฝ“ใซใƒใƒณใƒ‰ใƒซใ™ใ‚‹ๅ ดๅˆใฏ`pacakges/frontend/vite.config.ts`ใ‚’ไฟฎๆญฃใ—ใฆใใ ใ•ใ„ใ€‚
- Fix: ใ‚ฟใ‚คใƒ ใ‚พใƒผใƒณใซใ‚ˆใฃใฆใฏใ€ใ€ŒไปŠๆ—ฅ่ช•็”Ÿๆ—ฅใฎใƒ•ใ‚ฉใƒญใƒผไธญใƒฆใƒผใ‚ถใƒผใ€ใ‚ฆใ‚ฃใ‚ธใ‚งใƒƒใƒˆใŒๆญฃใ—ใๅ‹•ไฝœใ—ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: CWใฎใฟใฎๅผ•็”จใƒชใƒŽใƒผใƒˆใŒ่ฉณ็ดฐใƒšใƒผใ‚ธใง็ด”็ฒ‹ใชใƒชใƒŽใƒผใƒˆใจใ—ใฆ่ชคใฃใฆๆ‰ฑใ‚ใ‚Œใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒŽใƒผใƒˆ่ฉณ็ดฐใƒšใƒผใ‚ธใซใŠใ„ใฆCWไป˜ใๅผ•็”จใƒชใƒŽใƒผใƒˆใฎCWใƒœใ‚ฟใƒณใฎใƒฉใƒ™ใƒซใซใ€Œๅผ•็”จใ€ใŒๅซใพใ‚Œใฆใ„ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒ€ใ‚คใ‚ขใƒญใ‚ฐใฎๅ…ฅๅŠ›ใงๅญ—ๆ•ฐๅˆถ้™ใซ้•ๅใ—ใฆใ„ใฆใ‚‚Enterใ‚ญใƒผใŒๆŠผใ›ใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒ€ใ‚คใƒฌใ‚ฏใƒˆๆŠ•็จฟใฎๅฎ›ๅ…ˆใŒไฟๅญ˜ใ•ใ‚Œใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: Playใฎใƒšใƒผใ‚ธใ‚’้›ขใ‚ŒใŸใจใใซใ€PlayใŒๆญฃๅธธใซๅˆๆœŸๅŒ–ใ•ใ‚Œใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒšใƒผใ‚ธใฎOGP URLใŒ้–“้•ใฃใฆใ„ใ‚‹ใฎใ‚’ไฟฎๆญฃ
- Fix: ใƒชใƒใƒผใ‚ทใฎๅฏพๅฑ€ใ‚’ๆญฃใ—ใๅ…ฑๆœ‰ใงใใชใ„ใ“ใจใŒใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ้€š็Ÿฅใ‚’ใ‚ฐใƒซใƒผใƒ—ๅŒ–ใ—ใฆใ„ใ‚‹้š›ใซใ€ไบบๆ•ฐใŒๆญฃๅธธใซ่กจ็คบใ•ใ‚Œใชใ„ใ“ใจใŒใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ้€ฃๅˆใชใ—ใฎ็Šถๆ…‹ใฎ่ชญใฟๆ›ธใใŒใงใใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: `/share` ใงๆ—ฅๆœฌ่ชž็ญ‰ใ‚’ๅซใ‚€urlใŒurlใ‚จใƒณใ‚ณใƒผใƒ‰ใ•ใ‚Œใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒ•ใ‚กใ‚คใƒซใ‚’5ใคไปฅไธŠๆทปไป˜ใ—ใฆใ‚‚ใƒ†ใ‚ญใ‚นใƒˆใŒใชใ„ใจใƒŽใƒผใƒˆใŒๆŠ˜ใ‚ŠใŸใŸใพใ‚Œใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
### Server
- Enhance: ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ`antennas/update`ใฎๅฟ…้ ˆ้ …็›ฎใ‚’`antennaId`ใฎใฟใซ
- Enhance: misskey-dev/summaly@5.1.0ใฎๅ–ใ‚Š่พผใฟ๏ผˆใƒ—ใƒฌใƒ“ใƒฅใƒผ็”Ÿๆˆๅ‡ฆ็†ใฎๅŠน็Ž‡ๅŒ–๏ผ‰
- Enhance: ใƒ‰ใƒฉใ‚คใƒ–ใฎใƒ•ใ‚กใ‚คใƒซใŒNSFWใ‹ใฉใ†ใ‹ๅ€‹ๅˆฅใซ้€ฃๅˆใ•ใ‚Œใ‚‹ใ‚ˆใ†ใซ (#13756)
- ๅฏ่ƒฝใชๅ ดๅˆใ€ใƒŽใƒผใƒˆใฎๆทปไป˜ใƒ•ใ‚กใ‚คใƒซใฎใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ๅˆคๅฎšใŒใƒ•ใ‚กใ‚คใƒซๅ˜ไฝใซใชใ‚Šใพใ™
- Fix: ใƒชใƒขใƒผใƒˆใ‹ใ‚‰้…้€ใ•ใ‚ŒใŸใ‚ขใ‚ฏใƒ†ใ‚ฃใƒ“ใƒ†ใ‚ฃใซJSON-LD compactionใ‚’ใ‹ใ‘ใ‚‹
- Fix: ใƒ•ใ‚ฉใƒญใƒผใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’ไฝœๆˆใ™ใ‚‹้š›ใซๆ—ขๅญ˜ใฎใ‚‚ใฎใฏๅ‰Š้™คใ™ใ‚‹ใ‚ˆใ†ใซ
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/440)
- Fix: ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ`notes/translate`ใฎใ‚จใƒฉใƒผใ‚’ๆ”นๅ–„
- Fix: CleanRemoteFilesProcessorService report progress from 100% (#13632)
- Fix: ไธ€้ƒจใฎ้Ÿณๅฃฐใƒ•ใ‚กใ‚คใƒซใŒๆ˜ ๅƒใƒ•ใ‚กใ‚คใƒซใจใ—ใฆๆ‰ฑใ‚ใ‚Œใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒชใƒ—ใƒฉใ‚คใฎใฟใฎๅผ•็”จใƒชใƒŽใƒผใƒˆใจใ€CWใฎใฟใฎๅผ•็”จใƒชใƒŽใƒผใƒˆใŒ็ด”็ฒ‹ใชใƒชใƒŽใƒผใƒˆใจใ—ใฆ่ชคใฃใฆๆ‰ฑใ‚ใ‚Œใฆใ—ใพใ†ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ็™ป้Œฒใซใƒกใƒผใƒซ่ช่จผใŒๅฟ…้ ˆใซใชใฃใฆใ„ใ‚‹ๅ ดๅˆใ€็™ป้Œฒใ•ใ‚Œใฆใ„ใ‚‹ใƒกใƒผใƒซใ‚ขใƒ‰ใƒฌใ‚นใ‚’ๅ‰Š้™คใงใใชใ„ใ‚ˆใ†ใซ
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/606)
- Fix: Add Cache-Control to Bull Board
- Fix: nginx็ตŒ็”ฑใง/files/ใซRangeใƒชใ‚ฏใ‚จใ‚นใƒˆใ•ใ‚ŒใŸๅ ดๅˆใซๆญฃใ—ใๅฟœ็ญ”ใงใใชใ„ใฎใ‚’ไฟฎๆญฃ
- Fix: ไธ€้ƒจใฎใ‚ฟใ‚คใƒ ใƒฉใ‚คใƒณใฎใ‚นใƒˆใƒชใƒผใƒŸใƒณใ‚ฐใงใ‚คใƒณใ‚นใ‚ฟใƒณใ‚นใƒŸใƒฅใƒผใƒˆใŒๅŠนใ‹ใชใ„ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใ‚ฐใƒญใƒผใƒใƒซใ‚ฟใ‚คใƒ ใƒฉใ‚คใƒณใง่ฟ”ไฟกใŒ่กจ็คบใ•ใ‚Œใชใ„ใ“ใจใŒใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ใƒชใƒŽใƒผใƒˆใ‚’ใƒŸใƒฅใƒผใƒˆใ—ใŸใƒฆใƒผใ‚ถใฎๆŠ•็จฟใฎใƒชใƒŽใƒผใƒˆใŒใƒŸใƒฅใƒผใƒˆใ•ใ‚Œใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: AP Link็ญ‰ใฏๆทปไป˜ใƒ•ใ‚กใ‚คใƒซๆ‰ฑใ„ใ—ใชใ„ใ‚ˆใ†ใซใชใฉ (#13754)
- Fix: FTTใŒๆœ‰ๅŠนใ‹ใคsinceIdใฎใฟใ‚’ๆŒ‡ๅฎšใ—ใŸๅ ดๅˆใซๅธฐใฃใฆๆฅใ‚‹ใƒฌใ‚นใƒใƒณใ‚นใŒ้€†้ †ใงใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: `/i/notifications`ใซ `includeTypes`ใ‹`excludeTypes`ใ‚’ๆŒ‡ๅฎšใ—ใฆใ„ใ‚‹ใจใใ€้€š็ŸฅใŒๅญ˜ๅœจใ™ใ‚‹ใฎใซ็ฉบ้…ๅˆ—ใ‚’่ฟ”ใ™ใ“ใจใŒใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: ่ค‡ๆ•ฐidใ‚’ๆŒ‡ๅฎšใ™ใ‚‹`users/show`ใŒ้–ขไฟ‚ใชใ„ใƒฆใƒผใ‚ถใ‚’่ฟ”ใ™ใ“ใจใŒใ‚ใ‚‹ๅ•้กŒใ‚’ไฟฎๆญฃ
- Fix: `/tags` ใจ `/user-tags` ใŒๆคœ็ดขใ‚จใƒณใ‚ธใƒณใซใ‚คใƒณใƒ‡ใƒƒใ‚ฏใ‚นใ•ใ‚Œใชใ„ใ‚ˆใ†ใซ
- Fix: ใ‚‚ใจใ‚‚ใจใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใงใฏใชใ„ใจ้€ฃๅˆใ•ใ‚Œใฆใ„ใŸใƒ•ใ‚กใ‚คใƒซใŒใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใจใ—ใฆ้€ฃๅˆใ•ใ‚ŒใŸๅ ดๅˆใซใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใจใ—ใฆใใฎใƒ•ใ‚กใ‚คใƒซใ‚’ๆ‰ฑใ†ใ‚ˆใ†ใซ
- ใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใจใ—ใฆ้€ฃๅˆใ—ใŸใƒ•ใ‚กใ‚คใƒซใฏ้žใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใจใ—ใฆ้€ฃๅˆใ•ใ‚Œใฆใ‚‚ใ‚ปใƒณใ‚ทใƒ†ใ‚ฃใƒ–ใจใ—ใฆๆ‰ฑใ‚ใ‚Œใพใ™
## 2024.3.1

View file

@ -307,6 +307,98 @@ export const handlers = [
Don't forget to re-run the `.storybook/generate.js` script after adding, editing, or removing the above files.
## Nest
### Nest Service Circular dependency / Nestใงใ‚ตใƒผใƒ“ใ‚นใฎๅพช็’ฐๅ‚็…งใงใ‚จใƒฉใƒผใŒ่ตทใใŸๅ ดๅˆ
#### forwardRef
ใพใšใฏ็ฐกๅ˜ใซ`forwardRef`ใ‚’่ฉฆใ—ใฆใฟใ‚‹
```typescript
export class FooService {
constructor(
@Inject(forwardRef(() => BarService))
private barService: BarService
) {
}
}
```
#### OnModuleInit
ใงใใชใ‘ใ‚Œใฐ`OnModuleInit`ใ‚’ไฝฟใ†
```typescript
import { Injectable, OnModuleInit } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { BarService } from '@/core/BarService';
@Injectable()
export class FooService implements OnModuleInit {
private barService: BarService // constructorใ‹ใ‚‰็งปๅ‹•ใ—ใฆใใ‚‹
constructor(
private moduleRef: ModuleRef,
) {
}
async onModuleInit() {
this.barService = this.moduleRef.get(BarService.name);
}
public async niceMethod() {
return await this.barService.incredibleMethod({ hoge: 'fuga' });
}
}
```
##### Service Unit Test
ใƒ†ใ‚นใƒˆใง`onModuleInit`ใ‚’ๅ‘ผใณๅ‡บใ™ๅฟ…่ฆใŒใ‚ใ‚‹
```typescript
// import ...
describe('test', () => {
let app: TestingModule;
let fooService: FooService; // for test case
let barService: BarService; // for test case
beforeEach(async () => {
app = await Test.createTestingModule({
imports: ...,
providers: [
FooService,
{ // mockใ™ใ‚‹ (mockใฏๅฟ…้ ˆใงใฏใชใ„ใ‹ใ‚‚ใ—ใ‚Œใชใ„)
provide: BarService,
useFactory: () => ({
incredibleMethod: jest.fn(),
}),
},
{ // Provideใซใ™ใ‚‹
provide: BarService.name,
useExisting: BarService,
},
],
})
.useMocker(...
.compile();
fooService = app.get<FooService>(FooService);
barService = app.get<BarService>(BarService) as jest.Mocked<BarService>;
// onModuleInitใ‚’ๅฎŸ่กŒใ™ใ‚‹
await fooService.onModuleInit();
});
test('nice', () => {
await fooService.niceMethod();
expect(barService.incredibleMethod).toHaveBeenCalled();
expect(barService.incredibleMethod.mock.lastCall![0])
.toEqual({ hoge: 'fuga' });
});
})
```
## Notes
### Misskeyใฎใƒ‰ใƒกใ‚คใƒณๅ›บๆœ‰ใฎๆฆ‚ๅฟตใฏ`Mi`ใ‚’prefixใ™ใ‚‹
@ -457,7 +549,9 @@ https://github.com/misskey-dev/misskey.git`), then:
git checkout -m merge/$(date +%Y-%m-%d) # or whatever
git merge --no-ff misskey/develop
fix conflicts and *commit*!
fix conflicts and *commit*! (conflicts in `pnpm-lock.yaml` can usually
be fixed by running `pnpm install`, it detects conflict markers and
seems to do a decent job)
*after that commit*, do all the extra work, on the same branch:
@ -468,7 +562,23 @@ fix conflicts and *commit*!
* from `ApNoteService.createNote` to `ApNoteService.updateNote`
* from `endoints/notes/create.ts` to `endoints/notes/edit.ts`
* from `MkNote*` to `SkNote*` (if sensible)
* from the global timeline to the bubble timeline
(`packages/backend/src/server/api/stream/channels/global-timeline.ts`,
`packages/backend/src/server/api/stream/channels/bubble-timeline.ts`,
`packages/frontend/src/components/MkTimeline.vue`,
`packages/frontend/src/pages/timeline.vue`,
`packages/frontend/src/ui/deck/tl-column.vue`,
`packages/frontend/src/widgets/WidgetTimeline.vue`)
* make sure there aren't any new `ti-*` classes (Tabler Icons), and
replace them with appropriate `ph-*` ones (Phosphor Icons).
`git grep '["'\'']ti[ -](?!fw)'` should show you what to change.
NOTE: `ti-fw` is a special class that's defined by Misskey, leave it
alone
* re-generate `misskey-js`: `pnpm build-misskey-js-with-types`
* run tests `pnpm test` and fix as much as you can
* right now `megalodon` doesn't pass its tests, you probably need to
run `pnpm --filter=backend test` (requires a test database, [see
above](#testing)) and `pnpm --filter=frontend test`
* run lint `pnpm --filter=backend lint` + `pnpm --filter=frontend
eslint` and fix as much as you can

View file

@ -1,6 +1,6 @@
# syntax = docker/dockerfile:1.4
ARG NODE_VERSION=20.10.0-alpine3.18
ARG NODE_VERSION=20.12.2-alpine3.19
FROM node:${NODE_VERSION} as build
@ -8,8 +8,7 @@ RUN apk add git linux-headers build-base
ENV PYTHONUNBUFFERED=1
RUN apk add --update python3 && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools
RUN apk add py3-pip py3-setuptools
RUN corepack enable
@ -65,7 +64,7 @@ COPY --chown=sharkey:sharkey --from=build /sharkey/sharkey-assets ./packages/fro
COPY --chown=sharkey:sharkey package.json ./package.json
COPY --chown=sharkey:sharkey pnpm-workspace.yaml ./pnpm-workspace.yaml
COPY --chown=sharkey:sharkey packages/backend/package.json ./packages/backend/package.json
COPY --chown=sharkey:sharkey packages/backend/check_connect.js ./packages/backend/check_connect.js
COPY --chown=sharkey:sharkey packages/backend/scripts/check_connect.js ./packages/backend/scripts/check_connect.js
COPY --chown=sharkey:sharkey packages/backend/ormconfig.js ./packages/backend/ormconfig.js
COPY --chown=sharkey:sharkey packages/backend/migration ./packages/backend/migration
COPY --chown=sharkey:sharkey packages/backend/assets ./packages/backend/assets

View file

@ -34,7 +34,7 @@
- **ActivityPub support**\
Not on Sharkey? No problem! Not only can Sharkey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed!
- **Federated Backgrounds and Music status**\
You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening too
You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening to
- **Mastodon API**\
Sharkey implements the Mastodon API unlike normal Misskey
- **UI/UX Improvements**\

View file

@ -152,6 +152,22 @@ redis:
# ID SETTINGS AFTER THAT!
id: "aidx"
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Error tracking โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
# Sentry is available for error tracking.
# See the Sentry documentation for more details on options.
#sentryForBackend:
# enableNodeProfiling: true
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
#sentryForFrontend:
# options:
# dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0'
# โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
#โ”€โ”€โ”€โ”˜ Other configuration โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

View file

@ -1,3 +1,8 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
describe('Before setup instance', () => {
beforeEach(() => {
cy.resetState();

View file

@ -1,3 +1,8 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
describe('Router transition', () => {
describe('Redirect', () => {
// ใ‚ตใƒผใƒใฎๅˆๆœŸๅŒ–ใ€‚ใƒซใƒผใƒˆใฎใƒ†ใ‚นใƒˆใซ้–ขใ—ใฆใฏๅ„describeใ”ใจใซ1ๅบฆใ ใ‘ๅฎŸ่กŒใงๅๅˆ†ใ ใจๆ€ใ†๏ผˆไฝฟใ„ใพใ‚ใ—ใŸๆ–นใŒๆ—ฉใ„๏ผ‰

View file

@ -1,3 +1,8 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
/* flaky
describe('After user signed in', () => {
beforeEach(() => {

View file

@ -30,9 +30,13 @@ Cypress.Commands.add('visitHome', () => {
})
Cypress.Commands.add('resetState', () => {
cy.window(win => {
// iframe.contentWindow.indexedDB.deleteDatabase() ใŒchromeใฎใƒใ‚ฐใงไฝฟ็”จใงใใชใ„ใŸใ‚ใ€indexedDBใ‚’็„กๅŠนๅŒ–ใ—ใฆใ„ใ‚‹ใ€‚
// see https://github.com/misskey-dev/misskey/issues/13605#issuecomment-2053652123
/*
cy.window().then(win => {
win.indexedDB.deleteDatabase('keyval-store');
});
*/
cy.request('POST', '/api/reset-db', {}).as('reset');
cy.get('@reset').its('status').should('equal', 204);
cy.reload(true);

19
cypress/support/index.ts Normal file
View file

@ -0,0 +1,19 @@
declare global {
namespace Cypress {
interface Chainable {
login(username: string, password: string): Chainable<void>;
registerUser(
username: string,
password: string,
isAdmin?: boolean
): Chainable<void>;
resetState(): Chainable<void>;
visitHome(): Chainable<void>;
}
}
}
export {}

8
cypress/tsconfig.json Normal file
View file

@ -0,0 +1,8 @@
{
"compilerOptions": {
"lib": ["dom", "es5"],
"target": "es5",
"types": ["cypress", "node"]
},
"include": ["./**/*.ts"]
}

View file

@ -4,4 +4,4 @@
# SPDX-License-Identifier: AGPL-3.0-only
PORT=$(grep '^port:' /sharkey/.config/default.yml | awk 'NR==1{print $2; exit}')
curl -s -S -o /dev/null "http://localhost:${PORT}"
curl -Sfso/dev/null "http://localhost:${PORT}/healthz"

View file

@ -123,6 +123,7 @@ reactions: "ุงู„ุชูุงุนู„ุงุช"
reactionSettingDescription2: "ุงุณุญุจ ู„ุชุฑุชูŠุจ ุŒ ุงู†ู‚ุฑ ู„ู„ุญุฐู ุŒ ุงุณุชุฎุฏู… \"+\" ู„ู„ุฅุถุงูุฉ."
rememberNoteVisibility: "ุชุฐูƒุฑ ุฅุนุฏุงุฏุช ู…ุฏู‰ ุฑุคูŠุฉ ุงู„ู…ู„ุงุญุธุงุช"
attachCancel: "ุฃุฒู„ ุงู„ู…ุฑูู‚"
deleteFile: "ุญูุฐู ุงู„ู…ู„ู"
markAsSensitive: "ุนู„ู‘ู…ู‡ ูƒู…ุญุชูˆู‰ ุญุณุงุณ"
unmarkAsSensitive: "ุฃู„ุบ ุชุนูŠูŠู†ู‡ ูƒู…ุญุชูˆู‰ ุญุณุงุณ"
enterFileName: "ุงุฏุฎู„ ุงุณู… ุงู„ู…ู„ู"
@ -1015,6 +1016,8 @@ sourceCode: "ุงู„ุดูุฑุฉ ุงู„ู…ุตุฏุฑูŠุฉ"
flip: "ุงู‚ู„ุจ"
lastNDays: "ุขุฎุฑ {n} ุฃูŠุงู…"
surrender: "ุฃู„ุบู"
_delivery:
stop: "ู…ูุนู„ู‘ู‚"
_initialAccountSetting:
accountCreated: "ู†ุฌุญ ุฅู†ุดุงุก ุญุณุงุจูƒ!"
letsStartAccountSetup: "ุฅุฐุง ูƒู†ุช ุฌุฏูŠุฏู‹ุง ู„ู†ุนุฏู‘ ุญุณุงุจูƒ ุงู„ุดุฎุตูŠ."
@ -1565,8 +1568,21 @@ _webhookSettings:
reaction: "ุนู†ุฏ ุงู„ุชูุงุนู„"
_moderationLogTypes:
suspend: "ุนู„ูู‚"
deleteDriveFile: "ุญูุฐู ุงู„ู…ู„ู"
deleteNote: "ุญูุฐูุช ุงู„ู…ู„ุงุญุธุฉ"
createGlobalAnnouncement: "ุฃูู†ุดุฆ ุฅุนู„ุงู† ุนุงู…"
createUserAnnouncement: "ุฃูู†ุดุฆ ุฅุนู„ุงู† ู…ุณุชุฎุฏู…"
updateGlobalAnnouncement: "ุญูุฏุซ ุฅุนู„ุงู† ุนุงู…"
updateUserAnnouncement: "ุญูุฏุซ ุฅุนู„ุงู† ู…ุณุชุฎุฏู…"
resetPassword: "ุฃุนุฏ ุชุนูŠูŠู† ูƒู„ู…ุชูƒ ุงู„ุณุฑูŠุฉ"
createInvitation: "ูˆู„ูู‘ุฏ ุฏุนูˆุฉ"
_reversi:
total: "ุงู„ู…ุฌู…ูˆุน"
lookingForPlayer: "ูŠุจุญุซ ุนู† ุฎุตู…..."
gameCanceled: "ุฃูู„ุบูŠุช ุงู„ู„ุนุจุฉ."
opponentHasSettingsChanged: "ุบูŠูŽุฑ ุงู„ุฎุตู… ุฅุนุฏุงุฏุชู‡."
showBoardLabels: "ุงุนุฑุถ ุชุฑู‚ูŠู… ุงู„ุตููˆู ูˆุงู„ุฃุนู…ุฏุฉ ุนู„ู‰ ุงู„ู„ูˆุญ"
useAvatarAsStone: "ุญูˆูŽู„ ุงู„ุญุฌุงุฑุฉ ุฅู„ู‰ ุตูˆุฑ ู…ุณุชุฎุฏู…ูŠู†"
_offlineScreen:
title: "ุบูŠุฑ ู…ุชุตู„ - ูŠุชุนุฐุฑ ุงู„ุงุชุตุงู„ ุจุงู„ุฎุงุฏู…"
header: "ูŠุชุนุฐุฑ ุงู„ุงุชุตุงู„ ุจุงู„ุฎุงุฏู…"

View file

@ -857,6 +857,10 @@ replies: "เฆœเฆฌเฆพเฆฌ"
renotes: "เฆฐเฆฟเฆจเง‹เฆŸ"
sourceCode: "เฆธเง‹เฆฐเงเฆธ เฆ•เง‹เฆก"
flip: "เฆ‰เฆฒเงเฆŸเฆพเฆจ"
_delivery:
stop: "เฆธเงเฆฅเฆ—เฆฟเฆค เฆ•เฆฐเฆพ เฆนเงŸเง‡เฆ›เง‡"
_type:
none: "เฆชเงเฆฐเฆ•เฆพเฆถ เฆ•เฆฐเฆพ เฆนเฆšเงเฆ›เง‡"
_role:
priority: "เฆ…เฆ—เงเฆฐเฆพเฆงเฆฟเฆ•เฆพเฆฐ"
_priority:
@ -1347,4 +1351,3 @@ _moderationLogTypes:
resetPassword: "เฆชเฆพเฆธเฆ“เฆฏเฆผเฆพเฆฐเงเฆก เฆฐเฆฟเฆธเง‡เฆŸ เฆ•เฆฐเงเฆจ"
_reversi:
total: "เฆฎเง‹เฆŸ"

View file

@ -400,6 +400,7 @@ name: "Nom"
antennaSource: "Font de l'antena"
antennaKeywords: "Paraules clau a seguir"
antennaExcludeKeywords: "Paraules clau a excloure"
antennaExcludeBots: "Exclou els bots"
antennaKeywordsDescription: "Separar amb espais per la condiciรณ AND o amb salts de lรญnia per la condiciรณ OR."
notifyAntenna: "Notifica'm les publicacions noves"
withFileAntenna: "Nomรฉs les publicacions amb fitxers"
@ -494,6 +495,7 @@ emojiStyle: "Estil d'emoji"
native: "Nadiu"
disableDrawer: "No mostrar els menรบs en calaixos"
showNoteActionsOnlyHover: "Nomรฉs mostra accions de la nota en passar amb el cursor"
showReactionsCount: "Mostra el nombre de reaccions a les publicacions"
noHistory: "No hi ha un registre previ"
signinHistory: "Historial d'autenticacions"
enableAdvancedMfm: "Habilitar l'MFM avanรงat"
@ -543,7 +545,7 @@ objectStorageUseProxyDesc: "Desactiva'l si no farร s servir un Proxy per les con
objectStorageSetPublicRead: "Configurar les pujades com pรบbliques "
s3ForcePathStyleDesc: "Si s3ForcePathStyle es troba activat el nom del dipรฒsit s'ha d'incloure a l'adreรงa URL en comtes del nom del host. Potser que necessitis activar-ho quan facis servir, per exemple, Minio a un servidor propi."
serverLogs: "Registres del servidor"
deleteAll: "Esborrar tot"
deleteAll: "Elimina-ho tot"
showFixedPostForm: "Mostrar el formulari per escriure a l'inici de la lรญnia de temps"
showFixedPostFormInChannel: "Mostrar el formulari d'escriptura al principi de la lรญnia de temps (Canals)"
withRepliesByDefaultForNewlyFollowed: "Inclou les respostes d'usuaris nous seguits a la lรญnia de temps per defecte."
@ -691,9 +693,9 @@ reporter: "Denunciant "
reporteeOrigin: "Origen de la denรบncia "
reporterOrigin: "Origen del denunciant"
forwardReport: "Transferir la denรบncia a una instร ncia remota"
forwardReportIsAnonymous: "En comptes del teu compte, es farร  servir un compte anรฒnim com a denunciat a la instร ncia remota."
send: "Enviar"
abuseMarkAsResolved: "Marcar la denรบncia com a resolta"
forwardReportIsAnonymous: "En lloc del teu compte, es farร  servir un compte anรฒnim com a denunciant al servidor remot."
send: "Envia"
abuseMarkAsResolved: "Marca la denรบncia com a resolta"
openInNewTab: "Obre a una pestanya nova"
openInSideView: "Obre a una vista lateral"
defaultNavigationBehaviour: "Navegaciรณ per defecte"
@ -853,7 +855,7 @@ customCss: "CSS personalitzat"
customCssWarn: "Aquesta configuraciรณ nomรฉs hauries de configurar-la si saps que fas. Si poses valors inadequats pots fer que el client deixi de funcionar correctament."
global: "Global"
squareAvatars: "Mostrar avatars quadrats"
sent: "Enviar"
sent: "Envia"
received: "Rebut"
searchResult: "Resultats de la cerca"
hashtags: "Etiquetes"
@ -991,6 +993,7 @@ neverShow: "No mostrar mรฉs "
remindMeLater: "Recorda-m'ho mรฉs tard"
didYouLikeMisskey: "T'estร  agradant Misskey?"
pleaseDonate: "A {host} fem servir el software lliure Misskey. Considera fer un donatiu a Misskey perquรจ pugui continuar el seu desenvolupament!"
correspondingSourceIsAvailable: "El codi font corresponent estร  disponible a {anchor}."
roles: "Rols"
role: "Rols"
noRole: "No s'han trobat rols"
@ -1159,6 +1162,7 @@ showRenotes: "Mostrar impulsos"
edited: "Editat"
notificationRecieveConfig: "Parร metres de notificacions"
mutualFollow: "Seguidor mutu"
followingOrFollower: "Seguit o seguidor"
fileAttachedOnly: "Nomรฉs notes amb adjunts"
showRepliesToOthersInTimeline: "Mostrar les respostes a altres a la lรญnia de temps"
hideRepliesToOthersInTimeline: "Amagar les respostes a altres a la lรญnia de temps"
@ -1168,6 +1172,9 @@ confirmShowRepliesAll: "Aquesta opciรณ no tรฉ marxa enrere. Vols mostrar les tev
confirmHideRepliesAll: "Aquesta opciรณ no tรฉ marxa enrere. Vols ocultar les teves respostes a tots els usuaris que segueixes a la lรญnia de temps?"
externalServices: "Serveis externs"
sourceCode: "Codi font"
repositoryUrl: "URL del repositori"
feedback: "Opiniรณ"
feedbackUrl: "URL per a opinar"
impressum: "Impressum"
impressumUrl: "Adreรงa URL impressum"
impressumDescription: "A paรฏsos, com Alemanya, la inclusiรณ de la informaciรณ de contacte de l'operador (un Impressum) รฉs requereix de manera legal per llocs comercials."
@ -1203,6 +1210,7 @@ soundWillBePlayed: "Es reproduiran efectes de so"
showReplay: "Veure reproducciรณ"
replay: "Reproduir"
replaying: "Reproduint"
endReplay: "Tanca la redifusiรณ"
ranking: "Classificaciรณ"
lastNDays: "รšltims {n} dies"
backToTitle: "Torna al tรญtol"
@ -1210,7 +1218,16 @@ hemisphere: "Geolocalitzaciรณ"
withSensitive: "Incloure notes amb fitxers sensibles"
userSaysSomethingSensitive: "La publicaciรณ de {name} conte material sensible"
enableHorizontalSwipe: "Lliscar per canviar de pestanya"
loading: "Sโ€™estร  carregant"
surrender: "Cancelยทlar "
gameRetry: "Torna a provar"
notUsePleaseLeaveBlank: "Si no voleu usar-ho, deixeu-ho en blanc"
useTotp: "Usa una contrasenya d'un sol รบs"
useBackupCode: "Usa un codi de recuperaciรณ"
_delivery:
stop: "Suspรฉs"
_type:
none: "S'estร  publicant"
_bubbleGame:
howToPlay: "Com es juga"
_howToPlay:
@ -1915,7 +1932,6 @@ _2fa:
registerTOTP: "Registrar una aplicaciรณ autenticadora"
step1: "Primer instalยทla una aplicaciรณ autenticadora (com {a} o {b}) al teu dispositiu."
step2: "Desprรฉs escaneja el codi QR que es mostra en aquesta pantalla."
step2Click: "Fent clic en aquest codi QR et permetrร  registrar l'autenticaciรณ de doble factor a la teva clau de seguretat o en l'aplicaciรณ d'autenticaciรณ del teu dispositiu."
step2Uri: "Escriu la segรผent URI si estร s fent servir una aplicaciรณ d'escriptori "
step3Title: "Escriu un codi d'autenticaciรณ"
step3: "Escriu el codi d'autenticaciรณ (token) que es mostra a la teva aplicaciรณ per finalitzar la configuraciรณ."
@ -1989,7 +2005,6 @@ _permissions:
"read:admin:server-info": "Veure informaciรณ del servidor"
"read:admin:show-moderation-log": "Veure registre de moderaciรณ "
"read:admin:show-user": "Veure informaciรณ privada de l'usuari "
"read:admin:show-users": "Veure informaciรณ privada de l'usuari "
"write:admin:suspend-user": "Suspendre usuari"
"write:admin:unset-user-avatar": "Esborrar avatar d'usuari "
"write:admin:unset-user-banner": "Esborrar bร ner de l'usuari "

View file

@ -1099,6 +1099,10 @@ sourceCode: "Zdrojovรฝ kรณd"
flip: "Otoฤit"
lastNDays: "Poslednรญch {n} dnลฏ"
surrender: "Zruลกit"
_delivery:
stop: "Suspendovรกno"
_type:
none: "Publikuji"
_initialAccountSetting:
accountCreated: "Vรกลก รบฤet byl รบspฤ›ลกnฤ› vytvoล™en!"
letsStartAccountSetup: "Pro zaฤรกtek si nastavte svลฏj profil."
@ -1664,7 +1668,6 @@ _2fa:
registerTOTP: "Registrovat aplikaci autentizรกtoru"
step1: "Nejprve si do zaล™รญzenรญ nainstalujte aplikaci pro ovฤ›ล™ovรกnรญ (napล™รญklad {a} nebo {b})."
step2: "Potรฉ naskenujte QR kรณd zobrazenรฝ na tรฉto obrazovce."
step2Click: "Kliknutรญm na tento QR kรณd mลฏลพete zaregistrovat 2FA do bezpeฤnostnรญho klรญฤe nebo aplikace autentizace telefonu."
step3Title: "Zadejte ovฤ›ล™ovacรญ kรณd"
step3: "Pro dokonฤenรญ nastavenรญ zadejte token poskytnutรฝ vaลกรญ aplikacรญ."
step4: "Od tรฉto chvรญle budou vลกechny budoucรญ pokusy o pล™ihlรกลกenรญ vyลพadovat tento pล™ihlaลกovacรญ token."
@ -1718,7 +1721,7 @@ _auth:
shareAccessTitle: "Udฤ›lovat oprรกvnฤ›nรญ k aplikacรญm"
shareAccess: "Chcete autorizovat \"{name}\" pro pล™รญstup k tomuto รบฤtu?"
shareAccessAsk: "Opravdu chcete tรฉto aplikaci povolit pล™รญstup k vaลกemu รบฤtu?"
permission: "{jmรฉno} poลพaduje tato oprรกvnฤ›nรญ"
permission: "{name} poลพaduje tato oprรกvnฤ›nรญ"
permissionAsk: "Tato aplikace poลพaduje nรกsledujรญcรญ oprรกvnฤ›nรญ"
pleaseGoBack: "Vraลฅte se prosรญm zpฤ›t do aplikace"
callback: "Nรกvrat k aplikaci"
@ -1942,7 +1945,7 @@ _notification:
youGotMention: "{name} vรกs zmรญnil"
youGotReply: "{name} vรกm odpovฤ›dฤ›l"
youGotQuote: "{name} vรกs citoval"
youRenoted: "Poznรกmka od {jmรฉno}"
youRenoted: "Poznรกmka od {name}"
youWereFollowed: "Mรกte novรฉho nรกsledovnรญka"
youReceivedFollowRequest: "Obdrลพeli jste ลพรกdost o sledovรกnรญ"
yourFollowRequestAccepted: "Vaลกe ลพรกdost o sledovรกnรญ byla pล™ijata"
@ -2025,4 +2028,3 @@ _moderationLogTypes:
createInvitation: "Vygenerovat pozvรกnku"
_reversi:
total: "Celkem"

View file

@ -1,3 +1,4 @@
---
_lang_: "Dansk"
headlineMisskey: ""
introMisskey: "ใ‚ˆใ†ใ“ใ๏ผMisskeyใฏใ€ใ‚ชใƒผใƒ—ใƒณใ‚ฝใƒผใ‚นใฎๅˆ†ๆ•ฃๅž‹ใƒžใ‚คใ‚ฏใƒญใƒ–ใƒญใ‚ฐใ‚ตใƒผใƒ“ใ‚นใงใ™ใ€‚\nใ€ŒใƒŽใƒผใƒˆใ€ใ‚’ไฝœๆˆใ—ใฆใ€ใ„ใพ่ตทใ“ใฃใฆใ„ใ‚‹ใ“ใจใ‚’ๅ…ฑๆœ‰ใ—ใŸใ‚Šใ€ใ‚ใชใŸใซใคใ„ใฆ็š†ใซ็™บไฟกใ—ใ‚ˆใ†๐Ÿ“ก\nใ€Œใƒชใ‚ขใ‚ฏใ‚ทใƒงใƒณใ€ๆฉŸ่ƒฝใงใ€็š†ใฎใƒŽใƒผใƒˆใซ็ด ๆ—ฉใๅๅฟœใ‚’่ฟฝๅŠ ใ™ใ‚‹ใ“ใจใ‚‚ใงใใพใ™๐Ÿ‘\nๆ–ฐใ—ใ„ไธ–็•Œใ‚’ๆŽขๆคœใ—ใ‚ˆใ†๐Ÿš€"

View file

@ -654,7 +654,7 @@ smtpSecureInfo: "Schalte dies aus, falls du STARTTLS verwendest."
testEmail: "Emailversand testen"
wordMute: "Wortstummschaltung"
regexpError: "Fehler in einem regulรคren Ausdruck"
regexpErrorDescription: "Im regulรคren Ausdruck deiner {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
regexpErrorDescription: "Im regulรคren Ausdruck deiner in Zeile {line} von {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
instanceMute: "Instanzstummschaltungen"
userSaysSomething: "{name} hat etwas gesagt"
makeActive: "Aktivieren"
@ -1188,6 +1188,10 @@ addMfmFunction: "MFM hinzufรผgen"
sfx: "Soundeffekte"
lastNDays: "Letzten {n} Tage"
surrender: "Abbrechen"
_delivery:
stop: "Gesperrt"
_type:
none: "Wird verรถffentlicht"
_announcement:
forExistingUsers: "Nur fรผr existierende Nutzer"
forExistingUsersDescription: "Ist diese Option aktiviert, wird diese Ankรผndigung nur Nutzern angezeigt, die zum Zeitpunkt der Ankรผndigung bereits registriert sind. Ist sie deaktiviert, wird sie auch Nutzern, die sich nach dessen Verรถffentlichung registrieren, angezeigt."
@ -1822,7 +1826,6 @@ _2fa:
registerTOTP: "Authentifizierungs-App registrieren"
step1: "Installiere zuerst eine Authentifizierungsapp (z.B. {a} oder {b}) auf deinem Gerรคt."
step2: "Dann, scanne den angezeigten QR-Code mit deinem Gerรคt."
step2Click: "Durch Klicken dieses QR-Codes kannst du Verifikation mit deinem Security-Token oder einer App registrieren."
step2Uri: "Nutzt du ein Desktopprogramm, gib folgende URI eingeben"
step3Title: "Authentifizierungsscode eingeben"
step3: "Gib zum Abschluss den Code (Token) ein, der von deiner App angezeigt wird."
@ -2292,4 +2295,3 @@ _reversi:
black: "Schwarz"
white: "WeiรŸ"
total: "Gesamt"

View file

@ -398,4 +398,3 @@ _moderationLogTypes:
suspend: "ฮ‘ฯ€ฮฟฮฒฮฟฮปฮฎ"
_reversi:
total: "ฮฃฯฮฝฮฟฮปฮฟ"

View file

@ -112,11 +112,14 @@ unrenote: "Remove boost"
renoted: "Boosted."
quoted: "Quoted."
rmboost: "Unboosted."
renotedToX: "Boosted to {name}"
cantRenote: "This post can't be boosted."
cantReRenote: "A boost can't be boosted."
quote: "Quote"
inChannelRenote: "Channel-only Boost"
inChannelQuote: "Channel-only Quote"
renoteToChannel: "Renote to channel"
renoteToOtherChannel: "Renote to other channel"
pinnedNote: "Pinned note"
pinned: "Pin to profile"
you: "You"
@ -323,6 +326,7 @@ selectFile: "Select a file"
selectFiles: "Select files"
selectFolder: "Select a folder"
selectFolders: "Select folders"
fileNotSelected: "No file selected"
renameFile: "Rename file"
folderName: "Folder name"
createFolder: "Create a folder"
@ -411,11 +415,12 @@ name: "Name"
antennaSource: "Antenna source"
antennaKeywords: "Keywords to listen to"
antennaExcludeKeywords: "Keywords to exclude"
antennaExcludeBots: "Exclude bot accounts"
antennaKeywordsDescription: "Separate with spaces for an AND condition or with line breaks for an OR condition."
notifyAntenna: "Notify about new notes"
withFileAntenna: "Only notes with files"
enableServiceworker: "Enable Push-Notifications for your Browser"
antennaUsersDescription: "List one username per line"
antennaUsersDescription: "List one username per line. Use \"*@instance.com\" to specify all users of an instance"
caseSensitive: "Case sensitive"
withReplies: "Include replies"
connectedTo: "Following account(s) are connected"
@ -480,6 +485,7 @@ expandAllCws: "Show content for all replies"
collapseAllCws: "Hide content for all replies"
quoteAttached: "Quote"
quoteQuestion: "Append as quote?"
attachAsFileQuestion: "The text in clipboard is long. Would you like to attach it as a text file?"
noMessagesYet: "No messages yet"
newMessageExists: "There are new messages"
onlyOneFileCanBeAttached: "You can only attach one file to a message"
@ -507,6 +513,7 @@ emojiStyle: "Emoji style"
native: "Native"
disableDrawer: "Don't use drawer-style menus"
showNoteActionsOnlyHover: "Only show note actions on hover"
showReactionsCount: "Show the number of reactions in notes"
noHistory: "No history available"
signinHistory: "Login history"
enableAdvancedMfm: "Enable advanced MFM"
@ -688,6 +695,11 @@ channel: "Channels"
create: "Create"
notificationSetting: "Notification settings"
notificationSettingDesc: "Select the types of notification to display."
enableFaviconNotificationDot: "Enable favicon notification dot"
verifyNotificationDotWorkingButton: "Check if the notification dot works on your instance"
notificationDotNotWorking: "Unfortunately, this instance does not support the notification dot feature at this time."
notificationDotWorking: "The notification dot is functioning properly on this instance."
notificationDotNotWorkingAdvice: "If the notification dot doesn't work, ask an admin to check our documentation {link}"
useGlobalSetting: "Use global settings"
useGlobalSettingDesc: "If turned on, your account's notification settings will be used. If turned off, individual configurations can be made."
other: "Other"
@ -752,6 +764,10 @@ noCrawleDescription: "Ask search engines to not index your profile page, notes,
lockedAccountInfo: "Unless you set your note visiblity to \"Followers only\", your notes will be visible to anyone, even if you require followers to be manually approved."
alwaysMarkSensitive: "Mark as sensitive by default"
loadRawImages: "Load original images instead of showing thumbnails"
searchEngine: "Search Engine For Search MFM"
searchEngineOther: "Other"
searchEngineCustomURIDescription: "The custom URI must be input in the format like \"https://www.google.com/search?q=\\{query}\" or \"https://www.google.com/search?q=%s\"."
searchEngineCusomURI: "Custom URI"
disableShowingAnimatedImages: "Don't play animated images"
highlightSensitiveMedia: "Highlight sensitive media"
verificationEmailSent: "A verification email has been sent. Please follow the included link to complete verification."
@ -849,6 +865,7 @@ administration: "Management"
accounts: "Accounts"
switch: "Switch"
noMaintainerInformationWarning: "Maintainer information is not configured."
noInquiryUrlWarning: "Contact URL is not set."
noBotProtectionWarning: "Bot protection is not configured."
configure: "Configure"
postToGallery: "Create new gallery post"
@ -1057,6 +1074,8 @@ thisPostIsMissingAltTextCancel: "Cancel"
thisPostIsMissingAltTextIgnore: "Post anyway"
thisPostIsMissingAltText: "One of the files attached to this post is missing alt text. Please ensure all the attachments have alt text."
collapseRenotes: "Collapse boosts you've already seen"
collapseRenotesDescription: "Collapse boosts that you have boosted or reacted to"
collapseNotesRepliedTo: "Collapse notes replied to"
collapseFiles: "Collapse files"
autoloadConversation: "Load conversation on replies"
internalServerError: "Internal Server Error"
@ -1274,6 +1293,25 @@ noLanguage: "No language"
loading: "Loading"
surrender: "Cancel"
gameRetry: "Retry"
notUsePleaseLeaveBlank: "Leave blank if not used"
useTotp: "Enter the One-Time Password"
useBackupCode: "Use the backup codes"
launchApp: "Launch the app"
useNativeUIForVideoAudioPlayer: "Use UI of browser when play video and audio"
keepOriginalFilename: "Keep original file name"
keepOriginalFilenameDescription: "If you turn off this setting, files names will be replaced with random string automatically when you upload files."
noDescription: "No description"
alwaysConfirmFollow: "Always confirm when following"
inquiry: "Contact"
_delivery:
status: "Delivery status"
stop: "Suspended"
resume: "Delivery resume"
_type:
none: "Publishing"
manuallySuspended: "Manually suspended"
goneSuspended: "Server is suspended due to server deletion"
autoSuspendedForNotResponding: "Server is suspended due to no responding"
_bubbleGame:
howToPlay: "How to play"
hold: "Hold"
@ -1399,6 +1437,8 @@ _serverSettings:
fanoutTimelineDescription: "Greatly increases performance of timeline retrieval and reduces load on the database when enabled. In exchange, memory usage of Redis will increase. Consider disabling this in case of low server memory or server instability."
fanoutTimelineDbFallback: "Fallback to database"
fanoutTimelineDbFallbackDescription: "When enabled, the timeline will fall back to the database for additional queries if the timeline is not cached. Disabling it further reduces the server load by eliminating the fallback process, but limits the range of timelines that can be retrieved."
inquiryUrl: "Contact URL"
inquiryUrlDescription: "Specify the URL of a web page that contains a contact form or the instance operators' contact information."
_accountMigration:
moveFrom: "Migrate another account to this one"
moveFromSub: "Create alias to another account"
@ -1735,6 +1775,11 @@ _role:
roleAssignedTo: "Assigned to manual roles"
isLocal: "Local user"
isRemote: "Remote user"
isCat: "Cat Users"
isBot: "Bot Users"
isSuspended: "Suspended user"
isLocked: "Private account"
isExplorable: "Account is discoverable"
createdLessThan: "Less than X has passed since account creation"
createdMoreThan: "More than X has passed since account creation"
followersLessThanOrEq: "Has X or fewer followers"
@ -1806,6 +1851,7 @@ _plugin:
installWarn: "Please do not install untrustworthy plugins."
manage: "Manage plugins"
viewSource: "View source"
viewLog: "Show log"
_preferencesBackups:
list: "Created backups"
saveNew: "Save new backup"
@ -1831,7 +1877,7 @@ _registry:
domain: "Domain"
createKey: "Create key"
_aboutMisskey:
about: "Sharkey is open-source software based on Misskey which has been in developed since 2014 by syuilo."
about: "Sharkey is open-source software based on Misskey which has been in development by syuilo since 2014."
contributors: "Main contributors"
allContributors: "All contributors"
source: "Source code"
@ -1844,6 +1890,7 @@ _aboutMisskey:
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! ๐Ÿฅฐ"
patrons: "Patrons"
projectMembers: "Project members"
testers: "Testers"
_displayOfSensitiveMedia:
respect: "Hide media marked as sensitive"
ignore: "Display media marked as sensitive"
@ -1998,7 +2045,6 @@ _2fa:
registerTOTP: "Register authenticator app"
step1: "First, install an authentication app (such as {a} or {b}) on your device."
step2: "Then, scan the QR code displayed on this screen."
step2Click: "Clicking on this QR code will allow you to register 2FA to your security key or phone authenticator app."
step2Uri: "Enter the following URI if you are using a desktop program"
step3Title: "Enter an authentication code"
step3: "Enter the authentication code (token) provided by your app to finish setup."
@ -2022,6 +2068,7 @@ _2fa:
backupCodesDescription: "You can use these codes to gain access to your account in case of becoming unable to use your two-factor authentificator app. Each can only be used once. Please keep them in a safe place."
backupCodeUsedWarning: "A backup code has been used. Please reconfigure two-factor authentification as soon as possible if you are no longer able to use it."
backupCodesExhaustedWarning: "All backup codes have been used. Should you lose access to your two-factor authentification app, you will be unable to access this account. Please reconfigure two-factor authentification."
moreDetailedGuideHere: "Click here for a detailed guide"
_permissions:
"read:account": "View your account information"
"write:account": "Edit your account information"
@ -2072,7 +2119,6 @@ _permissions:
"read:admin:server-info": "View server info"
"read:admin:show-moderation-log": "View moderation log"
"read:admin:show-user": "View private user info"
"read:admin:show-users": "View private user info"
"write:admin:suspend-user": "Suspend user"
"write:admin:unset-user-avatar": "Remove user avatar"
"write:admin:unset-user-banner": "Remove user banner"
@ -2290,6 +2336,7 @@ _play:
title: "Title"
script: "Script"
summary: "Description"
visibilityDescription: "Putting it private means it won't be visible on your profile, but anyone that has the URL can still access it."
_pages:
newPage: "Create a new Page"
editPage: "Edit this Page"
@ -2334,6 +2381,8 @@ _pages:
section: "Section"
image: "Images"
button: "Button"
dynamic: "Dynamic Blocks"
dynamicDescription: "This block type has been removed. Please use {play} from now on."
note: "Embedded note"
_note:
id: "Note ID"
@ -2363,6 +2412,7 @@ _notification:
sendTestNotification: "Send test notification"
notificationWillBeDisplayedLikeThis: "Notifications look like this"
reactedBySomeUsers: "{n} users reacted"
likedBySomeUsers: "{n} users liked your note"
renotedBySomeUsers: "Boosted by {n} users"
followedBySomeUsers: "Followed by {n} users"
flushNotification: "Clear notifications"
@ -2390,6 +2440,7 @@ _deck:
alwaysShowMainColumn: "Always show main column"
columnAlign: "Align columns"
addColumn: "Add column"
newNoteNotificationSettings: "New note notification"
configureColumn: "Column settings"
swapLeft: "Swap with the left column"
swapRight: "Swap with the right column"
@ -2479,6 +2530,7 @@ _moderationLogTypes:
unsetUserAvatar: "Unset this user's avatar"
unsetUserBanner: "Unset this user's banner"
_mfm:
uncommonFeature: "This is not a widespread feature, it may not display properly on most other fedi software, including other Misskey forks"
intro: "MFM is a markup language used on Misskey, Sharkey, Firefish, Akkoma, and more that can be used in many places. Here you can view a list of all available MFM syntax."
dummy: "Sharkey expands the world of the Fediverse"
mention: "Mention"
@ -2543,10 +2595,16 @@ _mfm:
rotateDescription: "Turns content by a specified angle."
position: "Position"
positionDescription: "Move content by a specified amount."
crop: "Crop"
cropDescription: "Crop content."
followMouse: "Follow Mouse"
followMouseDescription: "Content will follow the mouse. On mobile it will follow wherever the user taps."
scale: "Scale"
scaleDescription: "Scale content by a specified amount."
foreground: "Foreground color"
foregroundDescription: "Change the foreground color of text."
fade: 'Fade'
fadeDescription: 'Fade text in and out.'
background: "Background color"
backgroundDescription: "Change the background color of text."
plain: "Plain"
@ -2678,3 +2736,21 @@ _reversi:
_offlineScreen:
title: "Offline - cannot connect to the server"
header: "Unable to connect to the server"
_urlPreviewSetting:
title: "URL preview settings"
enable: "Enable URL preview"
timeout: "Time out when getting preview (ms)"
timeoutDescription: "If it takes longer than this value to get the preview, the preview won't be generated."
maximumContentLength: "Maximum Content-Length (bytes)"
maximumContentLengthDescription: "If Content-Length is higher than this value, the preview won't be generated."
requireContentLength: "Generate the preview only if we can get Content-Length"
requireContentLengthDescription: "If other server doesn't return Content-Length, the preview won't be generated."
userAgent: "User-Agent"
userAgentDescription: "Sets the User-Agent to be used when retrieving previews. If left blank, the default User-Agent will be used."
summaryProxy: "Endpoint for proxy to generate previews"
summaryProxyDescription: "Generate previews using Summaly Proxy, instead of Sharkey itself."
summaryProxyDescription2: "The following parameters are sent to the proxy as a query string. If the proxy does not support them, the values are ignored."
_mediaControls:
pip: "Picture in Picture"
playbackRate: "Playback Speed"
loop: "Loop playback"

View file

@ -235,7 +235,7 @@ done: "Terminado"
processing: "Procesando"
preview: "Vista previa"
default: "Predeterminado"
defaultValueIs: "Predeterminado"