diff --git a/CHANGELOG.md b/CHANGELOG.md index af9aed7746..2388d6bd2b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,19 @@ --> +## 12.x.x (unreleased) + +### Improvements +- フォロー/フォロワーを非公開にできるように +- インスタンスプロフィールレンダリング ready +- メールアドレスのバリデーションを強化 + +### Bugfixes +- クライアント: 長いメニューが画面からはみ出す問題を修正 +- クライアント: コントロールパネルのジョブキューに個々のジョブが表示されないのを修正 +- クライアント: fix missing i18n string +- fix html conversion issue with code blocks + ## 12.95.0 (2021/10/31) ### Improvements diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 76267ab30e..3b21ad3a1c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -49,10 +49,6 @@ If your language is not listed in Crowdin, please open an issue. ![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg) -## Documentation -* Documents for instance admins are located in [`/docs`](/docs). -* Documents for end users are located in [`/src/docs`](/src/docs). - ## Testing - Test codes are located in [`/test`](/test). diff --git a/crowdin.yml b/crowdin.yml index 2d2cd5a49d..774ddc7a63 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -2,6 +2,3 @@ files: - source: /locales/ja-JP.yml translation: /locales/%locale%.yml update_option: update_as_unapproved - - source: /src/docs/ja-JP/**/*.md - translation: /src/docs/%locale%/**/%original_file_name% - update_option: update_as_unapproved diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 2143da04bd..0f0f129958 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -620,6 +620,8 @@ reportAbuse: "通報" reportAbuseOf: "{name}を通報する" fillAbuseReportDescription: "通報理由の詳細を記入してください。対象のノートがある場合はそのURLも記入してください。" abuseReported: "内容が送信されました。ご報告ありがとうございました。" +reporteeOrigin: "通報先" +reporterOrigin: "通報元" send: "送信" abuseMarkAsResolved: "対応済みにする" openInNewTab: "新しいタブで開く" @@ -802,6 +804,20 @@ makeReactionsPublicDescription: "あなたがしたリアクション一覧を classic: "クラシック" muteThread: "スレッドをミュート" unmuteThread: "スレッドのミュートを解除" +ffVisibility: "つながりの公開範囲" +ffVisibilityDescription: "自分のフォロー/フォロワー情報の公開範囲を設定できます。" + +_emailUnavailable: + used: "既に使用されています" + format: "形式が正しくありません" + disposable: "恒久的に使用可能なアドレスではありません" + mx: "正しいメールサーバーではありません" + smtp: "メールサーバーが応答しません" + +_ffVisibility: + public: "公開" + followers: "フォロワーだけに公開" + private: "非公開" _signup: almostThere: "ほとんど完了です" @@ -816,14 +832,6 @@ _accountDelete: started: "削除処理が開始されました。" inProgress: "削除が進行中" -_docs: - continueReading: "続きを読む" - features: "機能" - generalTopics: "一般的なトピック" - advancedTopics: "高度なトピック" - admin: "管理" - translateWarn: "このドキュメントは翻訳されたものです。オリジナルとは内容が異なる場合があります。" - _ad: back: "戻る" reduceFrequencyOfThisAd: "この広告の表示頻度を下げる" diff --git a/migration/1636197624383-ff-visibility.ts b/migration/1636197624383-ff-visibility.ts new file mode 100644 index 0000000000..8829aeb884 --- /dev/null +++ b/migration/1636197624383-ff-visibility.ts @@ -0,0 +1,16 @@ +import {MigrationInterface, QueryRunner} from "typeorm"; + +export class ffVisibility1636197624383 implements MigrationInterface { + name = 'ffVisibility1636197624383' + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query(`CREATE TYPE "public"."user_profile_ffvisibility_enum" AS ENUM('public', 'followers', 'private')`); + await queryRunner.query(`ALTER TABLE "user_profile" ADD "ffVisibility" "public"."user_profile_ffvisibility_enum" NOT NULL DEFAULT 'public'`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "ffVisibility"`); + await queryRunner.query(`DROP TYPE "public"."user_profile_ffvisibility_enum"`); + } + +} diff --git a/package.json b/package.json index 8687223923..be1496a17d 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,6 @@ "@types/koa__cors": "3.0.3", "@types/koa__multer": "2.0.4", "@types/koa__router": "8.0.8", - "@types/markdown-it": "12.2.3", "@types/matter-js": "0.17.6", "@types/mocha": "8.2.3", "@types/node": "16.11.4", @@ -131,6 +130,7 @@ "cssnano": "5.0.8", "date-fns": "2.25.0", "dateformat": "4.5.1", + "deep-email-validator": "0.1.18", "escape-regexp": "0.0.1", "eslint": "8.1.0", "eslint-plugin-vue": "7.20.0", @@ -169,8 +169,6 @@ "koa-slow": "2.1.0", "koa-views": "7.0.1", "langmap": "0.0.16", - "markdown-it": "12.2.0", - "markdown-it-anchor": "7.1.0", "matter-js": "0.17.1", "mfm-js": "0.20.0", "misskey-js": "0.0.8", diff --git a/src/client/account.ts b/src/client/account.ts index b11d665545..a2165ebed1 100644 --- a/src/client/account.ts +++ b/src/client/account.ts @@ -122,7 +122,9 @@ export async function login(token: Account['token'], redirect?: string) { await addAccount(me.id, token); if (redirect) { + // 他のタブは再読み込みするだけ reloadChannel.postMessage(null); + // このページはredirectで指定された先に移動 location.href = redirect; return; } diff --git a/src/client/components/launch-pad.vue b/src/client/components/launch-pad.vue index 6f97d4d3aa..9da62f1e0b 100644 --- a/src/client/components/launch-pad.vue +++ b/src/client/components/launch-pad.vue @@ -16,10 +16,10 @@
- +
{{ $ts.help }}
-
+
{{ $t('aboutX', { x: instanceName }) }}
diff --git a/src/client/components/mention.vue b/src/client/components/mention.vue index da13dcdddd..4c7030bf35 100644 --- a/src/client/components/mention.vue +++ b/src/client/components/mention.vue @@ -45,7 +45,7 @@ export default defineComponent({ ); const bg = tinycolor(getComputedStyle(document.documentElement).getPropertyValue(isMe ? '--mentionMe' : '--mention')); - bg.setAlpha(0.20); + bg.setAlpha(0.1); return { localHost, diff --git a/src/client/components/signup.vue b/src/client/components/signup.vue index cb25eadf06..8d4340fd36 100644 --- a/src/client/components/signup.vue +++ b/src/client/components/signup.vue @@ -19,12 +19,17 @@ {{ $ts.tooLong }} - + @@ -171,7 +176,13 @@ export default defineComponent({ os.api('email-address/available', { emailAddress: this.email }).then(result => { - this.emailState = result.available ? 'ok' : 'unavailable'; + this.emailState = result.available ? 'ok' : + result.reason === 'used' ? 'unavailable:used' : + result.reason === 'format' ? 'unavailable:format' : + result.reason === 'disposable' ? 'unavailable:disposable' : + result.reason === 'mx' ? 'unavailable:mx' : + result.reason === 'smtp' ? 'unavailable:smtp' : + 'unavailable'; }).catch(err => { this.emailState = 'error'; }); diff --git a/src/client/components/ui/menu.vue b/src/client/components/ui/menu.vue index aaef527f1a..5b3a0ae7c2 100644 --- a/src/client/components/ui/menu.vue +++ b/src/client/components/ui/menu.vue @@ -147,6 +147,8 @@ export default defineComponent({ .rrevdjwt { padding: 8px 0; min-width: 200px; + max-height: 90vh; + overflow: auto; &.center { > .item { diff --git a/src/client/components/updated.vue b/src/client/components/updated.vue index 2f92f743e6..9e5b24acdb 100644 --- a/src/client/components/updated.vue +++ b/src/client/components/updated.vue @@ -30,7 +30,7 @@ export default defineComponent({ methods: { whatIsNew() { this.$refs.modal.close(); - this.$router.push('/docs/general/changelog'); + window.open(`https://misskey-hub.net/docs/releases.html#_${version.replace(/\./g, '-')}`, '_blank'); } } }); diff --git a/src/client/pages/about-misskey.vue b/src/client/pages/about-misskey.vue index d2c0ec0550..decee3a0f0 100644 --- a/src/client/pages/about-misskey.vue +++ b/src/client/pages/about-misskey.vue @@ -11,7 +11,7 @@
- {{ $ts._aboutMisskey.about }}
{{ $ts.learnMore }} + {{ $ts._aboutMisskey.about }}
{{ $ts.learnMore }}
diff --git a/src/client/pages/admin/abuses.vue b/src/client/pages/admin/abuses.vue index 29da8cc2c5..fb99347f34 100644 --- a/src/client/pages/admin/abuses.vue +++ b/src/client/pages/admin/abuses.vue @@ -10,7 +10,7 @@ - + diff --git a/src/client/pages/admin/queue.chart.vue b/src/client/pages/admin/queue.chart.vue index 084181a606..38cd0b10ef 100644 --- a/src/client/pages/admin/queue.chart.vue +++ b/src/client/pages/admin/queue.chart.vue @@ -55,8 +55,8 @@ export default defineComponent({ const jobs = ref([]); onMounted(() => { - os.api(props.domain === 'inbox' ? 'admin/queue/inbox-delayed' : props.domain === 'deliver' ? 'admin/queue/deliver-delayed' : null, {}).then(jobs => { - jobs.value = jobs; + os.api(props.domain === 'inbox' ? 'admin/queue/inbox-delayed' : props.domain === 'deliver' ? 'admin/queue/deliver-delayed' : null, {}).then(result => { + jobs.value = result; }); const onStats = (stats) => { diff --git a/src/client/pages/doc.vue b/src/client/pages/doc.vue deleted file mode 100644 index 500d0340b7..0000000000 --- a/src/client/pages/doc.vue +++ /dev/null @@ -1,240 +0,0 @@ - - - - - diff --git a/src/client/pages/docs.vue b/src/client/pages/docs.vue deleted file mode 100644 index 629dc2be53..0000000000 --- a/src/client/pages/docs.vue +++ /dev/null @@ -1,152 +0,0 @@ - - - - - diff --git a/src/client/pages/explore.vue b/src/client/pages/explore.vue index a77b4e53c3..5a23d34d27 100644 --- a/src/client/pages/explore.vue +++ b/src/client/pages/explore.vue @@ -70,7 +70,7 @@ - + diff --git a/src/client/pages/settings/privacy.vue b/src/client/pages/settings/privacy.vue index 2a60ae1f46..5e0c259ca3 100644 --- a/src/client/pages/settings/privacy.vue +++ b/src/client/pages/settings/privacy.vue @@ -9,6 +9,15 @@ {{ $ts.makeReactionsPublic }} + + + + + + + + + {{ $ts.hideOnlineStatus }} @@ -69,6 +78,7 @@ export default defineComponent({ isExplorable: false, hideOnlineStatus: false, publicReactions: false, + ffVisibility: 'public', } }, @@ -86,6 +96,7 @@ export default defineComponent({ this.isExplorable = this.$i.isExplorable; this.hideOnlineStatus = this.$i.hideOnlineStatus; this.publicReactions = this.$i.publicReactions; + this.ffVisibility = this.$i.ffVisibility; }, mounted() { @@ -101,6 +112,7 @@ export default defineComponent({ isExplorable: !!this.isExplorable, hideOnlineStatus: !!this.hideOnlineStatus, publicReactions: !!this.publicReactions, + ffVisibility: this.ffVisibility, }); } } diff --git a/src/client/pages/share.vue b/src/client/pages/share.vue index 70a9661dd0..cb7347fae6 100644 --- a/src/client/pages/share.vue +++ b/src/client/pages/share.vue @@ -23,7 +23,7 @@