diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts index 7b9b35dcd3..3242a34037 100644 --- a/packages/backend/src/boot/master.ts +++ b/packages/backend/src/boot/master.ts @@ -49,6 +49,7 @@ function greet() { bootLogger.info('Welcome to CherryPick!'); bootLogger.info(`CherryPick v${meta.version}`, null, true); + bootLogger.info(`Based on Misskey v${meta.basedMisskeyVersion}`, null, true); } /** diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts index ccf7e18f23..d64b959d8b 100644 --- a/packages/backend/src/config.ts +++ b/packages/backend/src/config.ts @@ -152,6 +152,7 @@ export type Config = { signToActivityPubGet: boolean | undefined; version: string; + basedMisskeyVersion: string; host: string; hostname: string; scheme: string; @@ -201,6 +202,7 @@ export function loadConfig(): Config { const url = tryCreateUrl(config.url); const version = meta.version; + const basedMisskeyVersion = meta.basedMisskeyVersion; const host = url.host; const hostname = url.hostname; const scheme = url.protocol.replace(/:$/, ''); @@ -214,6 +216,7 @@ export function loadConfig(): Config { return { version, + basedMisskeyVersion, url: url.origin, port: config.port ?? parseInt(process.env.PORT ?? '', 10), socket: config.socket, diff --git a/packages/backend/src/core/FetchInstanceMetadataService.ts b/packages/backend/src/core/FetchInstanceMetadataService.ts index 31aa168b7c..f56171490b 100644 --- a/packages/backend/src/core/FetchInstanceMetadataService.ts +++ b/packages/backend/src/core/FetchInstanceMetadataService.ts @@ -22,6 +22,7 @@ type NodeInfo = { software?: { name?: unknown; version?: unknown; + basedMisskeyVersion?: unknown; }; metadata?: { name?: unknown; diff --git a/packages/backend/src/server/NodeinfoServerService.ts b/packages/backend/src/server/NodeinfoServerService.ts index a7d898e9b6..54a883df6c 100644 --- a/packages/backend/src/server/NodeinfoServerService.ts +++ b/packages/backend/src/server/NodeinfoServerService.ts @@ -83,6 +83,7 @@ export class NodeinfoServerService { */ name: 'cherrypick', version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, homepage: nodeinfo_homepage, repository: meta.repositoryUrl, }, diff --git a/packages/backend/src/server/api/endpoints/admin/meta.ts b/packages/backend/src/server/api/endpoints/admin/meta.ts index 412c0fdf03..cbdc08890b 100644 --- a/packages/backend/src/server/api/endpoints/admin/meta.ts +++ b/packages/backend/src/server/api/endpoints/admin/meta.ts @@ -380,6 +380,7 @@ export default class extends Endpoint { // eslint- maintainerName: instance.maintainerName, maintainerEmail: instance.maintainerEmail, version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, name: instance.name, shortName: instance.shortName, uri: this.config.url, diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts index 476c9964a7..cb93c6a5fb 100644 --- a/packages/backend/src/server/api/endpoints/meta.ts +++ b/packages/backend/src/server/api/endpoints/meta.ts @@ -36,6 +36,10 @@ export const meta = { type: 'string', optional: false, nullable: false, }, + basedMisskeyVersion: { + type: 'string', + optional: false, nullable: false, + }, name: { type: 'string', optional: false, nullable: false, @@ -290,6 +294,7 @@ export default class extends Endpoint { // eslint- maintainerEmail: instance.maintainerEmail, version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, name: instance.name, shortName: instance.shortName, diff --git a/packages/backend/src/server/api/openapi/gen-spec.ts b/packages/backend/src/server/api/openapi/gen-spec.ts index 0bf52af921..b6d81bdca2 100644 --- a/packages/backend/src/server/api/openapi/gen-spec.ts +++ b/packages/backend/src/server/api/openapi/gen-spec.ts @@ -14,6 +14,7 @@ export function genOpenapiSpec(config: Config) { info: { version: config.version, + basedMisskeyVersion: config.basedMisskeyVersion, title: 'CherryPick API', 'x-logo': { url: '/static-assets/api-doc.png' }, }, diff --git a/packages/backend/src/server/web/ClientServerService.ts b/packages/backend/src/server/web/ClientServerService.ts index 9bcfb9d824..7bdd05edbf 100644 --- a/packages/backend/src/server/web/ClientServerService.ts +++ b/packages/backend/src/server/web/ClientServerService.ts @@ -234,6 +234,7 @@ export class ClientServerService { }, defaultContext: { version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, config: this.config, }, }); @@ -689,6 +690,7 @@ export class ClientServerService { return await reply.view('info-card', { version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, host: this.config.host, meta: meta, originalUsersCount: await this.usersRepository.countBy({ host: IsNull() }), @@ -699,12 +701,14 @@ export class ClientServerService { fastify.get('/bios', async (request, reply) => { return await reply.view('bios', { version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, }); }); fastify.get('/cli', async (request, reply) => { return await reply.view('cli', { version: this.config.version, + basedMisskeyVersion: this.config.basedMisskeyVersion, }); }); diff --git a/packages/backend/src/server/web/boot.js b/packages/backend/src/server/web/boot.js index 79b849b9e5..e466ef6ce5 100644 --- a/packages/backend/src/server/web/boot.js +++ b/packages/backend/src/server/web/boot.js @@ -62,10 +62,15 @@ } const meta = await metaRes.json(); const v = meta.version; + const basedMisskeyVersion = meta.basedMisskeyVersion; if (v == null) { renderError('META_FETCH_V'); return; } + if (basedMisskeyVersion == null) { + renderError('META_FETCH_BASEDMISSKEY_V'); + return; + } // for https://github.com/misskey-dev/misskey/issues/10202 if (lang == null || lang.toString == null || lang.toString() === 'null') { diff --git a/packages/cherrypick-js/etc/cherrypick-js.api.md b/packages/cherrypick-js/etc/cherrypick-js.api.md index f1b5773d78..671c967c18 100644 --- a/packages/cherrypick-js/etc/cherrypick-js.api.md +++ b/packages/cherrypick-js/etc/cherrypick-js.api.md @@ -2474,6 +2474,7 @@ type LiteInstanceMetadata = { maintainerName: string | null; maintainerEmail: string | null; version: string; + basedMisskeyVersion: string; name: string | null; shortName: string | null; uri: string; @@ -3032,7 +3033,7 @@ type UserSorting = '+follower' | '-follower' | '+createdAt' | '-createdAt' | '+u // src/api.types.ts:16:32 - (ae-forgotten-export) The symbol "TODO" needs to be exported by the entry point index.d.ts // src/api.types.ts:18:25 - (ae-forgotten-export) The symbol "NoParams" needs to be exported by the entry point index.d.ts // src/api.types.ts:659:18 - (ae-forgotten-export) The symbol "ShowUserReq" needs to be exported by the entry point index.d.ts -// src/entities.ts:587:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts +// src/entities.ts:588:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts // src/streaming.types.ts:33:4 - (ae-forgotten-export) The symbol "FIXME" needs to be exported by the entry point index.d.ts // (No @packageDocumentation comment for this package) diff --git a/packages/cherrypick-js/src/entities.ts b/packages/cherrypick-js/src/entities.ts index 10edc0e0f8..0093980d99 100644 --- a/packages/cherrypick-js/src/entities.ts +++ b/packages/cherrypick-js/src/entities.ts @@ -305,6 +305,7 @@ export type LiteInstanceMetadata = { maintainerName: string | null; maintainerEmail: string | null; version: string; + basedMisskeyVersion: string; name: string | null; shortName: string | null; uri: string; diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts index 0bd153e957..90bb0bb8ad 100644 --- a/packages/frontend/src/boot/common.ts +++ b/packages/frontend/src/boot/common.ts @@ -130,6 +130,7 @@ export async function common(createVue: () => App) { fetchInstanceMetaPromise.then(() => { miLocalStorage.setItem('v', instance.version); + miLocalStorage.setItem('basedMisskeyVersion', instance.basedMisskeyVersion); }); //#region loginId diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts index e14a550b6b..7a1de1bb0a 100644 --- a/packages/frontend/src/local-storage.ts +++ b/packages/frontend/src/local-storage.ts @@ -5,6 +5,7 @@ type Keys = 'v' | + 'basedMisskeyVersion' | 'lastVersion' | 'instance' | 'account' | diff --git a/packages/sw/src/sw.ts b/packages/sw/src/sw.ts index 97f1f11ba8..72691d5dc9 100644 --- a/packages/sw/src/sw.ts +++ b/packages/sw/src/sw.ts @@ -27,7 +27,7 @@ globalThis.addEventListener('activate', ev => { }); function offlineContentHTML(): string { - return `Offline. Service Worker @${_VERSION_} `; + return `Offline. Service Worker @${_VERSION_} | @${_BASEDMISSKEYVERSION_} `; } globalThis.addEventListener('fetch', ev => { diff --git a/scripts/build-pre.js b/scripts/build-pre.js index 550d8d83ee..55d99a5a1d 100644 --- a/scripts/build-pre.js +++ b/scripts/build-pre.js @@ -7,4 +7,4 @@ const fs = require('fs'); const meta = require('../package.json'); fs.mkdirSync(__dirname + '/../built', { recursive: true }); -fs.writeFileSync(__dirname + '/../built/meta.json', JSON.stringify({ version: meta.version }), 'utf-8'); +fs.writeFileSync(__dirname + '/../built/meta.json', JSON.stringify({ version: meta.version, basedMisskeyVersion: meta.basedMisskeyVersion }), 'utf-8');