From a6f57d99f97aded4928f7c98e06c4f961e5dae69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Thu, 4 Dec 2025 13:36:30 +0900 Subject: [PATCH 1/7] fix(gh): fix federation test (#16936) --- packages/backend/test-federation/.config/example.default.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml index fd20613885..b1cd3bdba8 100644 --- a/packages/backend/test-federation/.config/example.default.yml +++ b/packages/backend/test-federation/.config/example.default.yml @@ -7,6 +7,7 @@ db: user: postgres pass: postgres dbReplications: false +trustProxy: true redis: host: redis.test port: 6379 From a3c3052d0fae8223b73b4ee0abca2b6702da92a2 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 15:19:15 +0900 Subject: [PATCH 2/7] =?UTF-8?q?fix(frontend):=20stacking=20router=20view?= =?UTF-8?q?=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6=E6=88=BB=E3=82=8B?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86=E3=81=A8=E4=BD=95?= =?UTF-8?q?=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- .../frontend/src/components/global/StackingRouterView.vue | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f7933824..a30bf8c441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index 4c56767608..e9c24bfcb4 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,7 +74,9 @@ function mount() { } function back() { - const prev = tabs.value[tabs.value.length - 2]; + const prev = tabs.value.at(tabs.value.length - 2); + if (prev == null) return; // transitionの関係でprevが無い状態でbackが呼ばれることがある + tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); } From 24bd1509677023ddd8a749bb7fbfe876c7627b48 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:49:25 +0900 Subject: [PATCH 3/7] =?UTF-8?q?refactor(backend):=20=E5=A4=89=E6=8F=9B?= =?UTF-8?q?=E5=BE=8C.config.json=E3=81=AB=E7=B5=B1=E4=B8=80=E3=81=99?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB+=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=E3=81=AA=E3=81=A9=20(#16929)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip * Update config.ts * wip * convertは元ファイルを変更するようなニュアンスを若干感じるのでcompileに改名 * wip * Update package.json * Revert "Update package.json" This reverts commit e5c28023168f4631dc6b36a14b35cfddbad1fac0. * wip * wip * 謎 * clean up * wip * wip * Revert "wip" This reverts commit 3aa25ac7cf337d57412308e63d8f54e2536b0f7f. * wip * wip * Update dummy.yml * wip * Update compile_config.js * Update compile_config.js * wip * Revert "wip" This reverts commit fd78e097c65f747962e7a411938a0e67538ed347. * Update dummy.yml * Update compile_config.js --- .github/workflows/get-backend-memory.yml | 2 +- package.json | 8 ++--- .../1745378064470-composite-note-index.js | 8 ++--- ...915-migrateSomeConfigFileSettingsToMeta.js | 8 ++--- .../backend/migration/js/migration-config.js | 31 ---------------- packages/backend/ormconfig.js | 5 +-- packages/backend/package.json | 34 +++++++++--------- .../{convert_config.js => compile_config.js} | 35 ++++++++----------- packages/backend/src/config.ts | 20 ++++------- .../backend/test-federation/.config/dummy.yml | 2 ++ .../.config/example.config.json | 29 +++++++++++++++ .../.config/example.default.yml | 23 ------------ .../backend/test-federation/compose.a.yml | 8 ++--- .../backend/test-federation/compose.b.yml | 8 ++--- .../backend/test-federation/compose.tpl.yml | 8 +++-- packages/backend/test-federation/compose.yml | 4 +-- packages/backend/test-federation/setup.sh | 2 +- 17 files changed, 98 insertions(+), 137 deletions(-) delete mode 100644 packages/backend/migration/js/migration-config.js rename packages/backend/scripts/{convert_config.js => compile_config.js} (59%) create mode 100644 packages/backend/test-federation/.config/dummy.yml create mode 100644 packages/backend/test-federation/.config/example.config.json delete mode 100644 packages/backend/test-federation/.config/example.default.yml diff --git a/.github/workflows/get-backend-memory.yml b/.github/workflows/get-backend-memory.yml index b14885ec34..458f303f0f 100644 --- a/.github/workflows/get-backend-memory.yml +++ b/.github/workflows/get-backend-memory.yml @@ -57,7 +57,7 @@ jobs: - name: Copy Configure run: cp .github/misskey/test.yml .config/default.yml - name: Compile Configure - run: pnpm convert:config + run: pnpm compile-config - name: Build run: pnpm build - name: Run migrations diff --git a/package.json b/package.json index e72bb70d5f..7fe2c36ffc 100644 --- a/package.json +++ b/package.json @@ -22,15 +22,15 @@ ], "private": true, "scripts": { - "convert:config": "cd packages/backend && pnpm convert:config", + "compile-config": "cd packages/backend && pnpm compile-config", "build-pre": "node ./scripts/build-pre.js", "build-assets": "node ./scripts/build-assets.mjs", "build": "pnpm build-pre && pnpm -r build && pnpm build-assets", "build-storybook": "pnpm --filter frontend build-storybook", "build-misskey-js-with-types": "pnpm build-pre && pnpm --filter backend... --filter=!misskey-js build && pnpm --filter backend generate-api-json --no-build && ncp packages/backend/built/api.json packages/misskey-js/generator/api.json && pnpm --filter misskey-js update-autogen-code && pnpm --filter misskey-js build && pnpm --filter misskey-js api", - "start": "pnpm check:connect && cd packages/backend && pnpm convert:config && node ./built/boot/entry.js", - "start:inspect": "cd packages/backend && pnpm convert:config && node --inspect ./built/boot/entry.js", - "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", + "start": "pnpm check:connect && cd packages/backend && pnpm compile-config && node ./built/boot/entry.js", + "start:inspect": "cd packages/backend && pnpm compile-config && node --inspect ./built/boot/entry.js", + "start:test": "ncp ./.github/misskey/test.yml ./.config/test.yml && cd packages/backend && cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./built/boot/entry.js", "cli": "cd packages/backend && pnpm cli", "init": "pnpm migrate", "migrate": "cd packages/backend && pnpm migrate", diff --git a/packages/backend/migration/1745378064470-composite-note-index.js b/packages/backend/migration/1745378064470-composite-note-index.js index 12108a6b3c..576bf7d19a 100644 --- a/packages/backend/migration/1745378064470-composite-note-index.js +++ b/packages/backend/migration/1745378064470-composite-note-index.js @@ -3,14 +3,14 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import { isConcurrentIndexMigrationEnabled } from "./js/migration-config.js"; +const isConcurrentIndexMigrationEnabled = process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; export class CompositeNoteIndex1745378064470 { name = 'CompositeNoteIndex1745378064470'; - transaction = isConcurrentIndexMigrationEnabled() ? false : undefined; + transaction = isConcurrentIndexMigrationEnabled ? false : undefined; async up(queryRunner) { - const concurrently = isConcurrentIndexMigrationEnabled(); + const concurrently = isConcurrentIndexMigrationEnabled; if (concurrently) { const hasValidIndex = await queryRunner.query(`SELECT indisvalid FROM pg_index INNER JOIN pg_class ON pg_index.indexrelid = pg_class.oid WHERE pg_class.relname = 'IDX_724b311e6f883751f261ebe378'`); @@ -29,7 +29,7 @@ export class CompositeNoteIndex1745378064470 { } async down(queryRunner) { - const mayConcurrently = isConcurrentIndexMigrationEnabled() ? 'CONCURRENTLY' : ''; + const mayConcurrently = isConcurrentIndexMigrationEnabled ? 'CONCURRENTLY' : ''; await queryRunner.query(`DROP INDEX IF EXISTS "IDX_724b311e6f883751f261ebe378"`); await queryRunner.query(`CREATE INDEX ${mayConcurrently} "IDX_5b87d9d19127bd5d92026017a7" ON "note" ("userId")`); } diff --git a/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js b/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js index 3243f43b91..cb8bb33459 100644 --- a/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js +++ b/packages/backend/migration/1746949539915-migrateSomeConfigFileSettingsToMeta.js @@ -3,17 +3,15 @@ * SPDX-License-Identifier: AGPL-3.0-only */ -import {loadConfig} from "./js/migration-config.js"; export class MigrateSomeConfigFileSettingsToMeta1746949539915 { name = 'MigrateSomeConfigFileSettingsToMeta1746949539915' async up(queryRunner) { - const config = loadConfig(); // $1 cannot be used in ALTER TABLE queries - await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT ${config.proxyRemoteFiles}`); - await queryRunner.query(`ALTER TABLE "meta" ADD "signToActivityPubGet" boolean NOT NULL DEFAULT ${config.signToActivityPubGet}`); - await queryRunner.query(`ALTER TABLE "meta" ADD "allowExternalApRedirect" boolean NOT NULL DEFAULT ${!config.disallowExternalApRedirect}`); + await queryRunner.query(`ALTER TABLE "meta" ADD "proxyRemoteFiles" boolean NOT NULL DEFAULT TRUE`); + await queryRunner.query(`ALTER TABLE "meta" ADD "signToActivityPubGet" boolean NOT NULL DEFAULT TRUE`); + await queryRunner.query(`ALTER TABLE "meta" ADD "allowExternalApRedirect" boolean NOT NULL DEFAULT TRUE`); } async down(queryRunner) { diff --git a/packages/backend/migration/js/migration-config.js b/packages/backend/migration/js/migration-config.js deleted file mode 100644 index 853735661b..0000000000 --- a/packages/backend/migration/js/migration-config.js +++ /dev/null @@ -1,31 +0,0 @@ -/* - * SPDX-FileCopyrightText: syuilo and misskey-project - * SPDX-License-Identifier: AGPL-3.0-only - */ - -import { path as configYamlPath } from '../../built/config.js'; -import * as yaml from 'js-yaml'; -import fs from "node:fs"; - -export function isConcurrentIndexMigrationEnabled() { - return process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; -} - -let loadedConfigCache = undefined; - -function loadConfigInternal() { - const config = yaml.load(fs.readFileSync(configYamlPath, 'utf-8')); - - return { - disallowExternalApRedirect: Boolean(config.disallowExternalApRedirect ?? false), - proxyRemoteFiles: Boolean(config.proxyRemoteFiles ?? false), - signToActivityPubGet: Boolean(config.signToActivityPubGet ?? true), - } -} - -export function loadConfig() { - if (loadedConfigCache === undefined) { - loadedConfigCache = loadConfigInternal(); - } - return loadedConfigCache; -} diff --git a/packages/backend/ormconfig.js b/packages/backend/ormconfig.js index f979c36ad7..dabc0893f4 100644 --- a/packages/backend/ormconfig.js +++ b/packages/backend/ormconfig.js @@ -1,7 +1,8 @@ import { DataSource } from 'typeorm'; import { loadConfig } from './built/config.js'; import { entities } from './built/postgres.js'; -import { isConcurrentIndexMigrationEnabled } from "./migration/js/migration-config.js"; + +const isConcurrentIndexMigrationEnabled = process.env.MISSKEY_MIGRATION_CREATE_INDEX_CONCURRENTLY === '1'; const config = loadConfig(); @@ -15,5 +16,5 @@ export default new DataSource({ extra: config.db.extra, entities: entities, migrations: ['migration/*.js'], - migrationsTransactionMode: isConcurrentIndexMigrationEnabled() ? 'each' : 'all', + migrationsTransactionMode: isConcurrentIndexMigrationEnabled ? 'each' : 'all', }); diff --git a/packages/backend/package.json b/packages/backend/package.json index 25d84a1e14..e9143b525a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -7,37 +7,37 @@ "node": "^22.15.0 || ^24.10.0" }, "scripts": { - "start": "pnpm convert:config && node ./built/boot/entry.js", - "start:inspect": "pnpm convert:config && node --inspect ./built/boot/entry.js", - "start:test": "pnpm convert:config && cross-env NODE_ENV=test node ./built/boot/entry.js", - "migrate": "pnpm convert:config && pnpm typeorm migration:run -d ormconfig.js", - "revert": "pnpm convert:config && pnpm typeorm migration:revert -d ormconfig.js", - "cli": "pnpm convert:config && node ./built/boot/cli.js", - "check:connect": "pnpm convert:config && node ./scripts/check_connect.js", - "convert:config": "node ./scripts/convert_config.js", + "start": "pnpm compile-config && node ./built/boot/entry.js", + "start:inspect": "pnpm compile-config && node --inspect ./built/boot/entry.js", + "start:test": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./built/boot/entry.js", + "migrate": "pnpm compile-config && pnpm typeorm migration:run -d ormconfig.js", + "revert": "pnpm compile-config && pnpm typeorm migration:revert -d ormconfig.js", + "cli": "pnpm compile-config && node ./built/boot/cli.js", + "check:connect": "pnpm compile-config && node ./scripts/check_connect.js", + "compile-config": "node ./scripts/compile_config.js", "build": "swc src -d built -D --strip-leading-paths", "build:test": "swc test-server -d built-test -D --config-file test-server/.swcrc --strip-leading-paths", "watch:swc": "swc src -d built -D -w --strip-leading-paths", "build:tsc": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json", - "watch": "pnpm convert:config && node ./scripts/watch.mjs", + "watch": "pnpm compile-config && node ./scripts/watch.mjs", "restart": "pnpm build && pnpm start", - "dev": "pnpm convert:config && node ./scripts/dev.mjs", + "dev": "pnpm compile-config && node ./scripts/dev.mjs", "typecheck": "tsc --noEmit && tsc -p test --noEmit && tsc -p test-federation --noEmit", "eslint": "eslint --quiet \"{src,test-federation}/**/*.ts\"", "lint": "pnpm typecheck && pnpm eslint", - "jest": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", - "jest:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", - "jest:fed": "pnpm convert:config && node ./jest.js --forceExit --config jest.config.fed.cjs", - "jest-and-coverage": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", - "jest-and-coverage:e2e": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", - "jest-clear": "pnpm convert:config && cross-env NODE_ENV=test node ./jest.js --clearCache", + "jest": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.unit.cjs", + "jest:e2e": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --forceExit --config jest.config.e2e.cjs", + "jest:fed": "pnpm compile-config && node ./jest.js --forceExit --config jest.config.fed.cjs", + "jest-and-coverage": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.unit.cjs", + "jest-and-coverage:e2e": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --coverage --forceExit --config jest.config.e2e.cjs", + "jest-clear": "cross-env NODE_ENV=test pnpm compile-config && cross-env NODE_ENV=test node ./jest.js --clearCache", "test": "pnpm jest", "test:e2e": "pnpm build && pnpm build:test && pnpm jest:e2e", "test:fed": "pnpm jest:fed", "test-and-coverage": "pnpm jest-and-coverage", "test-and-coverage:e2e": "pnpm build && pnpm build:test && pnpm jest-and-coverage:e2e", "check-migrations": "node scripts/check_migrations_clean.js", - "generate-api-json": "pnpm convert:config && node ./scripts/generate_api_json.js" + "generate-api-json": "pnpm compile-config && node ./scripts/generate_api_json.js" }, "optionalDependencies": { "@swc/core-android-arm64": "1.3.11", diff --git a/packages/backend/scripts/convert_config.js b/packages/backend/scripts/compile_config.js similarity index 59% rename from packages/backend/scripts/convert_config.js rename to packages/backend/scripts/compile_config.js index e93baa409a..e78fa3dc9f 100644 --- a/packages/backend/scripts/convert_config.js +++ b/packages/backend/scripts/compile_config.js @@ -17,43 +17,38 @@ const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); const configDir = resolve(_dirname, '../../../.config'); +const OUTPUT_PATH = resolve(_dirname, '../../../built/.config.json'); + +// TODO: yamlのパースに失敗したときのエラーハンドリング /** * YAMLファイルをJSONファイルに変換 * @param {string} ymlPath - YAMLファイルのパス - * @param {string} jsonPath - JSONファイルの出力パス */ -function convertYamlToJson(ymlPath, jsonPath) { +function yamlToJson(ymlPath) { if (!fs.existsSync(ymlPath)) { - console.log(`skipped: ${ymlPath} is not found`); + console.warn(`YAML file not found: ${ymlPath}`); return; } + console.log(`${ymlPath} → ${OUTPUT_PATH}`); + const yamlContent = fs.readFileSync(ymlPath, 'utf-8'); const jsonContent = yaml.load(yamlContent); - fs.writeFileSync(jsonPath, JSON.stringify({ + if (!fs.existsSync(dirname(OUTPUT_PATH))) { + fs.mkdirSync(dirname(OUTPUT_PATH), { recursive: true }); + } + fs.writeFileSync(OUTPUT_PATH, JSON.stringify({ '_NOTE_': 'This file is auto-generated from YAML file. DO NOT EDIT.', ...jsonContent, }), 'utf-8'); - console.log(`✓ ${ymlPath} → ${jsonPath}`); } -// default.yml と test.yml を変換 -convertYamlToJson( - resolve(configDir, 'default.yml'), - resolve(configDir, 'default.json'), -); - -convertYamlToJson( - resolve(configDir, 'test.yml'), - resolve(configDir, 'test.json'), -); - -// MISSKEY_CONFIG_YML 環境変数が指定されている場合も変換 if (process.env.MISSKEY_CONFIG_YML) { const customYmlPath = resolve(configDir, process.env.MISSKEY_CONFIG_YML); - const customJsonPath = customYmlPath.replace(/\.ya?ml$/i, '.json'); - convertYamlToJson(customYmlPath, customJsonPath); + yamlToJson(customYmlPath); +} else { + yamlToJson(resolve(configDir, process.env.NODE_ENV === 'test' ? 'test.yml' : 'default.yml')); } -console.log('Configuration compiled'); +console.log('Configuration compiled ✓'); diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index 53946a0bdc..f9852d3578 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -217,21 +217,15 @@ export type FulltextSearchProvider = 'sqlLike' | 'sqlPgroonga' | 'meilisearch'; const _filename = fileURLToPath(import.meta.url); const _dirname = dirname(_filename); -/** - * Path of configuration directory - */ -const dir = `${_dirname}/../../../.config`; +const compiledConfigFilePathForTest = resolve(_dirname, '../../../built/._config_.json'); -/** - * Path of configuration file - */ -export const path = process.env.MISSKEY_CONFIG_YML - ? resolve(dir, process.env.MISSKEY_CONFIG_YML).replace(/\.ya?ml$/i, '.json') - : process.env.NODE_ENV === 'test' - ? resolve(dir, 'test.json') - : resolve(dir, 'default.json'); +export const compiledConfigFilePath = fs.existsSync(compiledConfigFilePathForTest) ? compiledConfigFilePathForTest : resolve(_dirname, '../../../built/.config.json'); export function loadConfig(): Config { + if (!fs.existsSync(compiledConfigFilePath)) { + throw new Error('Compiled configuration file not found. Try running \'pnpm compile-config\'.'); + } + const meta = JSON.parse(fs.readFileSync(`${_dirname}/../../../built/meta.json`, 'utf-8')); const frontendManifestExists = fs.existsSync(_dirname + '/../../../built/_frontend_vite_/manifest.json'); @@ -243,7 +237,7 @@ export function loadConfig(): Config { JSON.parse(fs.readFileSync(`${_dirname}/../../../built/_frontend_embed_vite_/manifest.json`, 'utf-8')) : { 'src/boot.ts': { file: null } }; - const config = JSON.parse(fs.readFileSync(path, 'utf-8')) as Source; + const config = JSON.parse(fs.readFileSync(compiledConfigFilePath, 'utf-8')) as Source; const url = tryCreateUrl(config.url ?? process.env.MISSKEY_URL ?? ''); const version = meta.version; diff --git a/packages/backend/test-federation/.config/dummy.yml b/packages/backend/test-federation/.config/dummy.yml new file mode 100644 index 0000000000..841cab9783 --- /dev/null +++ b/packages/backend/test-federation/.config/dummy.yml @@ -0,0 +1,2 @@ +url: https://example.com/ +port: 3000 diff --git a/packages/backend/test-federation/.config/example.config.json b/packages/backend/test-federation/.config/example.config.json new file mode 100644 index 0000000000..2035d1a200 --- /dev/null +++ b/packages/backend/test-federation/.config/example.config.json @@ -0,0 +1,29 @@ +{ + "url": "https://${HOST}/", + "port": 3000, + "db": { + "host": "db.${HOST}", + "port": 5432, + "db": "misskey", + "user": "postgres", + "pass": "postgres" + }, + "dbReplications": false, + "trustProxy": true, + "redis": { + "host": "redis.test", + "port": 6379 + }, + "id": "aidx", + "proxyBypassHosts": [ + "api.deepl.com", + "api-free.deepl.com", + "www.recaptcha.net", + "hcaptcha.com", + "challenges.cloudflare.com" + ], + "allowedPrivateNetworks": [ + "127.0.0.1/32", + "172.20.0.0/16" + ] +} diff --git a/packages/backend/test-federation/.config/example.default.yml b/packages/backend/test-federation/.config/example.default.yml deleted file mode 100644 index b1cd3bdba8..0000000000 --- a/packages/backend/test-federation/.config/example.default.yml +++ /dev/null @@ -1,23 +0,0 @@ -url: https://${HOST}/ -port: 3000 -db: - host: db.${HOST} - port: 5432 - db: misskey - user: postgres - pass: postgres -dbReplications: false -trustProxy: true -redis: - host: redis.test - port: 6379 -id: 'aidx' -proxyBypassHosts: - - api.deepl.com - - api-free.deepl.com - - www.recaptcha.net - - hcaptcha.com - - challenges.cloudflare.com -allowedPrivateNetworks: - - 127.0.0.1/32 - - 172.20.0.0/16 diff --git a/packages/backend/test-federation/compose.a.yml b/packages/backend/test-federation/compose.a.yml index 1d3d8fd404..4fd4eb3851 100644 --- a/packages/backend/test-federation/compose.a.yml +++ b/packages/backend/test-federation/compose.a.yml @@ -37,12 +37,8 @@ services: - internal_network_a volumes: - type: bind - source: ./.config/a.test.default.yml - target: /misskey/.config/default.yml - read_only: true - - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ./.config/a.test.config.json + target: /misskey/built/._config_.json read_only: true db.a.test: diff --git a/packages/backend/test-federation/compose.b.yml b/packages/backend/test-federation/compose.b.yml index 9a3bfb8abe..753da22822 100644 --- a/packages/backend/test-federation/compose.b.yml +++ b/packages/backend/test-federation/compose.b.yml @@ -37,12 +37,8 @@ services: - internal_network_b volumes: - type: bind - source: ./.config/b.test.default.yml - target: /misskey/.config/default.yml - read_only: true - - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ./.config/b.test.config.json + target: /misskey/built/._config_.json read_only: true db.b.test: diff --git a/packages/backend/test-federation/compose.tpl.yml b/packages/backend/test-federation/compose.tpl.yml index ad9e127b3a..1404345e2a 100644 --- a/packages/backend/test-federation/compose.tpl.yml +++ b/packages/backend/test-federation/compose.tpl.yml @@ -21,6 +21,10 @@ services: - type: bind source: ../../../built target: /misskey/built + read_only: false + - type: bind + source: ./.config/dummy.yml + target: /misskey/.config/default.yml read_only: true - type: bind source: ../assets @@ -43,8 +47,8 @@ services: target: /misskey/packages/backend/package.json read_only: true - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ../scripts/compile_config.js + target: /misskey/packages/backend/scripts/compile_config.js read_only: true - type: bind source: ../../misskey-js/built diff --git a/packages/backend/test-federation/compose.yml b/packages/backend/test-federation/compose.yml index 07c0e03f99..25475a89ab 100644 --- a/packages/backend/test-federation/compose.yml +++ b/packages/backend/test-federation/compose.yml @@ -55,8 +55,8 @@ services: target: /misskey/packages/backend/jest.js read_only: true - type: bind - source: ../scripts/convert_config.js - target: /misskey/packages/backend/scripts/convert_config.js + source: ../scripts/compile_config.js + target: /misskey/packages/backend/scripts/compile_config.js read_only: true - type: bind source: ../../misskey-js/built diff --git a/packages/backend/test-federation/setup.sh b/packages/backend/test-federation/setup.sh index 1bc3a2a87c..15aa2eee7f 100644 --- a/packages/backend/test-federation/setup.sh +++ b/packages/backend/test-federation/setup.sh @@ -28,7 +28,7 @@ function generate { -days 500 if [ ! -f .config/docker.env ]; then cp .config/example.docker.env .config/docker.env; fi if [ ! -f .config/$1.conf ]; then sed "s/\${HOST}/$1/g" .config/example.conf > .config/$1.conf; fi - if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.default.yml > .config/$1.default.yml; fi + if [ ! -f .config/$1.default.yml ]; then sed "s/\${HOST}/$1/g" .config/example.config.json > .config/$1.config.json; fi } generate a.test From 29a0750eefed50f025c1a613759cf070cb3d147c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 4 Dec 2025 07:51:39 +0000 Subject: [PATCH 4/7] Bump version to 2025.12.0-alpha.2 --- package.json | 2 +- packages/misskey-js/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7fe2c36ffc..446c344879 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2025.12.0-alpha.1", + "version": "2025.12.0-alpha.2", "codename": "nasubi", "repository": { "type": "git", diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json index c66ca7a3a6..eab037f08d 100644 --- a/packages/misskey-js/package.json +++ b/packages/misskey-js/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "misskey-js", - "version": "2025.12.0-alpha.1", + "version": "2025.12.0-alpha.2", "description": "Misskey SDK for JavaScript", "license": "MIT", "main": "./built/index.js", From 6716950d7fe1819d1f7d990008cc91822c904a4d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 4 Dec 2025 17:39:33 +0900 Subject: [PATCH 5/7] fix(deps): update dependency body-parser to v2.2.1 [security] (#16899) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- packages/backend/package.json | 2 +- pnpm-lock.yaml | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/backend/package.json b/packages/backend/package.json index e9143b525a..6ee348da57 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -104,7 +104,7 @@ "async-mutex": "0.5.0", "bcryptjs": "3.0.3", "blurhash": "2.0.5", - "body-parser": "2.2.0", + "body-parser": "2.2.1", "bullmq": "5.64.1", "cacheable-lookup": "7.0.0", "cbor": "10.0.11", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46b867469c..69aa8cc33f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -193,8 +193,8 @@ importers: specifier: 2.0.5 version: 2.0.5 body-parser: - specifier: 2.2.0 - version: 2.2.0 + specifier: 2.2.1 + version: 2.2.1 bullmq: specifier: 5.64.1 version: 5.64.1 @@ -5619,8 +5619,8 @@ packages: resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - body-parser@2.2.0: - resolution: {integrity: sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==} + body-parser@2.2.1: + resolution: {integrity: sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==} engines: {node: '>=18'} boolbase@1.0.0: @@ -16242,13 +16242,13 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.0: + body-parser@2.2.1: dependencies: bytes: 3.1.2 content-type: 1.0.5 debug: 4.4.3(supports-color@10.2.2) http-errors: 2.0.0 - iconv-lite: 0.6.3 + iconv-lite: 0.7.0 on-finished: 2.4.1 qs: 6.14.0 raw-body: 3.0.1 @@ -17697,7 +17697,7 @@ snapshots: express@5.1.0: dependencies: accepts: 2.0.0 - body-parser: 2.2.0 + body-parser: 2.2.1 content-disposition: 1.0.1 content-type: 1.0.5 cookie: 0.7.1 From daf2a57b3ca29fe6e8ccce4a36c3538045406a1e Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:01:45 +0900 Subject: [PATCH 6/7] =?UTF-8?q?Revert=20"fix(frontend):=20stacking=20route?= =?UTF-8?q?r=20view=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6=E6=88=BB?= =?UTF-8?q?=E3=82=8B=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86=E3=81=A8?= =?UTF-8?q?=E4=BD=95=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA?= =?UTF-8?q?=E3=81=8F=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a3c3052d0fae8223b73b4ee0abca2b6702da92a2. --- CHANGELOG.md | 2 +- .../frontend/src/components/global/StackingRouterView.vue | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a30bf8c441..f4f7933824 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 +- ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index e9c24bfcb4..4c56767608 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,9 +74,7 @@ function mount() { } function back() { - const prev = tabs.value.at(tabs.value.length - 2); - if (prev == null) return; // transitionの関係でprevが無い状態でbackが呼ばれることがある - + const prev = tabs.value[tabs.value.length - 2]; tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath); } From fc1e2229e5dc9f89c008403ecb202bd07fba2080 Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Dec 2025 19:03:41 +0900 Subject: [PATCH 7/7] =?UTF-8?q?fix(frontend):=20stacking=20router=20view?= =?UTF-8?q?=E3=81=A7=E9=80=A3=E7=B6=9A=E3=81=97=E3=81=A6=E6=88=BB=E3=82=8B?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E3=82=92=E8=A1=8C=E3=81=86=E3=81=A8=E4=BD=95?= =?UTF-8?q?=E3=82=82=E8=A1=A8=E7=A4=BA=E3=81=95=E3=82=8C=E3=81=AA=E3=81=8F?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 +- packages/frontend/src/components/global/StackingRouterView.vue | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f7933824..a30bf8c441 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ - ### Client -- +- Fix: stacking router viewで連続して戻る操作を行うと何も表示されなくなる問題を修正 ### Server - Enhance: メモリ使用量を削減しました diff --git a/packages/frontend/src/components/global/StackingRouterView.vue b/packages/frontend/src/components/global/StackingRouterView.vue index 4c56767608..d52dd9b89d 100644 --- a/packages/frontend/src/components/global/StackingRouterView.vue +++ b/packages/frontend/src/components/global/StackingRouterView.vue @@ -74,6 +74,7 @@ function mount() { } function back() { + if (tabs.value.length <= 1) return; // transitionの関係でタブが1つの状態でbackが呼ばれることがある const prev = tabs.value[tabs.value.length - 2]; tabs.value = [...tabs.value.slice(0, tabs.value.length - 1)]; router?.replaceByPath(prev.fullPath);