From edb39a089d6652eb5b0212069f3050823c4c07e7 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: Tue, 6 Feb 2024 16:26:03 +0900
Subject: [PATCH 01/78] =?UTF-8?q?enhance(frontend):=20KeepAlive=E3=81=AE?=
=?UTF-8?q?=E3=83=9A=E3=83=BC=E3=82=B8=E3=82=AD=E3=83=A3=E3=83=83=E3=82=B7?=
=?UTF-8?q?=E3=83=A5=E3=82=92=E5=89=8A=E9=99=A4=E3=81=A7=E3=81=8D=E3=82=8B?=
=?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=20(#13180)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* enhance(frontend): 内部のページキャッシュを削除できるように
* Update Changelog
---
CHANGELOG.md | 1 +
.../src/components/global/RouterView.vue | 42 ++++++++++++++++---
packages/frontend/src/events.ts | 8 +++-
.../frontend/src/pages/settings/profile.vue | 5 +++
4 files changed, 49 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c39a447c5943..0fc99cf5b87d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -66,6 +66,7 @@
- Fix: 画像をクロップするとクロップ後の解像度が異様に低くなる問題の修正
- Fix: 画像をクロップ時、正常に完了できない問題の修正
- Fix: キャプションが空の画像をクロップするとキャプションにnullという文字列が入ってしまう問題の修正
+- Fix: プロフィールを編集してもリロードするまで反映されない問題を修正
### Server
- Enhance: 連合先のレートリミットに引っかかった際にリトライするようになりました
diff --git a/packages/frontend/src/components/global/RouterView.vue b/packages/frontend/src/components/global/RouterView.vue
index dc7474835ded..aeb87e659b6a 100644
--- a/packages/frontend/src/components/global/RouterView.vue
+++ b/packages/frontend/src/components/global/RouterView.vue
@@ -4,7 +4,10 @@ SPDX-License-Identifier: AGPL-3.0-only
-->
-
+
@@ -16,9 +19,11 @@ SPDX-License-Identifier: AGPL-3.0-only
diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts
index 355715bcc693..3de81c9bb9dc 100644
--- a/packages/frontend/src/local-storage.ts
+++ b/packages/frontend/src/local-storage.ts
@@ -12,6 +12,7 @@ type Keys =
'latestDonationInfoShownAt' |
'neverShowDonationInfo' |
'neverShowLocalOnlyInfo' |
+ 'modifiedVersionMustProminentlyOfferInAgplV3Section13Read' |
'lastUsed' |
'lang' |
'drafts' |
diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue
index a2ecae3b80bc..fd97ab97b919 100644
--- a/packages/frontend/src/pages/about-misskey.vue
+++ b/packages/frontend/src/pages/about-misskey.vue
@@ -31,7 +31,7 @@ SPDX-License-Identifier: AGPL-3.0-only
- {{ i18n.ts._aboutMisskey.source }}
+ {{ i18n.ts._aboutMisskey.source }} ({{ i18n.ts._aboutMisskey.original }})
GitHub
@@ -46,6 +46,25 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+
+
+ {{ i18n.tsx._aboutMisskey.thisIsModifiedVersion({ name: instance.name }) }}
+
+
+
+ {{ i18n.ts._aboutMisskey.source }}
+
+
+
+ {{ i18n.ts._aboutMisskey.source }}
+ Tarball
+
+
+ {{ i18n.ts.sourceCodeIsNotYetProvided }}
+
+
+
{{ i18n.ts._aboutMisskey.projectMembers }}
@@ -118,9 +137,10 @@ import { version } from '@/config.js';
import FormLink from '@/components/form/link.vue';
import FormSection from '@/components/form/section.vue';
import MkButton from '@/components/MkButton.vue';
-import MkLink from '@/components/MkLink.vue';
+import MkInfo from '@/components/MkInfo.vue';
import { physics } from '@/scripts/physics.js';
import { i18n } from '@/i18n.js';
+import { instance } from '@/instance.js';
import { defaultStore } from '@/store.js';
import * as os from '@/os.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
diff --git a/packages/frontend/src/pages/about.vue b/packages/frontend/src/pages/about.vue
index f99eb9c57777..324d1c11defe 100644
--- a/packages/frontend/src/pages/about.vue
+++ b/packages/frontend/src/pages/about.vue
@@ -31,7 +31,17 @@ SPDX-License-Identifier: AGPL-3.0-only
-
{{ i18n.ts.aboutMisskey }}
+
+
+ {{ i18n.ts.aboutMisskey }}
+
+
+
+ {{ i18n.ts.sourceCode }}
+
+
+ {{ i18n.ts.sourceCodeIsNotYetProvided }}
+
@@ -47,17 +57,33 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ instance.maintainerEmail }}
- {{ i18n.ts.impressum }}
+
+
+ {{ i18n.ts.impressum }}
+
- {{ i18n.ts.serverRules }}
+
+
+ {{ i18n.ts.serverRules }}
+
-
+
-
{{ i18n.ts.termsOfService }}
-
{{ i18n.ts.privacyPolicy }}
+
+
+ {{ i18n.ts.termsOfService }}
+
+
+
+ {{ i18n.ts.privacyPolicy }}
+
+
+
+ {{ i18n.ts.feedback }}
+
@@ -86,7 +112,6 @@ SPDX-License-Identifier: AGPL-3.0-only
nodeinfo
robots.txt
manifest.json
- source code
@@ -116,6 +141,7 @@ import FormSuspense from '@/components/form/suspense.vue';
import FormSplit from '@/components/form/split.vue';
import MkFolder from '@/components/MkFolder.vue';
import MkKeyValue from '@/components/MkKeyValue.vue';
+import MkInfo from '@/components/MkInfo.vue';
import MkInstanceStats from '@/components/MkInstanceStats.vue';
import MkHorizontalSwipe from '@/components/MkHorizontalSwipe.vue';
import { misskeyApi } from '@/scripts/misskey-api.js';
diff --git a/packages/frontend/src/pages/admin/branding.vue b/packages/frontend/src/pages/admin/branding.vue
index 4ac2011aafb3..2b559f92c9bd 100644
--- a/packages/frontend/src/pages/admin/branding.vue
+++ b/packages/frontend/src/pages/admin/branding.vue
@@ -76,6 +76,16 @@ SPDX-License-Identifier: AGPL-3.0-only
{{ i18n.ts.instanceDefaultThemeDescription }}
+
+
+ {{ i18n.ts.repositoryUrl }}
+
+
+
+
+ {{ i18n.ts.feedbackUrl }}
+
+
{{ i18n.ts._serverSettings.manifestJsonOverride }}
@@ -120,6 +130,8 @@ const defaultDarkTheme = ref(null);
const serverErrorImageUrl = ref(null);
const infoImageUrl = ref(null);
const notFoundImageUrl = ref(null);
+const repositoryUrl = ref(null);
+const feedbackUrl = ref(null);
const manifestJsonOverride = ref('{}');
async function init() {
@@ -135,6 +147,8 @@ async function init() {
serverErrorImageUrl.value = meta.serverErrorImageUrl;
infoImageUrl.value = meta.infoImageUrl;
notFoundImageUrl.value = meta.notFoundImageUrl;
+ repositoryUrl.value = meta.repositoryUrl;
+ feedbackUrl.value = meta.feedbackUrl;
manifestJsonOverride.value = meta.manifestJsonOverride === '' ? '{}' : JSON.stringify(JSON.parse(meta.manifestJsonOverride), null, '\t');
}
@@ -151,6 +165,8 @@ function save() {
infoImageUrl: infoImageUrl.value === '' ? null : infoImageUrl.value,
notFoundImageUrl: notFoundImageUrl.value === '' ? null : notFoundImageUrl.value,
serverErrorImageUrl: serverErrorImageUrl.value === '' ? null : serverErrorImageUrl.value,
+ repositoryUrl: repositoryUrl.value === '' ? null : repositoryUrl.value,
+ feedbackUrl: feedbackUrl.value === '' ? null : feedbackUrl.value,
manifestJsonOverride: manifestJsonOverride.value === '' ? '{}' : JSON.stringify(JSON5.parse(manifestJsonOverride.value)),
}).then(() => {
fetchInstance();
diff --git a/packages/frontend/src/pages/admin/settings.vue b/packages/frontend/src/pages/admin/settings.vue
index 8af9deae6250..c505d70aa980 100644
--- a/packages/frontend/src/pages/admin/settings.vue
+++ b/packages/frontend/src/pages/admin/settings.vue
@@ -34,6 +34,16 @@ SPDX-License-Identifier: AGPL-3.0-only
+
+ {{ i18n.ts.repositoryUrl }}
+
+ {{ i18n.ts.repositoryUrlDescription }}
+
+
+
+ {{ i18n.ts.repositoryUrlOrTarballRequired }}
+
+
{{ i18n.ts.impressumUrl }}
@@ -159,7 +169,7 @@ import FormSplit from '@/components/form/split.vue';
import FormSuspense from '@/components/form/suspense.vue';
import * as os from '@/os.js';
import { misskeyApi } from '@/scripts/misskey-api.js';
-import { fetchInstance } from '@/instance.js';
+import { fetchInstance, instance } from '@/instance.js';
import { i18n } from '@/i18n.js';
import { definePageMetadata } from '@/scripts/page-metadata.js';
import MkButton from '@/components/MkButton.vue';
@@ -169,6 +179,7 @@ const shortName = ref(null);
const description = ref(null);
const maintainerName = ref(null);
const maintainerEmail = ref(null);
+const repositoryUrl = ref(null);
const impressumUrl = ref(null);
const pinnedUsers = ref('');
const cacheRemoteFiles = ref(false);
@@ -191,6 +202,7 @@ async function init(): Promise {
description.value = meta.description;
maintainerName.value = meta.maintainerName;
maintainerEmail.value = meta.maintainerEmail;
+ repositoryUrl.value = meta.repositoryUrl;
impressumUrl.value = meta.impressumUrl;
pinnedUsers.value = meta.pinnedUsers.join('\n');
cacheRemoteFiles.value = meta.cacheRemoteFiles;
@@ -214,6 +226,7 @@ async function save(): void {
description: description.value,
maintainerName: maintainerName.value,
maintainerEmail: maintainerEmail.value,
+ repositoryUrl: repositoryUrl.value,
impressumUrl: impressumUrl.value,
pinnedUsers: pinnedUsers.value.split('\n'),
cacheRemoteFiles: cacheRemoteFiles.value,
diff --git a/packages/misskey-js/src/autogen/types.ts b/packages/misskey-js/src/autogen/types.ts
index ad3a9a7c661b..d0d8573b407c 100644
--- a/packages/misskey-js/src/autogen/types.ts
+++ b/packages/misskey-js/src/autogen/types.ts
@@ -4845,7 +4845,7 @@ export type operations = {
shortName: string | null;
objectStorageS3ForcePathStyle: boolean;
privacyPolicyUrl: string | null;
- repositoryUrl: string;
+ repositoryUrl: string | null;
summalyProxy: string | null;
themeColor: string | null;
tosUrl: string | null;
@@ -8757,8 +8757,8 @@ export type operations = {
swPublicKey?: string | null;
swPrivateKey?: string | null;
tosUrl?: string | null;
- repositoryUrl?: string;
- feedbackUrl?: string;
+ repositoryUrl?: string | null;
+ feedbackUrl?: string | null;
impressumUrl?: string | null;
privacyPolicyUrl?: string | null;
useObjectStorage?: boolean;
@@ -19450,6 +19450,7 @@ export type operations = {
maintainerName: string | null;
maintainerEmail: string | null;
version: string;
+ providesTarball: boolean;
name: string;
shortName: string | null;
/**
@@ -19461,9 +19462,9 @@ export type operations = {
langs: string[];
tosUrl: string | null;
/** @default https://github.com/misskey-dev/misskey */
- repositoryUrl: string;
+ repositoryUrl: string | null;
/** @default https://github.com/misskey-dev/misskey/issues/new */
- feedbackUrl: string;
+ feedbackUrl: string | null;
defaultDarkTheme: string | null;
defaultLightTheme: string | null;
disableRegistration: boolean;
diff --git a/scripts/build-assets.mjs b/scripts/build-assets.mjs
index bafb1da5d975..e7684d7cc9e4 100644
--- a/scripts/build-assets.mjs
+++ b/scripts/build-assets.mjs
@@ -5,7 +5,9 @@
import * as fs from 'node:fs/promises';
import * as path from 'node:path';
+import { fileURLToPath } from 'node:url';
import cssnano from 'cssnano';
+import * as yaml from 'js-yaml';
import postcss from 'postcss';
import * as terser from 'terser';
@@ -14,8 +16,19 @@ import generateDTS from '../locales/generateDTS.js';
import meta from '../package.json' assert { type: "json" };
import buildTarball from './tarball.mjs';
+const configDir = fileURLToPath(new URL('../.config', import.meta.url));
+const configPath = process.env.MISSKEY_CONFIG_YML
+ ? path.resolve(configDir, process.env.MISSKEY_CONFIG_YML)
+ : process.env.NODE_ENV === 'test'
+ ? path.resolve(configDir, 'test.yml')
+ : path.resolve(configDir, 'default.yml');
+
let locales = buildLocales();
+async function loadConfig() {
+ return fs.readFile(configPath, 'utf-8').then(data => yaml.load(data)).catch(() => null);
+}
+
async function copyFrontendFonts() {
await fs.cp('./packages/frontend/node_modules/three/examples/fonts', './built/_frontend_dist_/fonts', { dereference: true, recursive: true });
}
@@ -78,7 +91,7 @@ async function build() {
copyBackendViews(),
buildBackendScript(),
buildBackendStyle(),
- buildTarball(),
+ loadConfig().then(config => config?.publishTarballInsteadOfProvideRepositoryUrl && buildTarball()),
]);
}
From d961ed830fe42477a3e2d7f99078df4e1fdf726f Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 17 Feb 2024 13:36:39 +0900
Subject: [PATCH 76/78] Update CHANGELOG.md
---
CHANGELOG.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b6db0b61ef38..43746dbfbf6e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -59,6 +59,7 @@
- ロールが必要な絵文字をリアクションしようとした場合
- Enhance: ページ遷移時にPlayerを閉じるように
- Enhance: ノートの通報時にリモートのノートであっても自インスタンスにおけるノートのリンクを含むように
+- Enhance: オフライン表示のデザインを改善・多言語対応
- Fix: ネイティブモードの絵文字がモノクロにならないように
- Fix: v2023.12.0で追加された「モデレーターがユーザーのアイコンもしくはバナー画像を未設定状態にできる機能」が管理画面上で正しく表示されていない問題を修正
- Fix: AiScriptの`readline`関数が不正な値を返すことがある問題のv2023.12.0時点での修正がPlay以外に適用されていないのを修正
@@ -95,9 +96,6 @@
- Fix: コントロールパネル->モデレーション->「誰でも新規登録できるようにする」の初期値をONからOFFに変更 #13122
- Fix: リモートユーザーが復活してもキャッシュにより該当ユーザーのActivityが受け入れられないのを修正 #13273
-### Service Worker
-- Enhance: オフライン表示のデザインを改善・多言語対応
-
## 2023.12.2
### General
From 0b5d3315bcf5682e519a32a1ff4d98bbaf845502 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 17 Feb 2024 13:41:24 +0900
Subject: [PATCH 77/78] 2024.2.0
---
CHANGELOG.md | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3e35d9e2b663..b6c282259073 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,7 +12,7 @@
-->
-## 202x.x.x (Unreleased)
+## 2024.2.0
### Note
- 外部サイトからプラグインをインストールする場合のパスが`/install-extentions`から`/install-extensions`に変わります。以前のパスからは自動でリダイレクトされるようになっていますが、新しいパスに変更することをお勧めします。
diff --git a/package.json b/package.json
index f8dd5aeadc91..3f94448db7ce 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "misskey",
- "version": "2024.2.0-beta.13",
+ "version": "2024.2.0",
"codename": "nasubi",
"repository": {
"type": "git",
From 875069c6b08d4d2bdb8661120c23ee2b228961b5 Mon Sep 17 00:00:00 2001
From: syuilo <4439005+syuilo@users.noreply.github.com>
Date: Sat, 17 Feb 2024 13:43:04 +0900
Subject: [PATCH 78/78] Update package.json
---
packages/misskey-js/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 094a6e721401..051c63cbe179 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -1,7 +1,7 @@
{
"type": "module",
"name": "misskey-js",
- "version": "2024.2.0-beta.13",
+ "version": "2024.2.0",
"description": "Misskey SDK for JavaScript",
"types": "./built/dts/index.d.ts",
"exports": {