Add friendly capcha #36

Merged
ashten merged 5 commits from feature/friendly-captcha into main 2025-01-19 07:47:57 +00:00
108 changed files with 437 additions and 635 deletions
Showing only changes of commit 32061eaefb - Show all commits

View file

@ -1,5 +1,5 @@
# db settings # db settings
POSTGRES_PASSWORD=example-misskey-pass POSTGRES_PASSWORD=example-forkey-pass
POSTGRES_USER=example-misskey-user POSTGRES_USER=example-forkey-user
POSTGRES_DB=misskey POSTGRES_DB=forkey
DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}" DATABASE_URL="postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}"

View file

@ -1,5 +1,5 @@
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey configuration # Forkey configuration
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# ┌─────┐ # ┌─────┐
@ -15,11 +15,11 @@ url: https://example.tld/
#───┘ Port and TLS settings └─────────────────────────────────── #───┘ Port and TLS settings └───────────────────────────────────
# #
# Misskey requires a reverse proxy to support HTTPS connections. # Forkey requires a reverse proxy to support HTTPS connections.
# #
# +----- https://example.tld/ ------------+ # +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) || # | User | ---> || Proxy (443) | ---> | Forkey (3000) ||
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
# +---------------------------------------+ # +---------------------------------------+
# #
@ -27,7 +27,7 @@ url: https://example.tld/
# An encrypted connection with HTTPS is highly recommended # An encrypted connection with HTTPS is highly recommended
# because tokens may be transferred in GET requests. # because tokens may be transferred in GET requests.
# The port that your Misskey server should listen on. # The port that your Forkey server should listen on.
port: 3000 port: 3000
# ┌──────────────────────────┐ # ┌──────────────────────────┐
@ -38,11 +38,11 @@ db:
port: 5432 port: 5432
# Database name # Database name
db: misskey db: forkey
# Auth # Auth
user: example-misskey-user user: example-forkey-user
pass: example-misskey-pass pass: example-forkey-pass
# Whether disable Caching queries # Whether disable Caching queries
#disableCache: true #disableCache: true

View file

@ -1,5 +1,5 @@
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# Misskey configuration # Forkey configuration
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
# ┌─────┐ # ┌─────┐
@ -15,11 +15,11 @@ url: https://example.tld/
#───┘ Port and TLS settings └─────────────────────────────────── #───┘ Port and TLS settings └───────────────────────────────────
# #
# Misskey requires a reverse proxy to support HTTPS connections. # Forkey requires a reverse proxy to support HTTPS connections.
# #
# +----- https://example.tld/ ------------+ # +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) || # | User | ---> || Proxy (443) | ---> | Forkey (3000) ||
# +------+ |+-------------+ +----------------+| # +------+ |+-------------+ +----------------+|
# +---------------------------------------+ # +---------------------------------------+
# #
@ -27,7 +27,7 @@ url: https://example.tld/
# An encrypted connection with HTTPS is highly recommended # An encrypted connection with HTTPS is highly recommended
# because tokens may be transferred in GET requests. # because tokens may be transferred in GET requests.
# The port that your Misskey server should listen on. # The port that your Forkey server should listen on.
port: 3000 port: 3000
# You can also use UNIX domain socket. # You can also use UNIX domain socket.
@ -42,11 +42,11 @@ db:
port: 5432 port: 5432
# Database name # Database name
db: misskey db: forkey
# Auth # Auth
user: example-misskey-user user: example-forkey-user
pass: example-misskey-pass pass: example-forkey-pass
# Whether disable Caching queries # Whether disable Caching queries
#disableCache: true #disableCache: true
@ -206,7 +206,7 @@ proxyRemoteFiles: true
# Movie Thumbnail Generation URL # Movie Thumbnail Generation URL
# There is no reference implementation. # There is no reference implementation.
# For example, Misskey will point to the following URL: # For example, Forkey will point to the following URL:
# https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4 # https://example.com/thumbnail.webp?thumbnail=1&url=https%3A%2F%2Fstorage.example.com%2Fpath%2Fto%2Fvideo.mp4
#videoThumbnailGenerator: https://example.com #videoThumbnailGenerator: https://example.com

View file

@ -1,7 +1,7 @@
**/.git **/.git
.autogen .autogen
.github .forgejo
.travis .travis
.vscode .vscode
.config .config

View file

@ -0,0 +1,16 @@
# Workaround for Forgejo not supporting port redirection
url: 'http://misskey.local'
port: 61812
db:
host: postgres
port: 5432
db: test-misskey
user: postgres
pass: ''
redis:
host: dragonfly
port: 6379
id: aidx

View file

@ -21,7 +21,7 @@ jobs:
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false

View file

@ -3,9 +3,7 @@ name: Check Misskey JS version
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
paths: paths:
- packages/misskey-js/package.json - packages/misskey-js/package.json
- package.json - package.json

View file

@ -3,9 +3,7 @@ name: Lint
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
paths: paths:
- packages/backend/** - packages/backend/**
- packages/frontend/** - packages/frontend/**
@ -28,7 +26,7 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- uses: actions/setup-node@v4.1.0 - uses: actions/setup-node@v4.1.0
@ -53,7 +51,7 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- uses: actions/setup-node@v4.1.0 - uses: actions/setup-node@v4.1.0
@ -77,7 +75,7 @@ jobs:
with: with:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- uses: pnpm/action-setup@v4 - uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- uses: actions/setup-node@v4.1.0 - uses: actions/setup-node@v4.1.0

View file

@ -3,9 +3,7 @@ name: Test (backend)
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
paths: paths:
- packages/backend/** - packages/backend/**
# for permissions # for permissions
@ -27,8 +25,6 @@ jobs:
services: services:
postgres: postgres:
image: postgres:15 image: postgres:15
ports:
- 54312:5432
env: env:
POSTGRES_DB: test-misskey POSTGRES_DB: test-misskey
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
@ -44,8 +40,6 @@ jobs:
DFLY_conn_io_threads: 4 DFLY_conn_io_threads: 4
DFLY_epoll_file_threads: 4 DFLY_epoll_file_threads: 4
DFLY_proactor_threads: 4 DFLY_proactor_threads: 4
ports:
- 56312:6379
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -53,11 +47,11 @@ jobs:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- name: Install FFmpeg - name: Install FFmpeg
uses: FedericoCarboni/setup-ffmpeg@v3 uses: https://github.com/FedericoCarboni/setup-ffmpeg@v3
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4.1.0 uses: actions/setup-node@v4.1.0
with: with:
@ -67,16 +61,11 @@ jobs:
- name: Check pnpm-lock.yaml - name: Check pnpm-lock.yaml
run: git diff --exit-code pnpm-lock.yaml run: git diff --exit-code pnpm-lock.yaml
- name: Copy Configure - name: Copy Configure
run: cp .github/misskey/test.yml .config run: cp .forgejo/misskey/test-forgejo.yml .config/test.yml
- name: Build - name: Build
run: pnpm build run: pnpm build
- name: Test - name: Test
run: pnpm --filter backend test-and-coverage run: pnpm --filter backend test
- name: Upload to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/backend/coverage/coverage-final.json
e2e: e2e:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -88,8 +77,6 @@ jobs:
services: services:
postgres: postgres:
image: postgres:15 image: postgres:15
ports:
- 54312:5432
env: env:
POSTGRES_DB: test-misskey POSTGRES_DB: test-misskey
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
@ -105,8 +92,6 @@ jobs:
DFLY_conn_io_threads: 4 DFLY_conn_io_threads: 4
DFLY_epoll_file_threads: 4 DFLY_epoll_file_threads: 4
DFLY_proactor_threads: 4 DFLY_proactor_threads: 4
ports:
- 56312:6379
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -114,7 +99,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
@ -126,13 +111,8 @@ jobs:
- name: Check pnpm-lock.yaml - name: Check pnpm-lock.yaml
run: git diff --exit-code pnpm-lock.yaml run: git diff --exit-code pnpm-lock.yaml
- name: Copy Configure - name: Copy Configure
run: cp .github/misskey/test.yml .config run: cp .forgejo/misskey/test-forgejo.yml .config/test.yml
- name: Build - name: Build
run: pnpm build run: pnpm build
- name: Test - name: Test
run: pnpm --filter backend test-and-coverage:e2e run: pnpm --filter backend test:e2e
- name: Upload to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/backend/coverage/coverage-final.json

View file

@ -35,7 +35,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
@ -47,13 +47,8 @@ jobs:
- name: Check pnpm-lock.yaml - name: Check pnpm-lock.yaml
run: git diff --exit-code pnpm-lock.yaml run: git diff --exit-code pnpm-lock.yaml
- name: Copy Configure - name: Copy Configure
run: cp .github/misskey/test.yml .config run: cp .forgejo/misskey/test-forgejo.yml .config/test.yml
- name: Build - name: Build
run: pnpm build run: pnpm build
- name: Test - name: Test
run: pnpm --filter frontend test-and-coverage run: pnpm --filter frontend test
- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/frontend/coverage/coverage-final.json

View file

@ -6,9 +6,7 @@ name: Test (misskey.js)
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
paths: paths:
- packages/misskey-js/** - packages/misskey-js/**
pull_request: pull_request:
@ -33,7 +31,7 @@ jobs:
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
@ -56,9 +54,3 @@ jobs:
run: pnpm --filter misskey-js test run: pnpm --filter misskey-js test
env: env:
CI: true CI: true
- name: Upload Coverage
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./packages/misskey-js/coverage/coverage-final.json

View file

@ -3,9 +3,7 @@ name: Test (production install and build)
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
pull_request: pull_request:
env: env:
@ -25,7 +23,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}
@ -37,6 +35,6 @@ jobs:
- name: Check pnpm-lock.yaml - name: Check pnpm-lock.yaml
run: git diff --exit-code pnpm-lock.yaml run: git diff --exit-code pnpm-lock.yaml
- name: Copy Configure - name: Copy Configure
run: cp .github/misskey/test.yml .config/default.yml run: cp .forgejo/misskey/test-forgejo.yml .config/default.yml
- name: Build - name: Build
run: pnpm build run: pnpm build

View file

@ -3,9 +3,7 @@ name: Test (backend)
on: on:
push: push:
branches: branches:
- beta - main
- io
- host
paths: paths:
- packages/backend/** - packages/backend/**
pull_request: pull_request:
@ -26,7 +24,7 @@ jobs:
fetch-depth: 0 fetch-depth: 0
submodules: true submodules: true
- name: Install pnpm - name: Install pnpm
uses: pnpm/action-setup@v4 uses: pnpm/action-setup@v4.0.0
with: with:
run_install: false run_install: false
- name: Use Node.js ${{ matrix.node-version }} - name: Use Node.js ${{ matrix.node-version }}

View file

@ -1,52 +0,0 @@
name: Publish Docker image (beta)
on:
push:
branches:
- beta
workflow_dispatch:
jobs:
push_to_registry:
name: Push Docker image to GitHub Container Registry
runs-on: ubuntu-22.04
if: github.repository == 'MisskeyIO/misskey'
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/misskeyio/misskey
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare image tags
run: |
echo "FORMATTED_BRANCH_NAME=$(echo ${{ github.ref_name }} | sed -e 's/\//-/g' )" >> $GITHUB_ENV
- name: Build and Push to GitHub Container Registry
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
push: true
platforms: ${{ steps.buildx.outputs.platforms }}
provenance: false
labels: ${{ env.FORMATTED_BRANCH_NAME }}
cache-from: type=registry,ref=ghcr.io/misskeyio/misskey:io-buildcache
cache-to: type=registry,ref=ghcr.io/misskeyio/misskey:io-buildcache,mode=max
tags: |
ghcr.io/misskeyio/misskey:beta
ghcr.io/misskeyio/misskey:${{ env.FORMATTED_BRANCH_NAME }}

View file

@ -1,54 +0,0 @@
name: Publish Docker image (host)
on:
push:
branches:
- host
tags:
- '**-host.*'
workflow_dispatch:
jobs:
push_to_registry:
name: Push Docker image to GitHub Container Registry
runs-on: ubuntu-22.04
if: github.repository == 'MisskeyIO/misskey'
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/misskeyio/misskey
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare image tags
run: |
echo "FORMATTED_BRANCH_NAME=$(echo ${{ github.ref_name }} | sed -e 's/\//-/g' )" >> $GITHUB_ENV
- name: Build and Push to GitHub Container Registry
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
push: true
platforms: ${{ steps.buildx.outputs.platforms }}
provenance: false
labels: ${{ env.FORMATTED_BRANCH_NAME }}
cache-from: type=registry,ref=ghcr.io/misskeyio/misskey:host-buildcache
cache-to: type=registry,ref=ghcr.io/misskeyio/misskey:host-buildcache,mode=max
tags: |
ghcr.io/misskeyio/misskey:host
ghcr.io/misskeyio/misskey:${{ env.FORMATTED_BRANCH_NAME }}

View file

@ -1,54 +0,0 @@
name: Publish Docker image (io)
on:
push:
branches:
- io
tags:
- '**-io.*'
workflow_dispatch:
jobs:
push_to_registry:
name: Push Docker image to GitHub Container Registry
runs-on: ubuntu-22.04
if: github.repository == 'MisskeyIO/misskey'
steps:
- name: Check out the repo
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
with:
platforms: linux/amd64
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/misskeyio/misskey
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare image tags
run: |
echo "FORMATTED_BRANCH_NAME=$(echo ${{ github.ref_name }} | sed -e 's/\//-/g' )" >> $GITHUB_ENV
- name: Build and Push to GitHub Container Registry
uses: docker/build-push-action@v6
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
push: true
platforms: ${{ steps.buildx.outputs.platforms }}
provenance: false
labels: ${{ env.FORMATTED_BRANCH_NAME }}
cache-from: type=registry,ref=ghcr.io/misskeyio/misskey:io-buildcache
cache-to: type=registry,ref=ghcr.io/misskeyio/misskey:io-buildcache,mode=max
tags: |
ghcr.io/misskeyio/misskey:latest
ghcr.io/misskeyio/misskey:${{ env.FORMATTED_BRANCH_NAME }}

View file

@ -1,38 +0,0 @@
name: Dockle
on:
push:
branches:
- beta
- io
- host
pull_request:
jobs:
dockle:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Build an image from Dockerfile
uses: docker/build-push-action@v6
with:
context: .
push: false
provenance: false
cache-from: type=registry,ref=ghcr.io/misskeyio/misskey:io-buildcache
tags: |
misskey:scan
- name: Run dockle
uses: docker://goodwithtech/dockle:v0.4.14
env:
DOCKLE_OUTPUT_FORMAT: list
DOCKLE_EXIT_CODE: 1
DOCKLE_EXIT_LEVEL: WARN
DOCKLE_IGNORES: CIS-DI-0005,CIS-DI-0010
DOCKLE_DEBUG: true
with:
args: 'misskey:scan'

View file

@ -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@v5
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"

View file

@ -1,5 +1,5 @@
# Contribution guide # Contribution guide
We're glad you're interested in contributing Misskey! In this document you will find the information you need to contribute to the project. We're glad you're interested in contributing Forkey! In this document you will find the information you need to contribute to the project.
> **Note** > **Note**
> This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.** > This project uses Japanese as its major language, **but you do not need to translate and write the Issues/PRs in Japanese.**
@ -161,7 +161,7 @@ pnpm dev
### Run test ### Run test
Create a config file. Create a config file.
``` ```
cp .github/misskey/test.yml .config/ cp .forgejo/misskey/test.yml .config/
``` ```
Prepare DB/Redis for testing. Prepare DB/Redis for testing.
``` ```
@ -188,8 +188,8 @@ TODO
- `MISSKEY_WEBFINGER_USE_HTTP`: If it's set true, WebFinger requests will be http instead of https, useful for testing federation between servers in localhost. NEVER USE IN PRODUCTION. - `MISSKEY_WEBFINGER_USE_HTTP`: If it's set true, WebFinger requests will be http instead of https, useful for testing federation between servers in localhost. NEVER USE IN PRODUCTION.
## Continuous integration ## Continuous integration
Misskey uses GitHub Actions for executing automated tests. Misskey uses Forgejo Actions for executing automated tests.
Configuration files are located in [`/.github/workflows`](/.github/workflows). Configuration files are located in [`/.forgejo/workflows`](/.forgejo/workflows).
## Vue ## Vue
Misskey uses Vue(v3) as its front-end framework. Misskey uses Vue(v3) as its front-end framework.

View file

@ -14,7 +14,7 @@ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
&& apt-get install -yqq --no-install-recommends \ && apt-get install -yqq --no-install-recommends \
build-essential build-essential
WORKDIR /misskey WORKDIR /forkey
COPY --link pnpm-lock.yaml ./ COPY --link pnpm-lock.yaml ./
RUN npm install -g pnpm RUN npm install -g pnpm
@ -45,7 +45,7 @@ RUN apt-get update \
&& apt-get install -yqq --no-install-recommends \ && apt-get install -yqq --no-install-recommends \
build-essential build-essential
WORKDIR /misskey WORKDIR /forkey
COPY --link pnpm-lock.yaml ./ COPY --link pnpm-lock.yaml ./
RUN npm install -g pnpm RUN npm install -g pnpm
@ -71,8 +71,8 @@ RUN apt-get update \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
curl ffmpeg libjemalloc-dev libjemalloc2 tini \ curl ffmpeg libjemalloc-dev libjemalloc2 tini \
&& ln -s /usr/lib/$(uname -m)-linux-gnu/libjemalloc.so.2 /usr/local/lib/libjemalloc.so \ && ln -s /usr/lib/$(uname -m)-linux-gnu/libjemalloc.so.2 /usr/local/lib/libjemalloc.so \
&& groupadd -g "${GID}" misskey \ && groupadd -g "${GID}" forkey \
&& useradd -l -u "${UID}" -g "${GID}" -m -d /misskey misskey \ && useradd -l -u "${UID}" -g "${GID}" -m -d /forkey forkey \
&& find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /u+s -ignore_readdir_race -exec chmod u-s {} \; \ && find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /u+s -ignore_readdir_race -exec chmod u-s {} \; \
&& find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /g+s -ignore_readdir_race -exec chmod g-s {} \; \ && find / -type d -path /sys -prune -o -type d -path /proc -prune -o -type f -perm /g+s -ignore_readdir_race -exec chmod g-s {} \; \
&& apt-get clean \ && apt-get clean \
@ -80,27 +80,27 @@ RUN apt-get update \
WORKDIR /misskey WORKDIR /misskey
COPY --chown=misskey:misskey pnpm-lock.yaml ./ COPY --chown=forkey:forkey pnpm-lock.yaml ./
RUN npm install -g pnpm RUN npm install -g pnpm
COPY --chown=misskey:misskey --from=target-builder /misskey/node_modules ./node_modules COPY --chown=forkey:forkey --from=target-builder /forkey/node_modules ./node_modules
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/backend/node_modules ./packages/backend/node_modules COPY --chown=forkey:forkey --from=target-builder /forkey/packages/backend/node_modules ./packages/backend/node_modules
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-js/node_modules ./packages/misskey-js/node_modules COPY --chown=forkey:forkey --from=target-builder /forkey/packages/misskey-js/node_modules ./packages/misskey-js/node_modules
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-reversi/node_modules ./packages/misskey-reversi/node_modules COPY --chown=forkey:forkey --from=target-builder /forkey/packages/misskey-reversi/node_modules ./packages/misskey-reversi/node_modules
COPY --chown=misskey:misskey --from=target-builder /misskey/packages/misskey-bubble-game/node_modules ./packages/misskey-bubble-game/node_modules COPY --chown=forkey:forkey --from=target-builder /forkey/packages/misskey-bubble-game/node_modules ./packages/misskey-bubble-game/node_modules
COPY --chown=misskey:misskey --from=native-builder /misskey/built ./built COPY --chown=forkey:forkey --from=native-builder /forkey/built ./built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-js/built ./packages/misskey-js/built COPY --chown=forkey:forkey --from=native-builder /forkey/packages/misskey-js/built ./packages/misskey-js/built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-reversi/built ./packages/misskey-reversi/built COPY --chown=forkey:forkey --from=native-builder /forkey/packages/misskey-reversi/built ./packages/misskey-reversi/built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/misskey-bubble-game/built ./packages/misskey-bubble-game/built COPY --chown=forkey:forkey --from=native-builder /forkey/packages/misskey-bubble-game/built ./packages/misskey-bubble-game/built
COPY --chown=misskey:misskey --from=native-builder /misskey/packages/backend/built ./packages/backend/built COPY --chown=forkey:forkey --from=native-builder /forkey/packages/backend/built ./packages/backend/built
COPY --chown=misskey:misskey --from=native-builder /misskey/fluent-emojis /misskey/fluent-emojis COPY --chown=forkey:forkey --from=native-builder /forkey/fluent-emojis /forkey/fluent-emojis
COPY --chown=misskey:misskey . ./ COPY --chown=forkey:forkey . ./
USER misskey USER forkey
ENV LD_PRELOAD=/usr/local/lib/libjemalloc.so ENV LD_PRELOAD=/usr/local/lib/libjemalloc.so
ENV MALLOC_CONF=background_thread:true,metadata_thp:auto,dirty_decay_ms:30000,muzzy_decay_ms:30000 ENV MALLOC_CONF=background_thread:true,metadata_thp:auto,dirty_decay_ms:30000,muzzy_decay_ms:30000
ENV TF_CPP_MIN_LOG_LEVEL=2 ENV TF_CPP_MIN_LOG_LEVEL=2
ENV NODE_ENV=production ENV NODE_ENV=production
HEALTHCHECK --interval=5s --retries=20 CMD ["/bin/bash", "/misskey/healthcheck.sh"] HEALTHCHECK --interval=5s --retries=20 CMD ["/bin/bash", "/forkey/healthcheck.sh"]
ENTRYPOINT ["/usr/bin/tini", "--"] ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["pnpm", "run", "migrateandstart:docker"] CMD ["pnpm", "run", "migrateandstart:docker"]

View file

@ -1,9 +1,9 @@
<div align="center"> <div align="center">
<a href="https://misskey-hub.net"> <a href="https://misskey-hub.net">
<img src="./assets/title_float.svg" alt="Misskey logo" style="border-radius:50%" width="300"/> <img src="./assets/title_float.svg" alt="Forkey logo" style="border-radius:50%" width="300"/>
</a> </a>
**🌎 **Misskey** is an open source, federated social media platform that's free forever! 🚀** **🌎 **Forkey** is an open source, federated social media platform that's free forever! 🚀**
[Learn more](https://misskey-hub.net/) [Learn more](https://misskey-hub.net/)

View file

@ -30,11 +30,11 @@ spec:
image: postgres:15-alpine image: postgres:15-alpine
env: env:
- name: POSTGRES_USER - name: POSTGRES_USER
value: "example-misskey-user" value: "example-forkey-user"
- name: POSTGRES_PASSWORD - name: POSTGRES_PASSWORD
value: "example-misskey-pass" value: "example-forkey-pass"
- name: POSTGRES_DB - name: POSTGRES_DB
value: "misskey" value: "forkey"
ports: ports:
- containerPort: 5432 - containerPort: 5432
- name: dragonfly - name: dragonfly

View file

@ -20,8 +20,8 @@ services:
- internal_network - internal_network
- external_network - external_network
volumes: volumes:
- ./files:/misskey/files - ./files:/forkey/files
- ./.config:/misskey/.config:ro - ./.config:/forkey/.config:ro
dragonfly: dragonfly:
restart: always restart: always

View file

@ -3,5 +3,5 @@
# SPDX-FileCopyrightText: syuilo and misskey-project # SPDX-FileCopyrightText: syuilo and misskey-project
# SPDX-License-Identifier: AGPL-3.0-only # SPDX-License-Identifier: AGPL-3.0-only
PORT=$(grep '^port:' /misskey/.config/default.yml | awk 'NR==1{print $2; exit}') PORT=$(grep '^port:' /forkey/.config/default.yml | awk 'NR==1{print $2; exit}')
curl -s -S -o /dev/null "http://localhost:${PORT}" curl -s -S -o /dev/null "http://localhost:${PORT}"

View file

@ -1458,7 +1458,7 @@ _achievements:
_login1000: _login1000:
title: "Mestre de les Notes III" title: "Mestre de les Notes III"
description: "Vas iniciar sessió fa mil dies" description: "Vas iniciar sessió fa mil dies"
flavor: "Gràcies per fer servir MissKey!" flavor: "Gràcies per fer servir Forkey!"
_noteClipped1: _noteClipped1:
title: "He de retallar-te!" title: "He de retallar-te!"
description: "Retalla la teva primera nota" description: "Retalla la teva primera nota"
@ -1518,9 +1518,9 @@ _achievements:
title: "M'agraden els èxits " title: "M'agraden els èxits "
description: "Mira la teva llista d'assoliments durant més de 3 minuts" description: "Mira la teva llista d'assoliments durant més de 3 minuts"
_iLoveMisskey: _iLoveMisskey:
title: "Estimo Misskey" title: "Estimo Forkey"
description: "Publica \"I ❤ #Misskey\"" description: "Publica \"I ❤ #Forkey\""
flavor: "L'equip de desenvolupament de Misskey agraeix el vostre suport!" flavor: "L'equip de desenvolupament de Forkey agraeix el vostre suport!"
_foundTreasure: _foundTreasure:
title: "A la Recerca del Tresor" title: "A la Recerca del Tresor"
description: "Has trobat el tresor amagat" description: "Has trobat el tresor amagat"
@ -1599,7 +1599,7 @@ _achievements:
title: "Sobrecàrrega de proves" title: "Sobrecàrrega de proves"
description: "Envia moltes notificacions de prova en un període de temps molt curt" description: "Envia moltes notificacions de prova en un període de temps molt curt"
_tutorialCompleted: _tutorialCompleted:
title: "Diploma del Curs Elemental de Misskey" title: "Diploma del Curs Elemental de Forkey"
description: "Has completat el tutorial" description: "Has completat el tutorial"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -1235,7 +1235,7 @@ _achievements:
_login1000: _login1000:
title: "Mistr poznámek III" title: "Mistr poznámek III"
description: "Přihlaste se celkově za 1000 dní" description: "Přihlaste se celkově za 1000 dní"
flavor: "Děkujeme, že používáte Misskey!" flavor: "Děkujeme, že používáte Forkey!"
_noteClipped1: _noteClipped1:
title: "Musím... připnout..." title: "Musím... připnout..."
description: "Připněte si první poznámku" description: "Připněte si první poznámku"
@ -1295,9 +1295,9 @@ _achievements:
title: "Máš rád úspěchy" title: "Máš rád úspěchy"
description: "Koukejte na váš seznam úspěchů alespoň po dobu 3 minut" description: "Koukejte na váš seznam úspěchů alespoň po dobu 3 minut"
_iLoveMisskey: _iLoveMisskey:
title: "Miluju Misskey" title: "Miluju Forkey"
description: "Zveřejněte \" I ❤ #Misskey\"" description: "Zveřejněte \" I ❤ #Forkey\""
flavor: "Vývojový tým Misskey si velmi váží vaší podpory!" flavor: "Vývojový tým Forkey si velmi váží vaší podpory!"
_foundTreasure: _foundTreasure:
title: "Hon za pokladem" title: "Hon za pokladem"
description: "Našli jste schovaný poklad!" description: "Našli jste schovaný poklad!"

View file

@ -166,7 +166,7 @@ youCanCleanRemoteFilesCache: "Klicke auf den 🗑️-Knopf der Dateiverwaltungsa
cacheRemoteSensitiveFiles: "Sensitive Dateien von fremden Instanzen im Cache speichern" cacheRemoteSensitiveFiles: "Sensitive Dateien von fremden Instanzen im Cache speichern"
cacheRemoteSensitiveFilesDescription: "Ist diese Einstellung deaktiviert, so werden sensitive Dateien fremder Instanzen direkt von dort ohne Zwischenspeicherung geladen." cacheRemoteSensitiveFilesDescription: "Ist diese Einstellung deaktiviert, so werden sensitive Dateien fremder Instanzen direkt von dort ohne Zwischenspeicherung geladen."
flagAsBot: "Als Bot markieren" flagAsBot: "Als Bot markieren"
flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Misskeys interne Systeme dieses Benutzerkonto als Bot behandeln." flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt forkeys interne Systeme dieses Benutzerkonto als Bot behandeln."
flagAsCat: "Als Katze markieren" flagAsCat: "Als Katze markieren"
flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu markieren." flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu markieren."
flagShowTimelineReplies: "Antworten in der Chronik anzeigen" flagShowTimelineReplies: "Antworten in der Chronik anzeigen"
@ -1374,7 +1374,7 @@ _achievements:
_login1000: _login1000:
title: "Meister der Notizen Ⅲ" title: "Meister der Notizen Ⅲ"
description: "An 1000 Tagen eingeloggt" description: "An 1000 Tagen eingeloggt"
flavor: "Danke, dass du Misskey nutzt!" flavor: "Danke, dass du Forkey nutzt!"
_noteClipped1: _noteClipped1:
title: "Muss... clippen..." title: "Muss... clippen..."
description: "Die erste Notiz geclippt" description: "Die erste Notiz geclippt"
@ -1434,9 +1434,9 @@ _achievements:
title: "Fan von Errungenschaften" title: "Fan von Errungenschaften"
description: "Schau dir die Liste deiner Errungenschaften für mindestens 3 Minuten an" description: "Schau dir die Liste deiner Errungenschaften für mindestens 3 Minuten an"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "Sende \"I ❤ #Misskey\"" description: "Sende \"I ❤ #Forkey\""
flavor: "Danke, dass du Misskey verwendest! - vom Entwicklerteam" flavor: "Danke, dass du Forkey verwendest! - vom Entwicklerteam"
_foundTreasure: _foundTreasure:
title: "Schatzsuche" title: "Schatzsuche"
description: "Du hast einen verborgenen Schatz gefunden" description: "Du hast einen verborgenen Schatz gefunden"

View file

@ -437,6 +437,7 @@ popularTags: "Popular tags"
userList: "Lists" userList: "Lists"
about: "About" about: "About"
aboutMisskey: "About Misskey" aboutMisskey: "About Misskey"
aboutForkey: "About Forkey"
administrator: "Administrator" administrator: "Administrator"
token: "Token" token: "Token"
2fa: "Two-factor authentication" 2fa: "Two-factor authentication"
@ -1510,9 +1511,9 @@ _achievements:
earnedAt: "Unlocked at" earnedAt: "Unlocked at"
_types: _types:
_notes1: _notes1:
title: "just setting up my msky" title: "just setting up my forkey"
description: "Post your first note" description: "Post your first note"
flavor: "Have a good time with Misskey!" flavor: "Have a good time with Forkey!"
_notes10: _notes10:
title: "Some notes" title: "Some notes"
description: "Post 10 notes" description: "Post 10 notes"
@ -1608,7 +1609,7 @@ _achievements:
_login1000: _login1000:
title: "Master of Notes III" title: "Master of Notes III"
description: "Log in for a total of 1,000 days" description: "Log in for a total of 1,000 days"
flavor: "Thank you for using Misskey!" flavor: "Thank you for using Forkey!"
_noteClipped1: _noteClipped1:
title: "Must... clip..." title: "Must... clip..."
description: "Clip your first note" description: "Clip your first note"
@ -1668,9 +1669,9 @@ _achievements:
title: "Likes Achievements" title: "Likes Achievements"
description: "Look at your list of achievements for at least 3 minutes" description: "Look at your list of achievements for at least 3 minutes"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "Post \"I ❤ #Misskey\"" description: "Post \"I ❤ #Forkey\""
flavor: "Misskey's development team greatly appreciates your support!" flavor: "Forkey's development team greatly appreciates your support!"
_foundTreasure: _foundTreasure:
title: "Treasure Hunt" title: "Treasure Hunt"
description: "You've found the hidden treasure" description: "You've found the hidden treasure"
@ -1749,7 +1750,7 @@ _achievements:
title: "Test overflow" title: "Test overflow"
description: "Trigger the notification test repeatedly within an extremely short time" description: "Trigger the notification test repeatedly within an extremely short time"
_tutorialCompleted: _tutorialCompleted:
title: "Misskey Elementary Course Diploma" title: "Forkey Elementary Course Diploma"
description: "Tutorial completed" description: "Tutorial completed"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"
@ -1947,13 +1948,17 @@ _aboutMisskey:
contributors: "Main contributors" contributors: "Main contributors"
allContributors: "All contributors" allContributors: "All contributors"
source: "Source code" source: "Source code"
original: "Original" original: "Misskey Original"
thisIsModifiedVersion: "{name} uses a modified version of the original Misskey." thisIsModifiedVersion: "{name} uses a modified version of the original Misskey."
translation: "Translate Misskey" translation: "Translate Misskey"
donate: "Donate to Misskey" donate: "Donate to Misskey"
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰" morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰"
patrons: "Patrons" patrons: "Patrons"
projectMembers: "Project members" projectMembers: "Misskey Project members"
_aboutForkey:
about: "Forkey is open-source software based on Misskey which has been in development by syuilo since 2014."
original: "Forkey Original"
projectMembers: "Forkey Project Members"
_displayOfSensitiveMedia: _displayOfSensitiveMedia:
respect: "Hide media marked as sensitive" respect: "Hide media marked as sensitive"
ignore: "Display media marked as sensitive" ignore: "Display media marked as sensitive"

View file

@ -1476,7 +1476,7 @@ _achievements:
_login1000: _login1000:
title: "Maestro III" title: "Maestro III"
description: "Días desde el inicio de sesión: 1000" description: "Días desde el inicio de sesión: 1000"
flavor: "¡Gracias por usar Misskey!" flavor: "¡Gracias por usar Forkey!"
_noteClipped1: _noteClipped1:
title: "No puedo evitar clipearte..." title: "No puedo evitar clipearte..."
description: "Hacer un clip por primera vez" description: "Hacer un clip por primera vez"
@ -1536,9 +1536,9 @@ _achievements:
title: "¡Te gustan los logros!" title: "¡Te gustan los logros!"
description: "Mirando tus logros por 3 minutos" description: "Mirando tus logros por 3 minutos"
_iLoveMisskey: _iLoveMisskey:
title: "¡AMO Misskey!" title: "¡AMO Forkey!"
description: "\"I ❤ #Misskey\" Publicado" description: "\"I ❤ #Forkey\" Publicado"
flavor: "El equipo de desarrollo de Misskey, en verdad, ¡aprecia tu apoyo!" flavor: "El equipo de desarrollo de Forkey, en verdad, ¡aprecia tu apoyo!"
_foundTreasure: _foundTreasure:
title: "Búsqueda del tesoro" title: "Búsqueda del tesoro"
description: "Encontraste un tesoro" description: "Encontraste un tesoro"
@ -1617,7 +1617,7 @@ _achievements:
title: "Sobrecarga de pruebas" title: "Sobrecarga de pruebas"
description: "Envía muchas notificaciones de prueba en un corto espacio de tiempo" description: "Envía muchas notificaciones de prueba en un corto espacio de tiempo"
_tutorialCompleted: _tutorialCompleted:
title: "Diploma del Curso Básico de Misskey" title: "Diploma del Curso Básico de Forkey"
description: "Tutorial completado" description: "Tutorial completado"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -1393,7 +1393,7 @@ _achievements:
_login900: _login900:
description: "Se connecter pour un total de 900 jours" description: "Se connecter pour un total de 900 jours"
_login1000: _login1000:
flavor: "Merci d'utiliser Misskey !" flavor: "Merci d'utiliser Forkey !"
_profileFilled: _profileFilled:
title: "Bien préparé" title: "Bien préparé"
description: "Configuration de votre profil" description: "Configuration de votre profil"
@ -1429,9 +1429,9 @@ _achievements:
title: "Influenceur·euse" title: "Influenceur·euse"
description: "Obtenir plus de 1000 abonné·e·s" description: "Obtenir plus de 1000 abonné·e·s"
_iLoveMisskey: _iLoveMisskey:
title: "Jadore Misskey" title: "Jadore Forkey"
description: "Publication « J❤ #Misskey »" description: "Publication « J❤ #Forkey »"
flavor: "L'équipe de développement de Misskey apprécie vraiment votre aide !" flavor: "L'équipe de développement de Forkey apprécie vraiment votre aide !"
_foundTreasure: _foundTreasure:
title: "Chasse au trésor" title: "Chasse au trésor"
description: "Vous avez trouvé le trésor caché" description: "Vous avez trouvé le trésor caché"
@ -1472,7 +1472,7 @@ _achievements:
title: "Débordement de tests" title: "Débordement de tests"
description: "Détruire le bouton de test de notifications dans un intervalle extrêmement court" description: "Détruire le bouton de test de notifications dans un intervalle extrêmement court"
_tutorialCompleted: _tutorialCompleted:
title: "Diplôme de la course élémentaire de Misskey" title: "Diplôme de la course élémentaire de Forkey"
description: "Terminer le tutoriel" description: "Terminer le tutoriel"
_role: _role:
new: "Nouveau rôle" new: "Nouveau rôle"

View file

@ -1478,7 +1478,7 @@ _achievements:
_login1000: _login1000:
title: "Sepuh Catatan III" title: "Sepuh Catatan III"
description: "Login selama 1000 hari" description: "Login selama 1000 hari"
flavor: "Terima kasih telah menggunakan Misskey!" flavor: "Terima kasih telah menggunakan Forkey!"
_noteClipped1: _noteClipped1:
title: "Harus... Ngeklip..." title: "Harus... Ngeklip..."
description: "Klip catatan pertamamu" description: "Klip catatan pertamamu"
@ -1538,9 +1538,9 @@ _achievements:
title: "Suka Pencapaian" title: "Suka Pencapaian"
description: "Lugat daftar pencapaianmu setidaknya 3 menit" description: "Lugat daftar pencapaianmu setidaknya 3 menit"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "Catat \"I ❤ #Misskey\"" description: "Catat \"I ❤ #Forkey\""
flavor: "Tim pengembang misskey sangat mengapresiasi dukungan kamu!" flavor: "Tim pengembang forkey sangat mengapresiasi dukungan kamu!"
_foundTreasure: _foundTreasure:
title: "Berburu Harta Karun" title: "Berburu Harta Karun"
description: "Kamu telah menemukan harta karun tersembunyi" description: "Kamu telah menemukan harta karun tersembunyi"
@ -1619,7 +1619,7 @@ _achievements:
title: "Tes overflow" title: "Tes overflow"
description: "Picu tes notifikasi secara berulang dalam waktu yang sangat pendek" description: "Picu tes notifikasi secara berulang dalam waktu yang sangat pendek"
_tutorialCompleted: _tutorialCompleted:
title: "Ijazah Sekolah Dasar Misskey" title: "Ijazah Sekolah Dasar Forkey"
description: "Tutorial selesai" description: "Tutorial selesai"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

34
locales/index.d.ts vendored
View file

@ -1772,6 +1772,10 @@ export interface Locale extends ILocale {
* Misskeyについて * Misskeyについて
*/ */
"aboutMisskey": string; "aboutMisskey": string;
/**
* Forkeyについて
*/
"aboutForkey": string;
/** /**
* *
*/ */
@ -6033,7 +6037,7 @@ export interface Locale extends ILocale {
"_types": { "_types": {
"_notes1": { "_notes1": {
/** /**
* just setting up my msky * just setting up my forkey
*/ */
"title": string; "title": string;
/** /**
@ -6041,7 +6045,7 @@ export interface Locale extends ILocale {
*/ */
"description": string; "description": string;
/** /**
* Misskeyライフを * Forkeyライフを
*/ */
"flavor": string; "flavor": string;
}; };
@ -6365,7 +6369,7 @@ export interface Locale extends ILocale {
*/ */
"description": string; "description": string;
/** /**
* Misskeyを使ってくれてありがとう * Forkeyを使ってくれてありがとう
*/ */
"flavor": string; "flavor": string;
}; };
@ -6565,15 +6569,15 @@ export interface Locale extends ILocale {
}; };
"_iLoveMisskey": { "_iLoveMisskey": {
/** /**
* I Love Misskey * I Love Forkey
*/ */
"title": string; "title": string;
/** /**
* "I ❤ #Misskey"稿 * "I ❤ #Forkey"稿
*/ */
"description": string; "description": string;
/** /**
* Misskeyを使ってくださりありがとうございます by * Forkeyを使ってくださりありがとうございます by
*/ */
"flavor": string; "flavor": string;
}; };
@ -7593,7 +7597,7 @@ export interface Locale extends ILocale {
*/ */
"source": string; "source": string;
/** /**
* * Misskeyオリジナ
*/ */
"original": string; "original": string;
/** /**
@ -7617,7 +7621,21 @@ export interface Locale extends ILocale {
*/ */
"patrons": string; "patrons": string;
/** /**
* * Misskeyプロジェクトメンバー
*/
"projectMembers": string;
};
"_aboutForkey": {
/**
* Forkey 2014 syuilo Misskey
*/
"about": string;
/**
* Forkeyに寄付
*/
"original": string;
/**
* Forkeyプロジェクトメンバー
*/ */
"projectMembers": string; "projectMembers": string;
}; };

View file

@ -1476,7 +1476,7 @@ _achievements:
_login1000: _login1000:
title: "Maestro di Note III livello" title: "Maestro di Note III livello"
description: "Hai totalizzato 1000 accessi!" description: "Hai totalizzato 1000 accessi!"
flavor: "Grazie per aver usato Misskey!" flavor: "Grazie per aver usato Forkey!"
_noteClipped1: _noteClipped1:
title: "Devo clippare!" title: "Devo clippare!"
description: "Hai raccolto la tua prima Nota in una Clip" description: "Hai raccolto la tua prima Nota in una Clip"
@ -1536,9 +1536,9 @@ _achievements:
title: "Mi piacciono i risultati" title: "Mi piacciono i risultati"
description: "Guarda la tua collezione di obiettivi per almeno 3 minuti" description: "Guarda la tua collezione di obiettivi per almeno 3 minuti"
_iLoveMisskey: _iLoveMisskey:
title: "I LOVE Misskey" title: "I LOVE Forkey"
description: "Pubblica «I ♥ #Misskey»" description: "Pubblica «I ♥ #Forkey»"
flavor: "Grazie per aver utilizzato Misskey! Dal team di sviluppo" flavor: "Grazie per aver utilizzato Forkey! Dal team di sviluppo"
_foundTreasure: _foundTreasure:
title: "Caccia al tesoro" title: "Caccia al tesoro"
description: "Hai trovato un tesoro nascosto" description: "Hai trovato un tesoro nascosto"
@ -1617,7 +1617,7 @@ _achievements:
title: "Prove eccessive" title: "Prove eccessive"
description: "Hai provato le notifiche consecutivamente in un periodo di tempo molto breve" description: "Hai provato le notifiche consecutivamente in un periodo di tempo molto breve"
_tutorialCompleted: _tutorialCompleted:
title: "Attestato di partecipazione al corso per principianti di Misskey" title: "Attestato di partecipazione al corso per principianti di Forkey"
description: "Ha completato il tutorial" description: "Ha completato il tutorial"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -439,6 +439,7 @@ popularTags: "人気のタグ"
userList: "リスト" userList: "リスト"
about: "情報" about: "情報"
aboutMisskey: "Misskeyについて" aboutMisskey: "Misskeyについて"
aboutForkey: "Forkeyについて"
administrator: "管理者" administrator: "管理者"
token: "確認コード" token: "確認コード"
2fa: "二要素認証" 2fa: "二要素認証"
@ -1521,9 +1522,9 @@ _achievements:
earnedAt: "獲得日時" earnedAt: "獲得日時"
_types: _types:
_notes1: _notes1:
title: "just setting up my msky" title: "just setting up my forkey"
description: "初めてノートを投稿した" description: "初めてノートを投稿した"
flavor: "良いMisskeyライフを" flavor: "良いForkeyライフを"
_notes10: _notes10:
title: "いくつかのノート" title: "いくつかのノート"
description: "ートを10回投稿した" description: "ートを10回投稿した"
@ -1619,7 +1620,7 @@ _achievements:
_login1000: _login1000:
title: "ノートマスターⅢ" title: "ノートマスターⅢ"
description: "通算ログイン日数が1,000日" description: "通算ログイン日数が1,000日"
flavor: "Misskeyを使ってくれてありがとう" flavor: "Forkeyを使ってくれてありがとう"
_noteClipped1: _noteClipped1:
title: "クリップせずにはいられないな" title: "クリップせずにはいられないな"
description: "初めてノートをクリップした" description: "初めてノートをクリップした"
@ -1679,9 +1680,9 @@ _achievements:
title: "実績好き" title: "実績好き"
description: "実績一覧を3分以上眺め続けた" description: "実績一覧を3分以上眺め続けた"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "\"I ❤ #Misskey\"を投稿した" description: "\"I ❤ #Forkey\"を投稿した"
flavor: "Misskeyを使ってくださりありがとうございます by 開発チーム" flavor: "Forkeyを使ってくださりありがとうございます by 開発チーム"
_foundTreasure: _foundTreasure:
title: "宝探し" title: "宝探し"
description: "隠されたお宝を発見した" description: "隠されたお宝を発見した"
@ -1760,7 +1761,7 @@ _achievements:
title: "テスト過剰" title: "テスト過剰"
description: "通知のテストをごく短時間のうちに連続して行った" description: "通知のテストをごく短時間のうちに連続して行った"
_tutorialCompleted: _tutorialCompleted:
title: "Misskey初心者講座 修了証" title: "Forkey初心者講座 修了証"
description: "チュートリアルを完了した" description: "チュートリアルを完了した"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"
@ -1972,13 +1973,19 @@ _aboutMisskey:
contributors: "コントリビューター" contributors: "コントリビューター"
allContributors: "全てのコントリビューター" allContributors: "全てのコントリビューター"
source: "ソースコード" source: "ソースコード"
original: "オリジナル" original: "Misskeyオリジナル"
thisIsModifiedVersion: "{name}はオリジナルのMisskeyを改変したバージョンを使用しています。" thisIsModifiedVersion: "{name}はオリジナルのMisskeyを改変したバージョンを使用しています。"
translation: "Misskeyを翻訳" translation: "Misskeyを翻訳"
donate: "Misskeyに寄付" donate: "Misskeyに寄付"
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます🥰" morePatrons: "他にも多くの方が支援してくれています。ありがとうございます🥰"
patrons: "支援者" patrons: "支援者"
projectMembers: "プロジェクトメンバー" projectMembers: "Misskeyプロジェクトメンバー"
_aboutForkey:
about: "Forkey は、2014 年から syuilo によって開発されている Misskey をベースにしたオープンソース ソフトウェアです。"
original: "Forkeyに寄付"
projectMembers: "Forkeyプロジェクトメンバー"
_displayOfSensitiveMedia: _displayOfSensitiveMedia:
respect: "センシティブ設定されたメディアを隠す" respect: "センシティブ設定されたメディアを隠す"

View file

@ -1478,7 +1478,7 @@ _achievements:
_login1000: _login1000:
title: "ノートマイスターⅢ" title: "ノートマイスターⅢ"
description: "通算1,000日ログインした" description: "通算1,000日ログインした"
flavor: "Misskeyようさん使てもろておおきにな" flavor: "Forkeyようさん使てもろておおきにな"
_noteClipped1: _noteClipped1:
title: "アカンどれもクリップしたいわ" title: "アカンどれもクリップしたいわ"
description: "初めてノートをクリップした" description: "初めてノートをクリップした"
@ -1538,9 +1538,9 @@ _achievements:
title: "実績好き" title: "実績好き"
description: "実績一覧を3分以上眺め続けた" description: "実績一覧を3分以上眺め続けた"
_iLoveMisskey: _iLoveMisskey:
title: "Misskey好きやねん" title: "Forkey好きやねん"
description: "\"I ❤ #Misskey\"を投稿した" description: "\"I ❤ #Forkey\"を投稿した"
flavor: "Misskeyを使ってくれておおきにな by 開発チーム" flavor: "Forkeyを使ってくれておおきにな by 開発チーム"
_foundTreasure: _foundTreasure:
title: "なんでも鑑定団" title: "なんでも鑑定団"
description: "隠されたお宝を発見した" description: "隠されたお宝を発見した"
@ -1619,7 +1619,7 @@ _achievements:
title: "心配性" title: "心配性"
description: "通知のテストしすぎやって" description: "通知のテストしすぎやって"
_tutorialCompleted: _tutorialCompleted:
title: "Misskeyひよっこ講座 修了証" title: "Forkeyひよっこ講座 修了証"
description: "チュートリアル全部やった" description: "チュートリアル全部やった"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -700,7 +700,7 @@ _achievements:
_myNoteFavorited1: _myNoteFavorited1:
description: "다런 사람이 내 노트럴 질겨찾기에 담앗십니다" description: "다런 사람이 내 노트럴 질겨찾기에 담앗십니다"
_iLoveMisskey: _iLoveMisskey:
description: "“I ❤ #Misskey”럴 섰어예" description: "“I ❤ #Forkey”럴 섰어예"
_postedAt0min0sec: _postedAt0min0sec:
description: "0분 0초에 노트를 섰어예" description: "0분 0초에 노트를 섰어예"
_tutorialCompleted: _tutorialCompleted:

View file

@ -1590,7 +1590,7 @@ _achievements:
_login1000: _login1000:
title: "노트 마스터 III" title: "노트 마스터 III"
description: "총 1,000일간 로그인했습니다" description: "총 1,000일간 로그인했습니다"
flavor: "Misskey를 사용해 주셔서 감사합니다!" flavor: "Forkey를 사용해 주셔서 감사합니다!"
_noteClipped1: _noteClipped1:
title: "클립할 수밖에 없었어" title: "클립할 수밖에 없었어"
description: "처음으로 노트를 클립했습니다" description: "처음으로 노트를 클립했습니다"
@ -1650,9 +1650,9 @@ _achievements:
title: "저 도전과제 좋아해요" title: "저 도전과제 좋아해요"
description: "도전 과제 목록을 3분 이상 쳐다봤습니다" description: "도전 과제 목록을 3분 이상 쳐다봤습니다"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "\"I ❤ #Misskey\"를 포스트했습니다" description: "\"I ❤ #Forkey\"를 포스트했습니다"
flavor: "Misskey를 이용해 주셔서 감사합니다! ― 개발 팀" flavor: "Forkey를 이용해 주셔서 감사합니다! ― 개발 팀"
_foundTreasure: _foundTreasure:
title: "보물찾기" title: "보물찾기"
description: "숨겨진 보물을 발견했습니다" description: "숨겨진 보물을 발견했습니다"
@ -1731,7 +1731,7 @@ _achievements:
title: "테스트 과잉" title: "테스트 과잉"
description: "매우 짧은 시간 안에 알림 테스트를 여러 번 수행했습니다" description: "매우 짧은 시간 안에 알림 테스트를 여러 번 수행했습니다"
_tutorialCompleted: _tutorialCompleted:
title: "Misskey 입문자 과정 수료증" title: "Forkey 입문자 과정 수료증"
description: "튜토리얼을 완료했습니다" description: "튜토리얼을 완료했습니다"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -127,7 +127,7 @@ emojis: "Emojier"
addEmoji: "Legg til emoji" addEmoji: "Legg til emoji"
settingGuide: "Anbefalte innstillinger" settingGuide: "Anbefalte innstillinger"
flagAsBot: "Merk denne kontoen som en bot" flagAsBot: "Merk denne kontoen som en bot"
flagAsBotDescription: "Aktiver dette alternativet hvis denne kontoen styres av et program. Hvis det er aktivert, vil det fungere som et flagg for andre utviklere for å forhindre endeløse interaksjonskjeder med andre roboter og justere Misskeys interne systemer til å behandle denne kontoen som en bot." flagAsBotDescription: "Aktiver dette alternativet hvis denne kontoen styres av et program. Hvis det er aktivert, vil det fungere som et flagg for andre utviklere for å forhindre endeløse interaksjonskjeder med andre roboter og justere forkeys interne systemer til å behandle denne kontoen som en bot."
flagAsCat: "Merk denne kontoen som en katt" flagAsCat: "Merk denne kontoen som en katt"
flagAsCatDescription: "Aktiver dette alternativet for å merke denne kontoen som en katt." flagAsCatDescription: "Aktiver dette alternativet for å merke denne kontoen som en katt."
flagShowTimelineReplies: "Vis svar i tidslinje" flagShowTimelineReplies: "Vis svar i tidslinje"

View file

@ -1125,7 +1125,7 @@ _achievements:
_login1000: _login1000:
title: "Mestre das notas III" title: "Mestre das notas III"
description: "Fez login por um total de 1000 dias" description: "Fez login por um total de 1000 dias"
flavor: "Obrigado por utilizar o Misskey!" flavor: "Obrigado por utilizar o Forkey!"
_noteClipped1: _noteClipped1:
title: "Não posso deixar de adicionar ao clipe" title: "Não posso deixar de adicionar ao clipe"
description: "Adicionou a um clipe a sua primeira nota" description: "Adicionou a um clipe a sua primeira nota"

View file

@ -1219,7 +1219,7 @@ _achievements:
_login1000: _login1000:
title: "Повелитель заметок Ⅲ" title: "Повелитель заметок Ⅲ"
description: "1000 дней на сайте" description: "1000 дней на сайте"
flavor: "Спасибо, что пользуетесь Misskey!" flavor: "Спасибо, что пользуетесь Forkey!"
_noteClipped1: _noteClipped1:
title: "Нельзя не сохранить" title: "Нельзя не сохранить"
description: "Первая заметка в подборке" description: "Первая заметка в подборке"
@ -1279,9 +1279,9 @@ _achievements:
title: "Любовь к успехам" title: "Любовь к успехам"
description: "Более 3 минут любования достижениями" description: "Более 3 минут любования достижениями"
_iLoveMisskey: _iLoveMisskey:
title: "Я люблю Misskey" title: "Я люблю Forkey"
description: "Написана заметка «I ❤ #Misskey»" description: "Написана заметка «I ❤ #Forkey»"
flavor: "Спасибо за поддержку Misskey! Ваша команда разработчиков" flavor: "Спасибо за поддержку Forkey! Ваша команда разработчиков"
_foundTreasure: _foundTreasure:
title: "Охота за сокровищами" title: "Охота за сокровищами"
description: "Найдено спрятанное сокровище" description: "Найдено спрятанное сокровище"

View file

@ -152,7 +152,7 @@ settingGuide: "Rekommenderade inställningar"
cacheRemoteFiles: "Spara externa filer till cachen" cacheRemoteFiles: "Spara externa filer till cachen"
cacheRemoteFilesDescription: "När denna inställning är avstängd kommer externa filer laddas direkt från den externa instansen. Genom att stänga av detta kommer lagringsutrymme minska i användning men kommer öka datatrafiken eftersom miniatyrer inte kommer genereras." cacheRemoteFilesDescription: "När denna inställning är avstängd kommer externa filer laddas direkt från den externa instansen. Genom att stänga av detta kommer lagringsutrymme minska i användning men kommer öka datatrafiken eftersom miniatyrer inte kommer genereras."
flagAsBot: "Markera konto som bot" flagAsBot: "Markera konto som bot"
flagAsBotDescription: "Aktivera det här alternativet om kontot är kontrollerat av ett program. Om aktiverat kommer den fungera som en flagga för andra utvecklare för att hindra ändlösa kedjor med andra bottar. Det kommer också få Misskeys interna system att hantera kontot som en bot." flagAsBotDescription: "Aktivera det här alternativet om kontot är kontrollerat av ett program. Om aktiverat kommer den fungera som en flagga för andra utvecklare för att hindra ändlösa kedjor med andra bottar. Det kommer också få forkeys interna system att hantera kontot som en bot."
flagAsCat: "Markera konto som katt" flagAsCat: "Markera konto som katt"
flagAsCatDescription: "Aktivera denna inställning för att markera kontot som en katt." flagAsCatDescription: "Aktivera denna inställning för att markera kontot som en katt."
flagShowTimelineReplies: "Visa svar i tidslinje" flagShowTimelineReplies: "Visa svar i tidslinje"

View file

@ -1380,9 +1380,9 @@ _achievements:
earnedAt: "ได้รับเมื่อ" earnedAt: "ได้รับเมื่อ"
_types: _types:
_notes1: _notes1:
title: "just setting up my msky" title: "just setting up my forkey"
description: "โพสต์โน้ตแรกของคุณ" description: "โพสต์โน้ตแรกของคุณ"
flavor: "ขอให้มีช่วงเวลาที่ดีกับ Misskey นะคะ!" flavor: "ขอให้มีช่วงเวลาที่ดีกับ Forkey นะคะ!"
_notes10: _notes10:
title: "โน้ตไม่กี่ชิ้น" title: "โน้ตไม่กี่ชิ้น"
description: "โพสต์ 10 โน้ต" description: "โพสต์ 10 โน้ต"
@ -1478,7 +1478,7 @@ _achievements:
_login1000: _login1000:
title: "ปรมาจารย์ด้านโน้ต III" title: "ปรมาจารย์ด้านโน้ต III"
description: "เข้าสู่ระบบเป็นเวลารวม 1,000 วัน" description: "เข้าสู่ระบบเป็นเวลารวม 1,000 วัน"
flavor: "ขอบคุณที่ใช้ Misskey นะ !" flavor: "ขอบคุณที่ใช้ Forkey นะ !"
_noteClipped1: _noteClipped1:
title: "อดไม่ได้ที่จะต้องคลิปมันเอาไว้" title: "อดไม่ได้ที่จะต้องคลิปมันเอาไว้"
description: "คลิปโน้ตตัวแรกของคุณ" description: "คลิปโน้ตตัวแรกของคุณ"
@ -1538,9 +1538,9 @@ _achievements:
title: "ชอบบรรลุความสําเร็จ" title: "ชอบบรรลุความสําเร็จ"
description: "มองดูรายการความสำเร็จของคุณเป็นเวลาอย่างน้อย 3 นาที" description: "มองดูรายการความสำเร็จของคุณเป็นเวลาอย่างน้อย 3 นาที"
_iLoveMisskey: _iLoveMisskey:
title: "ฉันรัก Misskey" title: "ฉันรัก Forkey"
description: "โพสต์ “I ❤ #Misskey”" description: "โพสต์ “I ❤ #Forkey”"
flavor: "ขอบคุณพระคุณเป็นอย่างสูงที่ท่านใช้ Misskey นะคะ ! by ทีมผู้พัฒนา" flavor: "ขอบคุณพระคุณเป็นอย่างสูงที่ท่านใช้ Forkey นะคะ ! by ทีมผู้พัฒนา"
_foundTreasure: _foundTreasure:
title: "ล่าสมบัติ" title: "ล่าสมบัติ"
description: "คุณพบสมบัติที่ซ่อนอยู่" description: "คุณพบสมบัติที่ซ่อนอยู่"
@ -1619,7 +1619,7 @@ _achievements:
title: "ทดสอบโอเวอร์โฟลว์" title: "ทดสอบโอเวอร์โฟลว์"
description: "ทดสอบการแจ้งเตือนทริกเกอร์ซ้ำๆ ภายในระยะเวลาอันสั้นๆ" description: "ทดสอบการแจ้งเตือนทริกเกอร์ซ้ำๆ ภายในระยะเวลาอันสั้นๆ"
_tutorialCompleted: _tutorialCompleted:
title: "ใบรับรองการสำเร็จหลักสูตร Misskey มือใหม่" title: "ใบรับรองการสำเร็จหลักสูตร Forkey มือใหม่"
description: "เสร็จสิ้นการสอนแล้ว" description: "เสร็จสิ้นการสอนแล้ว"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -1017,7 +1017,7 @@ _achievements:
_login1000: _login1000:
title: "Майстер нотаток III" title: "Майстер нотаток III"
description: "1000 днів користування загально" description: "1000 днів користування загально"
flavor: "Дякуємо, що користуєтеся Misskey!" flavor: "Дякуємо, що користуєтеся Forkey!"
_noteClipped1: _noteClipped1:
title: "Не можна не зберегти" title: "Не можна не зберегти"
description: "Перша нотатка у добірці" description: "Перша нотатка у добірці"
@ -1072,9 +1072,9 @@ _achievements:
title: "Шанувальник досягнень" title: "Шанувальник досягнень"
description: "Переглядати список досягнень принаймні 3 хвилини" description: "Переглядати список досягнень принаймні 3 хвилини"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "Відправлено \"I ❤ #Misskey\"" description: "Відправлено \"I ❤ #Forkey\""
flavor: "Дякуємо вам, що користуєтесь Misskey! команда розробників" flavor: "Дякуємо вам, що користуєтесь Forkey! команда розробників"
_foundTreasure: _foundTreasure:
title: "Пошуки скарбів" title: "Пошуки скарбів"
description: "Ви знайшли прихований скарб" description: "Ви знайшли прихований скарб"

View file

@ -1157,9 +1157,9 @@ _achievements:
earnedAt: "Ngày thu nhận" earnedAt: "Ngày thu nhận"
_types: _types:
_notes1: _notes1:
title: "just setting up my msky" title: "just setting up my forkey"
description: "Lần đầu tiên đăng bài" description: "Lần đầu tiên đăng bài"
flavor: "Chúc bạn trên Miskey vui vẻ nha!!" flavor: "Chúc bạn trên Forkey vui vẻ nha!!"
_notes10: _notes10:
title: "Một số bài viết" title: "Một số bài viết"
description: "Đăng bài 10 lần" description: "Đăng bài 10 lần"
@ -1225,7 +1225,7 @@ _achievements:
title: "Khách hàng thường xuyên cấp III" title: "Khách hàng thường xuyên cấp III"
description: "Tổng số ngày đăng nhập đạt 400 ngày" description: "Tổng số ngày đăng nhập đạt 400 ngày"
_login1000: _login1000:
flavor: "Cảm ơn bạn đã sử dụng Misskey!" flavor: "Cảm ơn bạn đã sử dụng Forkey!"
_noteFavorited1: _noteFavorited1:
title: "Nhà thiên văn học" title: "Nhà thiên văn học"
_myNoteFavorited1: _myNoteFavorited1:
@ -1280,9 +1280,9 @@ _achievements:
title: "Yêu Thành tích" title: "Yêu Thành tích"
description: "Ngắm danh sách thành tích đến tận hơn 3 phút" description: "Ngắm danh sách thành tích đến tận hơn 3 phút"
_iLoveMisskey: _iLoveMisskey:
title: "Tôi Yêu Misskey" title: "Tôi Yêu Forkey"
description: "Đăng lời nói \"I ❤ #Misskey\"" description: "Đăng lời nói \"I ❤ #Forkey\""
flavor: "Xin chân thành cảm ơn bạn đã sử dụng Misskey!! by Đội ngũ phát triển" flavor: "Xin chân thành cảm ơn bạn đã sử dụng Forkey!! by Đội ngũ phát triển"
_foundTreasure: _foundTreasure:
title: "Tìm kiếm kho báu" title: "Tìm kiếm kho báu"
description: "Tìm thấy được những kho báu cất giấu" description: "Tìm thấy được những kho báu cất giấu"

View file

@ -1499,7 +1499,7 @@ _achievements:
_login1000: _login1000:
title: "帖子大师 Ⅲ" title: "帖子大师 Ⅲ"
description: "累计登录 1000 天" description: "累计登录 1000 天"
flavor: "感谢您使用 Misskey" flavor: "感谢您使用 Forkey"
_noteClipped1: _noteClipped1:
title: "忍不住要收藏到便签" title: "忍不住要收藏到便签"
description: "第一次将贴文贴进便签" description: "第一次将贴文贴进便签"
@ -1559,9 +1559,9 @@ _achievements:
title: "成就爱好者" title: "成就爱好者"
description: "盯着成就看三分钟" description: "盯着成就看三分钟"
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Forkey"
description: "发布 \"I ❤ #Misskey\" 帖子" description: "发布 \"I ❤ #Forkey\" 帖子"
flavor: "感谢您使用 Misskey by 开发团队" flavor: "感谢您使用 Forkey by 开发团队"
_foundTreasure: _foundTreasure:
title: "寻宝" title: "寻宝"
description: "发现了隐藏的宝藏" description: "发现了隐藏的宝藏"
@ -1640,7 +1640,7 @@ _achievements:
title: "过度测试" title: "过度测试"
description: "短时间内连续测试通知" description: "短时间内连续测试通知"
_tutorialCompleted: _tutorialCompleted:
title: "Misskey 初学者课程 结业证书" title: "Forkey 初学者课程 结业证书"
description: "完成了教学" description: "完成了教学"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -1478,7 +1478,7 @@ _achievements:
_login1000: _login1000:
title: "貼文大師ⅠⅠⅠ" title: "貼文大師ⅠⅠⅠ"
description: "總登入天數為一千天" description: "總登入天數為一千天"
flavor: "感謝您使用 Misskey" flavor: "感謝您使用 Forkey"
_noteClipped1: _noteClipped1:
title: "忍不住要收進摘錄裡" title: "忍不住要收進摘錄裡"
description: "第一次將貼文收進摘錄" description: "第一次將貼文收進摘錄"
@ -1540,7 +1540,7 @@ _achievements:
_iLoveMisskey: _iLoveMisskey:
title: "I Love Misskey" title: "I Love Misskey"
description: "發佈「I ❤ #Misskey」" description: "發佈「I ❤ #Misskey」"
flavor: "感謝您使用 Misskeyby 開發團隊" flavor: "感謝您使用 Forkeyby 開發團隊"
_foundTreasure: _foundTreasure:
title: "尋寶" title: "尋寶"
description: "發現了隱藏的寶藏" description: "發現了隱藏的寶藏"
@ -1619,7 +1619,7 @@ _achievements:
title: "過度測試" title: "過度測試"
description: "極短時間內連續測試通知" description: "極短時間內連續測試通知"
_tutorialCompleted: _tutorialCompleted:
title: "Misskey新手講座 結業證書" title: "Forkey新手講座 結業證書"
description: "已完成教學課程" description: "已完成教學課程"
_bubbleGameExplodingHead: _bubbleGameExplodingHead:
title: "🤯" title: "🤯"

View file

@ -1,10 +1,10 @@
{ {
"name": "misskey", "name": "forkey",
"version": "2024.5.0-io.5e", "version": "2024.5.0-io.5e",
"codename": "nasubi", "codename": "nasubi",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/MisskeyIO/misskey.git" "url": "https://git.woem.men/woem.men/forkey.git"
}, },
"packageManager": "pnpm@9.15.0", "packageManager": "pnpm@9.15.0",
"workspaces": [ "workspaces": [

View file

@ -1,7 +1,7 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<title>Misskey API</title> <title>Forkey API</title>
<!-- needed for adaptive design --> <!-- needed for adaptive design -->
<meta charset="utf-8"/> <meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">

View file

@ -19,7 +19,7 @@ import { workerMain } from './worker.js';
import 'reflect-metadata'; import 'reflect-metadata';
process.title = `Misskey (${cluster.isPrimary ? 'master' : 'worker'})`; process.title = `Forkey (${cluster.isPrimary ? 'master' : 'worker'})`;
Error.stackTraceLimit = Infinity; Error.stackTraceLimit = Infinity;
EventEmitter.defaultMaxListeners = 128; EventEmitter.defaultMaxListeners = 128;

View file

@ -28,24 +28,25 @@ const themeColor = chalk.hex('#86b300');
function greet() { function greet() {
if (!envOption.quiet && !envOption.logJson) { if (!envOption.quiet && !envOption.logJson) {
//#region Misskey logo //#region Forkey logo
const v = `v${meta.version}`; const v = `v${meta.version}`;
console.log(themeColor(' _____ _ _ ')); console.log(themeColor('███████╗░█████╗░██████╗░██╗░░██╗███████╗██╗░░░██╗'));
console.log(themeColor(' | |_|___ ___| |_ ___ _ _ ')); console.log(themeColor('██╔════╝██╔══██╗██╔══██╗██║░██╔╝██╔════╝╚██╗░██╔╝'));
console.log(themeColor(' | | | | |_ -|_ -| \'_| -_| | |')); console.log(themeColor('█████╗░░██║░░██║██████╔╝█████═╝░█████╗░░░╚████╔╝░'));
console.log(themeColor(' |_|_|_|_|___|___|_,_|___|_ |')); console.log(themeColor('██╔══╝░░██║░░██║██╔══██╗██╔═██╗░██╔══╝░░░░╚██╔╝░░'));
console.log(' ' + chalk.gray(v) + themeColor(' |___|\n'.substring(v.length))); console.log(themeColor('██║░░░░░╚█████╔╝██║░░██║██║░╚██╗███████╗░░░██║░░░'));
console.log(' ' + chalk.gray(v) + themeColor('╚═╝░░░░░░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝░░░╚═╝░░░\n'.substring(v.length)));
//#endregion //#endregion
console.log(' Misskey is an open-source decentralized microblogging platform.'); console.log(' Forkey is an open-source decentralized microblogging platform.');
console.log(chalk.rgb(255, 136, 0)(' If you like Misskey, please donate to support development. https://www.patreon.com/syuilo')); // console.log(chalk.rgb(255, 136, 0)(' If you like Forkey, please donate to support development. https://www.patreon.com/syuilo'));
console.log(''); console.log('');
console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`); console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
} }
bootLogger.info('Welcome to Misskey!'); bootLogger.info('Welcome to Forkey!');
bootLogger.info(`Misskey v${meta.version}`, { version: meta.version, hostname: os.hostname(), pid: process.pid }, true); bootLogger.info(`Forkey v${meta.version}`, { version: meta.version, hostname: os.hostname(), pid: process.pid }, true);
} }
/** /**
@ -68,7 +69,7 @@ export async function masterMain() {
process.exit(1); process.exit(1);
} }
bootLogger.succ('Misskey initialized'); bootLogger.succ('Forkey initialized');
if (envOption.disableClustering) { if (envOption.disableClustering) {
if (envOption.onlyServer) { if (envOption.onlyServer) {

View file

@ -58,9 +58,9 @@ export class ChartManagementService implements OnApplicationShutdown {
@bindThis @bindThis
public async start() { public async start() {
// 20分おきにメモリ情報をDBに書き込み // 20分おきにメモリ情報をDBに書き込み
this.saveIntervalId = setInterval(() => { this.saveIntervalId = setInterval(async () => {
for (const chart of this.charts) { for (const chart of this.charts) {
chart.save(); await chart.save();
} }
}, 1000 * 60 * 20); }, 1000 * 60 * 20);
} }
@ -69,9 +69,9 @@ export class ChartManagementService implements OnApplicationShutdown {
public async dispose(): Promise<void> { public async dispose(): Promise<void> {
clearInterval(this.saveIntervalId); clearInterval(this.saveIntervalId);
if (process.env.NODE_ENV !== 'test') { if (process.env.NODE_ENV !== 'test') {
await Promise.all( for (const chart of this.charts) {
this.charts.map(chart => chart.save()), await chart.save();
); }
} }
} }

View file

@ -9,17 +9,9 @@ export const L_CHARS = '0123456789abcdefghijklmnopqrstuvwxyz';
const LU_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; const LU_CHARS = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
export function secureRndstr(length = 32, { chars = LU_CHARS } = {}): string { export function secureRndstr(length = 32, { chars = LU_CHARS } = {}): string {
const chars_len = chars.length;
let str = ''; let str = '';
for (let i = 0; i < length; i++) { for (let i = 0; i < length; i++) {
let rand = Math.floor((crypto.randomBytes(1).readUInt8(0) / 0xFF) * chars_len); str += chars.charAt(crypto.randomInt(chars.length));
if (rand === chars_len) {
rand = chars_len - 1;
}
str += chars.charAt(rand);
} }
return str; return str;
} }

View file

@ -385,14 +385,14 @@ export class MiMeta {
@Column('varchar', { @Column('varchar', {
length: 1024, length: 1024,
default: 'https://github.com/misskey-dev/misskey', default: 'https://git.woem.men/woem.men/forkey',
nullable: true, nullable: true,
}) })
public repositoryUrl: string | null; public repositoryUrl: string | null;
@Column('varchar', { @Column('varchar', {
length: 1024, length: 1024,
default: 'https://github.com/misskey-dev/misskey/issues/new', default: 'https://git.woem.men/woem.men/forkey/issues',
nullable: true, nullable: true,
}) })
public feedbackUrl: string | null; public feedbackUrl: string | null;

View file

@ -52,7 +52,7 @@ export const packedFederationInstanceSchema = {
softwareName: { softwareName: {
type: 'string', type: 'string',
optional: false, nullable: true, optional: false, nullable: true,
example: 'misskey', example: 'forkey',
}, },
softwareVersion: { softwareVersion: {
type: 'string', type: 'string',

View file

@ -9,7 +9,7 @@ export const packedHashtagSchema = {
tag: { tag: {
type: 'string', type: 'string',
optional: false, nullable: false, optional: false, nullable: false,
example: 'misskey', example: 'forkey',
}, },
mentionedUsersCount: { mentionedUsersCount: {
type: 'number', type: 'number',

View file

@ -651,6 +651,14 @@ export const packedMeDetailedOnlySchema = {
type: 'boolean', type: 'boolean',
nullable: true, optional: true, nullable: true, optional: true,
}, },
approved: {
type: 'boolean',
nullable: false, optional: true,
},
signupReason: {
type: 'string',
nullable: true, optional: true,
},
securityKeysList: { securityKeysList: {
type: 'array', type: 'array',
nullable: false, optional: true, nullable: false, optional: true,

View file

@ -48,20 +48,18 @@ export class CleanChartsProcessorService {
public async process(): Promise<void> { public async process(): Promise<void> {
this.logger.info('Clean charts...'); this.logger.info('Clean charts...');
await Promise.all([ await this.federationChart.clean();
this.federationChart.clean(), await this.notesChart.clean();
this.notesChart.clean(), await this.usersChart.clean();
this.usersChart.clean(), await this.activeUsersChart.clean();
this.activeUsersChart.clean(), await this.instanceChart.clean();
this.instanceChart.clean(), await this.perUserNotesChart.clean();
this.perUserNotesChart.clean(), await this.perUserPvChart.clean();
this.perUserPvChart.clean(), await this.driveChart.clean();
this.driveChart.clean(), await this.perUserReactionsChart.clean();
this.perUserReactionsChart.clean(), await this.perUserFollowingChart.clean();
this.perUserFollowingChart.clean(), await this.perUserDriveChart.clean();
this.perUserDriveChart.clean(), await this.apRequestChart.clean();
this.apRequestChart.clean(),
]);
this.logger.succ('All charts successfully cleaned.'); this.logger.succ('All charts successfully cleaned.');
} }

View file

@ -31,11 +31,9 @@ export class ResyncChartsProcessorService {
// TODO: ユーザーごとのチャートも更新する // TODO: ユーザーごとのチャートも更新する
// TODO: インスタンスごとのチャートも更新する // TODO: インスタンスごとのチャートも更新する
await Promise.all([ await this.driveChart.resync();
this.driveChart.resync(), await this.notesChart.resync();
this.notesChart.resync(), await this.usersChart.resync();
this.usersChart.resync(),
]);
this.logger.succ('All charts successfully resynced.'); this.logger.succ('All charts successfully resynced.');
} }

View file

@ -48,20 +48,18 @@ export class TickChartsProcessorService {
public async process(): Promise<void> { public async process(): Promise<void> {
this.logger.info('Tick charts...'); this.logger.info('Tick charts...');
await Promise.all([ await this.federationChart.tick(false);
this.federationChart.tick(false), await this.notesChart.tick(false);
this.notesChart.tick(false), await this.usersChart.tick(false);
this.usersChart.tick(false), await this.activeUsersChart.tick(false);
this.activeUsersChart.tick(false), await this.instanceChart.tick(false);
this.instanceChart.tick(false), await this.perUserNotesChart.tick(false);
this.perUserNotesChart.tick(false), await this.perUserPvChart.tick(false);
this.perUserPvChart.tick(false), await this.driveChart.tick(false);
this.driveChart.tick(false), await this.perUserReactionsChart.tick(false);
this.perUserReactionsChart.tick(false), await this.perUserFollowingChart.tick(false);
this.perUserFollowingChart.tick(false), await this.perUserDriveChart.tick(false);
this.perUserDriveChart.tick(false), await this.apRequestChart.tick(false);
this.apRequestChart.tick(false),
]);
this.logger.succ('All charts successfully ticked.'); this.logger.succ('All charts successfully ticked.');
} }

View file

@ -77,7 +77,7 @@ export class NodeinfoServerService {
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
const document: any = { const document: any = {
software: { software: {
name: 'misskey', name: 'forkey',
version: this.config.version, version: this.config.version,
homepage: nodeinfo_homepage, homepage: nodeinfo_homepage,
repository: meta.repositoryUrl, repository: meta.repositoryUrl,

View file

@ -251,14 +251,14 @@ export class SignupApiService {
} else { } else {
try { try {
const { account, secret } = await this.signupService.signup({ const { account, secret } = await this.signupService.signup({
username, password, host, reason username, password, host, reason,
}); });
if (instance.approvalRequiredForSignup) { if (instance.approvalRequiredForSignup) {
if (emailAddress) { if (emailAddress) {
this.emailService.sendEmail(emailAddress, 'Approval pending', this.emailService.sendEmail(emailAddress, 'Approval pending',
'Congratulations! Your account is now pending approval. You will get notified when you have been accepted.', 'Congratulations! Your account is now pending approval. You will get notified when you have been accepted.',
'Congratulations! Your account is now pending approval. You will get notified when you have been accepted.'); 'Congratulations! Your account is now pending approval. You will get notified when you have been accepted.');
} }
} }

View file

@ -63,12 +63,10 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
await this.usedUsernamesRepository.delete({ username: user.username }); await this.usedUsernamesRepository.delete({ username: user.username });
//Actually delete it since the last function doesnt actually delete the account //Actually delete it since the last function doesnt actually delete the account
//Note: Before approval these accounts wont federate so this is totally fine. //Note: Before approval these accounts wont federate so this is totally fine.
await this.usersRepository.delete(user.id); await this.usersRepository.delete(user.id);
this.moderationLogService.log(me, 'decline', { this.moderationLogService.log(me, 'decline', {
userId: user.id, userId: user.id,
userUsername: user.username, userUsername: user.username,

View file

@ -37,9 +37,9 @@ export const meta = {
unapprovedUser: { unapprovedUser: {
message: 'The user has not been approved yet.', message: 'The user has not been approved yet.',
code: 'UNAPPROVED_USER', code: 'UNAPPROVED_USER',
id: '8d66f136-b3e1-48fd-92c4-30ecfd7fdb7a', id: '8d66f136-b3e1-48fd-92c4-30ecfd7fdb7a',
}, },
followeeIsYourself: { followeeIsYourself: {
message: 'Followee is yourself.', message: 'Followee is yourself.',

View file

@ -40,7 +40,7 @@ export const meta = {
res: { res: {
type: 'object', type: 'object',
optional: false, nullable: false, optional: true, nullable: false,
properties: { properties: {
createdNote: { createdNote: {
type: 'object', type: 'object',
@ -207,6 +207,7 @@ export const paramDef = {
}, },
required: ['choices'], required: ['choices'],
}, },
noCreatedNote: { type: 'boolean', default: false },
}, },
// (re)note with text, files and poll are optional // (re)note with text, files and poll are optional
if: { if: {
@ -281,7 +282,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
const note = await this.notesRepository.findOneBy({ id: idempotent }); const note = await this.notesRepository.findOneBy({ id: idempotent });
if (note) { if (note) {
logger.info('The request has already been processed.', { noteId: note.id }); logger.info('The request has already been processed.', { noteId: note.id });
return { createdNote: await this.noteEntityService.pack(note, me) }; if (ps.noCreatedNote) return;
else return { createdNote: await this.noteEntityService.pack(note, me) };
} }
} }
@ -453,7 +455,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
await this.redisForTimelines.set(`note:idempotent:${me.id}:${hash}`, note.id, 'EX', 60); await this.redisForTimelines.set(`note:idempotent:${me.id}:${hash}`, note.id, 'EX', 60);
logger.info('Successfully created a note.', { noteId: note.id }); logger.info('Successfully created a note.', { noteId: note.id });
return { if (ps.noCreatedNote) return;
else return {
createdNote: await this.noteEntityService.pack(note, me), createdNote: await this.noteEntityService.pack(note, me),
}; };
} catch (err) { } catch (err) {

View file

@ -14,13 +14,13 @@ export function genOpenapiSpec(config: Config, includeSelfRef = false) {
info: { info: {
version: config.version, version: config.version,
title: 'Misskey API', title: 'Forkey API',
'x-logo': { url: '/static-assets/api-doc.png' }, 'x-logo': { url: '/static-assets/api-doc.png' },
}, },
externalDocs: { externalDocs: {
description: 'Repository', description: 'Repository',
url: 'https://github.com/MisskeyIO/misskey', url: 'https://git.woem.men/woem.men/forkey',
}, },
servers: [{ servers: [{

View file

@ -187,7 +187,7 @@ export class ClientServerService {
@bindThis @bindThis
private async generateCommonPugData(meta: MiMeta) { private async generateCommonPugData(meta: MiMeta) {
return { return {
instanceName: meta.name ?? 'Misskey', instanceName: meta.name ?? 'Forkey',
icon: meta.iconUrl, icon: meta.iconUrl,
appleTouchIcon: meta.app512IconUrl, appleTouchIcon: meta.app512IconUrl,
themeColor: meta.themeColor, themeColor: meta.themeColor,
@ -456,7 +456,7 @@ export class ClientServerService {
return await reply.view('base', { return await reply.view('base', {
img: meta.bannerUrl, img: meta.bannerUrl,
url: this.config.url, url: this.config.url,
title: meta.name ?? 'Misskey', title: meta.name ?? 'Forkey',
desc: meta.description, desc: meta.description,
...await this.generateCommonPugData(meta), ...await this.generateCommonPugData(meta),
...data, ...data,

View file

@ -59,7 +59,7 @@ export class FeedService {
id: author.link, id: author.link,
title: `${author.name} (@${user.username}@${this.config.host})`, title: `${author.name} (@${user.username}@${this.config.host})`,
updated: notes.length !== 0 ? this.idService.parse(notes[0].id).date : undefined, updated: notes.length !== 0 ? this.idService.parse(notes[0].id).date : undefined,
generator: 'Misskey', generator: 'Forkey',
description: `${user.notesCount} Notes, ${profile.followingVisibility === 'public' ? user.followingCount : '?'} Following, ${profile.followersVisibility === 'public' ? user.followersCount : '?'} Followers${profile.description ? ` · ${profile.description}` : ''}`, description: `${user.notesCount} Notes, ${profile.followingVisibility === 'public' ? user.followingCount : '?'} Following, ${profile.followersVisibility === 'public' ? user.followersCount : '?'} Followers${profile.description ? ` · ${profile.description}` : ''}`,
link: author.link, link: author.link,
image: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user), image: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user),

View file

@ -144,7 +144,7 @@ export class UrlPreviewService {
return summaly(url, { return summaly(url, {
followRedirects: false, followRedirects: false,
lang: lang ?? 'ja-JP', lang: lang ?? 'en-US',
agent: agent, agent: agent,
userAgent: meta.urlPreviewUserAgent ?? undefined, userAgent: meta.urlPreviewUserAgent ?? undefined,
operationTimeout: meta.urlPreviewTimeout, operationTimeout: meta.urlPreviewTimeout,
@ -157,7 +157,7 @@ export class UrlPreviewService {
const proxy = meta.urlPreviewSummaryProxyUrl!; const proxy = meta.urlPreviewSummaryProxyUrl!;
const queryStr = query({ const queryStr = query({
url: url, url: url,
lang: lang ?? 'ja-JP', lang: lang ?? 'en-US',
userAgent: meta.urlPreviewUserAgent ?? undefined, userAgent: meta.urlPreviewUserAgent ?? undefined,
operationTimeout: meta.urlPreviewTimeout, operationTimeout: meta.urlPreviewTimeout,
contentLengthLimit: meta.urlPreviewMaximumContentLength, contentLengthLimit: meta.urlPreviewMaximumContentLength,

View file

@ -41,7 +41,7 @@
if (!Object.hasOwn(localStorage, 'locale')) { if (!Object.hasOwn(localStorage, 'locale')) {
let lang = localStorage.getItem('lang'); let lang = localStorage.getItem('lang');
if (lang == null || lang.toString == null || lang.toString() === 'null') { if (lang == null || lang.toString == null || lang.toString() === 'null') {
lang = 'ja-JP'; lang = 'en-US';
} }
const metaRes = await window.fetch('/api/meta', { const metaRes = await window.fetch('/api/meta', {

View file

@ -41,7 +41,8 @@ window.onload = async () => {
document.getElementById('submit').addEventListener('click', () => { document.getElementById('submit').addEventListener('click', () => {
api('notes/create', { api('notes/create', {
text: document.getElementById('text').value text: document.getElementById('text').value,
noCreatedNote: true,
}).then(() => { }).then(() => {
location.reload(); location.reload();
}); });

View file

@ -5,33 +5,32 @@ block loadClientEntry
doctype html doctype html
// //███████╗░█████╗░██████╗░██╗░░██╗███████╗██╗░░░██╗
- //██╔════╝██╔══██╗██╔══██╗██║░██╔╝██╔════╝╚██╗░██╔╝
_____ _ _ //█████╗░░██║░░██║██████╔╝█████═╝░█████╗░░░╚████╔╝░
| |_|___ ___| |_ ___ _ _ //██╔══╝░░██║░░██║██╔══██╗██╔═██╗░██╔══╝░░░░╚██╔╝░░
| | | | |_ -|_ -| '_| -_| | | //██║░░░░░╚█████╔╝██║░░██║██║░╚██╗███████╗░░░██║░░░
|_|_|_|_|___|___|_,_|___|_ | //╚═╝░░░░░░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝░░░╚═╝░░░
|___| // Thank you for using Forkkey!
Thank you for using Misskey! // If you are reading this message... how about joining the development?
If you are reading this message... how about joining the development? // https://git.woem.men/woem.men/forkey
https://github.com/misskey-dev/misskey
html html
head head
meta(charset='utf-8') meta(charset='utf-8')
meta(name='application-name' content='Misskey') meta(name='application-name' content='Forkey')
meta(name='referrer' content='origin') meta(name='referrer' content='origin')
meta(name='theme-color' content= themeColor || '#86b300') meta(name='theme-color' content= themeColor || '#86b300')
meta(name='theme-color-orig' content= themeColor || '#86b300') meta(name='theme-color-orig' content= themeColor || '#86b300')
meta(property='og:site_name' content= instanceName || 'Misskey') meta(property='og:site_name' content= instanceName || 'Forkey')
meta(property='instance_url' content= instanceUrl) meta(property='instance_url' content= instanceUrl)
meta(name='viewport' content='width=device-width, initial-scale=1') meta(name='viewport' content='width=device-width, initial-scale=1')
link(rel='icon' href= icon || '/favicon.ico') link(rel='icon' href= icon || '/favicon.ico')
link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png') link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png')
link(rel='manifest' href='/manifest.json') link(rel='manifest' href='/manifest.json')
link(rel='search' type='application/opensearchdescription+xml' title=(title || "Misskey") href=`${url}/opensearch.xml`) link(rel='search' type='application/opensearchdescription+xml' title=(title || "Forkey") href=`${url}/opensearch.xml`)
link(rel='prefetch' href=serverErrorImageUrl) link(rel='prefetch' href=serverErrorImageUrl)
link(rel='prefetch' href=infoImageUrl) link(rel='prefetch' href=infoImageUrl)
link(rel='prefetch' href=notFoundImageUrl) link(rel='prefetch' href=notFoundImageUrl)
@ -48,7 +47,7 @@ html
title title
block title block title
= title || 'Misskey' = title || 'Forkey'
if noindex if noindex
meta(name='robots' content='noindex') meta(name='robots' content='noindex')
@ -59,7 +58,7 @@ html
block meta block meta
block og block og
meta(property='og:title' content= title || 'Misskey') meta(property='og:title' content= title || 'Forkey')
meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨') meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨')
meta(property='og:image' content= img) meta(property='og:image' content= img)
meta(property='twitter:card' content='summary') meta(property='twitter:card' content='summary')

View file

@ -15,7 +15,7 @@ describe('nodeinfo', () => {
assert.strictEqual(res.headers.get('Access-Control-Allow-Origin'), '*'); assert.strictEqual(res.headers.get('Access-Control-Allow-Origin'), '*');
const nodeInfo = await res.json() as FIXME; const nodeInfo = await res.json() as FIXME;
assert.strictEqual(nodeInfo.software.name, 'misskey'); assert.strictEqual(nodeInfo.software.name, 'forkey');
}); });
test('nodeinfo 2.0', async () => { test('nodeinfo 2.0', async () => {
@ -24,6 +24,6 @@ describe('nodeinfo', () => {
assert.strictEqual(res.headers.get('Access-Control-Allow-Origin'), '*'); assert.strictEqual(res.headers.get('Access-Control-Allow-Origin'), '*');
const nodeInfo = await res.json() as FIXME; const nodeInfo = await res.json() as FIXME;
assert.strictEqual(nodeInfo.software.name, 'misskey'); assert.strictEqual(nodeInfo.software.name, 'forkey');
}); });
}); });

View file

@ -151,6 +151,8 @@ describe('ユーザー', () => {
...(security ? { ...(security ? {
email: user.email, email: user.email,
emailVerified: user.emailVerified, emailVerified: user.emailVerified,
approved: user.approved,
signupReason: user.signupReason,
securityKeysList: user.securityKeysList, securityKeysList: user.securityKeysList,
} : {}), } : {}),
}); });

View file

@ -8,6 +8,6 @@ import locales from '../../../locales/index.js';
await writeFile( await writeFile(
new URL('locale.ts', import.meta.url), new URL('locale.ts', import.meta.url),
`export default ${JSON.stringify(locales['ja-JP'], undefined, 2)} as const;`, `export default ${JSON.stringify(locales['en-US'], undefined, 2)} as const;`,
'utf8', 'utf8',
) )

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,3 @@
[ZoneTransfer]
ZoneId=3
HostUrl=about:internet

View file

@ -798,6 +798,7 @@ async function post(ev?: MouseEvent) {
visibility: visibility.value, visibility: visibility.value,
visibleUserIds: visibility.value === 'specified' ? visibleUsers.value.map(u => u.id) : undefined, visibleUserIds: visibility.value === 'specified' ? visibleUsers.value.map(u => u.id) : undefined,
reactionAcceptance: reactionAcceptance.value, reactionAcceptance: reactionAcceptance.value,
noCreatedNote: true,
}; };
if (withHashtags.value && hashtags.value && hashtags.value.trim() !== '') { if (withHashtags.value && hashtags.value && hashtags.value.trim() !== '') {
@ -858,7 +859,7 @@ async function post(ev?: MouseEvent) {
const text = postData.text ?? ''; const text = postData.text ?? '';
const lowerCase = text.toLowerCase(); const lowerCase = text.toLowerCase();
if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('misskey')) { if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('forkey')) {
claimAchievement('iLoveMisskey'); claimAchievement('iLoveMisskey');
} }
if ([ if ([

View file

@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</I18n> </I18n>
<I18n :src="i18n.ts.correspondingSourceIsAvailable" tag="span"> <I18n :src="i18n.ts.correspondingSourceIsAvailable" tag="span">
<template #anchor> <template #anchor>
<MkA to="/about-misskey" class="_link">{{ i18n.ts.aboutMisskey }}</MkA> <MkA to="/about-forkey" class="_link">{{ i18n.ts.aboutMisskey }}</MkA>
</template> </template>
</I18n> </I18n>
</div> </div>

View file

@ -83,7 +83,7 @@ async function prepend(data) {
credentials: 'omit', credentials: 'omit',
headers: { headers: {
'Authorization': 'anonymous', 'Authorization': 'anonymous',
'X-Client-Transaction-Id': generateClientTransactionId('misskey'), 'X-Client-Transaction-Id': generateClientTransactionId('forkey'),
}, },
}); });
if (!res.ok) return; if (!res.ok) return;

View file

@ -40,12 +40,12 @@ const emit = defineEmits<{
const exampleNote = reactive<Misskey.entities.Note>({ const exampleNote = reactive<Misskey.entities.Note>({
id: '0000000000', id: '0000000000',
createdAt: '2019-04-14T17:30:49.181Z', createdAt: '2025-01-08T17:30:49.181Z',
userId: '0000000001', userId: '0000000001',
user: { user: {
id: '0000000001', id: '0000000001',
name: '', name: 'Forks',
username: 'ai', username: 'forks',
host: null, host: null,
avatarDecorations: [], avatarDecorations: [],
avatarUrl: '/client-assets/tutorial/ai.webp', avatarUrl: '/client-assets/tutorial/ai.webp',
@ -56,7 +56,7 @@ const exampleNote = reactive<Misskey.entities.Note>({
onlineStatus: 'unknown', onlineStatus: 'unknown',
badgeRoles: [], badgeRoles: [],
}, },
text: 'just setting up my msky', text: 'just setting up my forkey',
cw: null, cw: null,
visibility: 'public', visibility: 'public',
localOnly: false, localOnly: false,

View file

@ -50,24 +50,6 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.panel"> <div :class="$style.panel">
<XActiveUsersChart/> <XActiveUsersChart/>
</div> </div>
<div :class="[$style.footer, $style.panel]">
<div :class="$style.sponsors">
<div><Mfm text="$[jelly ❤]"/> Sponsored by</div>
<a title="Skeb" href="https://skeb.jp/" target="_blank"><img src="https://media.misskeyusercontent.jp/misskey-io/sponsors/skeb.png" alt="Skeb" width="140"></a>
</div>
<div :class="$style.legalNotice">
<div>© {{ new Date().getFullYear() }} MisskeyHQ Inc.</div>
<a href="https://go.misskey.io/legal-notice" target="_blank" rel="noopener"><u>特定商取引法に基づく表記</u></a>
</div>
<div :class="$style.links">
<a href="#" @click="os.pageWindow('/about')"><u>{{ instanceName }}</u></a>
<a href="#" @click="os.pageWindow('/about-misskey')"><u>{{ i18n.ts.aboutMisskey }}</u></a>
<a v-if="instance.tosUrl" :href="instance.tosUrl" target="_blank" rel="noopener"><u>{{ i18n.ts.termsOfService }}</u></a>
<a v-if="instance.privacyPolicyUrl" :href="instance.privacyPolicyUrl" target="_blank" rel="noopener"><u>{{ i18n.ts.privacyPolicy }}</u></a>
<a v-if="instance.impressumUrl" :href="instance.impressumUrl" target="_blank" rel="noopener"><u>{{ i18n.ts.impressum }}</u></a>
<a v-if="instance.feedbackUrl" :href="instance.feedbackUrl" target="_blank" rel="noopener"><u>{{ i18n.ts.support }}</u></a>
</div>
</div>
</div> </div>
</template> </template>

View file

@ -13,7 +13,7 @@ export const hostname = address.hostname;
export const url = address.origin; export const url = address.origin;
export const apiUrl = location.origin + '/api'; export const apiUrl = location.origin + '/api';
export const wsOrigin = location.origin; export const wsOrigin = location.origin;
export const lang = miLocalStorage.getItem('lang') ?? 'ja-JP'; export const lang = miLocalStorage.getItem('lang') ?? 'en-US';
export const langs = _LANGS_; export const langs = _LANGS_;
const preParseLocale = miLocalStorage.getItem('locale'); const preParseLocale = miLocalStorage.getItem('locale');
export let locale = preParseLocale ? JSON.parse(preParseLocale) : null; export let locale = preParseLocale ? JSON.parse(preParseLocale) : null;

View file

@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-panel class="about"> <div v-panel class="about">
<div ref="containerEl" class="container" :class="{ playing: easterEggEngine != null }"> <div ref="containerEl" class="container" :class="{ playing: easterEggEngine != null }">
<img src="/client-assets/about-icon.png" alt="" class="icon" draggable="false" @load="iconLoaded" @click="gravity"/> <img src="/client-assets/about-icon.png" alt="" class="icon" draggable="false" @load="iconLoaded" @click="gravity"/>
<div class="misskey">Misskey</div> <div class="misskey">Forkey</div>
<div class="version">v{{ version }}</div> <div class="version">v{{ version }}</div>
<span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }"> <span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }">
<MkCustomEmoji v-if="emoji.emoji[0] === ':'" class="emoji" :name="emoji.emoji" :normal="true" :noStyle="true"/> <MkCustomEmoji v-if="emoji.emoji[0] === ':'" class="emoji" :name="emoji.emoji" :normal="true" :noStyle="true"/>
@ -22,12 +22,24 @@ SPDX-License-Identifier: AGPL-3.0-only
<button v-if="thereIsTreasure" class="_button treasure" @click="getTreasure"><img src="/fluent-emoji/1f3c6.png" class="treasureImg"></button> <button v-if="thereIsTreasure" class="_button treasure" @click="getTreasure"><img src="/fluent-emoji/1f3c6.png" class="treasureImg"></button>
</div> </div>
<div style="text-align: center;"> <div style="text-align: center;">
{{ i18n.ts._aboutMisskey.about }}<br><a href="https://misskey-hub.net/docs/about-misskey/" rel="nofollow noopener" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a> {{ i18n.ts._aboutForkey.about }}<br><a href="https://git.woem.men/woem.men/forkey" rel="nofollow noopener" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a>
</div> </div>
<div v-if="$i != null" style="text-align: center;"> <div v-if="$i != null" style="text-align: center;">
<MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #Misskey</MkButton> <MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #Forkey</MkButton>
</div> </div>
<FormSection> <FormSection>
<template #label>Forkey</template>
<div class="_gaps_s">
<FormLink to="https://git.woem.men/woem.men/forkey" external>
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts._aboutMisskey.source }} ({{ i18n.ts._aboutForkey.original }})
<template #suffix>Forgejo</template>
</FormLink>
</div>
</FormSection>
<FormSection>
<template #label>Misskey</template>
<div class="_gaps_s"> <div class="_gaps_s">
<FormLink to="https://github.com/misskey-dev/misskey" external> <FormLink to="https://github.com/misskey-dev/misskey" external>
<template #icon><i class="ti ti-code"></i></template> <template #icon><i class="ti ti-code"></i></template>
@ -60,6 +72,33 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInfo> </MkInfo>
</div> </div>
</FormSection> </FormSection>
<FormSection>
<template #label>{{ i18n.ts._aboutForkey.projectMembers }}</template>
<div :class="$style.contributors">
<a href="https://git.woem.men/leah" target="_blank" :class="$style.contributor">
<img src="https://git.woem.men/avatars/7a0766ee872659ad327bfbd2f2dbf37f841c33a597b8c83b8764e665d5b1e79c?size=80" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@leah</span>
</a>
<a href="https://git.woem.men/sugar" target="_blank" :class="$style.contributor">
<img src="https://git.woem.men/avatars/046512b574222de2cebfb6c8612df5d4a51889e2e101d78925b4ee24ec4dae0c?size=80" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@sugar</span>
</a>
<a href="https://git.woem.men/ashten" target="_blank" :class="$style.contributor">
<img src="https://git.woem.men/avatars/6255b7a4861546842eed1adf86c08a912244b93bd5b64b586387d81c9ddb9903?size=80" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@ashten</span>
</a>
<a href="https://git.woem.men/itssophie" target="_blank" :class="$style.contributor">
<img src="https://git.woem.men/avatars/b87231280cd38a7c1c4edefdfbc5d832?size=80" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@itssophie</span>
</a>
<a href="https://git.woem.men/ThunderComplex" target="_blank" :class="$style.contributor">
<img src="https://git.woem.men/avatars/2d809188d5ac6c01571f937632c701ad?size=80" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@ThunderComplex</span>
</a>
</div>
</FormSection>
<FormSection> <FormSection>
<template #label>{{ i18n.ts._aboutMisskey.projectMembers }}</template> <template #label>{{ i18n.ts._aboutMisskey.projectMembers }}</template>
<div :class="$style.contributors"> <div :class="$style.contributors">
@ -93,33 +132,20 @@ SPDX-License-Identifier: AGPL-3.0-only
</a> </a>
</div> </div>
</FormSection> </FormSection>
<FormSection> <!-- TODO add this back when we have a way to get donations-->
<template #label>Special thanks</template> <!-- <FormSection>-->
<div style="display:grid;grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));grid-gap:24px;align-items:center;"> <!-- <template #label><Mfm text="$[jelly ❤]"/> {{ i18n.ts._aboutMisskey.patrons }}</template>-->
<div> <!-- <div :class="$style.patronsWithIcon">-->
<a style="display: inline-block;" class="masknetwork" title="Mask Network" href="https://mask.io/" target="_blank"><img style="width: 100%;" src="https://misskey-hub.net/sponsors/masknetwork.png" alt="Mask Network"></a> <!-- <div v-for="patron in patronsWithIcon" :class="$style.patronWithIcon">-->
</div> <!-- <img :src="patron.icon" :class="$style.patronIcon">-->
<div> <!-- <span :class="$style.patronName">{{ patron.name }}</span>-->
<a style="display: inline-block;" class="xserver" title="XServer" href="https://www.xserver.ne.jp/" target="_blank"><img style="width: 100%;" src="https://misskey-hub.net/sponsors/xserver.png" alt="XServer"></a> <!-- </div>-->
</div> <!-- </div>-->
<div> <!-- <div style="margin-top: 16px; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); grid-gap: 12px;">-->
<a style="display: inline-block;" class="skeb" title="Skeb" href="https://skeb.jp/" target="_blank"><img style="width: 100%;" src="https://misskey-hub.net/sponsors/skeb.svg" alt="Skeb"></a> <!-- <div v-for="patron in patrons" :key="patron">{{ patron }}</div>-->
</div> <!-- </div>-->
</div> <!-- <p>{{ i18n.ts._aboutMisskey.morePatrons }}</p>-->
</FormSection> <!-- </FormSection>-->
<FormSection>
<template #label><Mfm text="$[jelly ❤]"/> {{ i18n.ts._aboutMisskey.patrons }}</template>
<div :class="$style.patronsWithIcon">
<div v-for="patron in patronsWithIcon" :class="$style.patronWithIcon">
<img :src="patron.icon" :class="$style.patronIcon">
<span :class="$style.patronName">{{ patron.name }}</span>
</div>
</div>
<div style="margin-top: 16px; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); grid-gap: 12px;">
<div v-for="patron in patrons" :key="patron">{{ patron }}</div>
</div>
<p>{{ i18n.ts._aboutMisskey.morePatrons }}</p>
</FormSection>
</div> </div>
</MkSpacer> </MkSpacer>
</div> </div>
@ -354,7 +380,7 @@ const easterEggEngine = ref<{ stop: () => void } | null>(null);
const containerEl = shallowRef<HTMLElement>(); const containerEl = shallowRef<HTMLElement>();
function iconLoaded() { function iconLoaded() {
const emojis = defaultStore.state.reactions; const emojis = [...defaultStore.state.reactions, '🧄'];
const containerWidth = containerEl.value.offsetWidth; const containerWidth = containerEl.value.offsetWidth;
for (let i = 0; i < 32; i++) { for (let i = 0; i < 32; i++) {
easterEggEmojis.value.push({ easterEggEmojis.value.push({
@ -378,7 +404,7 @@ function gravity() {
function iLoveMisskey() { function iLoveMisskey() {
os.post({ os.post({
initialText: 'I $[jelly ❤] #Misskey', initialText: 'I $[jelly ❤] #Forkey',
instant: true, instant: true,
}); });
} }
@ -399,7 +425,7 @@ const headerActions = computed(() => []);
const headerTabs = computed(() => []); const headerTabs = computed(() => []);
definePageMetadata(() => ({ definePageMetadata(() => ({
title: i18n.ts.aboutMisskey, title: i18n.ts.aboutForkey,
icon: null, icon: null,
})); }));
</script> </script>

View file

@ -23,34 +23,22 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #value><div v-html="instance.description"></div></template> <template #value><div v-html="instance.description"></div></template>
</MkKeyValue> </MkKeyValue>
<div style="display:flex;flex-direction:column;align-items:center;justify-content:center">
<div>© {{ new Date().getFullYear() }} MisskeyHQ Inc.</div>
<a href="https://go.misskey.io/legal-notice" target="_blank" rel="noopener"><u>特定商取引法に基づく表記</u></a>
</div>
<FormSection>
<template #label><Mfm text="$[jelly ❤]"/> Sponsored by</template>
<div style="display:flex;flex-wrap:wrap;gap:8px 8px;align-items:center;justify-content:center;">
<a title="Skeb" href="https://skeb.jp/" target="_blank"><img src="https://media.misskeyusercontent.jp/misskey-io/sponsors/skeb.png" alt="Skeb" width="140"></a>
</div>
</FormSection>
<FormSection> <FormSection>
<div class="_gaps_m"> <div class="_gaps_m">
<MkKeyValue :copy="version"> <MkKeyValue :copy="version">
<template #key>Misskey</template> <template #key>Forkey</template>
<template #value>{{ version }}</template> <template #value>{{ version }}</template>
</MkKeyValue> </MkKeyValue>
<div v-html="i18n.tsx.poweredByMisskeyDescription({ name: instance.name ?? host })"> <div v-html="i18n.tsx.poweredByMisskeyDescription({ name: instance.name ?? host })">
</div> </div>
<FormLink to="/about-misskey"> <FormLink to="/about-forkey">
<template #icon><i class="ti ti-info-circle"></i></template> <template #icon><i class="ti ti-info-circle"></i></template>
{{ i18n.ts.aboutMisskey }} {{ i18n.ts.aboutForkey }}
</FormLink> </FormLink>
<FormLink v-if="instance.repositoryUrl" :to="instance.repositoryUrl" external> <FormLink v-if="instance.repositoryUrl" :to="instance.repositoryUrl" external>
<template #icon><i class="ti ti-code"></i></template> <template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts.sourceCode }} {{ i18n.ts.sourceCode }}
<template #suffix>GitHub</template> <template #suffix>Forgejo</template>
</FormLink> </FormLink>
<MkInfo v-else warn> <MkInfo v-else warn>
{{ i18n.ts.sourceCodeIsNotYetProvided }} {{ i18n.ts.sourceCodeIsNotYetProvided }}
@ -97,11 +85,6 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #icon><i class="ti ti-message"></i></template> <template #icon><i class="ti ti-message"></i></template>
{{ i18n.ts.support }} {{ i18n.ts.support }}
</FormLink> </FormLink>
<FormLink to="https://go.misskey.io/donate" external>
<template #icon><i class="ti ti-pig-money"></i></template>
{{ i18n.tsx.supportThisInstance({ name: instance.name ?? host }) }}
<template #suffix>pixivFANBOX</template>
</FormLink>
</div> </div>
</div> </div>
</FormSection> </FormSection>

View file

@ -46,8 +46,8 @@ const pagination = {
function deleted(id: string) { function deleted(id: string) {
if (paginationComponent.value) { if (paginationComponent.value) {
paginationComponent.value.items = paginationComponent.value.items.filter( paginationComponent.value.items = paginationComponent.value.items.filter(
(item: any) => item.id !== id (item: any) => item.id !== id,
); );
} }
} }

View file

@ -46,6 +46,7 @@ function start(_game: Misskey.entities.ReversiGameDetailed) {
misskeyApi('notes/create', { misskeyApi('notes/create', {
text: i18n.ts._reversi.iStartedAGame + '\n' + location.href, text: i18n.ts._reversi.iStartedAGame + '\n' + location.href,
visibility: 'home', visibility: 'home',
noCreatedNote: true,
}); });
} }

View file

@ -9,8 +9,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<XTimeline class="tl"/> <XTimeline class="tl"/>
<div class="shape1"></div> <div class="shape1"></div>
<div class="shape2"></div> <div class="shape2"></div>
<img class="extra-2" src="/client-assets/entrance-extra-2.png"/> <!-- <img class="extra-2" src="/client-assets/entrance-extra-2.png"/>-->
<img class="extra-1" src="/client-assets/entrance-extra-1.png"/> <!-- <img class="extra-1" src="/client-assets/entrance-extra-1.png"/>-->
<div class="logo-wrapper"> <div class="logo-wrapper">
<img src="/client-assets/entrance-extra-3.png" class="misskey"/> <img src="/client-assets/entrance-extra-3.png" class="misskey"/>
</div> </div>

View file

@ -208,8 +208,8 @@ const routes: RouteDef[] = [{
path: '/contact', path: '/contact',
component: page(() => import('@/pages/contact.vue')), component: page(() => import('@/pages/contact.vue')),
}, { }, {
path: '/about-misskey', path: '/about-forkey',
component: page(() => import('@/pages/about-misskey.vue')), component: page(() => import('@/pages/about-forkey.vue')),
}, { }, {
path: '/invite', path: '/invite',
name: 'invite', name: 'invite',
@ -484,13 +484,13 @@ const routes: RouteDef[] = [{
component: page(() => import('@/pages/admin/invites.vue')), component: page(() => import('@/pages/admin/invites.vue')),
}, { }, {
path: '/approvals', path: '/approvals',
name: 'approvals', name: 'approvals',
component: page(() => import('@/pages/admin/approvals.vue')), component: page(() => import('@/pages/admin/approvals.vue')),
}, { }, {
path: '/', path: '/',
component: page(() => import('@/pages/_empty_.vue')), component: page(() => import('@/pages/_empty_.vue')),
}], }],
},{ }, {
path: '/my/notifications', path: '/my/notifications',
component: page(() => import('@/pages/notifications.vue')), component: page(() => import('@/pages/notifications.vue')),
loginRequired: true, loginRequired: true,

View file

@ -543,6 +543,7 @@ export function getRenoteMenu(props: {
misskeyApi('notes/create', { misskeyApi('notes/create', {
renoteId: appearNote.id, renoteId: appearNote.id,
channelId: appearNote.channelId, channelId: appearNote.channelId,
noCreatedNote: true,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);
}); });
@ -589,6 +590,7 @@ export function getRenoteMenu(props: {
localOnly, localOnly,
visibility, visibility,
renoteId: appearNote.id, renoteId: appearNote.id,
noCreatedNote: true,
}).then(() => { }).then(() => {
os.toast(i18n.ts.renoted); os.toast(i18n.ts.renoted);
}); });
@ -630,6 +632,7 @@ export function getRenoteMenu(props: {
misskeyApi('notes/create', { misskeyApi('notes/create', {
renoteId: appearNote.id, renoteId: appearNote.id,
channelId: channel.id, channelId: channel.id,
noCreatedNote: true,
}).then(() => { }).then(() => {
os.toast(i18n.tsx.renotedToX({ name: channel.name })); os.toast(i18n.tsx.renotedToX({ name: channel.name }));
}); });

Some files were not shown because too many files have changed in this diff Show more