diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 7fe94eefa5..63ae5c7397 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -17,7 +17,9 @@ on:
- packages/misskey-bubble-game/**
- packages/misskey-reversi/**
- packages/shared/eslint.config.js
+ - scripts/check-dts*.mjs
- .github/workflows/lint.yml
+ - package.json
pull_request:
paths:
- packages/backend/**
@@ -31,7 +33,9 @@ on:
- packages/misskey-bubble-game/**
- packages/misskey-reversi/**
- packages/shared/eslint.config.js
+ - scripts/check-dts*.mjs
- .github/workflows/lint.yml
+ - package.json
jobs:
pnpm_install:
runs-on: ubuntu-latest
@@ -113,3 +117,22 @@ jobs:
- run: pnpm i --frozen-lockfile
- run: pnpm --filter "${{ matrix.workspace }}^..." run build
- run: pnpm --filter ${{ matrix.workspace }} run typecheck
+
+ check-dts:
+ needs: [pnpm_install]
+ runs-on: ubuntu-latest
+ continue-on-error: true
+ steps:
+ - uses: actions/checkout@v6.0.2
+ with:
+ fetch-depth: 0
+ submodules: true
+ - name: Setup pnpm
+ uses: pnpm/action-setup@v6.0.3
+ - uses: actions/setup-node@v6.4.0
+ with:
+ node-version-file: '.node-version'
+ cache: 'pnpm'
+ - run: pnpm i --frozen-lockfile
+ - run: node --test scripts/check-dts.test.mjs
+ - run: pnpm check-dts
diff --git a/package.json b/package.json
index 33925d773a..5dcc85c172 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "misskey",
- "version": "2026.6.1-alpha.1",
+ "version": "2026.7.0-alpha.0",
"codename": "nasubi",
"repository": {
"type": "git",
@@ -39,7 +39,8 @@
"migrateandstart": "pnpm migrate && pnpm start",
"watch": "pnpm dev",
"dev": "node scripts/dev.mjs",
- "lint": "pnpm --no-bail -r lint",
+ "check-dts": "node scripts/check-dts.mjs",
+ "lint": "pnpm --no-bail -r lint && pnpm check-dts",
"cy:open": "pnpm cypress open --config-file=cypress.config.ts",
"cy:run": "pnpm cypress run",
"e2e": "pnpm start-server-and-test start:test http://localhost:61812 cy:run",
diff --git a/packages/backend/src/@types/probe-image-size.d.ts b/packages/backend/src/@types/probe-image-size.d.ts
index 538836475c..f2efbc082d 100644
--- a/packages/backend/src/@types/probe-image-size.d.ts
+++ b/packages/backend/src/@types/probe-image-size.d.ts
@@ -26,7 +26,6 @@ declare module 'probe-image-size' {
function probeImageSize(src: string | ReadStream, callback: (err: Error | null, result?: ProbeResult) => void): void;
function probeImageSize(src: string | ReadStream, options: ProbeOptions, callback: (err: Error | null, result?: ProbeResult) => void): void;
- namespace probeImageSize {} // Hack
-
- export = probeImageSize;
+ // eslint-disable-next-line import/no-default-export
+ export { probeImageSize as default };
}
diff --git a/packages/backend/test/setup.e2e.ts b/packages/backend/test/setup.e2e.ts
index 3141dc15ad..59bc6fcc62 100644
--- a/packages/backend/test/setup.e2e.ts
+++ b/packages/backend/test/setup.e2e.ts
@@ -7,6 +7,9 @@ import { beforeAll } from 'vitest';
import { initTestDb, sendEnvResetRequest } from './utils.js';
beforeAll(async () => {
- await initTestDb(false);
+ // 前ファイルのNestJSアプリをdispose(env-reset)した後にスキーマをdrop & 再作成する。
+ // 逆順だと、前ファイルの最後のテストが投げっぱなしにした非同期処理(cacheServiceのrefresh等)が
+ // dispose前のdrop中に発火し、Unhandled Rejection (relation does not exist) でクラッシュしうる。
await sendEnvResetRequest();
+ await initTestDb(false);
});
diff --git a/packages/frontend-builder/tsconfig.json b/packages/frontend-builder/tsconfig.json
index ab943fded4..e2d1f7ada0 100644
--- a/packages/frontend-builder/tsconfig.json
+++ b/packages/frontend-builder/tsconfig.json
@@ -9,6 +9,7 @@
"sourceMap": false,
"noEmit": true,
"removeComments": true,
+ "skipLibCheck": true,
"resolveJsonModule": true,
"strict": true,
"strictFunctionTypes": true,
diff --git a/packages/frontend-embed/@types/theme.d.ts b/packages/frontend-embed/@types/theme.d.ts
index 6ac1037493..6a010889d6 100644
--- a/packages/frontend-embed/@types/theme.d.ts
+++ b/packages/frontend-embed/@types/theme.d.ts
@@ -4,7 +4,7 @@
*/
declare module '@@/themes/*.json5' {
- import { Theme } from '@/theme.js';
+ import { Theme } from '@@/js/theme.js';
const theme: Theme;
diff --git a/packages/frontend-embed/tsconfig.json b/packages/frontend-embed/tsconfig.json
index 24fa71de19..d0d7591f23 100644
--- a/packages/frontend-embed/tsconfig.json
+++ b/packages/frontend-embed/tsconfig.json
@@ -13,6 +13,7 @@
"module": "ES2022",
"moduleResolution": "Bundler",
"removeComments": false,
+ "skipLibCheck": true,
"noLib": false,
"strict": true,
"strictNullChecks": true,
diff --git a/packages/frontend-shared/tsconfig.json b/packages/frontend-shared/tsconfig.json
index c2600dc45e..e038b9ca23 100644
--- a/packages/frontend-shared/tsconfig.json
+++ b/packages/frontend-shared/tsconfig.json
@@ -9,6 +9,7 @@
"sourceMap": false,
"outDir": "./js-built",
"removeComments": true,
+ "skipLibCheck": true,
"resolveJsonModule": true,
"strict": true,
"strictFunctionTypes": true,
diff --git a/packages/frontend/@types/theme.d.ts b/packages/frontend/@types/theme.d.ts
index 6ac1037493..6a010889d6 100644
--- a/packages/frontend/@types/theme.d.ts
+++ b/packages/frontend/@types/theme.d.ts
@@ -4,7 +4,7 @@
*/
declare module '@@/themes/*.json5' {
- import { Theme } from '@/theme.js';
+ import { Theme } from '@@/js/theme.js';
const theme: Theme;
diff --git a/packages/frontend/src/components/MkNote.vue b/packages/frontend/src/components/MkNote.vue
index 1cb562fb62..e55a496bfe 100644
--- a/packages/frontend/src/components/MkNote.vue
+++ b/packages/frontend/src/components/MkNote.vue
@@ -144,7 +144,7 @@ SPDX-License-Identifier: AGPL-3.0-only
-