Skip to content

enhance(backend): bundle backend using Rolldown#17068

Merged
syuilo merged 36 commits intomisskey-dev:developfrom
kakkokari-gtyih:bundle-backend-alt
Apr 16, 2026
Merged

enhance(backend): bundle backend using Rolldown#17068
syuilo merged 36 commits intomisskey-dev:developfrom
kakkokari-gtyih:bundle-backend-alt

Conversation

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor

@kakkokari-gtyih kakkokari-gtyih commented Jan 6, 2026

What

  • rolldownでバックエンドをバンドル(e2e用のみswcから移行していない)
  • production build時はsourcemapを生成しないように
  • バックエンドの開発サーバーのファイルwatch・サーバー起動/終了をrolldownで行うようにし、nodemonを削除
    • rolldown内部でネイティブにwatchするためより効率的
    • ビルドステップに統合されるpluginとしてサーバーの起動制御を実装しているため、より安定してサーバーの起動終了制御が可能に
  • 起動速度の改善 enhance: 起動からlistenまでかかる時間を減らす MisskeyIO/misskey#1410
  • パスが絡む処理において、絶対パスの解決をconfig.tsで一回だけ行い、引き回すように
  • パスが絡む処理でconfigから来た絶対パスを使用するように

Why

Fix #16852

Additional info (optional)

Checklist

  • Read the contribution guide
  • Test working in a local environment
  • (If needed) Add story of storybook
  • (If needed) Update CHANGELOG.md
  • (If possible) Add tests

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jan 6, 2026

このPRによるapi.jsonの差分
差分はありません。
Get diff files from Workflow Page

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

kakkokari-gtyih commented Jan 6, 2026

コード54.4MBになった(が、起動には成功してない)

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

通常ならその直後に InstanceLoader: EndpointsModule dependencies initialized が出るからEndpointsModuleに原因がある可能性がある

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

どっちかというと EndpointsModule というよりは EndpointsModule に依存している ServerModule かも

@samunohito
Copy link
Copy Markdown
Member

関係あるかわからないけど…

クラス名は維持しておかないとDI周りが死ぬので、バンドルの過程でクラス名などが変わっているのであれば維持するようにしてみるといいかも…?

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

どっちかというと EndpointsModule というよりは EndpointsModule に依存している ServerModule かも

いやさらに ServerModule に依存している CoreModule かも
CoreModule が含んでいる何らかの Service のどれかに問題がありそう(SearchServiceのログは出てるから最低でもそこまでは読み込めていることは判る)

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

いかのどれかに問題があることは絞り込めた

		AbuseUserReportEntityService,
		AnnouncementEntityService,
		AbuseReportNotificationRecipientEntityService,
		AntennaEntityService,
		AppEntityService,
		AuthSessionEntityService,
		BlockingEntityService,
		ChannelEntityService,
		ChatEntityService,
		ClipEntityService,
		DriveFileEntityService,
		DriveFolderEntityService,
		EmojiEntityService,
		FollowingEntityService,
		FollowRequestEntityService,
		GalleryLikeEntityService,
		GalleryPostEntityService,
		HashtagEntityService,
		InstanceEntityService,
		InviteCodeEntityService,
		ModerationLogEntityService,
		MutingEntityService,
		RenoteMutingEntityService,
		NoteEntityService,
		NoteFavoriteEntityService,
		NoteReactionEntityService,
		NoteDraftEntityService,
		NotificationEntityService,
		PageEntityService,
		PageLikeEntityService,
		SigninEntityService,
		UserEntityService,
		UserListEntityService,
		FlashEntityService,
		FlashLikeEntityService,
		RoleEntityService,
		ReversiGameEntityService,
		MetaEntityService,

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

クラス名は維持しておかないとDI周りが死ぬ

keepNamesしてるのでそれはなさそう

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

NoteEntityService に問題があることが判った

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

NoteEntityServiceは循環参照があり、読み込み順的にはModuleRefを使用する初めてのサービスであるので、ModuleRefを使用していることが原因ということで間違いないと思われる

@codecov
Copy link
Copy Markdown

codecov Bot commented Jan 6, 2026

Codecov Report

❌ Patch coverage is 72.72727% with 24 lines in your changes missing coverage. Please review.
✅ Project coverage is 62.42%. Comparing base (a18c909) to head (24bd03a).
⚠️ Report is 33 commits behind head on develop.

Files with missing lines Patch % Lines
packages/backend/src/boot/common.ts 36.36% 7 Missing ⚠️
...ages/backend/src/server/web/ClientServerService.ts 80.00% 7 Missing ⚠️
...ages/backend/src/server/web/HtmlTemplateService.ts 50.00% 6 Missing ⚠️
packages/backend/src/boot/entry.ts 0.00% 3 Missing ⚠️
packages/backend/src/server/FileServerService.ts 87.50% 1 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #17068      +/-   ##
===========================================
- Coverage    63.65%   62.42%   -1.23%     
===========================================
  Files         1161     1162       +1     
  Lines       116313   116557     +244     
  Branches      8407     9080     +673     
===========================================
- Hits         74042    72764    -1278     
- Misses       40063    41601    +1538     
+ Partials      2208     2192      -16     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

NoteEntityServiceは循環参照があり、読み込み順的にはModuleRefを使用する初めてのサービスであるので、ModuleRefを使用していることが原因ということで間違いないと思われる

いや嘘かも

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

InstanceEntityServiceだけ読み込まれてないかも

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

謎ということが判った

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

とはいえ循環参照周りが原因な気はする

@anatawa12
Copy link
Copy Markdown
Member

バンドルでesmoduleそのままだと発生しない循環参照問題が発生するなら minify だけにしたい気がしてます。今後devなら問題ないのにbuildすると謎フリーズが今後増えるのはあまりうれしくないと思います

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 6, 2026

ApAudienceService も正常に読み込まれていないserviceのひとつだけど、以下のように極限にシンプルな実装に書き換えると読み込まれるようになる

before

import { Injectable } from '@nestjs/common';
import promiseLimit from 'promise-limit';
import type { MiRemoteUser, MiUser } from '@/models/User.js';
import { concat, unique } from '@/misc/prelude/array.js';
import { bindThis } from '@/decorators.js';
import { getApIds } from './type.js';
import { ApPersonService } from './models/ApPersonService.js';
import type { ApObject } from './type.js';
import type { Resolver } from './ApResolverService.js';

type Visibility = 'public' | 'home' | 'followers' | 'specified';

type AudienceInfo = {
	visibility: Visibility,
	mentionedUsers: MiUser[],
	visibleUsers: MiUser[],
};

type GroupedAudience = Record<'public' | 'followers' | 'other', string[]>;

@Injectable()
export class ApAudienceService {
	constructor(
		private apPersonService: ApPersonService,
	) {
	}

	@bindThis
	public async parseAudience(actor: MiRemoteUser, to?: ApObject, cc?: ApObject, resolver?: Resolver): Promise<AudienceInfo> {
		const toGroups = this.groupingAudience(getApIds(to), actor);
		const ccGroups = this.groupingAudience(getApIds(cc), actor);

		const others = unique(concat([toGroups.other, ccGroups.other]));

		const limit = promiseLimit<MiUser | null>(2);
		const mentionedUsers = (await Promise.all(
			others.map(id => limit(() => this.apPersonService.resolvePerson(id, resolver).catch(() => null))),
		)).filter(x => x != null);

		if (toGroups.public.length > 0) {
			return {
				visibility: 'public',
				mentionedUsers,
				visibleUsers: [],
			};
		}

		if (ccGroups.public.length > 0) {
			return {
				visibility: 'home',
				mentionedUsers,
				visibleUsers: [],
			};
		}

		if (toGroups.followers.length > 0 || ccGroups.followers.length > 0) {
			return {
				visibility: 'followers',
				mentionedUsers,
				visibleUsers: [],
			};
		}

		return {
			visibility: 'specified',
			mentionedUsers,
			visibleUsers: mentionedUsers,
		};
	}

	@bindThis
	private groupingAudience(ids: string[], actor: MiRemoteUser): GroupedAudience {
		const groups: GroupedAudience = {
			public: [],
			followers: [],
			other: [],
		};

		for (const id of ids) {
			if (this.isPublic(id)) {
				groups.public.push(id);
			} else if (this.isFollowers(id, actor)) {
				groups.followers.push(id);
			} else {
				groups.other.push(id);
			}
		}

		groups.other = unique(groups.other);

		return groups;
	}

	@bindThis
	private isPublic(id: string): boolean {
		return [
			'https://www.w3.org/ns/activitystreams#Public',
			'as:Public',
			'Public',
		].includes(id);
	}

	@bindThis
	private isFollowers(id: string, actor: MiRemoteUser): boolean {
		return id === (actor.followersUri ?? `${actor.uri}/followers`);
	}
}

after

import { Injectable } from '@nestjs/common';
import type { MiRemoteUser } from '@/models/User.js';
import { bindThis } from '@/decorators.js';
import type { ApObject } from './type.js';
import type { Resolver } from './ApResolverService.js';

@Injectable()
export class ApAudienceService {
	constructor(
	) {
		console.log('ApAudienceService initialized');
	}

	@bindThis
	public async parseAudience(actor: MiRemoteUser, to?: ApObject, cc?: ApObject, resolver?: Resolver) {
		return {
			visibility: 'specified',
		};
	}
}

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

InstanceEntityServiceだけ読み込まれてないかも

コードに出てないわけでなさそう(ビルド成果物を検索したらヒットした)

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

kakkokari-gtyih commented Jan 6, 2026

バンドルでesmoduleそのままだと発生しない循環参照問題が発生するなら minify だけにしたい気がしてます。今後devなら問題ないのにbuildすると謎フリーズが今後増えるのはあまりうれしくないと思います

そもそもnestjsはバンドルされた環境で動かすことは想定されてるのかしら

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Jan 22, 2026

そもそもnestjsはバンドルされた環境で動かすことは想定されてるのかしら

Webpackを使用する場合の設定方法が書いてあったからされてそう

image

https://docs.nestjs.com/fundamentals/lazy-loading-modules

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

backendの開発サーバーをrolldown制御に変更した

@kakkokari-gtyih kakkokari-gtyih marked this pull request as ready for review April 16, 2026 01:31
@dosubot dosubot Bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Apr 16, 2026
@kakkokari-gtyih kakkokari-gtyih changed the title enhance(backend): bundle backend using Rolldown (experimental) enhance(backend): bundle backend using Rolldown Apr 16, 2026
@syuilo syuilo merged commit 37bfcb6 into misskey-dev:develop Apr 16, 2026
40 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in [実験中] 管理用 Apr 16, 2026
@syuilo
Copy link
Copy Markdown
Member

syuilo commented Apr 16, 2026

👍🏻👍🏻

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Apr 16, 2026

pnpm devでエラー出るかも
image

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

Nodeがv24で起動してそうだけどv22にしても発生するかしら

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

ちなみにこちらの環境だと正常に起動している

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Apr 16, 2026

Windows?

@anatawa12
Copy link
Copy Markdown
Member

anatawa12 commented Apr 16, 2026

windows native環境でだけ発生する問題化も?(wsl linux macosじゃ発生しないかも

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

rolldown.config.ts の backendProcess = execaNode('./built/entry.js', { となっているところを backendProcess = execaNode('./built/entry.js', [], { に変えてみていけるか見てほしい

@syuilo
Copy link
Copy Markdown
Member

syuilo commented Apr 16, 2026

変わらなかった

@kakkokari-gtyih
Copy link
Copy Markdown
Contributor Author

なにがだめかわかったかも

m10i-0nyx pushed a commit to foundation0-link/misskey that referenced this pull request Apr 28, 2026
* enhance(backend): bundle backend using rolldown

* fix

* fix [ci skip]

* remove unused build script

* fix

* enhance: 起動からlistenまでかかる時間を減らす (MisskeyIO#1410)

* ✌️

* fix

* update rolldown

* fix(backend): extract static error classes to avoid rolldown design:paramtypes omission

* update rolldown

* Revert "fix(backend): extract static error classes to avoid rolldown design:paramtypes omission"

This reverts commit e2243c9.

* fix

* perf: avoid generating sourcemap in production

* fix

* fix

* fix

* fix paths

* fix

* fix

* fix

* fix

* fix

* enhance: バックエンドの開発サーバー制御をrolldown側で行うように

* remove nodemon

* Update Changelog

* tweak config

* fix

* fix

* fix

* clean up

---------

Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com>
Co-authored-by: bab <mashirohira@gmail.com>
anatawa12 added a commit to anatawa12/misskey that referenced this pull request May 7, 2026
* [skip ci] Update CHANGELOG.md (prepend template)

* deps: update dependencies (misskey-dev#17263)

* deps: update dependencies

* fix?

* fix

* Update AiService.ts

* fix

* update deps

* fix(backend): /api-doc にアクセスできない問題を修正 (misskey-dev#17267)

* Initial plan

* fix: fix /api-doc returning 404 after backend minification (misskey-dev#17266)

Agent-Logs-Url: https://github.com/misskey-dev/misskey/sessions/8d7d0585-55da-412f-a8ee-dde1b6565026

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* enhance: API DocのHTMLをJSXで生成するように

* Update Changelog

* chore: remove unused imports [ci skip]

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>

* deps: Update vite to v8 (misskey-dev#17238)

* deps: Update vite to v8

* fix

* migrate some plugins to rolldown-based

* fix broken lockfile

* wip

* update rolldown

* override rolldown version

* perf

* spdx

* fix

* update vite to 8.0.1

* chore: rewrite rollup-plugin-unwind-css-module-class-name with MagicString

* format

* swap type definitions

* replace using MagicString

* provided magicString

* fix code style

* fix

* fix

* fix

* fix

* fix

---------

Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>

* fix: lint fixes

* swap sass with sass-embedded

* fix lint

* fix: インライン化されたVue SFC出力に対してCSS Module定義削除が効かないのを修正

* fix

* fix: バックエンドのCSS読み込みの方法が悪いのを修正

* fix: 使用されないpreloadを削除

* fix lint [ci skip]

* Apply suggestion from @syuilo

* Add comment in pnpm-workspace.yaml [ci skip]

* update vite/rolldown

* remove magic-string

---------

Co-authored-by: cm-ayf <cm.ayf2734@gmail.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* fix(backend): handle array or string in alsoKnownAs (misskey-dev#17275)

* fix: handle array or string in alsoKnownAs, closes misskey-dev#17274

* style: use more idiomatic toArray() for UserEntityService handling of alsoKnownAs

* fix: handle array-valued or unwrapped alsoKnownAs in ApPersonService

* doc: note about bugfix for alsoKnownAs

* enhance(frontend): チャンネル指定リノートでリノート先のチャンネルに移動できるように (misskey-dev#17280)

* enhance(frontend): チャンネル指定リノートでリノート先のチャンネルに移動できるように

* Update Changelog

* fix condition

* refactor

* Revert "deps: Update vite to v8" (misskey-dev#17283)

Revert "deps: Update vite to v8 (misskey-dev#17238)"

This reverts commit e601fcb.

* Bump version to 2026.4.0-alpha.0

* refactor(frontend): MkButtonのprops等整理 (misskey-dev#17282)

* refactor(frontend): MkButtonのprops等整理

* fix

* enhance(frontend): improve nested popup menu ux (misskey-dev#17187)

* wip

* Update MkMenu.vue

* wip

* wip

* Update MkMenu.vue

* wip

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* 💢

* Update MkMenu.vue

* Update MkMenu.vue

* Update MkMenu.vue

* New Crowdin updates (misskey-dev#17260)

* New translations ja-jp.yml (Thai)

* New translations ja-jp.yml (Lao)

* New translations ja-jp.yml (Chinese Traditional)

* New translations ja-jp.yml (Italian)

* New translations ja-jp.yml (Spanish)

* New translations ja-jp.yml (Italian)

* New translations ja-jp.yml (Catalan)

* New translations ja-jp.yml (Chinese Simplified)

* New translations ja-jp.yml (Chinese Traditional)

* New translations ja-jp.yml (Korean)

* New translations ja-jp.yml (Italian)

* fix(frontend): routerがmatchAllに入った際に一度 `location.href` による遷移を試みる挙動に関する修正 (misskey-dev#17281)

* fix(frontend): follow-up of misskey-dev#13509

* fix: fix use of inappropriate method

* Update CHANGELOG.md [ci skip]

* Bump version to 2026.4.0-alpha.1

* enhance(frontend): niraxにテストを追加 (misskey-dev#17287)

* fix(frontend): follow-up of misskey-dev#13509

* fix: fix use of inappropriate method

* enhance(frontend): niraxにテストを追加

* fix(frontend): follow-up of misskey-dev#17282

* refactor(frontend): refactor deck events (misskey-dev#17290)

* enhance(frontend): update vite to v8 再 (misskey-dev#17289)

* Revert "Revert "deps: Update vite to v8" (misskey-dev#17283)"

This reverts commit a18c909.

* fix(frontend): popupのりアクティビティがチャンクをまたいで切れる事がある問題を修正

* update vite/rolldown

* Bump version to 2026.4.0-alpha.2

* perf(frontend): improve about#emojis rendering performance

* fix(frontend): bannerUrl が空の場合に /about ページで /null へのアクセスが発生する問題を修正 (misskey-dev#17299)

fix(frontend): bannerUrl が空の場合に /about ページで /null へのリクエストが発生する問題を修正

bannerUrl が空の場合は 背景画像を設定しない。

about.overview.vue の background-image: url("null"); によって /null へのリクエストが発生してしまうため。

* fix(frontend): 連合が無効化されたサーバーでInstance Tickerの設定が中途半端に消えている問題を修正 (misskey-dev#17303)

* fix(frontend): 連合が無効化されたサーバーでInstance Tickerの設定が中途半端に消えている問題を修正

* Update Changelog

* fix(frontend): ドライブへの画像アップロード時にファイル名の変更が無視される不具合を修正 (misskey-dev#17302)

* ドライブの実ファイル名ではなくsuffixを保持するように

* MkUploaderItemsでファイル名が圧縮後の拡張子も含めて表示されるように

* Apply suggestion from @kakkokari-gtyih

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>

* changelog

---------

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* fix(backend): 存在しないActorに対するDeleteアクティビティは無視するように (misskey-dev#17294)

* fix(backend): 存在しないActorに対するDeleteアクティビティは無視するように

* Update Changelog

* fix

* Revert "fix"

This reverts commit 985feea.

* fix?

* fix

* fix

* fix

* fix

* refactor: remove unused imports

* fix

* Update CHANGELOG.md [ci skip]

* Bump version to 2026.4.0-alpha.3

* deps: Update dependencies (misskey-dev#17304)

* update deps

* update dependencies (major)

* fix: migrate meilisearch

* fix: migrate color-convert types

* fix cypress?

* rollback ts v5 as it is not supported by cypress

* fix fake-timers

* chore(deps): update dependency lodash to v4.18.1 [security] (misskey-dev#17278)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(backend): ULIDを正しく処理できない問題を修正 (misskey-dev#17310)

fix(backend): fix parseUlidFull to correctly handle Crockford Base32 chars W/X/Y/Z

* Update CHANGELOG.md for misskey-dev#17310 [ci skip]

* fix(backend): robots.txtで返却する内容の調整 (misskey-dev#17165)

* fix(backend): robots.txtで返却する内容の調整

* Update Changelog

* fix: add paths

* Update Changleog

* fix(backend): attempt to fix flaky e2e test on home timeline streaming (misskey-dev#17312)

* fix(backend): fix flaky e2e test on recursive drive folder check (misskey-dev#17311)

* fix(backend): Prevent retry of inbox jobs with role-based validation errors (misskey-dev#17167)

* Initial plan

* Handle too many mentions error in inbox without retry

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Update CHANGELOG.md

* Bump version to 2026.4.0-alpha.4

* refactor(frontend): ロールポリシーエディタを統合 (misskey-dev#17125)

* refactor(frontend): ロールポリシーエディタを統合

* fix

* fix lint

* clean up

* fix

* fix lint

* enhance: アバターデコレーションへのカテゴリの導入 (misskey-dev#17034)

* feat(backend): AvatarDecorationにcategoryを追加し、関連APIのプロパティ・戻り値にも反映

* feat(frontend): アバターデコレーションのカテゴリ設定機能

* chore(frontend): 管理画面とユーザー側の画面で、アバターデコレーションのグループ化のコードをある程度統一

* CHANGELOGを更新

* fix: group-avatar-decorations.tsを使用するよう修正

* chore: コーディング規約への準拠

* 型エラーを解消

* Update CHANGELOG.md

* fix(backend): handle relay-delivered Announce activities correctly (misskey-dev#17308)

* fix(backend): handle relay-delivered Announce activities correctly

Relay Announce activities now use the target note URI instead of the
Announce URI for federation allowlist checks, dedup locking, and
existence lookups. Notes delivered via relay are published directly to
the notes stream without creating a renote.

Closes misskey-dev#11056

* Update packages/backend/src/core/RelayService.ts

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

---------

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Bump version to 2026.4.0-alpha.5

* enhance(backend): bundle backend using Rolldown (misskey-dev#17068)

* enhance(backend): bundle backend using rolldown

* fix

* fix [ci skip]

* remove unused build script

* fix

* enhance: 起動からlistenまでかかる時間を減らす (MisskeyIO#1410)

* ✌️

* fix

* update rolldown

* fix(backend): extract static error classes to avoid rolldown design:paramtypes omission

* update rolldown

* Revert "fix(backend): extract static error classes to avoid rolldown design:paramtypes omission"

This reverts commit e2243c9.

* fix

* perf: avoid generating sourcemap in production

* fix

* fix

* fix

* fix paths

* fix

* fix

* fix

* fix

* fix

* enhance: バックエンドの開発サーバー制御をrolldown側で行うように

* remove nodemon

* Update Changelog

* tweak config

* fix

* fix

* fix

* clean up

---------

Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com>
Co-authored-by: bab <mashirohira@gmail.com>

* fix(backend): devサーバーの起動に失敗することがある問題を修正 (misskey-dev#17317)

* fix(backend): devサーバーの起動に失敗することがある問題を修正?

* fix

* deps: update security dependencies (misskey-dev#17318)

* Bump version to 2026.4.0-alpha.6

* Update CHANGELOG.md

* enhance(backend/test): Migrate tests to vitest (misskey-dev#16935)

* wip

* update fake-timers and migrate

* fix

* remove jest-mock

* fix

* fix

* fix

* fix

* attempt to fix unit tests

* attempt to fix e2e tests

* fix federation test [ci skip]

* attempt to fix e2e tests

* fix typecheck

* fix unit tests

* fix

* attempt to fix e2e

* fix

* Revert "attempt to fix e2e"

This reverts commit b7b7b05.

* attempt to fix e2e

* revert attempt to fix e2e

* update deps

* update vitest

* migrate

* attempt to fix e2e

* update

* fix

* remove vite swc plugin as oxc parser can handle decorators

* attempt to fix drive/files/create test

* Revert "attempt to fix drive/files/create test"

This reverts commit 4715153.

* fix: エンドポイントにまつわるテストをunitからe2eに移動

* attempt to fix e2e

* remove swc

* attempt to fix e2e

* Revert "attempt to fix e2e"

This reverts commit 9fb86a4.

* add logs for debug

* attempt to fix e2e

* Partially revert "attempt to fix e2e"

This reverts commit fb0008c.

* attempt to fix test

* fix: attempt to fix test

* Revert "fix: attempt to fix test"

This reverts commit ed2f5c4.

* Revert "attempt to fix test"

This reverts commit d7329c4.

* attempt to fix e2e

* fix: surpass eventemitter warning by increasing defaultMaxListeners

* attempt to fix e2e

* fix

* fix e2e not ending properly

* exp: add hanging-process reporter for investigation

* Revert "exp: add hanging-process reporter for investigation"

This reverts commit 26851f8.

* update changelog

* fix(frontend): loosen MkButton props type (misskey-dev#17329)

* deps: update security dependencies (misskey-dev#17330)

* deps: update security dependencies

* deps: update some major dependencies

* attempt to fix tsconfig

* attempt to fix tsconfig

* attempt to fix tsconfig

* fix build

* fix(gh): misskey-jsがpublishされない問題を修正

* Bump version to 2026.4.0-beta.0

* fix(backend): `RoleService.getAdministratorIds` でユーザーIDが重複する問題を修正 (misskey-dev#17334)

* fix(backend): adminロールが複数付いてても通知が重複しないように

* add tests

* Update Changelog

* ✌️

Co-Authored-by: lqvp <183242690+lqvp@users.noreply.github.com>

---------

Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>

* fix(backend): meilisearchを使用していない場合のnoteSearchableScopeの値が誤っている問題を修正 (misskey-dev#17341)

* fix(backend): meilisearchを使用していない場合のnoteSearchableScopeの値が誤っている問題を修正

* Update Changelog

* fix: change bare activity.actor to getApId(activity.actor) in InboxPr… (misskey-dev#17340)

* fix: change bare activity.actor to getApId(activity.actor) in InboxProcessorService (closes misskey-dev#17338)

* doc: update CHANGELOG.md to note fix for misskey-dev#17338

* fix: additional activity.actor wrappers in ApInboxService

* Update CHANGELOG.md

---------

Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* fix(backend): ブロックしたインスタンスのInboxジョブが蓄積し続ける問題を修正 (misskey-dev#17336)

* fix(backend): ブロックしたインスタンスのInboxジョブが蓄積し続ける問題を修正

* refactor

* Upddate changelog

---------

Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* enhance(frontend): 子メニュー表示時のガードがradioでも効くように

* type: 'radio'なMenuItemが機能しなくなっている問題を修正 (misskey-dev#17344)

* fix

* Update CHANGELOG.md

* fix(frontend): MenuRadioの指定方法変更 (misskey-dev#17345)

* fix(frontend): MenuRadioの指定方法変更

* fix indent

---------

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* fix(backend): ノート通知で公開範囲を考慮するように (misskey-dev#17335)

* fix(backend): ノート通知で公開範囲を考慮するように

* refactor: remove unused imports

* Update Changelog

* Update Changelog

* fix: フォロワー限定ノートは通知

---------

Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>

* fix: redirect beta/alpha/rc "what's new" button to GitHub releases page (misskey-dev#17347)

* Initial plan

* fix: redirect beta/alpha/rc update info button to GitHub releases page

Agent-Logs-Url: https://github.com/misskey-dev/misskey/sessions/4ac22dd9-13dd-4ef2-a6f7-d68cfda4a19f

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Bump version to 2026.4.0-beta.1

* Update CHANGELOG for misskey-dev#17347

* fix(deps): update dependency sanitize-html to v2.17.3 [security] (misskey-dev#17319)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(frontend): まれにリアクション・絵文字ピッカーが動作しなくなる問題を修正 (misskey-dev#17349)

* Revert "fix(frontend): popupのりアクティビティがチャンクをまたいで切れる事がある問題を修正"

This reverts commit 0a93f52.

* fix: iOS PWA でリアクション・絵文字ピッカーが動作しない問題を修正

Agent-Logs-Url: https://github.com/lqvp/misskey-tempura/sessions/44526368-0e6a-4a94-8991-fcdc094d2b96

Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>

* refactor

* fix

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>

* Bump version to 2026.4.0-beta.2

* Bump version to 2026.5.0-alpha.0

* Update CHANGELOG.md

* fix: review fixes for v2026.5.0 release (misskey-dev#17350)

* fix/perf: NotificationManager in NoteCreateService

* fix: treat skip as successful return in InboxProcessorService

* chore: remove comment

* fix: simplify ReactionPicker/EmojiPicker by importing components directly

* refactor: move filename parsing to setup in MkUploaderItems

* refactor

* Release: 2026.5.0

* [skip ci] Update CHANGELOG.md (prepend template)

* fix(backend): ULID使用時にnotificationTimelineへのXADDが失敗し続け、通知が約10秒遅延する問題を修正 (misskey-dev#17358)

* devcontainer用dbコンテナのvolumeのマウントパスを変更 (misskey-dev#17360)

* `.devcontainer/compose.yml`のvolumeのマウントパスを修正

* CHANGELOGの更新

* fix(backend): 公開範囲がフォロワーの投稿が通知されない問題を修正 (misskey-dev#17363)

* fix(backend): 公開範囲がフォロワーの投稿が通知されない問題を修正

* Udpate Changelog

* fix: update summaly (misskey-dev#17355)

* fix: update summaly

* Update Changelog

* Bump version to 2026.5.1-alpha.0

* Fix(frontend): ロール設定画面でロールをアサイン/アサイン解除した際、リロードしなくても画面に反映されるよう修正 (misskey-dev#17365)

* ロールの付与、剥奪後にPaginatorのリロードを行って表示を更新する処理を追加

* CHANGELOGを更新

* enhance: Add `canCreateChannel` role policy (misskey-dev#17121)

* Initial plan

* Add canCreateChannel role policy to control channel creation

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Add canCreateChannel to getUserPolicies return value

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Add canCreateChannel translations for en-US and ja-JP

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Add canCreateChannel to misskey-js rolePolicies array

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* Add frontend UI for canCreateChannel policy configuration

Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>

* fix: build autogen files

* 🎨

* migrate

* fix: unnecessary changes to non-Japanese locales

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>

* Update CHANGELOG.md (follow-up of misskey-dev#17121) [ci skip

* refactor: パスキーまわりのライブラリを更新 (misskey-dev#17354)

* refactor: パスキーまわりのライブラリを更新

* fix

* chore(deps): update [github actions] update dependencies (major) (misskey-dev#17204)

chore(deps): update [github actions] update dependencies

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update [github actions] update dependencies [ci skip] (misskey-dev#17370)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore(deps): update [docker] update dependencies [ci skip] (misskey-dev#17369)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* deps: Update dependencies [ci skip] (misskey-dev#17368)

* update deps

* update deps

* rollback got to v14

* Revert "rollback got to v14"

This reverts commit 780abdf.

* rollback rolldown to v1.0.0-rc.15

* fix(backend): Acquire lock of Announce object in announceNote even if it is from a relay actor (misskey-dev#17356)

fix(backend): Always acquire lock of Announce object in announceNote

* New Crowdin updates (misskey-dev#17324)

* New translations ja-jp.yml (Russian)

* New translations ja-jp.yml (Spanish)

* New translations ja-jp.yml (English)

* New translations ja-jp.yml (Thai)

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Korean)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* Bump version to 2026.5.1-beta.0

* enhance(frontend): MkNoteDetailedの公開範囲表示を改善 (misskey-dev#17374)

* enhance(frontend): 노트 상세 페이지에서 공개 범위를 자세히 표시하도록 개선됨

* Update Changelog

* fix

---------

Co-authored-by: NoriDev <m1nthing2322@gmail.com>

* New Crowdin updates (misskey-dev#17372)

* New translations ja-jp.yml (Turkish)

[ci skip]

* New translations ja-jp.yml (Thai)

[ci skip]

* New translations ja-jp.yml (Thai)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* New translations ja-jp.yml (Chinese Simplified)

[ci skip]

* Update CHANGELOG.md

* Release: 2026.5.1

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com>
Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
Co-authored-by: syuilo <4439005+syuilo@users.noreply.github.com>
Co-authored-by: cm-ayf <cm.ayf2734@gmail.com>
Co-authored-by: Evan Prodromou <evanp@users.noreply.github.com>
Co-authored-by: danominium <37584143+danominium@users.noreply.github.com>
Co-authored-by: FINEARCHS <133759614+FineArchs@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mq1 <74494945+chan-mai@users.noreply.github.com>
Co-authored-by: るちーか <7106976+EbiseLutica@users.noreply.github.com>
Co-authored-by: Jaehong Kang <sinoru@me.com>
Co-authored-by: あわわわとーにゅ <17376330+u1-liquid@users.noreply.github.com>
Co-authored-by: bab <mashirohira@gmail.com>
Co-authored-by: lqvp <183242690+lqvp@users.noreply.github.com>
Co-authored-by: kami8 <55905116+kamiya-s-max@users.noreply.github.com>
Co-authored-by: Wonwoo Choi <chwo9843@gmail.com>
Co-authored-by: NoriDev <m1nthing2322@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

packages/backend:test packages/backend Server side specific issue/PR packages/frontend Client side specific issue/PR size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

Development

Successfully merging this pull request may close these issues.

バックエンドのコードもbundle+minifyする

6 participants