forked from FoundKeyGang/FoundKey
Compare commits
223 commits
9ed1a09e8c
...
eea3652871
Author | SHA1 | Date | |
---|---|---|---|
eea3652871 | |||
a07b464690 | |||
4e41fa8767 | |||
5548b585df | |||
f0bdd9666f | |||
c8afce6b2c | |||
9e6bc30a66 | |||
8d99f69c90 | |||
7abad139f8 | |||
2209490cc8 | |||
5b4c0ffdf3 | |||
a267e7afdc | |||
c877c5738d | |||
534666f762 | |||
21b78274aa | |||
091bf0f77b | |||
ed52a39476 | |||
0ce09d6753 | |||
4934303956 | |||
3e7285c8d5 | |||
6ce4b3fe2f | |||
961fb0d2df | |||
609fb91ca1 | |||
e82d12f44b | |||
d6fb9619f6 | |||
7a80015225 | |||
4f9ba4b8a8 | |||
7f5d7ffd93 | |||
e6daf45cd7 | |||
4fcbf3af36 | |||
8b3bfdf927 | |||
3345b4efe1 | |||
9377eb6301 | |||
768164a753 | |||
a693c05c0e | |||
aabc30cd02 | |||
62d1f0acbd | |||
cbefddc071 | |||
09a7eabda1 | |||
e2bf2715a6 | |||
a3a3cb7258 | |||
4fbe2e065e | |||
585e4f5c42 | |||
c8f49bae76 | |||
37e47a257e | |||
bc1c66e16e | |||
2fa90e7f43 | |||
a6df127d3b | |||
4122d90f56 | |||
fbcea23ef6 | |||
646b8e08c0 | |||
f3a602c384 | |||
c5b3a40b0c | |||
aa2f401a85 | |||
a24e0e0648 | |||
9b5d740530 | |||
455758e542 | |||
30d8bc9259 | |||
a615a76cf1 | |||
288049e2dc | |||
3a07c13ac6 | |||
2e71083823 | |||
bcb07d819f | |||
751921e24f | |||
ba18589986 | |||
c9f41f737d | |||
ec4fe55acf | |||
ce45f9f1b0 | |||
ca524a050e | |||
225cd3caef | |||
5db59ba560 | |||
1671b7123e | |||
a752dcab30 | |||
15ac0fb303 | |||
09b844035c | |||
0cf6df8980 | |||
dc9bfff337 | |||
10bf05563b | |||
340420c48a | |||
9fc3fcaf18 | |||
9e8b59f886 | |||
16833b8cd8 | |||
6c8eb4c4df | |||
a485d13e8a | |||
86b94e213e | |||
b7c0e26da9 | |||
9abbe94108 | |||
40d9aa6219 | |||
8c198f648b | |||
1f3b3abf68 | |||
9a236bd862 | |||
670c229cd0 | |||
bf16b3699e | |||
225b56706d | |||
2e1385930c | |||
ddebf5a049 | |||
2f4704ccff | |||
aac8f209c8 | |||
0e7d1a5d7b | |||
69e790ffb3 | |||
89839a989e | |||
233c39dbad | |||
|
0f6d94f1e7 | ||
63c8992cb8 | |||
0ece67b04c | |||
4bc9610d8b | |||
9ee609d700 | |||
46fff77acc | |||
c35372a20d | |||
aca724e0bf | |||
2fe64c1150 | |||
6d3181f983 | |||
d96baf1672 | |||
d32228a347 | |||
6ffbabeedc | |||
aba5b27159 | |||
cff82ea52e | |||
ebfe2162e9 | |||
d6a5eb4666 | |||
d79fe1dee0 | |||
3e05740bee | |||
63591da33e | |||
3fe351df6d | |||
b630cd7eac | |||
6775028b1e | |||
128d0f0d4e | |||
cfa371b52b | |||
c6192ac95a | |||
2486eff747 | |||
3c6d9cc8ab | |||
97edaca351 | |||
2f432dce65 | |||
bbb16208ab | |||
95148cf647 | |||
b64f266483 | |||
|
0ae09f2e80 | ||
bfd9c7404b | |||
150f373ebf | |||
fef2d9173e | |||
2d245d62cf | |||
9c411d181a | |||
|
a12acf53ef | ||
929203b2f3 | |||
d29a0dad8f | |||
7e186dae69 | |||
a988f6bda0 | |||
5255817e99 | |||
f3e196528f | |||
|
1477cb54b5 | ||
|
8ed288cb22 | ||
2d4089ce09 | |||
748a830937 | |||
6060e7d220 | |||
fc51ac17b1 | |||
d92d389cda | |||
9ca504784a | |||
1ec756519e | |||
ecbb766df6 | |||
27be5e0892 | |||
e5f41ece7e | |||
075cf0fa6b | |||
7d4cbd6ecf | |||
|
b803a7256b | ||
36503f63d8 | |||
454ed9b5c4 | |||
fddf3573a1 | |||
ff75382af3 | |||
660f6dba30 | |||
edac21e8f7 | |||
91bdab1a9d | |||
|
fa41674262 | ||
a0940c49a2 | |||
eeee4c713c | |||
|
26e89405cf | ||
|
1506df3b94 | ||
|
390a5efb59 | ||
|
db2bf0ac16 | ||
7358d95e02 | |||
e1f902001e | |||
149ccb80a9 | |||
98198dd5fe | |||
|
10d401afc2 | ||
a253b5a386 | |||
0fec6e1047 | |||
|
f27c3df6dc | ||
|
393d07a2d1 | ||
|
d61a2f9009 | ||
|
ddab9eafee | ||
|
ac9ef2beba | ||
|
e3d4d6d5b2 | ||
462ea9c52b | |||
|
9db58a4047 | ||
|
84cf9029b5 | ||
|
4059b91c0e | ||
|
2dc04068c1 | ||
0102ea066a | |||
5560de4b7f | |||
0f815a2f5d | |||
c9b27706a3 | |||
2aa14b05bf | |||
01d0a9cb51 | |||
8902813633 | |||
debfd16fc7 | |||
e5ade8289e | |||
f5cbaaf5d0 | |||
|
fa4fb139f6 | ||
e6f03b5e97 | |||
|
68a9415766 | ||
|
4b6b670ec9 | ||
|
e0844df234 | ||
|
97ce35dfc0 | ||
|
856146cb58 | ||
|
7a824ca064 | ||
|
bded2ef4dc | ||
|
786d06c854 | ||
|
d42325e108 | ||
|
ba6f0cd91d | ||
|
573dd770bf | ||
|
369375b2af | ||
|
791063078d | ||
|
7bf3ddc608 | ||
|
fe12971327 | ||
|
f339fb5482 |
995 changed files with 7965 additions and 9632 deletions
3
.github/FUNDING.yml
vendored
3
.github/FUNDING.yml
vendored
|
@ -1,3 +0,0 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
patreon: syuilo
|
42
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
42
.github/ISSUE_TEMPLATE/01_bug-report.md
vendored
|
@ -1,42 +0,0 @@
|
|||
---
|
||||
name: 🐛 Bug Report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: ⚠️bug?
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
Thanks for reporting!
|
||||
First, in order to avoid duplicate Issues, please search to see if the problem you found has already been reported.
|
||||
-->
|
||||
|
||||
## 💡 Summary
|
||||
|
||||
<!-- Tell us what the bug is -->
|
||||
|
||||
## 🥰 Expected Behavior
|
||||
|
||||
<!--- Tell us what should happen -->
|
||||
|
||||
## 🤬 Actual Behavior
|
||||
|
||||
<!--
|
||||
Tell us what happens instead of the expected behavior.
|
||||
Please include errors from the developer console and/or server log files if you have access to them.
|
||||
-->
|
||||
|
||||
## 📝 Steps to Reproduce
|
||||
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## 📌 Environment
|
||||
|
||||
<!-- Tell us where on the platform it happens -->
|
||||
|
||||
Misskey version:
|
||||
Your OS:
|
||||
Your browser:
|
12
.github/ISSUE_TEMPLATE/02_feature-request.md
vendored
12
.github/ISSUE_TEMPLATE/02_feature-request.md
vendored
|
@ -1,12 +0,0 @@
|
|||
---
|
||||
name: ✨ Feature Request
|
||||
about: Suggest an idea for this project
|
||||
title: ''
|
||||
labels: ✨Feature
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
<!-- Tell us what the suggestion is -->
|
7
.github/ISSUE_TEMPLATE/config.yml
vendored
7
.github/ISSUE_TEMPLATE/config.yml
vendored
|
@ -1,7 +0,0 @@
|
|||
contact_links:
|
||||
- name: 👪 Misskey Forum
|
||||
url: https://forum.misskey.io/
|
||||
about: Ask questions and share knowledge
|
||||
- name: 💬 Misskey official Discord
|
||||
url: https://discord.gg/Wp8gVStHW3
|
||||
about: Chat freely about Misskey
|
17
.github/PULL_REQUEST_TEMPLATE.md
vendored
17
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,17 +0,0 @@
|
|||
<!-- ℹ お読みください / README
|
||||
PRありがとうございます! PRを作成する前に、コントリビューションガイドをご確認ください:
|
||||
Thank you for your PR! Before creating a PR, please check the contribution guide:
|
||||
https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md
|
||||
-->
|
||||
|
||||
# What
|
||||
<!-- このPRで何をしたのか? どう変わるのか? -->
|
||||
<!-- What did you do with this PR? How will it change things? -->
|
||||
|
||||
# Why
|
||||
<!-- なぜそうするのか? どういう意図なのか? 何が困っているのか? -->
|
||||
<!-- Why do you do it? What are your intentions? What is the problem? -->
|
||||
|
||||
# Additional info (optional)
|
||||
<!-- テスト観点など -->
|
||||
<!-- Test perspective, etc -->
|
12
.github/labeler.yml
vendored
12
.github/labeler.yml
vendored
|
@ -1,12 +0,0 @@
|
|||
'⚙️Server':
|
||||
- packages/backend/**/*
|
||||
|
||||
'🖥️Client':
|
||||
- packages/client/**/*
|
||||
|
||||
'🧪Test':
|
||||
- cypress/**/*
|
||||
- packages/backend/test/**/*
|
||||
|
||||
'‼️ wrong locales':
|
||||
- any: ['locales/*.yml', '!locales/ja-JP.yml']
|
15
.github/misskey/test.yml
vendored
15
.github/misskey/test.yml
vendored
|
@ -1,15 +0,0 @@
|
|||
url: 'http://misskey.local'
|
||||
|
||||
# ローカルでテストするときにポートを被らないようにするためデフォルトのものとは変える(以下同じ)
|
||||
port: 61812
|
||||
|
||||
db:
|
||||
host: localhost
|
||||
port: 54312
|
||||
db: test-misskey
|
||||
user: postgres
|
||||
pass: ''
|
||||
redis:
|
||||
host: localhost
|
||||
port: 56312
|
||||
id: aid
|
33
.github/workflows/docker-develop.yml
vendored
33
.github/workflows/docker-develop.yml
vendored
|
@ -1,33 +0,0 @@
|
|||
name: Publish Docker image (develop)
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: misskey/misskey
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: misskey/misskey:develop
|
||||
labels: develop
|
32
.github/workflows/docker.yml
vendored
32
.github/workflows/docker.yml
vendored
|
@ -1,32 +0,0 @@
|
|||
name: Publish Docker image
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v2
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3
|
||||
with:
|
||||
images: misskey/misskey
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
- name: Build and Push to Docker Hub
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
16
.github/workflows/labeler.yml
vendored
16
.github/workflows/labeler.yml
vendored
|
@ -1,16 +0,0 @@
|
|||
name: "Pull Request Labeler"
|
||||
on:
|
||||
pull_request_target:
|
||||
branches-ignore:
|
||||
- 'l10n_develop'
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@v4
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
39
.github/workflows/lint.yml
vendored
39
.github/workflows/lint.yml
vendored
|
@ -1,39 +0,0 @@
|
|||
name: Lint
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
backend:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18.x
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: |
|
||||
packages/backend/yarn.lock
|
||||
- run: yarn install
|
||||
- run: yarn --cwd ./packages/backend lint
|
||||
|
||||
client:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18.x
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: |
|
||||
packages/client/yarn.lock
|
||||
- run: yarn install
|
||||
- run: yarn --cwd ./packages/client lint
|
36
.github/workflows/ok-to-test.yml
vendored
36
.github/workflows/ok-to-test.yml
vendored
|
@ -1,36 +0,0 @@
|
|||
# If someone with write access comments "/ok-to-test" on a pull request, emit a repository_dispatch event
|
||||
name: Ok To Test
|
||||
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
jobs:
|
||||
ok-to-test:
|
||||
runs-on: ubuntu-latest
|
||||
# Only run for PRs, not issue comments
|
||||
if: ${{ github.event.issue.pull_request }}
|
||||
steps:
|
||||
# Generate a GitHub App installation access token from an App ID and private key
|
||||
# To create a new GitHub App:
|
||||
# https://developer.github.com/apps/building-github-apps/creating-a-github-app/
|
||||
# See app.yml for an example app manifest
|
||||
- name: Generate token
|
||||
id: generate_token
|
||||
uses: tibdex/github-app-token@v1
|
||||
with:
|
||||
app_id: ${{ secrets.DEPLOYBOT_APP_ID }}
|
||||
private_key: ${{ secrets.DEPLOYBOT_PRIVATE_KEY }}
|
||||
|
||||
- name: Slash Command Dispatch
|
||||
uses: peter-evans/slash-command-dispatch@v1
|
||||
env:
|
||||
TOKEN: ${{ steps.generate_token.outputs.token }}
|
||||
with:
|
||||
token: ${{ env.TOKEN }} # GitHub App installation access token
|
||||
# token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} # PAT or OAuth token will also work
|
||||
reaction-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
issue-type: pull-request
|
||||
commands: deploy
|
||||
named-args: true
|
||||
permission: write
|
95
.github/workflows/pr-preview-deploy.yml
vendored
95
.github/workflows/pr-preview-deploy.yml
vendored
|
@ -1,95 +0,0 @@
|
|||
# Run secret-dependent integration tests only after /deploy approval
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, reopened, synchronize]
|
||||
repository_dispatch:
|
||||
types: [deploy-command]
|
||||
|
||||
name: Deploy preview environment
|
||||
|
||||
jobs:
|
||||
# Repo owner has commented /deploy on a (fork-based) pull request
|
||||
deploy-preview-environment:
|
||||
runs-on: ubuntu-latest
|
||||
if:
|
||||
github.event_name == 'repository_dispatch' &&
|
||||
github.event.client_payload.slash_command.sha != '' &&
|
||||
contains(github.event.client_payload.pull_request.head.sha, github.event.client_payload.slash_command.sha)
|
||||
steps:
|
||||
- uses: actions/github-script@v5
|
||||
id: check-id
|
||||
env:
|
||||
number: ${{ github.event.client_payload.pull_request.number }}
|
||||
job: ${{ github.job }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
result-encoding: string
|
||||
script: |
|
||||
const { data: pull } = await github.rest.pulls.get({
|
||||
...context.repo,
|
||||
pull_number: process.env.number
|
||||
});
|
||||
const ref = pull.head.sha;
|
||||
|
||||
const { data: checks } = await github.rest.checks.listForRef({
|
||||
...context.repo,
|
||||
ref
|
||||
});
|
||||
|
||||
const check = checks.check_runs.filter(c => c.name === process.env.job);
|
||||
|
||||
return check[0].id;
|
||||
|
||||
- uses: actions/github-script@v5
|
||||
env:
|
||||
check_id: ${{ steps.check-id.outputs.result }}
|
||||
details_url: ${{ github.server_url }}/${{ github.repository }}/runs/${{ github.run_id }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
await github.rest.checks.update({
|
||||
...context.repo,
|
||||
check_run_id: process.env.check_id,
|
||||
status: 'in_progress',
|
||||
details_url: process.env.details_url
|
||||
});
|
||||
|
||||
# Check out merge commit
|
||||
- name: Fork based /deploy checkout
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 'refs/pull/${{ github.event.client_payload.pull_request.number }}/merge'
|
||||
|
||||
# <insert integration tests needing secrets>
|
||||
- name: Context
|
||||
uses: okteto/context@latest
|
||||
with:
|
||||
token: ${{ secrets.OKTETO_TOKEN }}
|
||||
|
||||
- name: Deploy preview environment
|
||||
uses: ikuradon/deploy-preview@latest
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
name: pr-${{ github.event.client_payload.pull_request.number }}-syuilo
|
||||
timeout: 15m
|
||||
|
||||
# Update check run called "integration-fork"
|
||||
- uses: actions/github-script@v5
|
||||
id: update-check-run
|
||||
if: ${{ always() }}
|
||||
env:
|
||||
# Conveniently, job.status maps to https://developer.github.com/v3/checks/runs/#update-a-check-run
|
||||
conclusion: ${{ job.status }}
|
||||
check_id: ${{ steps.check-id.outputs.result }}
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
script: |
|
||||
const { data: result } = await github.rest.checks.update({
|
||||
...context.repo,
|
||||
check_run_id: process.env.check_id,
|
||||
status: 'completed',
|
||||
conclusion: process.env.conclusion
|
||||
});
|
||||
|
||||
return result;
|
21
.github/workflows/pr-preview-destroy.yml
vendored
21
.github/workflows/pr-preview-destroy.yml
vendored
|
@ -1,21 +0,0 @@
|
|||
# file: .github/workflows/preview-closed.yaml
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
|
||||
name: Destroy preview environment
|
||||
|
||||
jobs:
|
||||
destroy-preview-environment:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Context
|
||||
uses: okteto/context@latest
|
||||
with:
|
||||
token: ${{ secrets.OKTETO_TOKEN }}
|
||||
|
||||
- name: Destroy preview environment
|
||||
uses: okteto/destroy-preview@latest
|
||||
with:
|
||||
name: pr-${{ github.event.number }}-syuilo
|
122
.github/workflows/test.yml
vendored
122
.github/workflows/test.yml
vendored
|
@ -1,122 +0,0 @@
|
|||
name: Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
mocha:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [18.x]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:13
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-misskey
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- 56312:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: |
|
||||
packages/backend/yarn.lock
|
||||
packages/client/yarn.lock
|
||||
- name: Install dependencies
|
||||
run: yarn install
|
||||
- name: Check yarn.lock
|
||||
run: git diff --exit-code yarn.lock
|
||||
- name: Copy Configure
|
||||
run: cp .github/misskey/test.yml .config
|
||||
- name: Build
|
||||
run: yarn build
|
||||
- name: Test
|
||||
run: yarn mocha
|
||||
|
||||
e2e:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [18.x]
|
||||
browser: [chrome]
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:13
|
||||
ports:
|
||||
- 54312:5432
|
||||
env:
|
||||
POSTGRES_DB: test-misskey
|
||||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
redis:
|
||||
image: redis:6
|
||||
ports:
|
||||
- 56312:6379
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
# https://github.com/cypress-io/cypress-docker-images/issues/150
|
||||
#- name: Install mplayer for FireFox
|
||||
# run: sudo apt install mplayer -y
|
||||
# if: ${{ matrix.browser == 'firefox' }}
|
||||
#- uses: browser-actions/setup-firefox@latest
|
||||
# if: ${{ matrix.browser == 'firefox' }}
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: |
|
||||
packages/backend/yarn.lock
|
||||
packages/client/yarn.lock
|
||||
- name: Install dependencies
|
||||
run: yarn install
|
||||
- name: Check yarn.lock
|
||||
run: git diff --exit-code yarn.lock
|
||||
- name: Copy Configure
|
||||
run: cp .github/misskey/test.yml .config
|
||||
- name: Build
|
||||
run: yarn build
|
||||
# https://github.com/cypress-io/cypress/issues/4351#issuecomment-559489091
|
||||
- name: ALSA Env
|
||||
run: echo -e 'pcm.!default {\n type hw\n card 0\n}\n\nctl.!default {\n type hw\n card 0\n}' > ~/.asoundrc
|
||||
- name: Cypress run
|
||||
uses: cypress-io/github-action@v4
|
||||
with:
|
||||
install: false
|
||||
start: npm run start:test
|
||||
wait-on: 'http://localhost:61812'
|
||||
headless: false
|
||||
browser: ${{ matrix.browser }}
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: failure()
|
||||
with:
|
||||
name: ${{ matrix.browser }}-cypress-screenshots
|
||||
path: cypress/screenshots
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: always()
|
||||
with:
|
||||
name: ${{ matrix.browser }}-cypress-videos
|
||||
path: cypress/videos
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -5,6 +5,9 @@
|
|||
# Intelij-IDEA
|
||||
/.idea
|
||||
|
||||
# nano
|
||||
.swp
|
||||
|
||||
# Node.js
|
||||
node_modules
|
||||
report.*.json
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
build:
|
||||
misskey:
|
||||
args:
|
||||
- NODE_ENV=development
|
||||
deploy:
|
||||
- helm upgrade --install misskey chart --set image=${OKTETO_BUILD_MISSKEY_IMAGE} --set url="https://misskey-$(kubectl config view --minify -o jsonpath='{..namespace}').cloud.okteto.net" --set environment=development
|
24
.woodpecker/build.yml
Normal file
24
.woodpecker/build.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 1 # CI does not need commit history
|
||||
recursive: true
|
||||
|
||||
pipeline:
|
||||
install:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn install
|
||||
build:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn build
|
24
.woodpecker/lint-backend.yml
Normal file
24
.woodpecker/lint-backend.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 1 # CI does not need commit history
|
||||
recursive: true
|
||||
|
||||
pipeline:
|
||||
install:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn install
|
||||
lint:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn --cwd ./packages/backend lint
|
24
.woodpecker/lint-client.yml
Normal file
24
.woodpecker/lint-client.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 1 # CI does not need commit history
|
||||
recursive: true
|
||||
|
||||
pipeline:
|
||||
install:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn install
|
||||
lint:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn --cwd ./packages/client lint
|
13
.woodpecker/misskey/test.yml
Normal file
13
.woodpecker/misskey/test.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
url: 'http://misskey.local'
|
||||
|
||||
port: 80
|
||||
|
||||
db:
|
||||
host: postgres
|
||||
port: 5432
|
||||
db: test-misskey
|
||||
user: postgres
|
||||
pass: ''
|
||||
redis:
|
||||
host: redis
|
||||
port: 6379
|
48
.woodpecker/test.yml
Normal file
48
.woodpecker/test.yml
Normal file
|
@ -0,0 +1,48 @@
|
|||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
depth: 1 # CI does not need commit history
|
||||
recursive: true
|
||||
|
||||
pipeline:
|
||||
build:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn install
|
||||
- git diff --exit-code yarn.lock
|
||||
- cp .woodpecker/misskey/test.yml .config
|
||||
- yarn build
|
||||
mocha:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: node:18.6.0
|
||||
commands:
|
||||
- yarn mocha
|
||||
e2e:
|
||||
when:
|
||||
event:
|
||||
- push
|
||||
- pull_request
|
||||
image: cypress/included:10.3.0
|
||||
commands:
|
||||
- npm run start:test &
|
||||
- sleep 30 # wait for server to start
|
||||
- cypress run --browser chrome
|
||||
# TODO: upload screenshots and video artifacts?
|
||||
# would need some kind of storage though
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:13
|
||||
environment:
|
||||
- POSTGRES_DB=test-misskey
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
redis:
|
||||
image: redis:6
|
677
CHANGELOG-OLD.md
Normal file
677
CHANGELOG-OLD.md
Normal file
|
@ -0,0 +1,677 @@
|
|||
<!--
|
||||
## 12.x.x (unreleased)
|
||||
|
||||
### Improvements
|
||||
|
||||
### Bugfixes
|
||||
-
|
||||
|
||||
You should also include the user name that made the change.
|
||||
-->
|
||||
|
||||
## 12.x.x (unreleased)
|
||||
|
||||
### Changes
|
||||
- ハイライトがみつけるに統合されました
|
||||
- カスタム絵文字ページはインスタンス情報ページに統合されました
|
||||
- 連合ページはインスタンス情報ページに統合されました
|
||||
|
||||
### Improvements
|
||||
- Client: Fix URL-encoded routing
|
||||
- Server: Allow GET method for some endpoints @syuilo
|
||||
- Server: Add rate limit to i/notifications @tamaina
|
||||
- Client: Improve control panel @syuilo
|
||||
- Client: Show warning in control panel when there is an unresolved abuse report @syuilo
|
||||
- Client: For notes with specified visibility, show recipients when hovering over visibility symbol. @Johann150
|
||||
- Client: Add rss-ticker widget @syuilo
|
||||
- Client: Removing entries from a clip @futchitwo
|
||||
- Client: Poll highlights in explore page @syuilo
|
||||
- Make possible to delete an account by admin @syuilo
|
||||
- Improve player detection in URL preview @mei23
|
||||
- Add Badge Image to Push Notification #8012 @tamaina
|
||||
- Server: Improve performance
|
||||
- Server: Supports IPv6 on Redis transport. @mei23
|
||||
IPv4/IPv6 is used by default. You can tune this behavior via `redis.family`.
|
||||
|
||||
### Bugfixes
|
||||
- Server: Fix GenerateVideoThumbnail failed @mei23
|
||||
- Server: Ensure temp directory cleanup @Johann150
|
||||
- favicons of federated instances not showing @syuilo
|
||||
- Client: fix switch to receive email notifications @syuilo
|
||||
- Client: Page freezes when trying to open configuration page of existing webhooks @syuilo
|
||||
|
||||
## 12.111.1 (2022/06/13)
|
||||
|
||||
### Bugfixes
|
||||
- some fixes of multiple notification read @tamaina
|
||||
- some GenerateVideoThumbnail failed @Johann150
|
||||
- Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
|
||||
- Client: ギャラリーの投稿を開こうとすると編集画面が表示される @futchitwo
|
||||
|
||||
## 12.111.0 (2022/06/11)
|
||||
### Note
|
||||
- Node.js 16.15.0 or later is required
|
||||
|
||||
### Improvements
|
||||
- Supports Unicode Emoji 14.0 @mei23
|
||||
- プッシュ通知を複数アカウント対応に #7667 @tamaina
|
||||
- プッシュ通知にクリックやactionを設定 #7667 @tamaina
|
||||
- ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション @tamaina
|
||||
- Server: always remove completed tasks of job queue @Johann150
|
||||
- Client: アバターの設定で画像をクロップできるように @syuilo
|
||||
- Client: make emoji stand out more on reaction button @Johann150
|
||||
- Client: display URL of QR code for TOTP registration @tamaina
|
||||
- Client: render quote renote CWs as MFM @pixeldesu
|
||||
- API: notifications/readは配列でも受け付けるように #7667 @tamaina
|
||||
- API: ユーザー検索で、クエリがusernameの条件を満たす場合はusernameもLIKE検索するように @tamaina
|
||||
- MFM: Allow speed changes in all animated MFMs @Johann150
|
||||
- The theme color is now better validated. @Johann150
|
||||
Your own theme color may be unset if it was in an invalid format.
|
||||
Admins should check their instance settings if in doubt.
|
||||
- Perform port diagnosis at startup only when Listen fails @mei23
|
||||
- Rate limiting is now also usable for non-authenticated users. @Johann150 @mei23
|
||||
Admins should make sure the reverse proxy sets the `X-Forwarded-For` header to the original address.
|
||||
|
||||
### Bugfixes
|
||||
- Server: keep file order of note attachement @Johann150
|
||||
- Server: fix missing foreign key for reports leading to reports page being unusable @Johann150
|
||||
- Server: fix internal in-memory caching @Johann150
|
||||
- Server: prevent crash when processing certain PNGs @syuilo
|
||||
- Server: Fix unable to generate video thumbnails @mei23
|
||||
- Server: Fix `Cannot find module` issue @mei23
|
||||
- Federation: Add rel attribute to host-meta @mei23
|
||||
- Federation: add id for activitypub follows @Johann150
|
||||
- Federation: use `source` instead of `_misskey_content` @Johann150
|
||||
- Federation: ensure resolver does not fetch local resources via HTTP(S) @Johann150
|
||||
- Federation: correctly render empty note text @Johann150
|
||||
- Federation: Fix quote renotes containing no text being federated correctly @Johann150
|
||||
- Federation: remove duplicate br tag/newline @Johann150
|
||||
- Federation: add missing authorization checks @Johann150
|
||||
- Client: fix profile picture height in mentions @tamaina
|
||||
- Client: fix abuse reports page to be able to show all reports @Johann150
|
||||
- Client: fix settings page @tamaina
|
||||
- Client: fix profile tabs @futchitwo
|
||||
- Client: fix popout URL @futchitwo
|
||||
- Client: correctly handle MiAuth URLs with query string @sn0w
|
||||
- Client: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する @xianonn
|
||||
- MFM: more animated functions support `speed` parameter @futchitwo
|
||||
- MFM: limit large MFM @Johann150
|
||||
|
||||
## 12.110.1 (2022/04/23)
|
||||
|
||||
### Bugfixes
|
||||
- Fix GOP rendering @syuilo
|
||||
- Improve performance of antenna, clip, and list @xianonn
|
||||
|
||||
## 12.110.0 (2022/04/11)
|
||||
|
||||
### Improvements
|
||||
- Improve webhook @syuilo
|
||||
- Client: Show loading icon on splash screen @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- API: parameter validation of users/show was wrong
|
||||
- Federation: リモートインスタンスへのダイレクト投稿が届かない問題を修正 @syuilo
|
||||
|
||||
## 12.109.2 (2022/04/03)
|
||||
|
||||
### Bugfixes
|
||||
- API: admin/update-meta was not working @syuilo
|
||||
- Client: テーマを切り替えたり読み込んだりするとmeta[name="theme-color"]のcontentがundefinedになる問題を修正 @tamaina
|
||||
|
||||
## 12.109.1 (2022/04/02)
|
||||
|
||||
### Bugfixes
|
||||
- API: Renoteが行えない問題を修正
|
||||
|
||||
## 12.109.0 (2022/04/02)
|
||||
|
||||
### Improvements
|
||||
- Webhooks @syuilo
|
||||
- Bull Dashboardを組み込み、ジョブキューの確認や操作を行えるように @syuilo
|
||||
- Bull Dashboardを開くには、最初だけ一旦ログアウトしてから再度管理者権限を持つアカウントでログインする必要があります
|
||||
- Check that installed Node.js version fulfills version requirement @ThatOneCalculator
|
||||
- Server: overall performance improvements @syuilo
|
||||
- Federation: avoid duplicate activity delivery @Johann150
|
||||
- Federation: limit federation of reactions on direct notes @Johann150
|
||||
- Client: タッチパッド・タッチスクリーンでのデッキの操作性を向上 @tamaina
|
||||
|
||||
### Bugfixes
|
||||
- email address validation was not working @ybw2016v
|
||||
- API: fix endpoint endpoint @Johann150
|
||||
- API: fix admin/meta endpoint @syuilo
|
||||
- API: improved validation and documentation for endpoints that accept different variants of input @Johann150
|
||||
- API: `notes/create`: The `mediaIds` property is now deprecated. @Johann150
|
||||
- Use `fileIds` instead, it has the same behaviour.
|
||||
- Client: URIエンコーディングが異常でdecodeURIComponentが失敗するとURLが表示できなくなる問題を修正 @tamaina
|
||||
|
||||
## 12.108.1 (2022/03/12)
|
||||
|
||||
### Bugfixes
|
||||
- リレーが動作しない問題を修正 @xianonn
|
||||
- ulidを使用していると動作しない問題を修正 @syuilo
|
||||
- 外部からOGPが正しく取得できない問題を修正 @syuilo
|
||||
- instance can not get the files from other instance when there are items in allowedPrivateNetworks in .config/default.yml @ybw2016v
|
||||
|
||||
## 12.108.0 (2022/03/09)
|
||||
|
||||
### NOTE
|
||||
このバージョンからNode v16.14.0以降が必要です
|
||||
|
||||
### Changes
|
||||
- ノートの最大文字数を設定できる機能が廃止され、デフォルトで一律3000文字になりました @syuilo
|
||||
- Misskey can no longer terminate HTTPS connections. @Johann150
|
||||
- If you did not use a reverse proxy (e.g. nginx) before, you will probably need to adjust
|
||||
your configuration file and set up a reverse proxy. The `https` configuration key is no
|
||||
longer recognized!
|
||||
|
||||
### Improvements
|
||||
- インスタンスデフォルトテーマを設定できるように @syuilo
|
||||
- ミュートに期限を設定できるように @syuilo
|
||||
- アンケートが終了したときに通知が作成されるように @syuilo
|
||||
- プロフィールの追加情報を最大16まで保存できるように @syuilo
|
||||
- 連合チャートにPub&Subを追加 @syuilo
|
||||
- 連合チャートにActiveを追加 @syuilo
|
||||
- デフォルトで10秒以上時間がかかるデータベースへのクエリは中断されるように @syuilo
|
||||
- 設定ファイルの`db.extra`に`statement_timeout`を設定することでタイムアウト時間を変更できます
|
||||
- Client: スプラッシュスクリーンにインスタンスのアイコンを表示するように @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- Client: リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 @syuilo
|
||||
- Client: ユーザー名オートコンプリートが正しく動作しない問題を修正 @syuilo
|
||||
- Client: タッチ操作だとウィジェットの編集がしにくいのを修正 @xianonn
|
||||
- Client: register_note_view_interruptor()が動かないのを修正 @syuilo
|
||||
- Client: iPhone X以降(?)でページの内容が全て表示しきれないのを修正 @tamaina
|
||||
- Client: fix image caption on mobile @nullobsi
|
||||
|
||||
## 12.107.0 (2022/02/12)
|
||||
|
||||
### Improvements
|
||||
- クライアント: テーマを追加 @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- API: stats APIで内部エラーが発生する問題を修正 @syuilo
|
||||
- クライアント: ソフトミュートですべてがマッチしてしまう場合があるのを修正 @tamaina
|
||||
- クライアント: デバイスのスクリーンのセーフエリアを考慮するように @syuilo
|
||||
- クライアント: 一部環境でサイドバーの投稿ボタンが表示されない問題を修正 @syuilo
|
||||
|
||||
## 12.106.3 (2022/02/11)
|
||||
|
||||
### Improvements
|
||||
- クライアント: スマートフォンでの余白を調整 @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ノートの詳細が表示されない問題を修正 @syuilo
|
||||
|
||||
## 12.106.2 (2022/02/11)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 削除したノートがタイムラインから自動で消えない問題を修正 @syuilo
|
||||
- クライアント: リアクション数が正しくないことがある問題を修正 @syuilo
|
||||
- 一部環境でマイグレーションが動作しない問題を修正 @syuilo
|
||||
|
||||
## 12.106.1 (2022/02/11)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ワードミュートが保存できない問題を修正 @syuilo
|
||||
|
||||
## 12.106.0 (2022/02/11)
|
||||
|
||||
### Improvements
|
||||
- Improve federation chart @syuilo
|
||||
- クライアント: リアクションピッカーのサイズを設定できるように @syuilo
|
||||
- クライアント: リアクションピッカーの幅、高さ制限を緩和 @syuilo
|
||||
- Docker: Update to Node v16.13.2 @mei23
|
||||
- Update dependencies
|
||||
|
||||
### Bugfixes
|
||||
- validate regular expressions in word mutes @Johann150
|
||||
|
||||
## 12.105.0 (2022/02/09)
|
||||
|
||||
### Improvements
|
||||
- インスタンスのテーマカラーを設定できるように @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- 一部環境でマイグレーションが失敗する問題を修正 @syuilo
|
||||
|
||||
## 12.104.0 (2022/02/09)
|
||||
|
||||
### Note
|
||||
ビルドする前に`npm run clean`を実行してください。
|
||||
|
||||
このリリースはマイグレーションの規模が大きいため、インスタンスによってはマイグレーションに時間がかかる可能性があります。
|
||||
マイグレーションが終わらない場合は、チャートの情報はリセットされてしまいますが`__chart__`で始まるテーブルの**レコード**を全て削除(テーブル自体は消さないでください)してから再度試す方法もあります。
|
||||
|
||||
### Improvements
|
||||
- チャートエンジンの強化 @syuilo
|
||||
- テーブルサイズの削減
|
||||
- notes/instance/perUserNotesチャートに添付ファイル付きノートの数を追加
|
||||
- activeUsersチャートに新しい項目を追加
|
||||
- federationチャートに新しい項目を追加
|
||||
- apRequestチャートを追加
|
||||
- networkチャート廃止
|
||||
- クライアント: 自インスタンス情報ページでチャートを見れるように @syuilo
|
||||
- クライアント: デバイスの種類を手動指定できるように @syuilo
|
||||
- クライアント: UIのアイコンを更新 @syuilo
|
||||
- クライアント: UIのアイコンをセルフホスティングするように @syuilo
|
||||
- NodeInfo のユーザー数と投稿数の内容を見直す @xianonn
|
||||
|
||||
### Bugfixes
|
||||
- Client: タイムライン種別を切り替えると「新しいノートがあります」の表示が残留してしまうのを修正 @tamaina
|
||||
- Client: UIのサイズがおかしくなる問題の修正 @tamaina
|
||||
- Client: Setting instance information of notes to always show breaks the timeline @Johann150
|
||||
- Client: 環境に依っては返信する際のカーソル位置が正しくない問題を修正 @syuilo
|
||||
- Client: コントロールパネルのユーザー、ファイルにて、インスタンスの表示範囲切り替えが機能しない問題を修正 @syuilo
|
||||
- Client: アップデートお知らせダイアログが出ないのを修正 @syuilo
|
||||
- Client: Follows/Followers Visibility changes won't be saved unless clicking on an other checkbox @Johann150
|
||||
- API: Fix API cast @mei23
|
||||
- add instance favicon where it's missing @solfisher
|
||||
- チャートの定期resyncが動作していない問題を修正 @syuilo
|
||||
|
||||
## 12.103.1 (2022/02/02)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ツールチップの表示位置が正しくない問題を修正
|
||||
|
||||
## 12.103.0 (2022/02/02)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 連合インスタンスページからインスタンス情報再取得を行えるように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 投稿のNSFW画像を表示したあとにリアクションが更新されると画像が非表示になる問題を修正
|
||||
- クライアント: 「クリップ」ページが開かない問題を修正
|
||||
- クライアント: トレンドウィジェットが動作しないのを修正
|
||||
- クライアント: フェデレーションウィジェットが動作しないのを修正
|
||||
- クライアント: リアクション設定で絵文字ピッカーが開かないのを修正
|
||||
- クライアント: DMページでメンションが含まれる問題を修正
|
||||
- クライアント: 投稿フォームのハッシュタグ保持フィールドが動作しない問題を修正
|
||||
- クライアント: サイドビューが動かないのを修正
|
||||
- クライアント: ensure that specified users does not get duplicates
|
||||
- Add `img-src` and `media-src` directives to `Content-Security-Policy` for
|
||||
files and media proxy
|
||||
|
||||
## 12.102.1 (2022/01/27)
|
||||
### Bugfixes
|
||||
- チャットが表示できない問題を修正
|
||||
|
||||
## 12.102.0 (2022/01/27)
|
||||
|
||||
### NOTE
|
||||
アップデート後、一部カスタム絵文字が表示できなくなる場合があります。その場合、一旦絵文字管理ページから絵文字を一括エクスポートし、再度コントロールパネルから一括インポートすると直ります。
|
||||
⚠ 12.102.0以前にエクスポートされたzipとは互換性がありません。アップデートしてからエクスポートを行なってください。
|
||||
|
||||
### Changes
|
||||
- Room機能が削除されました
|
||||
- 後日別リポジトリとして復活予定です
|
||||
- リバーシ機能が削除されました
|
||||
- 後日別リポジトリとして復活予定です
|
||||
- Chat UIが削除されました
|
||||
- ノートに添付できるファイルの数が16に増えました
|
||||
- カスタム絵文字にSVGを指定した場合、PNGに変換されて表示されるようになりました
|
||||
|
||||
### Improvements
|
||||
- カスタム絵文字一括編集機能
|
||||
- カスタム絵文字一括インポート
|
||||
- 投稿フォームで一時的に投稿するアカウントを切り替えられるように
|
||||
- Unifying Misskey-specific IRIs in JSON-LD `@context`
|
||||
- クライアントのパフォーマンス向上
|
||||
- セキュリティの向上
|
||||
|
||||
### Bugfixes
|
||||
- アップロードエラー時の処理を修正
|
||||
|
||||
## 12.101.1 (2021/12/29)
|
||||
|
||||
### Bugfixes
|
||||
- SVG絵文字が表示できないのを修正
|
||||
- エクスポートした絵文字の拡張子がfalseになることがあるのを修正
|
||||
|
||||
## 12.101.0 (2021/12/29)
|
||||
|
||||
### Improvements
|
||||
- クライアント: ノートプレビューの精度を改善
|
||||
- クライアント: MFM sparkleエフェクトの改善
|
||||
- クライアント: デザインの調整
|
||||
- セキュリティの向上
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- fix html blockquote conversion
|
||||
|
||||
## 12.100.2 (2021/12/18)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: Deckカラムの増減がページをリロードするまで正しく反映されない問題を修正
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- クライアント: カスタム絵文字一覧ページの負荷が高いのを修正
|
||||
|
||||
## 12.100.1 (2021/12/17)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: デザインの調整
|
||||
|
||||
## 12.100.0 (2021/12/17)
|
||||
|
||||
### Improvements
|
||||
- クライアント: モバイルでの各種メニュー、リアクションピッカーの表示を改善
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
|
||||
## 12.99.3 (2021/12/14)
|
||||
### Bugfixes
|
||||
- クライアント: オートコンプリートがダイアログの裏に隠れる問題を修正
|
||||
|
||||
## 12.99.2 (2021/12/14)
|
||||
|
||||
## 12.99.1 (2021/12/14)
|
||||
|
||||
## 12.99.0 (2021/12/14)
|
||||
|
||||
### Improvements
|
||||
- Added a user-level instance mute in user settings
|
||||
- フォローエクスポートでミュートしているユーザーを含めないオプションを追加
|
||||
- フォローエクスポートで使われていないアカウントを含めないオプションを追加
|
||||
- カスタム絵文字エクスポート機能
|
||||
- チャートのパフォーマンスの改善
|
||||
- グループから抜けられるように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: タッチ機能付きディスプレイを使っていてマウス操作をしている場合に一部機能が動作しない問題を修正
|
||||
- クライアント: クリップの設定を編集できない問題を修正
|
||||
- クライアント: メニューなどがウィンドウの裏に隠れる問題を修正
|
||||
|
||||
## 12.98.0 (2021/12/03)
|
||||
|
||||
### Improvements
|
||||
- API: /antennas/notes API で日付による絞り込みができるように
|
||||
- クライアント: アンケートに投票する際に確認ダイアログを出すように
|
||||
- クライアント: Renoteなノート詳細ページから元のノートページに遷移できるように
|
||||
- クライアント: 画像ポップアップでクリックで閉じられるように
|
||||
- クライアント: デザインの調整
|
||||
- フォロワーを解除できる機能
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: LTLやGTLが無効になっている場合でもUI上にタブが表示される問題を修正
|
||||
- クライアント: ログインにおいてパスワードが誤っている際のエラーメッセージが正しく表示されない問題を修正
|
||||
- クライアント: リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正
|
||||
- クライアント: サウンドのマスターボリュームが正しく保存されない問題を修正
|
||||
- クライアント: 一部環境において通知が表示されると操作不能になる問題を修正
|
||||
- クライアント: モバイルでタップしたときにツールチップが表示される問題を修正
|
||||
- クライアント: リモートインスタンスのノートに返信するとき、対象のノートにそのリモートインスタンス内のユーザーへのメンションが含まれていると、返信テキスト内にローカルユーザーへのメンションとして引き継がれてしまう場合がある問題を修正
|
||||
- クライアント: 画像ビューワーで全体表示した時に上側の一部しか表示されない画像がある問題を修正
|
||||
- API: ユーザーを取得時に条件によっては内部エラーになる問題を修正
|
||||
|
||||
### Changes
|
||||
- クライアント: ノートにモデレーターバッジを表示するのを廃止
|
||||
|
||||
## 12.97.0 (2021/11/19)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 返信先やRenoteに対しても自動折りたたみされるように
|
||||
- クライアント: 長いスレッドの表示を改善
|
||||
- クライアント: 翻訳にもMFMを適用し、元の文章の改行などを保持するように
|
||||
- クライアント: アカウント削除に確認ダイアログを出すように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ユーザー検索の「全て」が動作しない問題を修正
|
||||
- クライアント: リアクション一覧、Renote一覧ツールチップのスタイルを修正
|
||||
|
||||
## 12.96.1 (2021/11/13)
|
||||
### Improvements
|
||||
- npm scriptの互換性を向上
|
||||
|
||||
## 12.96.0 (2021/11/13)
|
||||
|
||||
### Improvements
|
||||
- フォロー/フォロワーを非公開にできるように
|
||||
- インスタンスプロフィールレンダリング ready
|
||||
- 通知のリアクションアイコンをホバーで拡大できるように
|
||||
- RenoteボタンをホバーでRenoteしたユーザー一覧を表示するように
|
||||
- 返信の際にメンションを含めるように
|
||||
- 通報があったときに管理者へEメールで通知されるように
|
||||
- メールアドレスのバリデーションを強化
|
||||
|
||||
### Bugfixes
|
||||
- アカウント削除処理があると高負荷になる問題を修正
|
||||
- クライアント: 長いメニューが画面からはみ出す問題を修正
|
||||
- クライアント: コントロールパネルのジョブキューに個々のジョブが表示されないのを修正
|
||||
- クライアント: fix missing i18n string
|
||||
- fix html conversion issue with code blocks
|
||||
|
||||
### Changes
|
||||
- ノートにモバイルからの投稿か否かの情報を含めないように
|
||||
|
||||
## 12.95.0 (2021/10/31)
|
||||
|
||||
### Improvements
|
||||
- スレッドミュート機能
|
||||
|
||||
### Bugfixes
|
||||
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
|
||||
- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正
|
||||
- クライアント: ページ編集時のドロップダウンメニューなどが動作しない問題を修正
|
||||
- クライアント: コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正
|
||||
- API: ユーザー情報の hasUnreadChannel が常に false になっている問題を修正
|
||||
|
||||
## 12.94.1 (2021/10/25)
|
||||
|
||||
### Improvements
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ユーザーページのナビゲーションが失敗する問題を修正
|
||||
|
||||
## 12.94.0 (2021/10/25)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 画像ビューアを強化
|
||||
- クライアント: メンションにユーザーのアバターを表示するように
|
||||
- クライアント: デザインの調整
|
||||
- クライアント: twemojiをセルフホスティングするように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: CWで画像が隠されたとき、画像の高さがおかしいことになる問題を修正
|
||||
|
||||
### NOTE
|
||||
- このバージョンから、iOS 15未満のサポートがされなくなります。対象のバージョンをお使いの方は、iOSのバージョンアップを行ってください。
|
||||
|
||||
## 12.93.2 (2021/10/23)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ウィジェットを追加できない問題を修正
|
||||
|
||||
## 12.93.1 (2021/10/23)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 通知上でローカルのリアクションが表示されないのを修正
|
||||
|
||||
## 12.93.0 (2021/10/23)
|
||||
|
||||
### Improvements
|
||||
- クライアント: コントロールパネルのパフォーマンスを改善
|
||||
- クライアント: 自分のリアクション一覧を見れるように
|
||||
- 設定により、リアクション一覧を全員に公開することも可能
|
||||
- クライアント: ユーザー検索の精度を強化
|
||||
- クライアント: 新しいライトテーマを追加
|
||||
- クライアント: 新しいダークテーマを追加
|
||||
- API: ユーザーのリアクション一覧を取得する users/reactions を追加
|
||||
- API: users/search および users/search-by-username-and-host を強化
|
||||
- ミュート及びブロックのインポートを行えるように
|
||||
- クライアント: /share のクエリでリプライやファイル等の情報を渡せるように
|
||||
- チャートのsyncを毎日0時に自動で行うように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: テーマの管理が行えない問題を修正
|
||||
- API: アプリケーション通知が取得できない問題を修正
|
||||
- クライアント: リモートノートで意図せずローカルカスタム絵文字が使われてしまうことがあるのを修正
|
||||
- ActivityPub: not reacted な Undo.Like がinboxに滞留するのを修正
|
||||
|
||||
### Changes
|
||||
- 連合の考慮に問題があることなどが分かったため、モデレーターをブロックできない仕様を廃止しました
|
||||
- データベースにログを保存しないようになりました
|
||||
- ログを永続化したい場合はsyslogを利用してください
|
||||
|
||||
## 12.92.0 (2021/10/16)
|
||||
|
||||
### Improvements
|
||||
- アカウント登録にメールアドレスの設定を必須にするオプション
|
||||
- クライアント: 全体的なUIのブラッシュアップ
|
||||
- クライアント: MFM関数構文のサジェストを実装
|
||||
- クライアント: ノート本文を投稿フォーム内でプレビューできるように
|
||||
- クライアント: 未読の通知のみ表示する機能
|
||||
- クライアント: 通知ページで通知の種類によるフィルタ
|
||||
- クライアント: アニメーションを減らす設定の適用範囲を拡充
|
||||
- クライアント: 新しいダークテーマを追加
|
||||
- クライアント: テーマコンパイラに hue と saturate 関数を追加
|
||||
- ActivityPub: HTML -> MFMの変換を強化
|
||||
- API: グループから抜ける users/groups/leave エンドポイントを実装
|
||||
- API: i/notifications に unreadOnly オプションを追加
|
||||
- API: ap系のエンドポイントをログイン必須化+レートリミット追加
|
||||
- MFM: Add tag syntaxes of bold <b></b> and strikethrough <s></s>
|
||||
|
||||
### Bugfixes
|
||||
- Fix createDeleteAccountJob
|
||||
- admin inbox queue does not show individual jobs
|
||||
- クライアント: ヘッダーのタブが折り返される問題を修正
|
||||
- クライアント: ヘッダーにタブが表示されている状態でタイトルをクリックしたときにタブ選択が表示されるのを修正
|
||||
- クライアント: ユーザーページのタブが機能していない問題を修正
|
||||
- クライアント: ピン留めユーザーの設定項目がない問題を修正
|
||||
- クライアント: Deck UIにおいて、重ねたカラムの片方を畳んだ状態で右に出すと表示が壊れる問題を修正
|
||||
- API: 管理者およびモデレーターをブロックできてしまう問題を修正
|
||||
- MFM: Mentions in the link label are parsed as text
|
||||
- MFM: Add a property to the URL node indicating whether it was enclosed in <>
|
||||
- MFM: Disallows < and > in hashtags
|
||||
|
||||
### Changes
|
||||
- 保守性やユーザビリティの観点から、Misskeyのコマンドラインオプションが削除されました。
|
||||
- 必要であれば、代わりに環境変数で設定することができます
|
||||
- MFM: パフォーマンス、保守性、構文誤認識抑制の観点から、旧関数構文のサポートが削除されました。
|
||||
- 旧構文(`[foo bar]`)を使用せず、現行の構文(`$[foo bar]`)を使用してください。
|
||||
|
||||
## 12.91.0 (2021/09/22)
|
||||
|
||||
### Improvements
|
||||
- ActivityPub: リモートユーザーのDeleteアクティビティに対応
|
||||
- ActivityPub: add resolver check for blocked instance
|
||||
- ActivityPub: deliverキューのメモリ使用量を削減
|
||||
- API: 管理者用アカウント削除APIを実装(/admin/accounts/delete)
|
||||
- リモートユーザーの削除も可能に
|
||||
- アカウントが凍結された場合に、凍結された旨を表示してからログアウトするように
|
||||
- 凍結されたアカウントにログインしようとしたときに、凍結されている旨を表示するように
|
||||
- リスト、アンテナタイムラインを個別ページとして分割
|
||||
- UIの改善
|
||||
- MFMにsparklesエフェクトを追加
|
||||
- 非ログイン自は更新ダイアログを出さないように
|
||||
- クライアント起動時、アップデートが利用可能な場合エラー表示およびダイアログ表示しないように
|
||||
|
||||
### Bugfixes
|
||||
- アカウントデータのエクスポート/インポート処理ができない問題を修正
|
||||
- アンテナの既読が付かない問題を修正
|
||||
- popupで設定ページを表示すると、アカウントの削除ページにアクセスすることができない問題を修正
|
||||
- "問題が発生しました"ウィンドウを開くと☓ボタンがなくて閉じれない問題を修正
|
||||
|
||||
## 12.90.1 (2021/09/05)
|
||||
|
||||
### Bugfixes
|
||||
- Dockerfileを修正
|
||||
- ノート翻訳時に公開範囲が考慮されていない問題を修正
|
||||
|
||||
## 12.90.0 (2021/09/04)
|
||||
|
||||
### Improvements
|
||||
- 藍モード、および藍ウィジェット
|
||||
- クライアントに藍ちゃんを召喚することができるようになりました。
|
||||
- URLからのアップロード, APの添付ファイル, 外部ファイルのプロキシ等では、Privateアドレス等へのリクエストは拒否されるようになりました。
|
||||
- developmentで動作している場合は、この制限は適用されません。
|
||||
- Proxy使用時には、この制限は適用されません。
|
||||
Proxy使用時に同等の制限を行いたい場合は、Proxy側で設定を行う必要があります。
|
||||
- `default.yml`にて`allowedPrivateNetworks`にCIDRを追加することにより、宛先ネットワークを指定してこの制限から除外することが出来ます。
|
||||
- アップロード, ダウンロード出来るファイルサイズにハードリミットが適用されるようになりました。(約250MB)
|
||||
- `default.yml`にて`maxFileSize`を変更することにより、制限値を変更することが出来ます。
|
||||
|
||||
### Bugfixes
|
||||
- 管理者が最初にサインアップするページでログインされないのを修正
|
||||
- CWを維持する設定を復活
|
||||
- クライアントの表示を修正
|
||||
|
||||
## 12.89.2 (2021/08/24)
|
||||
|
||||
### Bugfixes
|
||||
- カスタムCSSを有効にしているとエラーになる問題を修正
|
||||
|
||||
## 12.89.1 (2021/08/24)
|
||||
|
||||
### Improvements
|
||||
- クライアントのデザインの調整
|
||||
|
||||
### Bugfixes
|
||||
- 翻訳でDeepLのProアカウントに対応していない問題を修正
|
||||
- インスタンス設定でDeepLのAuth Keyが空で表示される問題を修正
|
||||
- セキュリティの向上
|
||||
|
||||
## 12.89.0 (2021/08/21)
|
||||
|
||||
### Improvements
|
||||
- アカウント削除の安定性を向上
|
||||
- 絵文字オートコンプリートの挙動を改修
|
||||
- localStorageのaccountsはindexedDBで保持するように
|
||||
- ActivityPub: ジョブキューの試行タイミングを調整 (#7635)
|
||||
- API: sw/unregisterを追加
|
||||
- ワードミュートのドキュメントを追加
|
||||
- クライアントのデザインの調整
|
||||
- 依存関係の更新
|
||||
|
||||
### Bugfixes
|
||||
- チャンネルを作成しているとアカウントを削除できないのを修正
|
||||
- ノートの「削除して編集」をするとアンケートの選択肢が[object Object]になる問題を修正
|
||||
|
||||
## 12.88.0 (2021/08/17)
|
||||
|
||||
### Features
|
||||
- ノートの翻訳機能を追加
|
||||
- 有効にするには、サーバー管理者がDeepLの無料アカウントを登録し、取得した認証キーを「インスタンス設定 > その他 > DeepL Auth Key」に設定する必要があります。
|
||||
- Misskey更新時にダイアログを表示するように
|
||||
- ジョブキューウィジェットに警報音を鳴らす設定を追加
|
||||
|
||||
### Improvements
|
||||
- ブロックの挙動を改修
|
||||
- ブロックされたユーザーがブロックしたユーザーに対してアクション出来ないようになりました。詳細はドキュメントをご確認ください。
|
||||
- UIデザインの調整
|
||||
- データベースのインデックスを最適化
|
||||
- Proxy使用時にKeep-Aliveをサポート
|
||||
- DNSキャッシュでネガティブキャッシュをサポート
|
||||
- 依存関係の更新
|
||||
|
||||
### Bugfixes
|
||||
- タッチ操作でウィンドウを閉じることができない問題を修正
|
||||
- Renoteされた時刻が投稿された時刻のように表示される問題を修正
|
||||
- コントロールパネルでファイルを削除した際の表示を修正
|
||||
- ActivityPub: 長いユーザーの名前や自己紹介の対応
|
||||
|
||||
## 12.87.0 (2021/08/12)
|
||||
|
||||
### Improvements
|
||||
- 絵文字オートコンプリートで一文字目は最近使った絵文字をサジェストするように
|
||||
- 絵文字オートコンプリートのパフォーマンスを改善
|
||||
- about-misskeyページにドキュメントへのリンクを追加
|
||||
- Docker: Node.jsを16.6.2に
|
||||
- 依存関係の更新
|
||||
- 翻訳の更新
|
||||
|
||||
### Bugfixes
|
||||
- Misskey更新時、テーマキャッシュの影響でスタイルがおかしくなる問題を修正
|
||||
|
||||
## 12.86.0 (2021/08/11)
|
||||
|
||||
### Improvements
|
||||
- ドキュメントの更新
|
||||
- ドキュメントにchangelogを追加
|
||||
- ぼかし効果のオプションを追加
|
||||
- Vueを3.2.1に更新
|
||||
- UIの調整
|
||||
|
||||
### Bugfixes
|
||||
- ハッシュタグ入力が空のときに#が付くのを修正
|
||||
- フォローリクエストのEメール通知を修正
|
706
CHANGELOG.md
706
CHANGELOG.md
|
@ -1,669 +1,51 @@
|
|||
<!--
|
||||
## 12.x.x (unreleased)
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
### Improvements
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
### Bugfixes
|
||||
-
|
||||
This changelog covers changes since Misskey v12.111.1, the version prior to the FoundKey fork.
|
||||
For older Misskey versions, see [CHANGELOG-OLD.md](./CHANGELOG-OLD.md).
|
||||
|
||||
You should also include the user name that made the change.
|
||||
-->
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Server: Replies can now be fetched recursively.
|
||||
|
||||
## 12.x.x (unreleased)
|
||||
|
||||
### Improvements
|
||||
### Changed
|
||||
- Server: Replies/quotes cannot have a more open visibility than the parent post
|
||||
- Client: Searching in the emoji picker is now case insensitive
|
||||
- Client: MFM search button changed to a no-op
|
||||
- Client: Fix URL-encoded routing
|
||||
- Server: Allow GET method for some endpoints @syuilo
|
||||
- Server: Add rate limit to i/notifications @tamaina
|
||||
- Client: Improve control panel @syuilo
|
||||
- Client: Show warning in control panel when there is an unresolved abuse report @syuilo
|
||||
- Client: For notes with specified visibility, show recipients when hovering over visibility symbol. @Johann150
|
||||
- Client: Add rss-marquee widget @syuilo
|
||||
- Client: Removing entries from a clip @futchitwo
|
||||
- Make possible to delete an account by admin @syuilo
|
||||
- Improve player detection in URL preview @mei23
|
||||
- Add Badge Image to Push Notification #8012 @tamaina
|
||||
- Server: Allow GET method for some endpoints
|
||||
- Server: Add rate limit to i/notifications
|
||||
- Client: Improve control panel
|
||||
- Client: Show warning in control panel when there is an unresolved abuse report
|
||||
- Client: For notes with specified visibility, show recipients when hovering over visibility symbol.
|
||||
- Client: Add rss-ticker widget
|
||||
- Client: Removing entries from a clip
|
||||
- Client: Poll highlights in explore page
|
||||
- Make possible to delete an account by admin
|
||||
- Improve player detection in URL preview
|
||||
- Add Badge Image to Push Notification
|
||||
- Server: Improve performance
|
||||
- Server: Supports IPv6 on Redis transport. @mei23
|
||||
- Server: Supports IPv6 on Redis transport.
|
||||
IPv4/IPv6 is used by default. You can tune this behavior via `redis.family`.
|
||||
|
||||
### Bugfixes
|
||||
- Server: Fix GenerateVideoThumbnail failed @mei23
|
||||
- Server: Ensure temp directory cleanup @Johann150
|
||||
- favicons of federated instances not showing @syuilo
|
||||
|
||||
## 12.111.1 (2022/06/13)
|
||||
|
||||
### Bugfixes
|
||||
- some fixes of multiple notification read @tamaina
|
||||
- some GenerateVideoThumbnail failed @Johann150
|
||||
- Client: デッキでウィジェットの情報が保存されない問題を修正 @syuilo
|
||||
- Client: ギャラリーの投稿を開こうとすると編集画面が表示される @futchitwo
|
||||
|
||||
## 12.111.0 (2022/06/11)
|
||||
### Note
|
||||
- Node.js 16.15.0 or later is required
|
||||
|
||||
### Improvements
|
||||
- Supports Unicode Emoji 14.0 @mei23
|
||||
- プッシュ通知を複数アカウント対応に #7667 @tamaina
|
||||
- プッシュ通知にクリックやactionを設定 #7667 @tamaina
|
||||
- ドライブに画像ファイルをアップロードするときオリジナル画像を破棄してwebpublicのみ保持するオプション @tamaina
|
||||
- Server: always remove completed tasks of job queue @Johann150
|
||||
- Client: アバターの設定で画像をクロップできるように @syuilo
|
||||
- Client: make emoji stand out more on reaction button @Johann150
|
||||
- Client: display URL of QR code for TOTP registration @tamaina
|
||||
- Client: render quote renote CWs as MFM @pixeldesu
|
||||
- API: notifications/readは配列でも受け付けるように #7667 @tamaina
|
||||
- API: ユーザー検索で、クエリがusernameの条件を満たす場合はusernameもLIKE検索するように @tamaina
|
||||
- MFM: Allow speed changes in all animated MFMs @Johann150
|
||||
- The theme color is now better validated. @Johann150
|
||||
Your own theme color may be unset if it was in an invalid format.
|
||||
Admins should check their instance settings if in doubt.
|
||||
- Perform port diagnosis at startup only when Listen fails @mei23
|
||||
- Rate limiting is now also usable for non-authenticated users. @Johann150 @mei23
|
||||
Admins should make sure the reverse proxy sets the `X-Forwarded-For` header to the original address.
|
||||
|
||||
### Bugfixes
|
||||
- Server: keep file order of note attachement @Johann150
|
||||
- Server: fix missing foreign key for reports leading to reports page being unusable @Johann150
|
||||
- Server: fix internal in-memory caching @Johann150
|
||||
- Server: prevent crash when processing certain PNGs @syuilo
|
||||
- Server: Fix unable to generate video thumbnails @mei23
|
||||
- Server: Fix `Cannot find module` issue @mei23
|
||||
- Federation: Add rel attribute to host-meta @mei23
|
||||
- Federation: add id for activitypub follows @Johann150
|
||||
- Federation: use `source` instead of `_misskey_content` @Johann150
|
||||
- Federation: ensure resolver does not fetch local resources via HTTP(S) @Johann150
|
||||
- Federation: correctly render empty note text @Johann150
|
||||
- Federation: Fix quote renotes containing no text being federated correctly @Johann150
|
||||
- Federation: remove duplicate br tag/newline @Johann150
|
||||
- Federation: add missing authorization checks @Johann150
|
||||
- Client: fix profile picture height in mentions @tamaina
|
||||
- Client: fix abuse reports page to be able to show all reports @Johann150
|
||||
- Client: fix settings page @tamaina
|
||||
- Client: fix profile tabs @futchitwo
|
||||
- Client: fix popout URL @futchitwo
|
||||
- Client: correctly handle MiAuth URLs with query string @sn0w
|
||||
- Client: ノート詳細ページの新しいノートを表示する機能の動作が正しくなるように修正する @xianonn
|
||||
- MFM: more animated functions support `speed` parameter @futchitwo
|
||||
- MFM: limit large MFM @Johann150
|
||||
|
||||
## 12.110.1 (2022/04/23)
|
||||
|
||||
### Bugfixes
|
||||
- Fix GOP rendering @syuilo
|
||||
- Improve performance of antenna, clip, and list @xianonn
|
||||
|
||||
## 12.110.0 (2022/04/11)
|
||||
|
||||
### Improvements
|
||||
- Improve webhook @syuilo
|
||||
- Client: Show loading icon on splash screen @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- API: parameter validation of users/show was wrong
|
||||
- Federation: リモートインスタンスへのダイレクト投稿が届かない問題を修正 @syuilo
|
||||
|
||||
## 12.109.2 (2022/04/03)
|
||||
|
||||
### Bugfixes
|
||||
- API: admin/update-meta was not working @syuilo
|
||||
- Client: テーマを切り替えたり読み込んだりするとmeta[name="theme-color"]のcontentがundefinedになる問題を修正 @tamaina
|
||||
|
||||
## 12.109.1 (2022/04/02)
|
||||
|
||||
### Bugfixes
|
||||
- API: Renoteが行えない問題を修正
|
||||
|
||||
## 12.109.0 (2022/04/02)
|
||||
|
||||
### Improvements
|
||||
- Webhooks @syuilo
|
||||
- Bull Dashboardを組み込み、ジョブキューの確認や操作を行えるように @syuilo
|
||||
- Bull Dashboardを開くには、最初だけ一旦ログアウトしてから再度管理者権限を持つアカウントでログインする必要があります
|
||||
- Check that installed Node.js version fulfills version requirement @ThatOneCalculator
|
||||
- Server: overall performance improvements @syuilo
|
||||
- Federation: avoid duplicate activity delivery @Johann150
|
||||
- Federation: limit federation of reactions on direct notes @Johann150
|
||||
- Client: タッチパッド・タッチスクリーンでのデッキの操作性を向上 @tamaina
|
||||
|
||||
### Bugfixes
|
||||
- email address validation was not working @ybw2016v
|
||||
- API: fix endpoint endpoint @Johann150
|
||||
- API: fix admin/meta endpoint @syuilo
|
||||
- API: improved validation and documentation for endpoints that accept different variants of input @Johann150
|
||||
- API: `notes/create`: The `mediaIds` property is now deprecated. @Johann150
|
||||
- Use `fileIds` instead, it has the same behaviour.
|
||||
- Client: URIエンコーディングが異常でdecodeURIComponentが失敗するとURLが表示できなくなる問題を修正 @tamaina
|
||||
|
||||
## 12.108.1 (2022/03/12)
|
||||
|
||||
### Bugfixes
|
||||
- リレーが動作しない問題を修正 @xianonn
|
||||
- ulidを使用していると動作しない問題を修正 @syuilo
|
||||
- 外部からOGPが正しく取得できない問題を修正 @syuilo
|
||||
- instance can not get the files from other instance when there are items in allowedPrivateNetworks in .config/default.yml @ybw2016v
|
||||
|
||||
## 12.108.0 (2022/03/09)
|
||||
|
||||
### NOTE
|
||||
このバージョンからNode v16.14.0以降が必要です
|
||||
|
||||
### Changes
|
||||
- ノートの最大文字数を設定できる機能が廃止され、デフォルトで一律3000文字になりました @syuilo
|
||||
- Misskey can no longer terminate HTTPS connections. @Johann150
|
||||
- If you did not use a reverse proxy (e.g. nginx) before, you will probably need to adjust
|
||||
your configuration file and set up a reverse proxy. The `https` configuration key is no
|
||||
longer recognized!
|
||||
|
||||
### Improvements
|
||||
- インスタンスデフォルトテーマを設定できるように @syuilo
|
||||
- ミュートに期限を設定できるように @syuilo
|
||||
- アンケートが終了したときに通知が作成されるように @syuilo
|
||||
- プロフィールの追加情報を最大16まで保存できるように @syuilo
|
||||
- 連合チャートにPub&Subを追加 @syuilo
|
||||
- 連合チャートにActiveを追加 @syuilo
|
||||
- デフォルトで10秒以上時間がかかるデータベースへのクエリは中断されるように @syuilo
|
||||
- 設定ファイルの`db.extra`に`statement_timeout`を設定することでタイムアウト時間を変更できます
|
||||
- Client: スプラッシュスクリーンにインスタンスのアイコンを表示するように @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- Client: リアクションピッカーの高さが低くなったまま戻らないことがあるのを修正 @syuilo
|
||||
- Client: ユーザー名オートコンプリートが正しく動作しない問題を修正 @syuilo
|
||||
- Client: タッチ操作だとウィジェットの編集がしにくいのを修正 @xianonn
|
||||
- Client: register_note_view_interruptor()が動かないのを修正 @syuilo
|
||||
- Client: iPhone X以降(?)でページの内容が全て表示しきれないのを修正 @tamaina
|
||||
- Client: fix image caption on mobile @nullobsi
|
||||
|
||||
## 12.107.0 (2022/02/12)
|
||||
|
||||
### Improvements
|
||||
- クライアント: テーマを追加 @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- API: stats APIで内部エラーが発生する問題を修正 @syuilo
|
||||
- クライアント: ソフトミュートですべてがマッチしてしまう場合があるのを修正 @tamaina
|
||||
- クライアント: デバイスのスクリーンのセーフエリアを考慮するように @syuilo
|
||||
- クライアント: 一部環境でサイドバーの投稿ボタンが表示されない問題を修正 @syuilo
|
||||
|
||||
## 12.106.3 (2022/02/11)
|
||||
|
||||
### Improvements
|
||||
- クライアント: スマートフォンでの余白を調整 @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ノートの詳細が表示されない問題を修正 @syuilo
|
||||
|
||||
## 12.106.2 (2022/02/11)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 削除したノートがタイムラインから自動で消えない問題を修正 @syuilo
|
||||
- クライアント: リアクション数が正しくないことがある問題を修正 @syuilo
|
||||
- 一部環境でマイグレーションが動作しない問題を修正 @syuilo
|
||||
|
||||
## 12.106.1 (2022/02/11)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ワードミュートが保存できない問題を修正 @syuilo
|
||||
|
||||
## 12.106.0 (2022/02/11)
|
||||
|
||||
### Improvements
|
||||
- Improve federation chart @syuilo
|
||||
- クライアント: リアクションピッカーのサイズを設定できるように @syuilo
|
||||
- クライアント: リアクションピッカーの幅、高さ制限を緩和 @syuilo
|
||||
- Docker: Update to Node v16.13.2 @mei23
|
||||
- Update dependencies
|
||||
|
||||
### Bugfixes
|
||||
- validate regular expressions in word mutes @Johann150
|
||||
|
||||
## 12.105.0 (2022/02/09)
|
||||
|
||||
### Improvements
|
||||
- インスタンスのテーマカラーを設定できるように @syuilo
|
||||
|
||||
### Bugfixes
|
||||
- 一部環境でマイグレーションが失敗する問題を修正 @syuilo
|
||||
|
||||
## 12.104.0 (2022/02/09)
|
||||
|
||||
### Note
|
||||
ビルドする前に`npm run clean`を実行してください。
|
||||
|
||||
このリリースはマイグレーションの規模が大きいため、インスタンスによってはマイグレーションに時間がかかる可能性があります。
|
||||
マイグレーションが終わらない場合は、チャートの情報はリセットされてしまいますが`__chart__`で始まるテーブルの**レコード**を全て削除(テーブル自体は消さないでください)してから再度試す方法もあります。
|
||||
|
||||
### Improvements
|
||||
- チャートエンジンの強化 @syuilo
|
||||
- テーブルサイズの削減
|
||||
- notes/instance/perUserNotesチャートに添付ファイル付きノートの数を追加
|
||||
- activeUsersチャートに新しい項目を追加
|
||||
- federationチャートに新しい項目を追加
|
||||
- apRequestチャートを追加
|
||||
- networkチャート廃止
|
||||
- クライアント: 自インスタンス情報ページでチャートを見れるように @syuilo
|
||||
- クライアント: デバイスの種類を手動指定できるように @syuilo
|
||||
- クライアント: UIのアイコンを更新 @syuilo
|
||||
- クライアント: UIのアイコンをセルフホスティングするように @syuilo
|
||||
- NodeInfo のユーザー数と投稿数の内容を見直す @xianonn
|
||||
|
||||
### Bugfixes
|
||||
- Client: タイムライン種別を切り替えると「新しいノートがあります」の表示が残留してしまうのを修正 @tamaina
|
||||
- Client: UIのサイズがおかしくなる問題の修正 @tamaina
|
||||
- Client: Setting instance information of notes to always show breaks the timeline @Johann150
|
||||
- Client: 環境に依っては返信する際のカーソル位置が正しくない問題を修正 @syuilo
|
||||
- Client: コントロールパネルのユーザー、ファイルにて、インスタンスの表示範囲切り替えが機能しない問題を修正 @syuilo
|
||||
- Client: アップデートお知らせダイアログが出ないのを修正 @syuilo
|
||||
- Client: Follows/Followers Visibility changes won't be saved unless clicking on an other checkbox @Johann150
|
||||
- API: Fix API cast @mei23
|
||||
- add instance favicon where it's missing @solfisher
|
||||
- チャートの定期resyncが動作していない問題を修正 @syuilo
|
||||
|
||||
## 12.103.1 (2022/02/02)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ツールチップの表示位置が正しくない問題を修正
|
||||
|
||||
## 12.103.0 (2022/02/02)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 連合インスタンスページからインスタンス情報再取得を行えるように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 投稿のNSFW画像を表示したあとにリアクションが更新されると画像が非表示になる問題を修正
|
||||
- クライアント: 「クリップ」ページが開かない問題を修正
|
||||
- クライアント: トレンドウィジェットが動作しないのを修正
|
||||
- クライアント: フェデレーションウィジェットが動作しないのを修正
|
||||
- クライアント: リアクション設定で絵文字ピッカーが開かないのを修正
|
||||
- クライアント: DMページでメンションが含まれる問題を修正
|
||||
- クライアント: 投稿フォームのハッシュタグ保持フィールドが動作しない問題を修正
|
||||
- クライアント: サイドビューが動かないのを修正
|
||||
- クライアント: ensure that specified users does not get duplicates
|
||||
- Add `img-src` and `media-src` directives to `Content-Security-Policy` for
|
||||
files and media proxy
|
||||
|
||||
## 12.102.1 (2022/01/27)
|
||||
### Bugfixes
|
||||
- チャットが表示できない問題を修正
|
||||
|
||||
## 12.102.0 (2022/01/27)
|
||||
|
||||
### NOTE
|
||||
アップデート後、一部カスタム絵文字が表示できなくなる場合があります。その場合、一旦絵文字管理ページから絵文字を一括エクスポートし、再度コントロールパネルから一括インポートすると直ります。
|
||||
⚠ 12.102.0以前にエクスポートされたzipとは互換性がありません。アップデートしてからエクスポートを行なってください。
|
||||
|
||||
### Changes
|
||||
- Room機能が削除されました
|
||||
- 後日別リポジトリとして復活予定です
|
||||
- リバーシ機能が削除されました
|
||||
- 後日別リポジトリとして復活予定です
|
||||
- Chat UIが削除されました
|
||||
- ノートに添付できるファイルの数が16に増えました
|
||||
- カスタム絵文字にSVGを指定した場合、PNGに変換されて表示されるようになりました
|
||||
|
||||
### Improvements
|
||||
- カスタム絵文字一括編集機能
|
||||
- カスタム絵文字一括インポート
|
||||
- 投稿フォームで一時的に投稿するアカウントを切り替えられるように
|
||||
- Unifying Misskey-specific IRIs in JSON-LD `@context`
|
||||
- クライアントのパフォーマンス向上
|
||||
- セキュリティの向上
|
||||
|
||||
### Bugfixes
|
||||
- アップロードエラー時の処理を修正
|
||||
|
||||
## 12.101.1 (2021/12/29)
|
||||
|
||||
### Bugfixes
|
||||
- SVG絵文字が表示できないのを修正
|
||||
- エクスポートした絵文字の拡張子がfalseになることがあるのを修正
|
||||
|
||||
## 12.101.0 (2021/12/29)
|
||||
|
||||
### Improvements
|
||||
- クライアント: ノートプレビューの精度を改善
|
||||
- クライアント: MFM sparkleエフェクトの改善
|
||||
- クライアント: デザインの調整
|
||||
- セキュリティの向上
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- fix html blockquote conversion
|
||||
|
||||
## 12.100.2 (2021/12/18)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: Deckカラムの増減がページをリロードするまで正しく反映されない問題を修正
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
- クライアント: カスタム絵文字一覧ページの負荷が高いのを修正
|
||||
|
||||
## 12.100.1 (2021/12/17)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: デザインの調整
|
||||
|
||||
## 12.100.0 (2021/12/17)
|
||||
|
||||
### Improvements
|
||||
- クライアント: モバイルでの各種メニュー、リアクションピッカーの表示を改善
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 一部のコンポーネントが裏に隠れるのを修正
|
||||
|
||||
## 12.99.3 (2021/12/14)
|
||||
### Bugfixes
|
||||
- クライアント: オートコンプリートがダイアログの裏に隠れる問題を修正
|
||||
|
||||
## 12.99.2 (2021/12/14)
|
||||
|
||||
## 12.99.1 (2021/12/14)
|
||||
|
||||
## 12.99.0 (2021/12/14)
|
||||
|
||||
### Improvements
|
||||
- Added a user-level instance mute in user settings
|
||||
- フォローエクスポートでミュートしているユーザーを含めないオプションを追加
|
||||
- フォローエクスポートで使われていないアカウントを含めないオプションを追加
|
||||
- カスタム絵文字エクスポート機能
|
||||
- チャートのパフォーマンスの改善
|
||||
- グループから抜けられるように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: タッチ機能付きディスプレイを使っていてマウス操作をしている場合に一部機能が動作しない問題を修正
|
||||
- クライアント: クリップの設定を編集できない問題を修正
|
||||
- クライアント: メニューなどがウィンドウの裏に隠れる問題を修正
|
||||
|
||||
## 12.98.0 (2021/12/03)
|
||||
|
||||
### Improvements
|
||||
- API: /antennas/notes API で日付による絞り込みができるように
|
||||
- クライアント: アンケートに投票する際に確認ダイアログを出すように
|
||||
- クライアント: Renoteなノート詳細ページから元のノートページに遷移できるように
|
||||
- クライアント: 画像ポップアップでクリックで閉じられるように
|
||||
- クライアント: デザインの調整
|
||||
- フォロワーを解除できる機能
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: LTLやGTLが無効になっている場合でもUI上にタブが表示される問題を修正
|
||||
- クライアント: ログインにおいてパスワードが誤っている際のエラーメッセージが正しく表示されない問題を修正
|
||||
- クライアント: リアクションツールチップ、Renoteツールチップのユーザーの並び順を修正
|
||||
- クライアント: サウンドのマスターボリュームが正しく保存されない問題を修正
|
||||
- クライアント: 一部環境において通知が表示されると操作不能になる問題を修正
|
||||
- クライアント: モバイルでタップしたときにツールチップが表示される問題を修正
|
||||
- クライアント: リモートインスタンスのノートに返信するとき、対象のノートにそのリモートインスタンス内のユーザーへのメンションが含まれていると、返信テキスト内にローカルユーザーへのメンションとして引き継がれてしまう場合がある問題を修正
|
||||
- クライアント: 画像ビューワーで全体表示した時に上側の一部しか表示されない画像がある問題を修正
|
||||
- API: ユーザーを取得時に条件によっては内部エラーになる問題を修正
|
||||
|
||||
### Changes
|
||||
- クライアント: ノートにモデレーターバッジを表示するのを廃止
|
||||
|
||||
## 12.97.0 (2021/11/19)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 返信先やRenoteに対しても自動折りたたみされるように
|
||||
- クライアント: 長いスレッドの表示を改善
|
||||
- クライアント: 翻訳にもMFMを適用し、元の文章の改行などを保持するように
|
||||
- クライアント: アカウント削除に確認ダイアログを出すように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ユーザー検索の「全て」が動作しない問題を修正
|
||||
- クライアント: リアクション一覧、Renote一覧ツールチップのスタイルを修正
|
||||
|
||||
## 12.96.1 (2021/11/13)
|
||||
### Improvements
|
||||
- npm scriptの互換性を向上
|
||||
|
||||
## 12.96.0 (2021/11/13)
|
||||
|
||||
### Improvements
|
||||
- フォロー/フォロワーを非公開にできるように
|
||||
- インスタンスプロフィールレンダリング ready
|
||||
- 通知のリアクションアイコンをホバーで拡大できるように
|
||||
- RenoteボタンをホバーでRenoteしたユーザー一覧を表示するように
|
||||
- 返信の際にメンションを含めるように
|
||||
- 通報があったときに管理者へEメールで通知されるように
|
||||
- メールアドレスのバリデーションを強化
|
||||
|
||||
### Bugfixes
|
||||
- アカウント削除処理があると高負荷になる問題を修正
|
||||
- クライアント: 長いメニューが画面からはみ出す問題を修正
|
||||
- クライアント: コントロールパネルのジョブキューに個々のジョブが表示されないのを修正
|
||||
- クライアント: fix missing i18n string
|
||||
- fix html conversion issue with code blocks
|
||||
|
||||
### Changes
|
||||
- ノートにモバイルからの投稿か否かの情報を含めないように
|
||||
|
||||
## 12.95.0 (2021/10/31)
|
||||
|
||||
### Improvements
|
||||
- スレッドミュート機能
|
||||
|
||||
### Bugfixes
|
||||
- リレー向けのActivityが一部実装で除外されてしまうことがあるのを修正
|
||||
- 削除したノートやユーザーがリモートから参照されると復活することがあるのを修正
|
||||
- クライアント: ページ編集時のドロップダウンメニューなどが動作しない問題を修正
|
||||
- クライアント: コントロールパネルのカスタム絵文字タブが切り替わらないように見える問題を修正
|
||||
- API: ユーザー情報の hasUnreadChannel が常に false になっている問題を修正
|
||||
|
||||
## 12.94.1 (2021/10/25)
|
||||
|
||||
### Improvements
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ユーザーページのナビゲーションが失敗する問題を修正
|
||||
|
||||
## 12.94.0 (2021/10/25)
|
||||
|
||||
### Improvements
|
||||
- クライアント: 画像ビューアを強化
|
||||
- クライアント: メンションにユーザーのアバターを表示するように
|
||||
- クライアント: デザインの調整
|
||||
- クライアント: twemojiをセルフホスティングするように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: CWで画像が隠されたとき、画像の高さがおかしいことになる問題を修正
|
||||
|
||||
### NOTE
|
||||
- このバージョンから、iOS 15未満のサポートがされなくなります。対象のバージョンをお使いの方は、iOSのバージョンアップを行ってください。
|
||||
|
||||
## 12.93.2 (2021/10/23)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: ウィジェットを追加できない問題を修正
|
||||
|
||||
## 12.93.1 (2021/10/23)
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: 通知上でローカルのリアクションが表示されないのを修正
|
||||
|
||||
## 12.93.0 (2021/10/23)
|
||||
|
||||
### Improvements
|
||||
- クライアント: コントロールパネルのパフォーマンスを改善
|
||||
- クライアント: 自分のリアクション一覧を見れるように
|
||||
- 設定により、リアクション一覧を全員に公開することも可能
|
||||
- クライアント: ユーザー検索の精度を強化
|
||||
- クライアント: 新しいライトテーマを追加
|
||||
- クライアント: 新しいダークテーマを追加
|
||||
- API: ユーザーのリアクション一覧を取得する users/reactions を追加
|
||||
- API: users/search および users/search-by-username-and-host を強化
|
||||
- ミュート及びブロックのインポートを行えるように
|
||||
- クライアント: /share のクエリでリプライやファイル等の情報を渡せるように
|
||||
- チャートのsyncを毎日0時に自動で行うように
|
||||
|
||||
### Bugfixes
|
||||
- クライアント: テーマの管理が行えない問題を修正
|
||||
- API: アプリケーション通知が取得できない問題を修正
|
||||
- クライアント: リモートノートで意図せずローカルカスタム絵文字が使われてしまうことがあるのを修正
|
||||
- ActivityPub: not reacted な Undo.Like がinboxに滞留するのを修正
|
||||
|
||||
### Changes
|
||||
- 連合の考慮に問題があることなどが分かったため、モデレーターをブロックできない仕様を廃止しました
|
||||
- データベースにログを保存しないようになりました
|
||||
- ログを永続化したい場合はsyslogを利用してください
|
||||
|
||||
## 12.92.0 (2021/10/16)
|
||||
|
||||
### Improvements
|
||||
- アカウント登録にメールアドレスの設定を必須にするオプション
|
||||
- クライアント: 全体的なUIのブラッシュアップ
|
||||
- クライアント: MFM関数構文のサジェストを実装
|
||||
- クライアント: ノート本文を投稿フォーム内でプレビューできるように
|
||||
- クライアント: 未読の通知のみ表示する機能
|
||||
- クライアント: 通知ページで通知の種類によるフィルタ
|
||||
- クライアント: アニメーションを減らす設定の適用範囲を拡充
|
||||
- クライアント: 新しいダークテーマを追加
|
||||
- クライアント: テーマコンパイラに hue と saturate 関数を追加
|
||||
- ActivityPub: HTML -> MFMの変換を強化
|
||||
- API: グループから抜ける users/groups/leave エンドポイントを実装
|
||||
- API: i/notifications に unreadOnly オプションを追加
|
||||
- API: ap系のエンドポイントをログイン必須化+レートリミット追加
|
||||
- MFM: Add tag syntaxes of bold <b></b> and strikethrough <s></s>
|
||||
|
||||
### Bugfixes
|
||||
- Fix createDeleteAccountJob
|
||||
- admin inbox queue does not show individual jobs
|
||||
- クライアント: ヘッダーのタブが折り返される問題を修正
|
||||
- クライアント: ヘッダーにタブが表示されている状態でタイトルをクリックしたときにタブ選択が表示されるのを修正
|
||||
- クライアント: ユーザーページのタブが機能していない問題を修正
|
||||
- クライアント: ピン留めユーザーの設定項目がない問題を修正
|
||||
- クライアント: Deck UIにおいて、重ねたカラムの片方を畳んだ状態で右に出すと表示が壊れる問題を修正
|
||||
- API: 管理者およびモデレーターをブロックできてしまう問題を修正
|
||||
- MFM: Mentions in the link label are parsed as text
|
||||
- MFM: Add a property to the URL node indicating whether it was enclosed in <>
|
||||
- MFM: Disallows < and > in hashtags
|
||||
|
||||
### Changes
|
||||
- 保守性やユーザビリティの観点から、Misskeyのコマンドラインオプションが削除されました。
|
||||
- 必要であれば、代わりに環境変数で設定することができます
|
||||
- MFM: パフォーマンス、保守性、構文誤認識抑制の観点から、旧関数構文のサポートが削除されました。
|
||||
- 旧構文(`[foo bar]`)を使用せず、現行の構文(`$[foo bar]`)を使用してください。
|
||||
|
||||
## 12.91.0 (2021/09/22)
|
||||
|
||||
### Improvements
|
||||
- ActivityPub: リモートユーザーのDeleteアクティビティに対応
|
||||
- ActivityPub: add resolver check for blocked instance
|
||||
- ActivityPub: deliverキューのメモリ使用量を削減
|
||||
- API: 管理者用アカウント削除APIを実装(/admin/accounts/delete)
|
||||
- リモートユーザーの削除も可能に
|
||||
- アカウントが凍結された場合に、凍結された旨を表示してからログアウトするように
|
||||
- 凍結されたアカウントにログインしようとしたときに、凍結されている旨を表示するように
|
||||
- リスト、アンテナタイムラインを個別ページとして分割
|
||||
- UIの改善
|
||||
- MFMにsparklesエフェクトを追加
|
||||
- 非ログイン自は更新ダイアログを出さないように
|
||||
- クライアント起動時、アップデートが利用可能な場合エラー表示およびダイアログ表示しないように
|
||||
|
||||
### Bugfixes
|
||||
- アカウントデータのエクスポート/インポート処理ができない問題を修正
|
||||
- アンテナの既読が付かない問題を修正
|
||||
- popupで設定ページを表示すると、アカウントの削除ページにアクセスすることができない問題を修正
|
||||
- "問題が発生しました"ウィンドウを開くと☓ボタンがなくて閉じれない問題を修正
|
||||
|
||||
## 12.90.1 (2021/09/05)
|
||||
|
||||
### Bugfixes
|
||||
- Dockerfileを修正
|
||||
- ノート翻訳時に公開範囲が考慮されていない問題を修正
|
||||
|
||||
## 12.90.0 (2021/09/04)
|
||||
|
||||
### Improvements
|
||||
- 藍モード、および藍ウィジェット
|
||||
- クライアントに藍ちゃんを召喚することができるようになりました。
|
||||
- URLからのアップロード, APの添付ファイル, 外部ファイルのプロキシ等では、Privateアドレス等へのリクエストは拒否されるようになりました。
|
||||
- developmentで動作している場合は、この制限は適用されません。
|
||||
- Proxy使用時には、この制限は適用されません。
|
||||
Proxy使用時に同等の制限を行いたい場合は、Proxy側で設定を行う必要があります。
|
||||
- `default.yml`にて`allowedPrivateNetworks`にCIDRを追加することにより、宛先ネットワークを指定してこの制限から除外することが出来ます。
|
||||
- アップロード, ダウンロード出来るファイルサイズにハードリミットが適用されるようになりました。(約250MB)
|
||||
- `default.yml`にて`maxFileSize`を変更することにより、制限値を変更することが出来ます。
|
||||
|
||||
### Bugfixes
|
||||
- 管理者が最初にサインアップするページでログインされないのを修正
|
||||
- CWを維持する設定を復活
|
||||
- クライアントの表示を修正
|
||||
|
||||
## 12.89.2 (2021/08/24)
|
||||
|
||||
### Bugfixes
|
||||
- カスタムCSSを有効にしているとエラーになる問題を修正
|
||||
|
||||
## 12.89.1 (2021/08/24)
|
||||
|
||||
### Improvements
|
||||
- クライアントのデザインの調整
|
||||
|
||||
### Bugfixes
|
||||
- 翻訳でDeepLのProアカウントに対応していない問題を修正
|
||||
- インスタンス設定でDeepLのAuth Keyが空で表示される問題を修正
|
||||
- セキュリティの向上
|
||||
|
||||
## 12.89.0 (2021/08/21)
|
||||
|
||||
### Improvements
|
||||
- アカウント削除の安定性を向上
|
||||
- 絵文字オートコンプリートの挙動を改修
|
||||
- localStorageのaccountsはindexedDBで保持するように
|
||||
- ActivityPub: ジョブキューの試行タイミングを調整 (#7635)
|
||||
- API: sw/unregisterを追加
|
||||
- ワードミュートのドキュメントを追加
|
||||
- クライアントのデザインの調整
|
||||
- 依存関係の更新
|
||||
|
||||
### Bugfixes
|
||||
- チャンネルを作成しているとアカウントを削除できないのを修正
|
||||
- ノートの「削除して編集」をするとアンケートの選択肢が[object Object]になる問題を修正
|
||||
|
||||
## 12.88.0 (2021/08/17)
|
||||
|
||||
### Features
|
||||
- ノートの翻訳機能を追加
|
||||
- 有効にするには、サーバー管理者がDeepLの無料アカウントを登録し、取得した認証キーを「インスタンス設定 > その他 > DeepL Auth Key」に設定する必要があります。
|
||||
- Misskey更新時にダイアログを表示するように
|
||||
- ジョブキューウィジェットに警報音を鳴らす設定を追加
|
||||
|
||||
### Improvements
|
||||
- ブロックの挙動を改修
|
||||
- ブロックされたユーザーがブロックしたユーザーに対してアクション出来ないようになりました。詳細はドキュメントをご確認ください。
|
||||
- UIデザインの調整
|
||||
- データベースのインデックスを最適化
|
||||
- Proxy使用時にKeep-Aliveをサポート
|
||||
- DNSキャッシュでネガティブキャッシュをサポート
|
||||
- 依存関係の更新
|
||||
|
||||
### Bugfixes
|
||||
- タッチ操作でウィンドウを閉じることができない問題を修正
|
||||
- Renoteされた時刻が投稿された時刻のように表示される問題を修正
|
||||
- コントロールパネルでファイルを削除した際の表示を修正
|
||||
- ActivityPub: 長いユーザーの名前や自己紹介の対応
|
||||
|
||||
## 12.87.0 (2021/08/12)
|
||||
|
||||
### Improvements
|
||||
- 絵文字オートコンプリートで一文字目は最近使った絵文字をサジェストするように
|
||||
- 絵文字オートコンプリートのパフォーマンスを改善
|
||||
- about-misskeyページにドキュメントへのリンクを追加
|
||||
- Docker: Node.jsを16.6.2に
|
||||
- 依存関係の更新
|
||||
- 翻訳の更新
|
||||
|
||||
### Bugfixes
|
||||
- Misskey更新時、テーマキャッシュの影響でスタイルがおかしくなる問題を修正
|
||||
|
||||
## 12.86.0 (2021/08/11)
|
||||
|
||||
### Improvements
|
||||
- ドキュメントの更新
|
||||
- ドキュメントにchangelogを追加
|
||||
- ぼかし効果のオプションを追加
|
||||
- Vueを3.2.1に更新
|
||||
- UIの調整
|
||||
|
||||
### Bugfixes
|
||||
- ハッシュタグ入力が空のときに#が付くのを修正
|
||||
- フォローリクエストのEメール通知を修正
|
||||
- Custom Emoji pages have been merged into the Instance Info page
|
||||
- Mutes and blocks now apply recursively to replies and renotes.
|
||||
|
||||
### Removed
|
||||
- Ability to show advertisements
|
||||
- Server: ID generation methods other than `aid`
|
||||
|
||||
### Fixed
|
||||
- Server: Video thumbnails are now generated properly
|
||||
- Server: Ensure temp directory cleanup
|
||||
- Favicons of remote instances now show up
|
||||
- Client: Fix switch to receive email notifications
|
||||
- Client: Page freezes when trying to open configuration page of existing webhooks
|
||||
- Client: Fix a bug where new chat messages don't show up
|
||||
- Client: Fix collapsing long notes
|
||||
- Client: Add padding to pages
|
||||
|
||||
### Security
|
||||
- Hide metadata of private notes
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
apiVersion: v2
|
||||
name: misskey
|
||||
version: 0.0.0
|
|
@ -1,165 +0,0 @@
|
|||
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
# Misskey configuration
|
||||
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
# ┌─────┐
|
||||
#───┘ URL └─────────────────────────────────────────────────────
|
||||
|
||||
# Final accessible URL seen by a user.
|
||||
# url: https://example.tld/
|
||||
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# URL SETTINGS AFTER THAT!
|
||||
|
||||
# ┌───────────────────────┐
|
||||
#───┘ Port and TLS settings └───────────────────────────────────
|
||||
|
||||
#
|
||||
# Misskey supports two deployment options for public.
|
||||
#
|
||||
|
||||
# Option 1: With Reverse Proxy
|
||||
#
|
||||
# +----- https://example.tld/ ------------+
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
|
||||
# +------+ |+-------------+ +----------------+|
|
||||
# +---------------------------------------+
|
||||
#
|
||||
# You need to setup reverse proxy. (eg. nginx)
|
||||
# You do not define 'https' section.
|
||||
|
||||
# Option 2: Standalone
|
||||
#
|
||||
# +- https://example.tld/ -+
|
||||
# +------+ | +---------------+ |
|
||||
# | User | ---> | | Misskey (443) | |
|
||||
# +------+ | +---------------+ |
|
||||
# +------------------------+
|
||||
#
|
||||
# You need to run Misskey as root.
|
||||
# You need to set Certificate in 'https' section.
|
||||
|
||||
# To use option 1, uncomment below line.
|
||||
port: 3000 # A port that your Misskey server should listen.
|
||||
|
||||
# To use option 2, uncomment below lines.
|
||||
#port: 443
|
||||
|
||||
#https:
|
||||
# # path for certification
|
||||
# key: /etc/letsencrypt/live/example.tld/privkey.pem
|
||||
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
|
||||
|
||||
# ┌──────────────────────────┐
|
||||
#───┘ PostgreSQL configuration └────────────────────────────────
|
||||
|
||||
db:
|
||||
host: localhost
|
||||
port: 5432
|
||||
|
||||
# Database name
|
||||
db: misskey
|
||||
|
||||
# Auth
|
||||
user: example-misskey-user
|
||||
pass: example-misskey-pass
|
||||
|
||||
# Whether disable Caching queries
|
||||
#disableCache: true
|
||||
|
||||
# Extra Connection options
|
||||
#extra:
|
||||
# ssl: true
|
||||
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Redis configuration └─────────────────────────────────────
|
||||
|
||||
redis:
|
||||
host: localhost
|
||||
port: 6379
|
||||
#pass: example-pass
|
||||
#prefix: example-prefix
|
||||
#db: 1
|
||||
|
||||
# ┌─────────────────────────────┐
|
||||
#───┘ Elasticsearch configuration └─────────────────────────────
|
||||
|
||||
#elasticsearch:
|
||||
# host: localhost
|
||||
# port: 9200
|
||||
# ssl: false
|
||||
# user:
|
||||
# pass:
|
||||
|
||||
# ┌───────────────┐
|
||||
#───┘ ID generation └───────────────────────────────────────────
|
||||
|
||||
# You can select the ID generation method.
|
||||
# You don't usually need to change this setting, but you can
|
||||
# change it according to your preferences.
|
||||
|
||||
# Available methods:
|
||||
# aid ... Short, Millisecond accuracy
|
||||
# meid ... Similar to ObjectID, Millisecond accuracy
|
||||
# ulid ... Millisecond accuracy
|
||||
# objectid ... This is left for backward compatibility
|
||||
|
||||
# ONCE YOU HAVE STARTED THE INSTANCE, DO NOT CHANGE THE
|
||||
# ID SETTINGS AFTER THAT!
|
||||
|
||||
id: "aid"
|
||||
# ┌─────────────────────┐
|
||||
#───┘ Other configuration └─────────────────────────────────────
|
||||
|
||||
# Whether disable HSTS
|
||||
#disableHsts: true
|
||||
|
||||
# Number of worker processes
|
||||
#clusterLimit: 1
|
||||
|
||||
# Job concurrency per worker
|
||||
# deliverJobConcurrency: 128
|
||||
# inboxJobConcurrency: 16
|
||||
|
||||
# Job rate limiter
|
||||
# deliverJobPerSec: 128
|
||||
# inboxJobPerSec: 16
|
||||
|
||||
# Job attempts
|
||||
# deliverJobMaxAttempts: 12
|
||||
# inboxJobMaxAttempts: 8
|
||||
|
||||
# IP address family used for outgoing request (ipv4, ipv6 or dual)
|
||||
#outgoingAddressFamily: ipv4
|
||||
|
||||
# Syslog option
|
||||
#syslog:
|
||||
# host: localhost
|
||||
# port: 514
|
||||
|
||||
# Proxy for HTTP/HTTPS
|
||||
#proxy: http://127.0.0.1:3128
|
||||
|
||||
#proxyBypassHosts: [
|
||||
# 'example.com',
|
||||
# '192.0.2.8'
|
||||
#]
|
||||
|
||||
# Proxy for SMTP/SMTPS
|
||||
#proxySmtp: http://127.0.0.1:3128 # use HTTP/1.1 CONNECT
|
||||
#proxySmtp: socks4://127.0.0.1:1080 # use SOCKS4
|
||||
#proxySmtp: socks5://127.0.0.1:1080 # use SOCKS5
|
||||
|
||||
# Media Proxy
|
||||
#mediaProxy: https://example.com/proxy
|
||||
|
||||
# Sign to ActivityPub GET request (default: false)
|
||||
#signToActivityPubGet: true
|
||||
|
||||
#allowedPrivateNetworks: [
|
||||
# '127.0.0.1/32'
|
||||
#]
|
||||
|
||||
# Upload or download file size limits (bytes)
|
||||
#maxFileSize: 262144000
|
|
@ -1,8 +0,0 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ include "misskey.fullname" . }}-configuration
|
||||
data:
|
||||
default.yml: |-
|
||||
{{ .Files.Get "files/default.yml"|nindent 4 }}
|
||||
url: {{ .Values.url }}
|
|
@ -1,47 +0,0 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: {{ include "misskey.fullname" . }}
|
||||
labels:
|
||||
{{- include "misskey.labels" . | nindent 4 }}
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "misskey.selectorLabels" . | nindent 6 }}
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
{{- include "misskey.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
containers:
|
||||
- name: misskey
|
||||
image: {{ .Values.image }}
|
||||
env:
|
||||
- name: NODE_ENV
|
||||
value: {{ .Values.environment }}
|
||||
volumeMounts:
|
||||
- name: {{ include "misskey.fullname" . }}-configuration
|
||||
mountPath: /misskey/.config
|
||||
readOnly: true
|
||||
ports:
|
||||
- containerPort: 3000
|
||||
- name: postgres
|
||||
image: postgres:14-alpine
|
||||
env:
|
||||
- name: POSTGRES_USER
|
||||
value: "example-misskey-user"
|
||||
- name: POSTGRES_PASSWORD
|
||||
value: "example-misskey-pass"
|
||||
- name: POSTGRES_DB
|
||||
value: "misskey"
|
||||
ports:
|
||||
- containerPort: 5432
|
||||
- name: redis
|
||||
image: redis:alpine
|
||||
ports:
|
||||
- containerPort: 6379
|
||||
volumes:
|
||||
- name: {{ include "misskey.fullname" . }}-configuration
|
||||
configMap:
|
||||
name: {{ include "misskey.fullname" . }}-configuration
|
|
@ -1,14 +0,0 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "misskey.fullname" . }}
|
||||
annotations:
|
||||
dev.okteto.com/auto-ingress: "true"
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 3000
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "misskey.selectorLabels" . | nindent 4 }}
|
|
@ -1,62 +0,0 @@
|
|||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "misskey.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "misskey.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "misskey.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "misskey.labels" -}}
|
||||
helm.sh/chart: {{ include "misskey.chart" . }}
|
||||
{{ include "misskey.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "misskey.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "misskey.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "misskey.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "misskey.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -1,3 +0,0 @@
|
|||
url: https://example.tld/
|
||||
image: okteto.dev/misskey
|
||||
environment: production
|
|
@ -254,7 +254,6 @@ remoteUserCaution: "هذه المعلومات قد لا تكون مكتملة ب
|
|||
activity: "النشاط"
|
||||
images: "الصور"
|
||||
birthday: "تاريخ الميلاد"
|
||||
yearsOld: "{age} سنة"
|
||||
registeredDate: "انضم في"
|
||||
location: "الموقع الجغرافي"
|
||||
theme: "المظهر"
|
||||
|
@ -595,7 +594,7 @@ sample: "مثال"
|
|||
abuseReports: "البلاغات"
|
||||
reportAbuse: "أبلغ"
|
||||
reportAbuseOf: "أبلغ عن {name}"
|
||||
fillAbuseReportDescription: "أكتب بالتفصيل سبب البلاغ، إذا كنت تبلغ عن ملاحظة أرفق رابط لها."
|
||||
fillAbuseReportDescription: "أكتب بالتفصيل سبب البلاغ"
|
||||
abuseReported: "أُرسل البلاغ، شكرًا لك"
|
||||
reporter: "المُبلّغ"
|
||||
reporteeOrigin: "أصل البلاغ"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "এই ব্যাবহারকারী রিমোট
|
|||
activity: "কার্যকলাপ"
|
||||
images: "ছবি"
|
||||
birthday: "জন্মদিন"
|
||||
yearsOld: "{age} বছর"
|
||||
registeredDate: "যোগদানের তারিখ"
|
||||
location: "অবস্থান"
|
||||
theme: "থিম"
|
||||
|
@ -620,7 +619,7 @@ sample: "উদাহরণ"
|
|||
abuseReports: "অভিযোগ"
|
||||
reportAbuse: "অভিযোগ"
|
||||
reportAbuseOf: "{name} এ অভিযোগ করুন"
|
||||
fillAbuseReportDescription: "রিপোর্টের কারণ বর্ণনা করুন. একটি বিশেষ নোট এর জন্য রিপোর্টটি হয়ে থাকে তবে তার URL টি অন্তর্ভুক্ত করুন। "
|
||||
fillAbuseReportDescription: "রিপোর্টের কারণ বর্ণনা করুন."
|
||||
abuseReported: "আপনার অভিযোগটি দাখিল করা হয়েছে। আপনাকে ধন্যবাদ।"
|
||||
reporter: "অভিযোগকারী"
|
||||
reporteeOrigin: "অভিযোগটির উৎস"
|
||||
|
|
|
@ -241,7 +241,6 @@ remoteUserCaution: "Tyto informace nemusí být aktuální jelikož uživatel je
|
|||
activity: "Aktivita"
|
||||
images: "Obrázky"
|
||||
birthday: "Datum narození"
|
||||
yearsOld: "{age} let"
|
||||
registeredDate: "Datum registrace"
|
||||
location: "Lokace"
|
||||
theme: "Vzhled"
|
||||
|
|
|
@ -259,7 +259,6 @@ remoteUserCaution: "Diese Informationen sind möglicherweise unvollständig, da
|
|||
activity: "Aktivität"
|
||||
images: "Bilder"
|
||||
birthday: "Geburtstag"
|
||||
yearsOld: "{age} Jahre alt"
|
||||
registeredDate: "Registrationsdatum"
|
||||
location: "Ort"
|
||||
theme: "Farbschema"
|
||||
|
@ -621,7 +620,7 @@ sample: "Beispiel"
|
|||
abuseReports: "Meldungen"
|
||||
reportAbuse: "Melden"
|
||||
reportAbuseOf: "{name} melden"
|
||||
fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung an. Falls es sich um eine spezielle Notiz handelt, bitte gib dessen URL an."
|
||||
fillAbuseReportDescription: "Bitte gib zusätzliche Informationen zu dieser Meldung an."
|
||||
abuseReported: "Deine Meldung wurde versendet. Vielen Dank."
|
||||
reporter: "Melder"
|
||||
reporteeOrigin: "Herkunft des Gemeldeten"
|
||||
|
|
|
@ -259,7 +259,6 @@ remoteUserCaution: "As this user is from a remote instance, the shown informatio
|
|||
activity: "Activity"
|
||||
images: "Images"
|
||||
birthday: "Birthday"
|
||||
yearsOld: "{age} years old"
|
||||
registeredDate: "Joined on"
|
||||
location: "Location"
|
||||
theme: "Themes"
|
||||
|
@ -621,7 +620,7 @@ sample: "Sample"
|
|||
abuseReports: "Reports"
|
||||
reportAbuse: "Report"
|
||||
reportAbuseOf: "Report {name}"
|
||||
fillAbuseReportDescription: "Please fill in details regarding this report. If it is about a specific note, please include its URL."
|
||||
fillAbuseReportDescription: "Please fill in details regarding this report."
|
||||
abuseReported: "Your report has been sent. Thank you very much."
|
||||
reporter: "Reporter"
|
||||
reporteeOrigin: "Reportee Origin"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Para el usuario remoto, la información está incompleta"
|
|||
activity: "Actividad"
|
||||
images: "Imágenes"
|
||||
birthday: "Fecha de nacimiento"
|
||||
yearsOld: "{age} años"
|
||||
registeredDate: "Fecha de registro"
|
||||
location: "Lugar"
|
||||
theme: "Tema"
|
||||
|
@ -618,7 +617,7 @@ sample: "Muestra"
|
|||
abuseReports: "Reportes"
|
||||
reportAbuse: "Reportar"
|
||||
reportAbuseOf: "Reportar a {name}"
|
||||
fillAbuseReportDescription: "Ingrese los detalles del reporte. Si hay una nota en particular, ingrese la URL de esta."
|
||||
fillAbuseReportDescription: "Ingrese los detalles del reporte."
|
||||
abuseReported: "Se ha enviado el reporte. Muchas gracias."
|
||||
reporteeOrigin: "Informar a"
|
||||
reporterOrigin: "Origen del informe"
|
||||
|
|
|
@ -256,7 +256,6 @@ remoteUserCaution: "Les informations de ce compte risqueraient d’être incompl
|
|||
activity: "Activité"
|
||||
images: "Images"
|
||||
birthday: "Date de naissance"
|
||||
yearsOld: "{age} ans"
|
||||
registeredDate: "Inscrit le"
|
||||
location: "Localisation"
|
||||
theme: "Thème"
|
||||
|
@ -616,7 +615,7 @@ sample: "Exemple"
|
|||
abuseReports: "Signalements"
|
||||
reportAbuse: "Signaler"
|
||||
reportAbuseOf: "Signaler {name}"
|
||||
fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement. S'il s'agit d'une note précise, veuillez en donner le lien."
|
||||
fillAbuseReportDescription: "Veuillez expliquer les raisons du signalement."
|
||||
abuseReported: "Le rapport est envoyé. Merci."
|
||||
reporter: "Signalé par"
|
||||
reporteeOrigin: "Origine du signalement"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Informasi ini mungkin tidak mutakhir, karena pengguna ini be
|
|||
activity: "Aktivitas"
|
||||
images: "Gambar"
|
||||
birthday: "Tanggal lahir"
|
||||
yearsOld: "{age} tahun"
|
||||
registeredDate: "Bergabung pada"
|
||||
location: "Lokasi"
|
||||
theme: "Tema"
|
||||
|
@ -620,7 +619,7 @@ sample: "Contoh"
|
|||
abuseReports: "Laporkan"
|
||||
reportAbuse: "Laporkan"
|
||||
reportAbuseOf: "Laporkan {name}"
|
||||
fillAbuseReportDescription: "Mohon isi rincian laporan. Jika laporan ini mengenai catatan yang spesifik, mohon lampirkan serta URL catatan tersebut."
|
||||
fillAbuseReportDescription: "Mohon isi rincian laporan."
|
||||
abuseReported: "Laporan kamu telah dikirimkan. Terima kasih."
|
||||
reporter: "Pelapor"
|
||||
reporteeOrigin: "Yang dilaporkan"
|
||||
|
|
|
@ -254,7 +254,6 @@ remoteUserCaution: "Può darsi che le informazioni siano incomplete perché ques
|
|||
activity: "Attività"
|
||||
images: "Immagini"
|
||||
birthday: "Compleanno"
|
||||
yearsOld: "{age}Anni"
|
||||
registeredDate: "Iscrizione a.."
|
||||
location: "Posizione"
|
||||
theme: "Tema"
|
||||
|
@ -614,7 +613,7 @@ sample: "Esempio"
|
|||
abuseReports: "Segnalazioni"
|
||||
reportAbuse: "Segnalazioni"
|
||||
reportAbuseOf: "Segnala {name}"
|
||||
fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione. Se riguarda una nota precisa, si prega di collegare anche l'URL della nota."
|
||||
fillAbuseReportDescription: "Si prega di spiegare il motivo della segnalazione."
|
||||
abuseReported: "La segnalazione è stata inviata. Grazie."
|
||||
reporter: "il corrispondente"
|
||||
reporteeOrigin: "Origine del segnalato"
|
||||
|
|
|
@ -259,7 +259,6 @@ remoteUserCaution: "リモートユーザーのため、情報が不完全です
|
|||
activity: "アクティビティ"
|
||||
images: "画像"
|
||||
birthday: "誕生日"
|
||||
yearsOld: "{age}歳"
|
||||
registeredDate: "登録日"
|
||||
location: "場所"
|
||||
theme: "テーマ"
|
||||
|
@ -621,7 +620,7 @@ sample: "サンプル"
|
|||
abuseReports: "通報"
|
||||
reportAbuse: "通報"
|
||||
reportAbuseOf: "{name}を通報する"
|
||||
fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のノートがある場合はそのURLも記入してください。"
|
||||
fillAbuseReportDescription: "通報理由の詳細を記入してください。"
|
||||
abuseReported: "内容が送信されました。ご報告ありがとうございました。"
|
||||
reporter: "通報者"
|
||||
reporteeOrigin: "通報先"
|
||||
|
@ -1249,7 +1248,7 @@ _widgets:
|
|||
trends: "トレンド"
|
||||
clock: "時計"
|
||||
rss: "RSSリーダー"
|
||||
rssMarquee: "RSSリーダー(マーキー)"
|
||||
rssTicker: "RSSティッカー"
|
||||
activity: "アクティビティ"
|
||||
photos: "フォト"
|
||||
digitalClock: "デジタル時計"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "リモートユーザーやから、足りひん情報ある
|
|||
activity: "アクティビティ"
|
||||
images: "画像"
|
||||
birthday: "生まれた日"
|
||||
yearsOld: "{age}歳"
|
||||
registeredDate: "始めた日"
|
||||
location: "場所"
|
||||
theme: "テーマ"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "리모트 유저이기 때문에, 정보가 정확하지 않
|
|||
activity: "활동"
|
||||
images: "이미지"
|
||||
birthday: "생일"
|
||||
yearsOld: "{age}세"
|
||||
registeredDate: "등록일"
|
||||
location: "장소"
|
||||
theme: "테마"
|
||||
|
@ -620,7 +619,7 @@ sample: "예시"
|
|||
abuseReports: "신고"
|
||||
reportAbuse: "신고"
|
||||
reportAbuseOf: "{name}을 신고하기"
|
||||
fillAbuseReportDescription: "신고하려는 이유를 자세히 알려주세요. 특정 게시물을 신고할 때에는 게시물의 URL도 포함해 주세요."
|
||||
fillAbuseReportDescription: "신고하려는 이유를 자세히 알려주세요."
|
||||
abuseReported: "신고를 보냈습니다. 신고해 주셔서 감사합니다."
|
||||
reporter: "신고자"
|
||||
reporteeOrigin: "피신고자"
|
||||
|
|
|
@ -244,7 +244,6 @@ remoteUserCaution: "Aangezien deze gebruiker van een externe server afkomstig is
|
|||
activity: "Activiteit"
|
||||
images: "Afbeeldingen"
|
||||
birthday: "Geboortedatum"
|
||||
yearsOld: "{age} jaar"
|
||||
registeredDate: "Inschrijvingsdatum"
|
||||
location: "Locatie"
|
||||
theme: "Thema's"
|
||||
|
|
|
@ -253,7 +253,6 @@ remoteUserCaution: "Te informacje mogą nie być aktualne, ponieważ użytkownik
|
|||
activity: "Aktywność"
|
||||
images: "Zdjęcia"
|
||||
birthday: "Data urodzenia"
|
||||
yearsOld: "{age} lat"
|
||||
registeredDate: "Zarejestrowano"
|
||||
location: "Lokalizacja"
|
||||
theme: "Motywy"
|
||||
|
@ -602,7 +601,7 @@ sample: "Przykład"
|
|||
abuseReports: "Zgłoszenia"
|
||||
reportAbuse: "Zgłoś"
|
||||
reportAbuseOf: "Zgłoś {name}"
|
||||
fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia. Jeżeli dotyczy ono określonego wpisu, uwzględnij jego adres URL."
|
||||
fillAbuseReportDescription: "Wypełnij szczegóły zgłoszenia."
|
||||
abuseReported: "Twoje zgłoszenie zostało wysłane. Dziękujemy."
|
||||
reporteeOrigin: "Pochodzenie zgłoszonego"
|
||||
reporterOrigin: "Pochodzenie zgłaszającego"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Deoarece acest utilizator este dintr-o instanță externă,
|
|||
activity: "Activitate"
|
||||
images: "Imagini"
|
||||
birthday: "Zi de naștere"
|
||||
yearsOld: "{age} ani"
|
||||
registeredDate: "Data înregistrării"
|
||||
location: "Locație"
|
||||
theme: "Teme"
|
||||
|
@ -619,7 +618,7 @@ sample: "exemplu"
|
|||
abuseReports: "Rapoarte"
|
||||
reportAbuse: "Raportează"
|
||||
reportAbuseOf: "Raportează {name}"
|
||||
fillAbuseReportDescription: "Te rog scrie detaliile legate de acest raport. Dacă este despre o notă specifică, te rog introdu URL-ul ei."
|
||||
fillAbuseReportDescription: "Te rog scrie detaliile legate de acest raport."
|
||||
abuseReported: "Raportul tău a fost trimis. Mulțumim."
|
||||
reporter: "Raportorul"
|
||||
reporteeOrigin: "Originea raportatului"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Это пользователь с другого сайта
|
|||
activity: "Активность"
|
||||
images: "Изображения"
|
||||
birthday: "День рождения"
|
||||
yearsOld: "Возраст: {age}"
|
||||
registeredDate: "Дата регистрации"
|
||||
location: "Местоположение"
|
||||
theme: "Тема"
|
||||
|
@ -619,7 +618,7 @@ sample: "Пример"
|
|||
abuseReports: "Жалобы"
|
||||
reportAbuse: "Жалоба"
|
||||
reportAbuseOf: "Пожаловаться на пользователя {name}"
|
||||
fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее. Если речь о конкретной заметке, будьте добры приложить ссылку на неё."
|
||||
fillAbuseReportDescription: "Опишите, пожалуйста, причину жалобы подробнее."
|
||||
abuseReported: "Жалоба отправлена. Большое спасибо за информацию."
|
||||
reporteeOrigin: "О ком сообщено"
|
||||
reporterOrigin: "Кто сообщил"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Tieto informácie nemusia byť aktuálne, keďže používat
|
|||
activity: "Aktivita"
|
||||
images: "Obrázky"
|
||||
birthday: "Dátum narodenia"
|
||||
yearsOld: "{age} rokov"
|
||||
registeredDate: "Dátum registrácie"
|
||||
location: "Lokalita"
|
||||
theme: "Téma"
|
||||
|
@ -619,7 +618,7 @@ sample: "Ukážka"
|
|||
abuseReports: "Nahlásenia"
|
||||
reportAbuse: "Nahlásiť"
|
||||
reportAbuseOf: "Nahlásiť {name}"
|
||||
fillAbuseReportDescription: "Prosím vyplňte podrobnosti nahlásenia. Ak sa týka konkrétnej poznámky, prosím napíšte jej URL."
|
||||
fillAbuseReportDescription: "Prosím vyplňte podrobnosti nahlásenia."
|
||||
abuseReported: "Vaše nahlásenie je odoslané. Veľmi pekne ďakujeme."
|
||||
reporter: "Nahlásil"
|
||||
reporteeOrigin: "Pôvod nahláseného"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Інформація може бути неповною, о
|
|||
activity: "Активність"
|
||||
images: "Зображення"
|
||||
birthday: "День народження"
|
||||
yearsOld: "{age} років"
|
||||
registeredDate: "Приєднався(лась)"
|
||||
location: "Локація"
|
||||
theme: "Тема"
|
||||
|
@ -620,7 +619,7 @@ sample: "Приклад"
|
|||
abuseReports: "Скарги"
|
||||
reportAbuse: "Поскаржитись"
|
||||
reportAbuseOf: "Поскаржитись на {name}"
|
||||
fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги. Якщо скарга стосується запису, вкажіть посилання на нього."
|
||||
fillAbuseReportDescription: "Будь ласка вкажіть подробиці скарги."
|
||||
abuseReported: "Дякуємо, вашу скаргу було відправлено. "
|
||||
reporter: "Репортер"
|
||||
reporteeOrigin: "Про кого повідомлено"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "Vì người dùng này ở máy chủ khác, thông tin hi
|
|||
activity: "Hoạt động"
|
||||
images: "Hình ảnh"
|
||||
birthday: "Sinh nhật"
|
||||
yearsOld: "{age} tuổi"
|
||||
registeredDate: "Tham gia"
|
||||
location: "Đến từ"
|
||||
theme: "Chủ đề"
|
||||
|
@ -620,7 +619,7 @@ sample: "Ví dụ"
|
|||
abuseReports: "Lượt báo cáo"
|
||||
reportAbuse: "Báo cáo"
|
||||
reportAbuseOf: "Báo cáo {name}"
|
||||
fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này. Nếu đó là về một tút cụ thể, hãy kèm theo URL của tút."
|
||||
fillAbuseReportDescription: "Vui lòng điền thông tin chi tiết về báo cáo này."
|
||||
abuseReported: "Báo cáo đã được gửi. Cảm ơn bạn nhiều."
|
||||
reporter: "Người báo cáo"
|
||||
reporteeOrigin: "Bị báo cáo"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "由于此用户来自其它实例,显示的信息可能不
|
|||
activity: "活动"
|
||||
images: "图片"
|
||||
birthday: "生日"
|
||||
yearsOld: "{age}岁"
|
||||
registeredDate: "注册于"
|
||||
location: "位置"
|
||||
theme: "主题"
|
||||
|
@ -620,7 +619,7 @@ sample: "示例"
|
|||
abuseReports: "举报"
|
||||
reportAbuse: "举报"
|
||||
reportAbuseOf: "举报{name}"
|
||||
fillAbuseReportDescription: "请填写举报的详细原因。如果有对方发的帖子,请同时填写URL地址。"
|
||||
fillAbuseReportDescription: "请填写举报的详细原因。"
|
||||
abuseReported: "内容已发送。感谢您提交信息。"
|
||||
reporter: "举报者"
|
||||
reporteeOrigin: "举报来源"
|
||||
|
|
|
@ -258,7 +258,6 @@ remoteUserCaution: "由於該使用者來自遠端實例,因此資訊可能非
|
|||
activity: "動態"
|
||||
images: "圖片"
|
||||
birthday: "生日"
|
||||
yearsOld: "{age}歲"
|
||||
registeredDate: "註冊日期"
|
||||
location: "位置"
|
||||
theme: "外觀主題"
|
||||
|
@ -620,7 +619,7 @@ sample: "範例"
|
|||
abuseReports: "檢舉"
|
||||
reportAbuse: "檢舉"
|
||||
reportAbuseOf: "檢舉{name}"
|
||||
fillAbuseReportDescription: "請填寫檢舉的詳細理由。可以的話,請附上針對的URL網址。"
|
||||
fillAbuseReportDescription: "請填寫檢舉的詳細理由。"
|
||||
abuseReported: "回報已送出。感謝您的報告。"
|
||||
reporter: "檢舉者"
|
||||
reporteeOrigin: "檢舉來源"
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
{
|
||||
"name": "misskey",
|
||||
"version": "12.111.1-test.1",
|
||||
"codename": "indigo",
|
||||
"name": "foundkey",
|
||||
"version": "13.0.0-preview.1",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/misskey-dev/misskey.git"
|
||||
"url": "https://akkoma.dev/FoundKeyGang/FoundKey.git"
|
||||
},
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
|
11
packages/backend/migration/1642698156335-reported-urls.js
Normal file
11
packages/backend/migration/1642698156335-reported-urls.js
Normal file
|
@ -0,0 +1,11 @@
|
|||
export class reportedUrls1642698156335 {
|
||||
name = 'reportedUrls1642698156335';
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" ADD "urls" character varying (512) array NOT NULL DEFAULT '{}'::varchar[]`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "abuse_user_report" DROP COLUMN "urls"`);
|
||||
}
|
||||
};
|
13
packages/backend/migration/1658146000392-remove-repo-url.js
Normal file
13
packages/backend/migration/1658146000392-remove-repo-url.js
Normal file
|
@ -0,0 +1,13 @@
|
|||
export class removeRepoUrl1658146000392 {
|
||||
name = 'removeRepoUrl1658146000392';
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "repositoryUrl"`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "feedbackUrl"`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "repositoryUrl" character varying(512) not null default 'https://github.com/misskey-dev/misskey'`);
|
||||
await queryRunner.query(`ALTER TABLE "meta" ADD "feedbackUrl" character varying(512) default 'https://github.com/misskey-dev/misskey/issues/new'`);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
export class noteRepliesFunction1658656633972 {
|
||||
name = 'noteRepliesFunction1658656633972'
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`
|
||||
CREATE OR REPLACE FUNCTION note_replies(start_id varchar, max_depth integer, max_breadth integer) RETURNS TABLE (id VARCHAR) AS
|
||||
$$
|
||||
SELECT DISTINCT id FROM (
|
||||
WITH RECURSIVE tree (id, ancestors, depth) AS (
|
||||
SELECT start_id, '{}'::VARCHAR[], 0
|
||||
UNION
|
||||
SELECT
|
||||
note.id,
|
||||
CASE
|
||||
WHEN note."replyId" = tree.id THEN tree.ancestors || note."replyId"
|
||||
ELSE tree.ancestors || note."renoteId"
|
||||
END,
|
||||
depth + 1
|
||||
FROM note, tree
|
||||
WHERE (
|
||||
note."replyId" = tree.id
|
||||
OR
|
||||
(
|
||||
-- get renotes but not pure renotes
|
||||
note."renoteId" = tree.id
|
||||
AND
|
||||
(
|
||||
note.text IS NOT NULL
|
||||
OR
|
||||
CARDINALITY(note."fileIds") != 0
|
||||
OR
|
||||
note."hasPoll" = TRUE
|
||||
)
|
||||
)
|
||||
) AND depth < max_depth
|
||||
)
|
||||
SELECT
|
||||
id,
|
||||
-- apply the limit per node
|
||||
row_number() OVER (PARTITION BY ancestors[array_upper(ancestors, 1)]) AS nth_child
|
||||
FROM tree
|
||||
WHERE depth > 0
|
||||
) AS recursive WHERE nth_child < max_breadth
|
||||
$$
|
||||
LANGUAGE SQL
|
||||
`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`DROP FUNCTION note_replies`);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
export class driveFileUserConstraint1659516638000 {
|
||||
name = 'driveFileUserConstraint1659516638000';
|
||||
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" DROP CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" ADD CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE RESTRICT`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" DROP CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e"`);
|
||||
await queryRunner.query(`ALTER TABLE "drive_file" ADD CONSTRAINT "FK_860fa6f6c7df5bb887249fba22e" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL`);
|
||||
}
|
||||
}
|
|
@ -5,7 +5,7 @@
|
|||
"scripts": {
|
||||
"build": "tsc -p tsconfig.json || echo done. && tsc-alias -p tsconfig.json",
|
||||
"watch": "node watch.mjs",
|
||||
"lint": "eslint --quiet \"src/**/*.ts\"",
|
||||
"lint": "eslint src --ext .ts",
|
||||
"mocha": "cross-env NODE_ENV=test TS_NODE_FILES=true TS_NODE_TRANSPILE_ONLY=true TS_NODE_PROJECT=\"./test/tsconfig.json\" mocha",
|
||||
"test": "npm run mocha"
|
||||
},
|
||||
|
@ -69,7 +69,6 @@
|
|||
"mime-types": "2.1.35",
|
||||
"misskey-js": "0.0.14",
|
||||
"mocha": "10.0.0",
|
||||
"ms": "3.0.0-canary.1",
|
||||
"multer": "1.4.4",
|
||||
"nested-property": "4.0.0",
|
||||
"node-fetch": "3.2.6",
|
||||
|
@ -92,6 +91,7 @@
|
|||
"rename": "1.0.4",
|
||||
"require-all": "3.0.0",
|
||||
"rndstr": "1.0.0",
|
||||
"rss-parser": "3.12.0",
|
||||
"s-age": "1.1.2",
|
||||
"sanitize-html": "2.7.0",
|
||||
"semver": "7.3.7",
|
||||
|
@ -164,12 +164,12 @@
|
|||
"@types/web-push": "3.3.2",
|
||||
"@types/websocket": "1.0.5",
|
||||
"@types/ws": "8.5.3",
|
||||
"@typescript-eslint/eslint-plugin": "5.30.0",
|
||||
"@typescript-eslint/parser": "5.30.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.30.0",
|
||||
"@typescript-eslint/parser": "^5.30.0",
|
||||
"cross-env": "7.0.3",
|
||||
"eslint": "8.18.0",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eslint": "^8.20.0",
|
||||
"eslint-plugin-import": "^2.26.0",
|
||||
"execa": "6.1.0",
|
||||
"typescript": "4.7.4"
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ const ev = new Xev();
|
|||
/**
|
||||
* Init process
|
||||
*/
|
||||
export default async function() {
|
||||
export default async function(): void {
|
||||
process.title = `Misskey (${cluster.isPrimary ? 'master' : 'worker'})`;
|
||||
|
||||
if (cluster.isPrimary || envOption.disableClustering) {
|
||||
|
@ -68,7 +68,9 @@ if (!envOption.quiet) {
|
|||
process.on('uncaughtException', err => {
|
||||
try {
|
||||
logger.error(err);
|
||||
} catch { }
|
||||
} catch {
|
||||
// if that fails too there is nothing we can do
|
||||
}
|
||||
});
|
||||
|
||||
// Dying away...
|
||||
|
|
|
@ -10,9 +10,9 @@ import semver from 'semver';
|
|||
import Logger from '@/services/logger.js';
|
||||
import loadConfig from '@/config/load.js';
|
||||
import { Config } from '@/config/types.js';
|
||||
import { envOption } from '../env.js';
|
||||
import { showMachineInfo } from '@/misc/show-machine-info.js';
|
||||
import { db, initDb } from '../db/postgre.js';
|
||||
import { envOption } from '@/env.js';
|
||||
import { db, initDb } from '@/db/postgre.js';
|
||||
|
||||
const _filename = fileURLToPath(import.meta.url);
|
||||
const _dirname = dirname(_filename);
|
||||
|
@ -24,7 +24,7 @@ const bootLogger = logger.createSubLogger('boot', 'magenta', false);
|
|||
|
||||
const themeColor = chalk.hex('#86b300');
|
||||
|
||||
function greet() {
|
||||
function greet(): void {
|
||||
if (!envOption.quiet) {
|
||||
//#region Misskey logo
|
||||
const v = `v${meta.version}`;
|
||||
|
@ -49,7 +49,7 @@ function greet() {
|
|||
/**
|
||||
* Init master process
|
||||
*/
|
||||
export async function masterMain() {
|
||||
export async function masterMain(): void {
|
||||
let config!: Config;
|
||||
|
||||
// initialize app
|
||||
|
@ -110,13 +110,12 @@ function loadConfigBoot(): Config {
|
|||
try {
|
||||
config = loadConfig();
|
||||
} catch (exception) {
|
||||
if (typeof exception === 'string') {
|
||||
configLogger.error(exception);
|
||||
process.exit(1);
|
||||
}
|
||||
if (exception.code === 'ENOENT') {
|
||||
configLogger.error('Configuration file not found', null, true);
|
||||
process.exit(1);
|
||||
} else if (e instanceof Error) {
|
||||
configLogger.error(e.message);
|
||||
process.exit(1);
|
||||
}
|
||||
throw exception;
|
||||
}
|
||||
|
@ -142,7 +141,7 @@ async function connectDb(): Promise<void> {
|
|||
}
|
||||
}
|
||||
|
||||
async function spawnWorkers(limit: number = 1) {
|
||||
async function spawnWorkers(limit = 1): void {
|
||||
const workers = Math.min(limit, os.cpus().length);
|
||||
bootLogger.info(`Starting ${workers} worker${workers === 1 ? '' : 's'}...`);
|
||||
await Promise.all([...Array(workers)].map(spawnWorker));
|
||||
|
@ -154,7 +153,7 @@ function spawnWorker(): Promise<void> {
|
|||
const worker = cluster.fork();
|
||||
worker.on('message', message => {
|
||||
if (message === 'listenFailed') {
|
||||
bootLogger.error(`The server Listen failed due to the previous error.`);
|
||||
bootLogger.error('The server Listen failed due to the previous error.');
|
||||
process.exit(1);
|
||||
}
|
||||
if (message !== 'ready') return;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import cluster from 'node:cluster';
|
||||
import { initDb } from '../db/postgre.js';
|
||||
import { initDb } from '@/db/postgre.js';
|
||||
|
||||
/**
|
||||
* Init worker process
|
||||
|
|
|
@ -59,6 +59,6 @@ function tryCreateUrl(url: string) {
|
|||
try {
|
||||
return new URL(url);
|
||||
} catch (e) {
|
||||
throw `url="${url}" is not a valid URL.`;
|
||||
throw new Error(`url="${url}" is not a valid URL.`);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
export const MAX_NOTE_TEXT_LENGTH = 8192;
|
||||
|
||||
export const SECOND = 1000;
|
||||
export const MINUTE = 60 * SECOND;
|
||||
export const HOUR = 60 * MINUTE;
|
||||
export const DAY = 24 * HOUR;
|
||||
|
||||
export const USER_ONLINE_THRESHOLD = 1000 * 60 * 10; // 10min
|
||||
export const USER_ACTIVE_THRESHOLD = 1000 * 60 * 60 * 24 * 3; // 3days
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
// TODO: 消したい
|
||||
|
||||
const interval = 30 * 60 * 1000;
|
||||
import { AttestationChallenges } from '@/models/index.js';
|
||||
import { LessThan } from 'typeorm';
|
||||
import { AttestationChallenges } from '@/models/index.js';
|
||||
|
||||
const interval = 30 * 60 * 1000;
|
||||
|
||||
/**
|
||||
* Clean up database occasionally
|
||||
|
|
|
@ -202,7 +202,7 @@ export const db = new DataSource({
|
|||
logging: log,
|
||||
logger: log ? new MyCustomLogger() : undefined,
|
||||
maxQueryExecutionTime: 300,
|
||||
entities: entities,
|
||||
entities,
|
||||
migrations: ['../../migration/*.js'],
|
||||
});
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ export function createConnection() {
|
|||
});
|
||||
}
|
||||
|
||||
export const subsdcriber = createConnection();
|
||||
subsdcriber.subscribe(config.host);
|
||||
export const subscriber = createConnection();
|
||||
subscriber.subscribe(config.host);
|
||||
|
||||
export const redisClient = createConnection();
|
||||
|
|
|
@ -8,10 +8,10 @@ const urlRegex = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+/;
|
|||
const urlRegexFull = /^https?:\/\/[\w\/:%#@$&?!()\[\]~.,=+\-]+$/;
|
||||
|
||||
export function fromHtml(html: string, hashtagNames?: string[]): string {
|
||||
// some AP servers like Pixelfed use br tags as well as newlines
|
||||
html = html.replace(/<br\s?\/?>\r?\n/gi, '\n');
|
||||
|
||||
const dom = parse5.parseFragment(html);
|
||||
const dom = parse5.parseFragment(
|
||||
// some AP servers like Pixelfed use br tags as well as newlines
|
||||
html.replace(/<br\s?\/?>\r?\n/gi, '\n'),
|
||||
);
|
||||
|
||||
let text = '';
|
||||
|
||||
|
|
|
@ -4,8 +4,11 @@ export type Acct = {
|
|||
};
|
||||
|
||||
export function parse(acct: string): Acct {
|
||||
if (acct.startsWith('@')) acct = acct.substr(1);
|
||||
const split = acct.split('@', 2);
|
||||
const split = acct.split('@');
|
||||
if (split[0].length === 0) {
|
||||
// there was an initial at
|
||||
split.shift();
|
||||
}
|
||||
return { username: split[0], host: split[1] || null };
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Antennas } from '@/models/index.js';
|
||||
import { Antenna } from '@/models/entities/antenna.js';
|
||||
import { subsdcriber } from '../db/redis.js';
|
||||
import { subscriber } from '@/db/redis.js';
|
||||
|
||||
let antennasFetched = false;
|
||||
let antennas: Antenna[] = [];
|
||||
|
@ -14,7 +14,7 @@ export async function getAntennas() {
|
|||
return antennas;
|
||||
}
|
||||
|
||||
subsdcriber.on('message', async (_, data) => {
|
||||
subscriber.on('message', async (_, data) => {
|
||||
const obj = JSON.parse(data);
|
||||
|
||||
if (obj.channel === 'internal') {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { redisClient } from '../db/redis.js';
|
||||
import { promisify } from 'node:util';
|
||||
import redisLock from 'redis-lock';
|
||||
import { redisClient } from '@/db/redis.js';
|
||||
|
||||
/**
|
||||
* Retry delay (ms) for lock acquisition
|
||||
|
@ -9,8 +9,8 @@ const retryDelay = 100;
|
|||
|
||||
const lock: (key: string, timeout?: number) => Promise<() => void>
|
||||
= redisClient
|
||||
? promisify(redisLock(redisClient, retryDelay))
|
||||
: async () => () => { };
|
||||
? promisify(redisLock(redisClient, retryDelay))
|
||||
: async () => () => { };
|
||||
|
||||
/**
|
||||
* Get AP Object lock
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
import fetch from 'node-fetch';
|
||||
import { URLSearchParams } from 'node:url';
|
||||
import { getAgentByUrl } from './fetch.js';
|
||||
import fetch from 'node-fetch';
|
||||
import config from '@/config/index.js';
|
||||
import { getAgentByUrl } from './fetch.js';
|
||||
|
||||
export async function verifyRecaptcha(secret: string, response: string) {
|
||||
const result = await getCaptchaResponse('https://www.recaptcha.net/recaptcha/api/siteverify', secret, response).catch(e => {
|
||||
throw `recaptcha-request-failed: ${e}`;
|
||||
throw new Error(`recaptcha-request-failed: ${e.message}`);
|
||||
});
|
||||
|
||||
if (result.success !== true) {
|
||||
const errorCodes = result['error-codes'] ? result['error-codes']?.join(', ') : '';
|
||||
throw `recaptcha-failed: ${errorCodes}`;
|
||||
const errorCodes = result['error-codes'] ? result['error-codes'].join(', ') : '';
|
||||
throw new Error(`recaptcha-failed: ${errorCodes}`);
|
||||
}
|
||||
}
|
||||
|
||||
export async function verifyHcaptcha(secret: string, response: string) {
|
||||
const result = await getCaptchaResponse('https://hcaptcha.com/siteverify', secret, response).catch(e => {
|
||||
throw `hcaptcha-request-failed: ${e}`;
|
||||
throw new Error(`hcaptcha-request-failed: ${e.message}`);
|
||||
});
|
||||
|
||||
if (result.success !== true) {
|
||||
const errorCodes = result['error-codes'] ? result['error-codes']?.join(', ') : '';
|
||||
throw `hcaptcha-failed: ${errorCodes}`;
|
||||
const errorCodes = result['error-codes'] ? result['error-codes'].join(', ') : '';
|
||||
throw new Error(`hcaptcha-failed: ${errorCodes}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,11 +46,11 @@ async function getCaptchaResponse(url: string, secret: string, response: string)
|
|||
//timeout: 10 * 1000,
|
||||
agent: getAgentByUrl,
|
||||
}).catch(e => {
|
||||
throw `${e.message || e}`;
|
||||
throw new Error(`${e.message || e}`);
|
||||
});
|
||||
|
||||
if (!res.ok) {
|
||||
throw `${res.status}`;
|
||||
throw new Error(`${res.status}`);
|
||||
}
|
||||
|
||||
return await res.json() as CaptchaResponse;
|
||||
|
|
|
@ -2,8 +2,8 @@ import { Antenna } from '@/models/entities/antenna.js';
|
|||
import { Note } from '@/models/entities/note.js';
|
||||
import { User } from '@/models/entities/user.js';
|
||||
import { UserListJoinings, UserGroupJoinings, Blockings } from '@/models/index.js';
|
||||
import { getFullApAccount } from './convert-host.js';
|
||||
import * as Acct from '@/misc/acct.js';
|
||||
import { getFullApAccount } from './convert-host.js';
|
||||
import { Packed } from './schema.js';
|
||||
import { Cache } from './cache.js';
|
||||
|
||||
|
@ -65,7 +65,7 @@ export async function checkHitAntenna(antenna: Antenna, note: (Note | Packed<'No
|
|||
and.every(keyword =>
|
||||
antenna.caseSensitive
|
||||
? note.text!.includes(keyword)
|
||||
: note.text!.toLowerCase().includes(keyword.toLowerCase())
|
||||
: note.text!.toLowerCase().includes(keyword.toLowerCase()),
|
||||
));
|
||||
|
||||
if (!matched) return false;
|
||||
|
@ -83,7 +83,7 @@ export async function checkHitAntenna(antenna: Antenna, note: (Note | Packed<'No
|
|||
and.every(keyword =>
|
||||
antenna.caseSensitive
|
||||
? note.text!.includes(keyword)
|
||||
: note.text!.toLowerCase().includes(keyword.toLowerCase())
|
||||
: note.text!.toLowerCase().includes(keyword.toLowerCase()),
|
||||
));
|
||||
|
||||
if (matched) return false;
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import { toASCII } from 'punycode';
|
||||
import { URL } from 'node:url';
|
||||
import config from '@/config/index.js';
|
||||
import { toASCII } from 'punycode';
|
||||
|
||||
export function getFullApAccount(username: string, host: string | null) {
|
||||
export function getFullApAccount(username: string, host: string | null): string {
|
||||
return host ? `${username}@${toPuny(host)}` : `${username}@${toPuny(config.host)}`;
|
||||
}
|
||||
|
||||
export function isSelfHost(host: string) {
|
||||
export function isSelfHost(host: string | null): boolean {
|
||||
if (host == null) return true;
|
||||
return toPuny(config.host) === toPuny(host);
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ export function createTempDir(): Promise<[string, () => void]> {
|
|||
(e, path, cleanup) => {
|
||||
if (e) return rej(e);
|
||||
res([path, cleanup]);
|
||||
}
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import * as fs from 'node:fs';
|
||||
import * as stream from 'node:stream';
|
||||
import * as util from 'node:util';
|
||||
import got, * as Got from 'got';
|
||||
import { httpAgent, httpsAgent, StatusError } from './fetch.js';
|
||||
import config from '@/config/index.js';
|
||||
import chalk from 'chalk';
|
||||
import Logger from '@/services/logger.js';
|
||||
import got, * as Got from 'got';
|
||||
import IPCIDR from 'ip-cidr';
|
||||
import PrivateIp from 'private-ip';
|
||||
import config from '@/config/index.js';
|
||||
import Logger from '@/services/logger.js';
|
||||
import { httpAgent, httpsAgent, StatusError } from './fetch.js';
|
||||
|
||||
const pipeline = util.promisify(stream.pipeline);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { fetchMeta } from './fetch-meta.js';
|
||||
import { ILocalUser } from '@/models/entities/user.js';
|
||||
import { Users } from '@/models/index.js';
|
||||
import { fetchMeta } from './fetch-meta.js';
|
||||
|
||||
export async function fetchProxyAccount(): Promise<ILocalUser | null> {
|
||||
const meta = await fetchMeta();
|
||||
|
|
|
@ -7,13 +7,11 @@ import * as crypto from 'node:crypto';
|
|||
const TIME2000 = 946684800000;
|
||||
let counter = crypto.randomBytes(2).readUInt16LE(0);
|
||||
|
||||
export function genId(date?: Date): string {
|
||||
if (!date || (date > new Date())) date = new Date();
|
||||
|
||||
let t = date.getTime();
|
||||
export function genId(date?: Date = new Date()): string {
|
||||
let t = Math.min(date, new Date());
|
||||
t -= TIME2000;
|
||||
if (t < 0) t = 0;
|
||||
if (isNaN(t)) throw 'Failed to create AID: Invalid Date';
|
||||
if (isNaN(t)) throw new Error('Failed to create AID: Invalid Date');
|
||||
const time = t.toString(36).padStart(8, '0');
|
||||
|
||||
counter++;
|
||||
|
|
|
@ -58,7 +58,7 @@ export async function getFileInfo(path: string): Promise<FileInfo> {
|
|||
|
||||
// うまく判定できない画像は octet-stream にする
|
||||
if (!imageSize) {
|
||||
warnings.push(`cannot detect image dimensions`);
|
||||
warnings.push('cannot detect image dimensions');
|
||||
type = TYPE_OCTET_STREAM;
|
||||
} else if (imageSize.wUnits === 'px') {
|
||||
width = imageSize.width;
|
||||
|
@ -67,7 +67,7 @@ export async function getFileInfo(path: string): Promise<FileInfo> {
|
|||
|
||||
// 制限を超えている画像は octet-stream にする
|
||||
if (imageSize.width > 16383 || imageSize.height > 16383) {
|
||||
warnings.push(`image dimensions exceeds limits`);
|
||||
warnings.push('image dimensions exceeds limits');
|
||||
type = TYPE_OCTET_STREAM;
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -6,11 +6,7 @@ import { Packed } from './schema.js';
|
|||
*/
|
||||
export const getNoteSummary = (note: Packed<'Note'>): string => {
|
||||
if (note.deletedAt) {
|
||||
return `(❌⛔)`;
|
||||
}
|
||||
|
||||
if (note.isHidden) {
|
||||
return `(⛔)`;
|
||||
return '(❌⛔)';
|
||||
}
|
||||
|
||||
let summary = '';
|
||||
|
@ -29,7 +25,7 @@ export const getNoteSummary = (note: Packed<'Note'>): string => {
|
|||
|
||||
// 投票が添付されているとき
|
||||
if (note.poll) {
|
||||
summary += ` (📊)`;
|
||||
summary += ' (📊)';
|
||||
}
|
||||
|
||||
// 返信のとき
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
import { Packed } from './schema.js';
|
||||
|
||||
export function isInstanceMuted(note: Packed<'Note'>, mutedInstances: Set<string>): boolean {
|
||||
if (mutedInstances.has(note?.user?.host ?? '')) return true;
|
||||
if (mutedInstances.has(note?.reply?.user?.host ?? '')) return true;
|
||||
if (mutedInstances.has(note?.renote?.user?.host ?? '')) return true;
|
||||
if (mutedInstances.has(note.user.host ?? '')) return true;
|
||||
if (mutedInstances.has(note.reply?.user.host ?? '')) return true;
|
||||
if (mutedInstances.has(note.renote?.user.host ?? '')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
export function isUserFromMutedInstance(notif: Packed<'Notification'>, mutedInstances: Set<string>): boolean {
|
||||
if (mutedInstances.has(notif?.user?.host ?? '')) return true;
|
||||
if (mutedInstances.has(notif.user?.host ?? '')) return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
import { Note } from '@/models/entities/note.js';
|
||||
|
||||
export default function(note: Note): boolean {
|
||||
return note.renoteId != null && (note.text != null || note.hasPoll || (note.fileIds != null && note.fileIds.length > 0));
|
||||
}
|
|
@ -1,15 +1,7 @@
|
|||
export function isUserRelated(note: any, userIds: Set<string>): boolean {
|
||||
if (userIds.has(note.userId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (note.reply != null && userIds.has(note.reply.userId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (note.renote != null && userIds.has(note.renote.userId)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
export function isUserRelated(note: any, ids: Set<string>): boolean {
|
||||
if (ids.has(note.userId)) return true; // note author is muted
|
||||
if (note.mentions && note.mentions.some((user: string) => ids.has(user))) return true; // any of mentioned users are muted
|
||||
if (note.reply && isUserRelated(note.reply, ids)) return true; // also check reply target
|
||||
if (note.renote && isUserRelated(note.renote, ids)) return true; // also check renote target
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -6,5 +6,5 @@ import { Cache } from './cache.js';
|
|||
const cache = new Cache<UserKeypair>(Infinity);
|
||||
|
||||
export async function getUserKeypair(userId: User['id']): Promise<UserKeypair> {
|
||||
return await cache.fetch(userId, () => UserKeypairs.findOneByOrFail({ userId: userId }));
|
||||
return await cache.fetch(userId, () => UserKeypairs.findOneByOrFail({ userId }));
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ export function nyaize(text: string): string {
|
|||
.replace(/(?<=every)one/gi, x => x === 'ONE' ? 'NYAN' : 'nyan')
|
||||
// ko-KR
|
||||
.replace(/[나-낳]/g, match => String.fromCharCode(
|
||||
match.charCodeAt(0)! + '냐'.charCodeAt(0) - '나'.charCodeAt(0)
|
||||
match.charCodeAt(0)! + '냐'.charCodeAt(0) - '나'.charCodeAt(0),
|
||||
))
|
||||
.replace(/(다$)|(다(?=\.))|(다(?= ))|(다(?=!))|(다(?=\?))/gm, '다냥')
|
||||
.replace(/(야(?=\?))|(야$)|(야(?= ))/gm, '냥');
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
import { In, IsNull } from 'typeorm';
|
||||
import config from '@/config/index.js';
|
||||
import { Emojis } from '@/models/index.js';
|
||||
import { Emoji } from '@/models/entities/emoji.js';
|
||||
import { Note } from '@/models/entities/note.js';
|
||||
import { query } from '@/prelude/url.js';
|
||||
import { Cache } from './cache.js';
|
||||
import { isSelfHost, toPunyNullable } from './convert-host.js';
|
||||
import { decodeReaction } from './reaction-lib.js';
|
||||
import config from '@/config/index.js';
|
||||
import { query } from '@/prelude/url.js';
|
||||
|
||||
const cache = new Cache<Emoji | null>(1000 * 60 * 60 * 12);
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* eslint-disable key-spacing */
|
||||
import { emojiRegex } from './emoji-regex.js';
|
||||
import { fetchMeta } from './fetch-meta.js';
|
||||
import { IsNull } from 'typeorm';
|
||||
import { Emojis } from '@/models/index.js';
|
||||
import { toPunyNullable } from './convert-host.js';
|
||||
import { IsNull } from 'typeorm';
|
||||
import { emojiRegex } from './emoji-regex.js';
|
||||
import { fetchMeta } from './fetch-meta.js';
|
||||
|
||||
const legacies: Record<string, string> = {
|
||||
'like': '👍',
|
||||
|
@ -54,10 +54,10 @@ export function convertLegacyReactions(reactions: Record<string, number>) {
|
|||
return _reactions2;
|
||||
}
|
||||
|
||||
export async function toDbReaction(reaction?: string | null, reacterHost?: string | null): Promise<string> {
|
||||
export async function toDbReaction(reaction?: string | null, idnReacterHost?: string | null): Promise<string> {
|
||||
if (reaction == null) return await getFallbackReaction();
|
||||
|
||||
reacterHost = toPunyNullable(reacterHost);
|
||||
const reacterHost = toPunyNullable(idnReacterHost);
|
||||
|
||||
// 文字列タイプのリアクションを絵文字に変換
|
||||
if (Object.keys(legacies).includes(reaction)) return legacies[reaction];
|
||||
|
@ -124,8 +124,8 @@ export function decodeReaction(str: string): DecodedReaction {
|
|||
};
|
||||
}
|
||||
|
||||
export function convertLegacyReaction(reaction: string): string {
|
||||
reaction = decodeReaction(reaction).reaction;
|
||||
export function convertLegacyReaction(_reaction: string): string {
|
||||
const reaction = decodeReaction(_reaction).reaction;
|
||||
if (Object.keys(legacies).includes(reaction)) return legacies[reaction];
|
||||
return reaction;
|
||||
}
|
||||
|
|
5
packages/backend/src/misc/renote.ts
Normal file
5
packages/backend/src/misc/renote.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
import { Note } from '@/models/entities/note.js';
|
||||
|
||||
export function isPureRenote(note: Note): boolean {
|
||||
return note.renoteId != null && note.text == null && (note.fileIds == null || note.fileIds.length === 0) && !note.hasPoll;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
import { Webhooks } from '@/models/index.js';
|
||||
import { Webhook } from '@/models/entities/webhook.js';
|
||||
import { subsdcriber } from '../db/redis.js';
|
||||
import { subscriber } from '@/db/redis.js';
|
||||
|
||||
let webhooksFetched = false;
|
||||
let webhooks: Webhook[] = [];
|
||||
|
@ -16,7 +16,7 @@ export async function getActiveWebhooks() {
|
|||
return webhooks;
|
||||
}
|
||||
|
||||
subsdcriber.on('message', async (_, data) => {
|
||||
subscriber.on('message', async (_, data) => {
|
||||
const obj = JSON.parse(data);
|
||||
|
||||
if (obj.channel === 'internal') {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
|
||||
@Entity()
|
||||
export class AbuseUserReport {
|
||||
|
@ -52,10 +52,15 @@ export class AbuseUserReport {
|
|||
public resolved: boolean;
|
||||
|
||||
@Column('boolean', {
|
||||
default: false
|
||||
default: false,
|
||||
})
|
||||
public forwarded: boolean;
|
||||
|
||||
@Column('varchar', {
|
||||
length: 512, array: true, default: '{}',
|
||||
})
|
||||
public urls: string[];
|
||||
|
||||
@Column('varchar', {
|
||||
length: 2048,
|
||||
})
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { App } from './app.js';
|
||||
import { id } from '../id.js';
|
||||
|
||||
@Entity()
|
||||
export class AccessToken {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { Announcement } from './announcement.js';
|
||||
import { id } from '../id.js';
|
||||
|
||||
@Entity()
|
||||
@Index(['userId', 'announcementId'], { unique: true })
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Entity, Index, JoinColumn, Column, ManyToOne, PrimaryColumn } from 'typeorm';
|
||||
import { id } from '../id.js';
|
||||
import { Note } from './note.js';
|
||||
import { Antenna } from './antenna.js';
|
||||
import { id } from '../id.js';
|
||||
|
||||
@Entity()
|
||||
@Index(['noteId', 'antennaId'], { unique: true })
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { UserList } from './user-list.js';
|
||||
import { UserGroupJoining } from './user-group-joining.js';
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { Entity, PrimaryColumn, Column, Index, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
|
||||
@Entity()
|
||||
export class App {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, JoinColumn, Column, ManyToOne, Index } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
|
||||
@Entity()
|
||||
export class AttestationChallenge {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { Entity, PrimaryColumn, Index, Column, ManyToOne, JoinColumn } from 'typeorm';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { App } from './app.js';
|
||||
import { id } from '../id.js';
|
||||
|
||||
@Entity()
|
||||
export class AuthSession {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
|
||||
@Entity()
|
||||
@Index(['blockerId', 'blockeeId'], { unique: true })
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { Channel } from './channel.js';
|
||||
|
||||
@Entity()
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { id } from '../id.js';
|
||||
import { Note } from './note.js';
|
||||
import { Channel } from './channel.js';
|
||||
import { id } from '../id.js';
|
||||
|
||||
@Entity()
|
||||
@Index(['channelId', 'noteId'], { unique: true })
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { PrimaryColumn, Entity, Index, JoinColumn, Column, ManyToOne } from 'typeorm';
|
||||
import { User } from './user.js';
|
||||
import { id } from '../id.js';
|
||||
import { User } from './user.js';
|
||||
import { DriveFile } from './drive-file.js';
|
||||
|
||||
@Entity()
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue