diff --git a/CHANGELOG.md b/CHANGELOG.md
index 677fb5698..9629c970e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,9 @@ You should also include the user name that made the change.
## 12.x.x (unreleased)
+### Changes
+- ノートの最大文字数を設定できる機能が廃止され、デフォルトで一律3000文字になりました
+
### Improvements
-
diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml
index f4c9d1998..840e1beee 100644
--- a/locales/ja-JP.yml
+++ b/locales/ja-JP.yml
@@ -422,7 +422,6 @@ next: "次"
retype: "再入力"
noteOf: "{user}のノート"
inviteToGroup: "グループに招待"
-maxNoteTextLength: "ノートの文字数制限"
quoteAttached: "引用付き"
quoteQuestion: "引用として添付しますか?"
noMessagesYet: "まだチャットはありません"
diff --git a/packages/backend/migration/1645340161439-remove-max-note-text-length.js b/packages/backend/migration/1645340161439-remove-max-note-text-length.js
new file mode 100644
index 000000000..63e7d25ee
--- /dev/null
+++ b/packages/backend/migration/1645340161439-remove-max-note-text-length.js
@@ -0,0 +1,13 @@
+const { MigrationInterface, QueryRunner } = require("typeorm");
+
+module.exports = class removeMaxNoteTextLength1645340161439 {
+ name = 'removeMaxNoteTextLength1645340161439'
+
+ async up(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "maxNoteTextLength"`);
+ }
+
+ async down(queryRunner) {
+ await queryRunner.query(`ALTER TABLE "meta" ADD "maxNoteTextLength" integer NOT NULL DEFAULT '500'`);
+ }
+}
diff --git a/packages/backend/src/const.ts b/packages/backend/src/const.ts
index b00bd8165..6d3b9559e 100644
--- a/packages/backend/src/const.ts
+++ b/packages/backend/src/const.ts
@@ -1,3 +1,5 @@
+export const MAX_NOTE_TEXT_LENGTH = 3000;
+
export const USER_ONLINE_THRESHOLD = 1000 * 60 * 10; // 10min
export const USER_ACTIVE_THRESHOLD = 1000 * 60 * 60 * 24 * 3; // 3days
diff --git a/packages/backend/src/models/entities/meta.ts b/packages/backend/src/models/entities/meta.ts
index 1426c79c5..303164247 100644
--- a/packages/backend/src/models/entities/meta.ts
+++ b/packages/backend/src/models/entities/meta.ts
@@ -205,12 +205,6 @@ export class Meta {
})
public remoteDriveCapacityMb: number;
- @Column('integer', {
- default: 500,
- comment: 'Max allowed note text length in characters',
- })
- public maxNoteTextLength: number;
-
@Column('varchar', {
length: 128,
nullable: true,
diff --git a/packages/backend/src/server/api/endpoints/admin/update-meta.ts b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
index ecede8a04..509e120e7 100644
--- a/packages/backend/src/server/api/endpoints/admin/update-meta.ts
+++ b/packages/backend/src/server/api/endpoints/admin/update-meta.ts
@@ -36,7 +36,6 @@ export const paramDef = {
logoImageUrl: { type: 'string', nullable: true },
name: { type: 'string', nullable: true },
description: { type: 'string', nullable: true },
- maxNoteTextLength: { type: 'integer', maximum: 8192 },
localDriveCapacityMb: { type: 'integer' },
remoteDriveCapacityMb: { type: 'integer' },
cacheRemoteFiles: { type: 'boolean' },
@@ -164,10 +163,6 @@ export default define(meta, paramDef, async (ps, me) => {
set.description = ps.description;
}
- if (ps.maxNoteTextLength) {
- set.maxNoteTextLength = ps.maxNoteTextLength;
- }
-
if (ps.localDriveCapacityMb !== undefined) {
set.localDriveCapacityMb = ps.localDriveCapacityMb;
}
diff --git a/packages/backend/src/server/api/endpoints/meta.ts b/packages/backend/src/server/api/endpoints/meta.ts
index 5b5604f6a..9ea75009e 100644
--- a/packages/backend/src/server/api/endpoints/meta.ts
+++ b/packages/backend/src/server/api/endpoints/meta.ts
@@ -138,11 +138,6 @@ export const meta = {
type: 'string',
optional: false, nullable: true,
},
- maxNoteTextLength: {
- type: 'number',
- optional: false, nullable: false,
- default: 500,
- },
emojis: {
type: 'array',
optional: false, nullable: false,
@@ -506,7 +501,6 @@ export default define(meta, paramDef, async (ps, me) => {
iconUrl: instance.iconUrl,
backgroundImageUrl: instance.backgroundImageUrl,
logoImageUrl: instance.logoImageUrl,
- maxNoteTextLength: Math.min(instance.maxNoteTextLength, DB_MAX_NOTE_TEXT_LENGTH),
emojis: await Emojis.packMany(emojis),
ads: ads.map(ad => ({
id: ad.id,
diff --git a/packages/backend/src/server/api/endpoints/notes/create.ts b/packages/backend/src/server/api/endpoints/notes/create.ts
index 7ac318c50..6bf696b9d 100644
--- a/packages/backend/src/server/api/endpoints/notes/create.ts
+++ b/packages/backend/src/server/api/endpoints/notes/create.ts
@@ -1,24 +1,14 @@
import ms from 'ms';
-import { length } from 'stringz';
import create from '@/services/note/create';
import define from '../../define';
-import { fetchMeta } from '@/misc/fetch-meta';
import { ApiError } from '../../error';
import { User } from '@/models/entities/user';
import { Users, DriveFiles, Notes, Channels, Blockings } from '@/models/index';
import { DriveFile } from '@/models/entities/drive-file';
import { Note } from '@/models/entities/note';
-import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
import { noteVisibilities } from '../../../../types';
import { Channel } from '@/models/entities/channel';
-
-let maxNoteTextLength = 500;
-
-setInterval(() => {
- fetchMeta().then(m => {
- maxNoteTextLength = m.maxNoteTextLength;
- });
-}, 3000);
+import { MAX_NOTE_TEXT_LENGTH } from '@/const';
export const meta = {
tags: ['notes'],
@@ -102,7 +92,7 @@ export const paramDef = {
visibleUserIds: { type: 'array', uniqueItems: true, items: {
type: 'string', format: 'misskey:id',
} },
- text: { type: 'string', nullable: true, maxLength: 3000, default: null },
+ text: { type: 'string', nullable: true, maxLength: MAX_NOTE_TEXT_LENGTH, default: null },
cw: { type: 'string', nullable: true, maxLength: 100 },
localOnly: { type: 'boolean', default: false },
noExtractMentions: { type: 'boolean', default: false },
diff --git a/packages/backend/src/server/nodeinfo.ts b/packages/backend/src/server/nodeinfo.ts
index 4209fc7f1..25eca291d 100644
--- a/packages/backend/src/server/nodeinfo.ts
+++ b/packages/backend/src/server/nodeinfo.ts
@@ -3,6 +3,7 @@ import config from '@/config/index';
import { fetchMeta } from '@/misc/fetch-meta';
import { Users, Notes } from '@/models/index';
import { MoreThan } from 'typeorm';
+import { MAX_NOTE_TEXT_LENGTH } from '@/const';
const router = new Router();
@@ -69,7 +70,7 @@ const nodeinfo2 = async () => {
emailRequiredForSignup: meta.emailRequiredForSignup,
enableHcaptcha: meta.enableHcaptcha,
enableRecaptcha: meta.enableRecaptcha,
- maxNoteTextLength: meta.maxNoteTextLength,
+ maxNoteTextLength: MAX_NOTE_TEXT_LENGTH,
enableTwitterIntegration: meta.enableTwitterIntegration,
enableGithubIntegration: meta.enableGithubIntegration,
enableDiscordIntegration: meta.enableDiscordIntegration,
diff --git a/packages/client/src/pages/admin/settings.vue b/packages/client/src/pages/admin/settings.vue
index 81204f6e2..17f7842ab 100644
--- a/packages/client/src/pages/admin/settings.vue
+++ b/packages/client/src/pages/admin/settings.vue
@@ -52,11 +52,6 @@
{{ $ts.pinnedUsersDescription }}
-
-
- {{ $ts.maxNoteTextLength }}
-
-
{{ $ts.enableRegistration }}
@@ -186,7 +181,6 @@ export default defineComponent({
bannerUrl: null,
backgroundImageUrl: null,
themeColor: null,
- maxNoteTextLength: 0,
enableLocalTimeline: false,
enableGlobalTimeline: false,
pinnedUsers: '',
@@ -216,7 +210,6 @@ export default defineComponent({
this.themeColor = meta.themeColor;
this.maintainerName = meta.maintainerName;
this.maintainerEmail = meta.maintainerEmail;
- this.maxNoteTextLength = meta.maxNoteTextLength;
this.enableLocalTimeline = !meta.disableLocalTimeline;
this.enableGlobalTimeline = !meta.disableGlobalTimeline;
this.pinnedUsers = meta.pinnedUsers.join('\n');
@@ -244,7 +237,6 @@ export default defineComponent({
themeColor: this.themeColor === '' ? null : this.themeColor,
maintainerName: this.maintainerName,
maintainerEmail: this.maintainerEmail,
- maxNoteTextLength: this.maxNoteTextLength,
disableLocalTimeline: !this.enableLocalTimeline,
disableGlobalTimeline: !this.enableGlobalTimeline,
pinnedUsers: this.pinnedUsers.split('\n'),