diff --git a/.config/cypress-devcontainer.yml b/.config/cypress-devcontainer.yml index 91dce3515585..3907615f73a4 100644 --- a/.config/cypress-devcontainer.yml +++ b/.config/cypress-devcontainer.yml @@ -2,6 +2,19 @@ # Misskey configuration #━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ +# ┌────────────────────────┐ +#───┘ Initial Setup Password └───────────────────────────────────────────────────── + +# Password to initiate setting up admin account. +# It will not be used after the initial setup is complete. +# +# Be sure to change this when you set up Misskey via the Internet. +# +# The provider of the service who sets up Misskey on behalf of the customer should +# set this value to something unique when generating the Misskey config file, +# and provide it to the customer. +setupPassword: example_password_please_change_this_or_you_will_get_hacked + # ┌─────┐ #───┘ URL └───────────────────────────────────────────────────── diff --git a/.config/example.yml b/.config/example.yml index 7080159117ac..60a6a0aa71b7 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -59,6 +59,20 @@ # # publishTarballInsteadOfProvideRepositoryUrl: true +# ┌────────────────────────┐ +#───┘ Initial Setup Password └───────────────────────────────────────────────────── + +# Password to initiate setting up admin account. +# It will not be used after the initial setup is complete. +# +# Be sure to change this when you set up Misskey via the Internet. +# +# The provider of the service who sets up Misskey on behalf of the customer should +# set this value to something unique when generating the Misskey config file, +# and provide it to the customer. +# +# setupPassword: example_password_please_change_this_or_you_will_get_hacked + # ┌─────┐ #───┘ URL └───────────────────────────────────────────────────── diff --git a/.github/misskey/test.yml b/.github/misskey/test.yml index 7a4aa4ae6cce..3c807e8b9ea2 100644 --- a/.github/misskey/test.yml +++ b/.github/misskey/test.yml @@ -1,5 +1,7 @@ url: 'http://misskey.local' +setupPassword: example_password_please_change_this_or_you_will_get_hacked + # ローカルでテストするときにポートを被らないようにするためデフォルトのものとは変える(以下同じ) port: 61812 diff --git a/.github/workflows/check-misskey-js-autogen.yml b/.github/workflows/check-misskey-js-autogen.yml index 5afd7d271487..f26c9a4d45b8 100644 --- a/.github/workflows/check-misskey-js-autogen.yml +++ b/.github/workflows/check-misskey-js-autogen.yml @@ -21,6 +21,7 @@ jobs: uses: actions/checkout@v4.1.1 with: submodules: true + persist-credentials: false ref: refs/pull/${{ github.event.pull_request.number }}/merge - name: setup pnpm @@ -57,7 +58,7 @@ jobs: name: generated-misskey-js path: packages/misskey-js/generator/built/autogen - # pull_request_target safety: permissions: read-all, and there are no secrets used in this job + # pull_request_target safety: permissions: read-all, and no user codes are executed get-actual-misskey-js: runs-on: ubuntu-latest permissions: @@ -68,6 +69,7 @@ jobs: uses: actions/checkout@v4.1.1 with: submodules: true + persist-credentials: false ref: refs/pull/${{ github.event.pull_request.number }}/merge - name: Upload From Merged @@ -131,3 +133,7 @@ jobs: mode: delete message: "Thank you!" create_if_not_exists: false + + - name: Make failure if changes are detected + if: steps.check-changes.outputs.changes == 'true' + run: exit 1 diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 07d9af12f7a0..90eb268ddab8 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -75,7 +75,7 @@ jobs: - run: corepack enable - run: pnpm i --frozen-lockfile - name: Restore eslint cache - uses: actions/cache@v4.0.2 + uses: actions/cache@v4.1.0 with: path: ${{ env.eslint-cache-path }} key: eslint-${{ env.eslint-cache-version }}-${{ matrix.workspace }}-${{ hashFiles('**/pnpm-lock.yaml') }}-${{ github.ref_name }}-${{ github.sha }} diff --git a/.github/workflows/vrtl-docker-release.yml b/.github/workflows/vrtl-docker-release.yml new file mode 100644 index 000000000000..438b95de8b0f --- /dev/null +++ b/.github/workflows/vrtl-docker-release.yml @@ -0,0 +1,53 @@ +name: Build and Push VRTL Misskey Docker Image + +on: + push: + tags: + - 'v*-vrtl.*' + +env: + DOCKER_REGISTRY_NAME: ghcr.io + DOCKER_IMAGE_NAME: anatawa12/vrtl-misskey + +jobs: + build: + permissions: + contents: read + packages: write + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to Docker hub + uses: docker/login-action@v1 + with: + registry: ${{ env.DOCKER_REGISTRY_NAME }} + username: ${{ github.repository_owner }} + password: ${{ github.token }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v3 + with: + images: ${{ env.DOCKER_REGISTRY_NAME }}/${{ env.DOCKER_IMAGE_NAME }} + + - name: Build & Push + uses: docker/build-push-action@v2 + env: + DOCKER_BUILDKIT: 1 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: ${{ env.DOCKER_REGISTRY_NAME }}/${{ env.DOCKER_IMAGE_NAME }}:latest + build-args: BUILDKIT_INLINE_CACHE=1 diff --git a/CHANGELOG-VRTL.md b/CHANGELOG-VRTL.md index 1d06e5a24651..99eb958ceb41 100644 --- a/CHANGELOG-VRTL.md +++ b/CHANGELOG-VRTL.md @@ -5,6 +5,11 @@ VRTLのブランチで行われた変更点をまとめています - fix(frontend): VRTL VSTLの名前が表示されないところがある問題 (anatawa12#97) - 2024/08/07 - fic(frontend): VRTL VSTLでリプライのトグルが表示されない問題 (anatawa12#92) - 2024/08/04 + +--- 2024.7.0-vrtl.1 released at this time --- + +--- 2024.5.0-vrtl.2 released at this time --- + - chore(backend): VRTL参加サーバーの取得に失敗したときのリトライの間隔を短く - feat: VRTL/VSTLに連合なし投稿を含めるかを選択可能に - もともとのVRTL/VSTLでは連合なし投稿が常に含まれていましたが、正しくVRTL/VSTLのノートを表現するために含めないようにできるようになりました diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fbb46786eab..b32f63a3c21b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,35 @@ +## 2024.10.0 + +### Note +- セキュリティ向上のため、サーバー初期設定時に使用する初期パスワードを設定できるようになりました。今後Misskeyサーバーを新たに設置する際には、初回の起動前にコンフィグファイルの`setupPassword`をコメントアウトし、初期パスワードを設定することをおすすめします。(すでに初期設定を完了しているサーバーについては、この変更に伴い対応する必要はありません) + - ホスティングサービスを運営している場合は、コンフィグファイルを構築する際に`setupPassword`をランダムな値に設定し、ユーザーに通知するようにシステムを更新することをおすすめします。 + - なお、初期パスワードが設定されていない場合でも初期設定を行うことが可能です(UI上で初期パスワードの入力欄を空欄にすると続行できます)。 +- ユーザーデータを読み込む際の型が一部変更されました。 + - `twoFactorEnabled`, `usePasswordLessLogin`, `securityKeys`: 自分とモデレーター以外のユーザーからは取得できなくなりました + +### General +- Feat: サーバー初期設定時に初期パスワードを設定できるように +- Feat: 通報にモデレーションノートを残せるように +- Feat: 通報の解決種別を設定できるように +- Enhance: 通報の解決と転送を個別に行えるように +- Enhance: セキュリティ向上のため、サインイン時もCAPTCHAを求めるようになりました +- Enhance: 依存関係の更新 +- Enhance: l10nの更新 +- Enhance: Playの「人気」タブで10件以上表示可能に #14399 +- Fix: 連合のホワイトリストが正常に登録されない問題を修正 + +### Client +- Enhance: デザインの調整 +- Enhance: ログイン画面の認証フローを改善 +- Fix: クライアント上での時間ベースの実績獲得動作が実績獲得後も発動していた問題を修正 + (Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/657) + +### Server +- Enhance: セキュリティ向上のため、ログイン時にメール通知を行うように +- Enhance: 自分とモデレーター以外のユーザーから二要素認証関連のデータが取得できないように +- Enhance: 通報および通報解決時に送出されるSystemWebhookにユーザ情報を含めるように ( #14697 ) +- Fix: `admin/abuse-user-reports`エンドポイントのスキーマが間違っていた問題を修正 + ## 2024.9.0 ### General diff --git a/README.md b/README.md index 92e8fef6396e..d86dec7b9dc0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,131 @@ +# Anatawa12's fork of Misskey + +This is anatawa12's fork of Misskey. + +This fork is used for several purposes: + +- The repository for [vmimi-relay timeline] extension development. I'm the maintainer of the [vmimi-relay timeline]. +- The repository for writing pull-requests to the vmimi relay users. I'm usually sending pull requests to the vmimi relay users after each updates. +- The repository for writing pull-requests to the upstream repository. I'm one of the contributors of the upstream repository. +- The repository for writing pull-requests to the [misskey.niri.la]. I'm one of the maintainers of the [misskey.niri.la]. + +This branch is the branch for releasing the Vmimi Relay Timeline extension. + +## Vmimi Relay Timeline + +The Vmimi Relay Timeline is additional timelines for Misskey servers who belong to the [Virtual Kemomimi Relay]. +This extension adds two timelines: Vmimi Relay Timeline (VRTL) and Vmimi Social Timeline (VSTL). + +ぶいみみリレータイムラインは[ぶいみみリレー][Virtual Kemomimi Relay]に参加しているサーバー向けのmisskeyの拡張タイムラインです。 +この拡張はふたつのタイムラインを追加します: ぶいみみリレータイムライン (VRTL) とぶいみみソーシャルタイムライン (VSTL) です。 + +### Vmimi Relay Timeline (VRTL) + +The Vmimi Relay Timeline (VRTL) is the timeline that shows the posts from the Virtual Kemomimi Relay users. +This timeline is designed to be similar to the Local Timeline, +but it shows the posts from the Virtual Kemomimi Relay users. + +ぶいみみリレータイムライン (VRTL) はぶいみみリレーに参加しているユーザーの投稿を表示するタイムラインです。 +このタイムラインはローカルタイムラインに似ていますが、ぶいみみリレーに参加しているユーザーの投稿を表示します。 + +### Vmimi Social Timeline (VSTL) + +The Vmimi Social Timeline (VSTL) is the timeline that shows the posts from +the Virtual Kemomimi Relay users and the users you are following. +In other words, this timeline is the combination of the VRTL and the Home Timeline. +This timeline is designed to be similar to the Social Timeline, +but it shows the posts from the Virtual Kemomimi Relay users instead of the Local Timeline. + +ぶいみみソーシャルタイムライン (VSTL) はぶいみみリレーに参加しているユーザーとフォローしているユーザーの投稿を表示するタイムラインです。 +つまり、このタイムラインはVRTLとホームタイムラインの組み合わせです。 +このタイムラインはソーシャルタイムラインに似ていますが、ローカルタイムラインの代わりにぶいみみリレーに参加しているユーザーの投稿を表示します。 + +### How to use the Vmimi Relay Timeline + +First, this extension is designed for servers who joined the [Virtual Kemomimi Relay] +so you have to join the [Virtual Kemomimi Relay] to use this extension. + +After that, you have two ways to use the Vmimi Relay Timeline: +- Use releases of the misskey docker image if you're using official docker image. + The image is designed to be a drop-in replacement of the official image. + The image name is [`ghcr.io/anatawa12/vrtl-misskey:latest`]. +- Merge the extension branch to your fork and build the image by yourself. + You can merge the [`vmimi-relay-timeline/generic`] branch to your fork. + If you ask me, I'll create a pull request to your fork. Feel free to ask me. + +はじめに、この拡張は[ぶいみみリレー][Virtual Kemomimi Relay]に参加しているサーバー向けに設計されているため、この拡張を使用するには[ぶいみみリレー][Virtual Kemomimi Relay]に参加する必要があります。 + +その後、ぶいみみリレータイムラインを使用する方法はふたつあります: +- 公式のdockerイメージを使用している場合は、VRTLのdockerイメージを使用してください。 + のイメージは公式イメージの代わりとして使用できます。 + イメージ名は [`ghcr.io/anatawa12/vrtl-misskey:latest`] です。 +- このブランチをあなたのフォークにマージして、自分でイメージをビルドしてください。 + [`vmimi-relay-timeline/generic`] ブランチをあなたのフォークにマージすることで、この拡張を使用できます。 + 必要であれば、あなたのフォークにプルリクエストを作成します。お気軽にお尋ねください。 + +### Notes for Third-party Client Developers + +Here are the technical notes for third-party misskey client developers. + +サードパーティ Misskey クライアント向けの技術的な情報です + +#### Detecting Vmimi Relay Timeline + +There is `vmimiRelayTimelineImplemented` property on `metadata` object of `nodeinfo`. +If it's true, your client can assume that the VRTL is implemented for the sever. + +`nodeinfo`の`metadata`オブジェクトに`vmimiRelayTimelineImplemented`プロパティがあります。 +この値が true であれば、VRTLがそのサーバーにて実装されてると考えて問題ありません + +#### Endpoints and Channels of Vmimi Relay Timeline + +The fetch note endpoint for VRTL and VSTL are `notes/vmimi-relay-timeline` and `notes/vmimi-relay-hybrid-timeline`, +and the channel name for them are `vmimiRelayTimeline` and `vmimiRelayHybridTimeline`. + +Those endpoints and channels have almost same options as LTL / STL but they have one extra option specific to VRTL/VSTL. +The `withLocalOnly` flag (true by default) indicates if the timeline should include local only (non-federated) notes from server (local) timeline. + +For more details, see `misskey-js`. + +VRTLとVSTLのfetchエンドポイントはそれぞれ `notes/vmimi-relay-timeline`と `notes/vmimi-relay-hybrid-timeline`で、 +チャンネルは `vmimiRelayTimeline` と `vmimiRelayHybridTimeline` です。 + +これらのエンドポイントとチャンネルは LTL/STL とほぼ同じオプションを持っていますが、 VRTL/VSTL に固有オプションが一つあります。 +`withLocalOnly` (デフォルトtrue) はタイムラインにローカルのみ(連合なし)ノートがタイムラインに含まれるかどうかを示します。 + +### Branches related to Vmimi Relay Timeline + +- [`vmimi-relay-timeline/generic`]: + The branch for the Vmimi Relay Timeline extension development. + All changes to the Vmimi Relay Timeline extension will be merged to this branch. + This branch should be based on the latest official release of Misskey. + This branch does not include any changes other than the Vmimi Relay Timeline extension itself. +- [`vmimi-relay-timeline/releases`]: + The branch for releasing the Vmimi Relay Timeline extension. + This branch includes the changes for `package.json` and changes to the repository link. +- `vmimi-relay-timeline/forks/nirila`, `vmimi-relay-timeline/forks/buiso` and other branches: + Those branches are the branches for sending pull requests to each fork-based server. + Those branches are not permanent; they will be deleted after each pull request is merged. + +### How the Vmimi Relay Timeline works + +The Vmimi Relay Timeline is implemented as a server-whitelisted timeline. + +The Vmimi Relay provides the API endpoint to get the list of joined servers. +The Vmimi Relay Timeline extension fetches the list of joined servers from the Vmimi Relay +and filters the received / created notes by the list. +For implementation simplicity, the Vmimi Relay Timeline includes all public notes of the local server including +non-federated notes, but this behavior may change in the future. + +[Virtual Kemomimi Relay]: https://relay.virtualkemomimi.net/ +[misskey.niri.la]: https://github.com/niri-la/misskey.niri.la/ +[vmimi-relay timeline]: #vmimi-relay-timeline +[`vmimi-relay-timeline/generic`]: https://github.com/anatawa12/misskey/tree/vmimi-relay-timeline/generic +[`vmimi-relay-timeline/releases`]: https://github.com/anatawa12/misskey/tree/vmimi-relay-timeline/releases +[`ghcr.io/anatawa12/vrtl-misskey:latest`]: https://github.com/anatawa12/misskey/pkgs/container/vrtl-misskey + +--- +