From 34e958c3a767820f582ae0f719b119bb271b302b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Mon, 8 May 2023 23:40:21 +0900 Subject: [PATCH 01/10] test: Storybook is broken --- packages/frontend/.storybook/preview.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/frontend/.storybook/preview.ts b/packages/frontend/.storybook/preview.ts index d91d76ff0f..e887acaa2e 100644 --- a/packages/frontend/.storybook/preview.ts +++ b/packages/frontend/.storybook/preview.ts @@ -46,7 +46,10 @@ function loadTheme(applyTheme: typeof import('../src/scripts/theme')['applyTheme function initLocalStorage() { localStorage.clear(); - localStorage.setItem('account', JSON.stringify(userDetailed())); + localStorage.setItem('account', JSON.stringify({ + ...userDetailed(), + policies: {}, + })); localStorage.setItem('locale', JSON.stringify(locale)); } From 3510768fd5507d72e89f6ae0939163cbda56aab8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Acid=20Chicken=20=28=E7=A1=AB=E9=85=B8=E9=B6=8F=29?= Date: Tue, 9 May 2023 00:14:42 +0900 Subject: [PATCH 02/10] ci: check for PRs (#10804) * ci: check for PRs * ci: run all PRs * ci: fix syntax error * ci: comment on PRs only * ci: use pull_request_target --- .github/workflows/storybook.yml | 36 +++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml index d5e6769bca..eb6ace27da 100644 --- a/.github/workflows/storybook.yml +++ b/.github/workflows/storybook.yml @@ -2,8 +2,10 @@ name: Storybook on: push: - branches-ignore: - - l10n_develop + branches: + - master + - develop + pull_request_target: jobs: build: @@ -17,6 +19,9 @@ jobs: with: fetch-depth: 0 submodules: true + - name: Checkout HEAD + if: github.event_name == 'pull_request' + run: git checkout ${{ github.head_ref }} - name: Install pnpm uses: pnpm/action-setup@v2 with: @@ -36,13 +41,13 @@ jobs: - name: Build storybook run: pnpm --filter frontend build-storybook - name: Publish to Chromatic - if: github.ref == 'refs/heads/master' + if: github.event_name != 'pull_request' && github.ref == 'refs/heads/master' run: pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static env: CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - name: Publish to Chromatic - if: github.ref != 'refs/heads/master' - id: chromatic + if: github.event_name != 'pull_request' && github.ref != 'refs/heads/master' + id: chromatic_push run: | DIFF="${{ github.event.before }} HEAD" if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then @@ -55,16 +60,31 @@ jobs: pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static $(echo "$CHROMATIC_PARAMETER") env: CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + - name: Publish to Chromatic + if: github.event_name == 'pull_request' + id: chromatic_pull_request + run: | + DIFF="${{ github.base_ref }} HEAD" + if [ "$DIFF" = "0000000000000000000000000000000000000000 HEAD" ]; then + DIFF="HEAD" + fi + CHROMATIC_PARAMETER="$(node packages/frontend/.storybook/changes.js $(git diff-tree --no-commit-id --name-only -r $(echo "$DIFF") | xargs))" + if [ "$CHROMATIC_PARAMETER" = " --skip" ]; then + echo "skip=true" >> $GITHUB_OUTPUT + fi + pnpm --filter frontend chromatic --exit-once-uploaded -d storybook-static $(echo "$CHROMATIC_PARAMETER") + env: + CHROMATIC_PROJECT_TOKEN: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - name: Notify that Chromatic will skip testing uses: actions/github-script@v6.4.0 - if: github.ref != 'refs/heads/master' && github.ref != 'refs/heads/develop' && steps.chromatic.outputs.skip == 'true' + if: github.event_name == 'pull_request' && steps.chromatic_pull_request.outputs.skip == 'true' with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | - github.rest.repos.createCommitComment({ + github.rest.issues.createComment({ + issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - commit_sha: context.sha, body: 'Chromatic will skip testing but you may still have to [review the changes on Chromatic](https://www.chromatic.com/pullrequests?appId=6428f7d7b962f0b79f97d6e4).' }) - name: Upload Artifacts From a531b8aeee82d7da80872dcb9307bab0e23b8d50 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 07:49:53 +0900 Subject: [PATCH 03/10] refactor for e2e --- cypress/e2e/widgets.cy.js | 14 +++++++------- packages/frontend/src/components/MkWidgets.vue | 4 ++-- packages/frontend/src/ui/universal.widgets.vue | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cypress/e2e/widgets.cy.js b/cypress/e2e/widgets.cy.js index a39ea85e1d..88e19030c1 100644 --- a/cypress/e2e/widgets.cy.js +++ b/cypress/e2e/widgets.cy.js @@ -19,26 +19,26 @@ describe('After user signed in', () => { }); it('widget edit toggle is visible', () => { - cy.get('.mk-widget-edit').should('be.visible'); + cy.get('[data-cy-widget-edit]').should('be.visible'); }); it('widget select should be visible in edit mode', () => { - cy.get('.mk-widget-edit').click(); - cy.get('.mk-widget-select').should('be.visible'); + cy.get('[data-cy-widget-edit]').click(); + cy.get('[data-cy-widget-select]').should('be.visible'); }); it('first widget should be removed', () => { - cy.get('.mk-widget-edit').click(); + cy.get('[data-cy-widget-edit]').click(); cy.get('[data-cy-customize-container]:first-child [data-cy-customize-container-remove]._button').click(); cy.get('[data-cy-customize-container]').should('have.length', 2); }); function buildWidgetTest(widgetName) { it(`${widgetName} widget should get added`, () => { - cy.get('.mk-widget-edit').click(); - cy.get('.mk-widget-select select').select(widgetName, { force: true }); + cy.get('[data-cy-widget-edit]').click(); + cy.get('[data-cy-widget-select] select').select(widgetName, { force: true }); cy.get('[data-cy-bg]._modalBg[data-cy-transparent]').click({ multiple: true, force: true }); - cy.get('.mk-widget-add').click({ force: true }); + cy.get('[data-cy-widget-add]').click({ force: true }); cy.get(`[data-cy-mkw-${widgetName}]`).should('exist'); }); } diff --git a/packages/frontend/src/components/MkWidgets.vue b/packages/frontend/src/components/MkWidgets.vue index d074fdd150..33e594acd8 100644 --- a/packages/frontend/src/components/MkWidgets.vue +++ b/packages/frontend/src/components/MkWidgets.vue @@ -2,11 +2,11 @@
From 8f36a807751f018d9422b05848ce44480e10e721 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 08:01:54 +0900 Subject: [PATCH 04/10] fix e2e test --- cypress/e2e/basic.cy.js | 23 ++++++++++++++++++- cypress/e2e/widgets.cy.js | 4 ++++ packages/frontend/src/components/MkDialog.vue | 4 ++-- .../frontend/src/components/MkModalWindow.vue | 2 +- .../src/components/MkUserSetupDialog.vue | 11 +++++---- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/cypress/e2e/basic.cy.js b/cypress/e2e/basic.cy.js index e271894ec1..e5e3a466ac 100644 --- a/cypress/e2e/basic.cy.js +++ b/cypress/e2e/basic.cy.js @@ -159,10 +159,31 @@ describe('After user signed in', () => { }); it('successfully loads', () => { - cy.get('[data-cy-open-post-form]').should('be.visible'); + cy.get('[data-cy-user-setup-continue]').should('be.visible'); + }); + + it('account setup wizard', () => { + cy.get('[data-cy-user-setup-continue]').click(); + + cy.get('[data-cy-user-setup-user-name] input').type('ありす'); + cy.get('[data-cy-user-setup-user-description] textarea').type('ほげ'); + // TODO: アイコン設定テスト + + cy.get('[data-cy-user-setup-continue]').click(); + + // フォローはスキップ + + cy.get('[data-cy-user-setup-continue]').click(); + + // プッシュ通知設定はスキップ + + cy.get('[data-cy-user-setup-continue]').click(); + + cy.get('[data-cy-user-setup-continue]').click(); }); it('note', () => { + cy.get('[data-cy-open-post-form]').should('be.visible'); cy.get('[data-cy-open-post-form]').click(); cy.get('[data-cy-post-form-text]').type('Hello, Misskey!'); cy.get('[data-cy-open-post-form-submit]').click(); diff --git a/cypress/e2e/widgets.cy.js b/cypress/e2e/widgets.cy.js index 88e19030c1..f5a982eb0a 100644 --- a/cypress/e2e/widgets.cy.js +++ b/cypress/e2e/widgets.cy.js @@ -10,6 +10,10 @@ describe('After user signed in', () => { cy.registerUser('alice', 'alice1234'); cy.login('alice', 'alice1234'); + + // アカウント初期設定ウィザード + cy.get('[data-cy-user-setup] [data-cy-modal-window-close]').click(); + cy.get('[data-cy-modal-dialog-ok]').click(); }); afterEach(() => { diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue index 7b9aa862ef..9f5404ce15 100644 --- a/packages/frontend/src/components/MkDialog.vue +++ b/packages/frontend/src/components/MkDialog.vue @@ -32,8 +32,8 @@
- {{ okText ?? ((showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt) }} - {{ cancelText ?? i18n.ts.cancel }} + {{ okText ?? ((showCancelButton || input || select) ? i18n.ts.ok : i18n.ts.gotIt) }} + {{ cancelText ?? i18n.ts.cancel }}
{{ action.text }} diff --git a/packages/frontend/src/components/MkModalWindow.vue b/packages/frontend/src/components/MkModalWindow.vue index f983f77750..1c942cfd0d 100644 --- a/packages/frontend/src/components/MkModalWindow.vue +++ b/packages/frontend/src/components/MkModalWindow.vue @@ -6,7 +6,7 @@ - +
diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue index a9d117e073..c5e75276f0 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.vue @@ -3,6 +3,7 @@ ref="dialog" :width="500" :height="550" + data-cy-user-setup @close="close(true)" @closed="emit('closed')" > @@ -23,7 +24,7 @@
{{ i18n.ts._initialAccountSetting.accountCreated }}
{{ i18n.ts._initialAccountSetting.letsFillYourProfile }}
- {{ i18n.ts._initialAccountSetting.profileSetting }} + {{ i18n.ts._initialAccountSetting.profileSetting }}
@@ -32,7 +33,7 @@
- {{ i18n.ts.continue }} + {{ i18n.ts.continue }}
@@ -40,7 +41,7 @@
- {{ i18n.ts.continue }} + {{ i18n.ts.continue }}
@@ -52,7 +53,7 @@
{{ i18n.ts.pushNotification }}
{{ i18n.t('_initialAccountSetting.pushNotificationDescription', { name: instance.name ?? host }) }}
- {{ i18n.ts.continue }} + {{ i18n.ts.continue }} @@ -70,7 +71,7 @@
{{ i18n.t('_initialAccountSetting.haveFun', { name: instance.name ?? host }) }}
- {{ i18n.ts.close }} + {{ i18n.ts.close }} From b16d7cc6c4b8d670e35e0b32e1527149e2c575ab Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 08:09:16 +0900 Subject: [PATCH 05/10] =?UTF-8?q?chore(frontend):=20=E3=82=88=E3=82=8A?= =?UTF-8?q?=E6=9F=94=E8=BB=9F=E3=81=AA=E6=96=87=E8=A8=80=E3=81=AB=E5=A4=89?= =?UTF-8?q?=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- locales/ja-JP.yml | 1 + packages/frontend/src/components/MkUserSetupDialog.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index b886cc7bfd..8bbf9459f5 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1041,6 +1041,7 @@ youFollowing: "フォロー中" _initialAccountSetting: accountCreated: "アカウントの作成が完了しました!" + letsStartAccountSetup: "アカウントの初期設定を行いましょう。" letsFillYourProfile: "まずはあなたのプロフィールを設定しましょう。" profileSetting: "プロフィール設定" theseSettingsCanEditLater: "これらの設定は後から変更できます。" diff --git a/packages/frontend/src/components/MkUserSetupDialog.vue b/packages/frontend/src/components/MkUserSetupDialog.vue index c5e75276f0..096b88c309 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.vue @@ -23,7 +23,7 @@
{{ i18n.ts._initialAccountSetting.accountCreated }}
-
{{ i18n.ts._initialAccountSetting.letsFillYourProfile }}
+
{{ i18n.ts._initialAccountSetting.letsStartAccountSetup }}
{{ i18n.ts._initialAccountSetting.profileSetting }}
From 5c54e12099035a5dad080de5ed8ad4ec4e541158 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 08:32:25 +0900 Subject: [PATCH 06/10] =?UTF-8?q?fix(test):=20=E3=82=B8=E3=83=A7=E3=83=96?= =?UTF-8?q?=E3=82=AD=E3=83=A5=E3=83=BC=E3=82=92=E3=83=86=E3=82=B9=E3=83=88?= =?UTF-8?q?=E3=81=8C=E7=B5=82=E3=82=8F=E3=81=A3=E3=81=9F=E3=82=89=E5=81=9C?= =?UTF-8?q?=E6=AD=A2=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #10802 ? --- packages/backend/src/boot/common.ts | 2 ++ packages/backend/test/e2e/move.ts | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/boot/common.ts b/packages/backend/src/boot/common.ts index 279a1fe59d..45ded5495c 100644 --- a/packages/backend/src/boot/common.ts +++ b/packages/backend/src/boot/common.ts @@ -34,4 +34,6 @@ export async function jobQueue() { jobQueue.get(QueueProcessorService).start(); jobQueue.get(ChartManagementService).start(); + + return jobQueue; } diff --git a/packages/backend/test/e2e/move.ts b/packages/backend/test/e2e/move.ts index 4dd5cbb9dd..7d6c646090 100644 --- a/packages/backend/test/e2e/move.ts +++ b/packages/backend/test/e2e/move.ts @@ -10,6 +10,7 @@ import type { INestApplicationContext } from '@nestjs/common'; describe('Account Move', () => { let app: INestApplicationContext; + let jq: INestApplicationContext; let url: URL; let root: any; @@ -24,7 +25,7 @@ describe('Account Move', () => { beforeAll(async () => { app = await startServer(); - await jobQueue(); + jq = await jobQueue(); const config = loadConfig(); url = new URL(config.url); const connection = await initTestDb(false); @@ -39,7 +40,7 @@ describe('Account Move', () => { }, 1000 * 60 * 2); afterAll(async () => { - await app.close(); + await Promise.all([app.close(), jq.close()]); }); describe('Create Alias', () => { From aa28ddf762f88ca355c62edcbfa54e19a2b93c29 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 08:33:57 +0900 Subject: [PATCH 07/10] fix(frontend): fix e2e --- .../frontend/src/components/MkUserSetupDialog.Profile.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/frontend/src/components/MkUserSetupDialog.Profile.vue b/packages/frontend/src/components/MkUserSetupDialog.Profile.vue index 373e2cf8dc..adb8d43349 100644 --- a/packages/frontend/src/components/MkUserSetupDialog.Profile.vue +++ b/packages/frontend/src/components/MkUserSetupDialog.Profile.vue @@ -12,11 +12,11 @@ - + - + From 7feca2a60a4bf6e302ea7f0c79927524e7d0817d Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 08:48:42 +0900 Subject: [PATCH 08/10] fix(frontend): fix e2e --- cypress/e2e/basic.cy.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/cypress/e2e/basic.cy.js b/cypress/e2e/basic.cy.js index e5e3a466ac..73f6e7a0f0 100644 --- a/cypress/e2e/basic.cy.js +++ b/cypress/e2e/basic.cy.js @@ -181,6 +181,30 @@ describe('After user signed in', () => { cy.get('[data-cy-user-setup-continue]').click(); }); +}); + +describe('After user setup', () => { + beforeEach(() => { + cy.resetState(); + + // インスタンス初期セットアップ + cy.registerUser('admin', 'pass', true); + + // ユーザー作成 + cy.registerUser('alice', 'alice1234'); + + cy.login('alice', 'alice1234'); + + // アカウント初期設定ウィザード + cy.get('[data-cy-user-setup] [data-cy-modal-window-close]').click(); + cy.get('[data-cy-modal-dialog-ok]').click(); + }); + + afterEach(() => { + // テスト終了直前にページ遷移するようなテストケース(例えばアカウント作成)だと、たぶんCypressのバグでブラウザの内容が次のテストケースに引き継がれてしまう(例えばアカウントが作成し終わった段階からテストが始まる)。 + // waitを入れることでそれを防止できる + cy.wait(1000); + }); it('note', () => { cy.get('[data-cy-open-post-form]').should('be.visible'); From c8343b2750310bb3f48cc8ef2e4c50c9c7f98b83 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 09:11:44 +0900 Subject: [PATCH 09/10] [ci skip] New Crowdin updates (#10803) * New translations ja-JP.yml (Norwegian) * New translations ja-JP.yml (English) * New translations ja-JP.yml (German) * New translations ja-JP.yml (Norwegian) * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (Korean) * New translations ja-JP.yml (Japanese, Kansai) * New translations ja-JP.yml (Japanese, Kansai) --- locales/de-DE.yml | 23 +++++++++++++++++++++++ locales/en-US.yml | 23 +++++++++++++++++++++++ locales/ja-KS.yml | 41 +++++++++++++++++++++++++++++++++++++---- locales/ko-KR.yml | 14 +++++++++++++- locales/no-NO.yml | 28 ++++++++++++++++++++++++++++ 5 files changed, 124 insertions(+), 5 deletions(-) diff --git a/locales/de-DE.yml b/locales/de-DE.yml index 89a61d42d8..d678fadd4a 100644 --- a/locales/de-DE.yml +++ b/locales/de-DE.yml @@ -1036,7 +1036,20 @@ channelArchiveConfirmTitle: "{name} wirklich archivieren?" channelArchiveConfirmDescription: "Ein archivierter Kanal taucht nicht mehr in der Kanalliste oder in Suchergebnissen auf. Zudem können ihm keine Beiträge mehr hinzugefügt werden." thisChannelArchived: "Dieser Kanal wurde archiviert." displayOfNote: "Anzeige von Notizen" +initialAccountSetting: "Kontoeinrichtung" youFollowing: "Gefolgt" +_initialAccountSetting: + accountCreated: "Dein Konto wurde erfolgreich erstellt!" + letsFillYourProfile: "Lass uns zuerst dein Profil einrichten." + profileSetting: "Profileinstellungen" + theseSettingsCanEditLater: "Diese Einstellungen kannst du jederzeit ändern." + youCanEditMoreSettingsInSettingsPageLater: "In den Einstellungen findest du noch viele weitere Optionen. Schau dort später mal vorbei." + followUsers: "Folge zuerst ein paar Nutzern, um deine Chronik zu füllen." + pushNotificationDescription: "Durch die Aktivierung von Push-Benachrichtigungen kannst du von {name} Benachrichtigungen direkt auf dein Gerät erhalten." + initialAccountSettingCompleted: "Kontoeinrichtung abgeschlossen!" + haveFun: "Viel Spaß mit {name}!" + ifYouNeedLearnMore: "Besuche {link}, falls du mehr über {name} (Misskey) lernen möchtest." + skipAreYouSure: "Die Kontoeinrichtung wirklich überspringen?" _serverRules: description: "Eine Reihe von Regeln, die vor der Registrierung angezeigt werden. Eine Zusammenfassung der Nutzungsbedingungen anzuzeigen ist empfohlen." _accountMigration: @@ -1586,6 +1599,16 @@ _time: minute: "Minute(n)" hour: "Stunde(n)" day: "Tag(en)" +_timelineTutorial: + title: "Wie du Misskey verwendest" + step1_1: "Dieser Bildschirm ist die \"Chronik\". Hier werden alle \"Notizen\" von {name} angezeigt." + step1_2: "Es gibt einige verschiedene Chroniken. Beispielsweise werden in der \"Startseite\" alle Notizen von Nutzern, denen du folgst, angezeigt, und in der \"Lokalen Chronik\" werden Notizen aller Nutzer auf {name} angezeigt." + step2_1: "Lass uns als nächstes versuchen, eine Notiz zu schreiben. Dies kannst du tun, indem du auf den Knopf mit dem Stift-Icon drückst." + step2_2: "Stell dich den anderen vor oder schreibe einfach \"Hallo {name}!\", wenn du darauf keine Lust hast oder dir nichts einfällt." + step3_1: "Fertig mit dem Senden deiner ersten Notiz?" + step3_2: "Falls deine Notiz nun in deiner Chronik auftaucht, hast du alles richtig gemacht." + step4_1: "Notizen können zusätzlich mit \"Reaktionen\" ausgestattet werden." + step4_2: "Um eine Reaktion anzufügen, klicke auf das „+“-Symbol einer Notiz und wähle ein Emoji aus, mit dem du reagieren möchtest." _2fa: alreadyRegistered: "Du hast bereits ein Gerät für Zwei-Faktor-Authentifizierung registriert." registerTOTP: "Authentifizierungs-App registrieren" diff --git a/locales/en-US.yml b/locales/en-US.yml index f5533d03a1..ea91bcc0e5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -1036,7 +1036,20 @@ channelArchiveConfirmTitle: "Really archive {name}?" channelArchiveConfirmDescription: "An archived channel won't appear in the channel list or search results anymore. New posts can also not be added to it anymore." thisChannelArchived: "This channel has been archived." displayOfNote: "Note display" +initialAccountSetting: "Profile configuration" youFollowing: "Followed" +_initialAccountSetting: + accountCreated: "Your account was successfully created!" + letsFillYourProfile: "First, let's set up your profile." + profileSetting: "Profile settings" + theseSettingsCanEditLater: "You can always change these settings later." + youCanEditMoreSettingsInSettingsPageLater: "There are many more settings you can configure from the \"Settings\" page. Be sure to visit it later." + followUsers: "Try following some users that interest you to build up your timeline." + pushNotificationDescription: "Enabling push notifications will allow you to receive notifications from {name} directly on your device." + initialAccountSettingCompleted: "Profile configuration complete!" + haveFun: "Enjoy {name}!" + ifYouNeedLearnMore: "If you'd like to learn more about how to use {name} (Misskey), please visit {link}." + skipAreYouSure: "Really skip profile configuration?" _serverRules: description: "A set of rules to be displayed before registration. Setting a summary of the Terms of Service is recommended." _accountMigration: @@ -1586,6 +1599,16 @@ _time: minute: "Minute(s)" hour: "Hour(s)" day: "Day(s)" +_timelineTutorial: + title: "How to use Misskey" + step1_1: "This is the \"timeline\". All \"notes\" submitted on {name} will be chronologically displayed here." + step1_2: "There are a few different timelines. For example, the \"Home timeline\" will contain notes of users you follow, and the \"Local timeline\" will contain notes from all users of {name}." + step2_1: "Let's try posting a note next. You can do so by pressing the button with a pencil icon." + step2_2: "How about writing a self-introduction, or just \"Hello {name}!\" if you don't feel like it?" + step3_1: "Finished posting your first note?" + step3_2: "Your first note should now be displayed on your timeline." + step4_1: "You can also attach \"Reactions\" to notes." + step4_2: "To attach a reaction, press the \"+\" mark on a note and choose an emoji you'd like to react with." _2fa: alreadyRegistered: "You have already registered a 2-factor authentication device." registerTOTP: "Register authenticator app" diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index ee1c0f1138..512cce1452 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -26,7 +26,7 @@ otherSettings: "ほかの設定" openInWindow: "ウィンドウで開くで" profile: "プロフィール" timeline: "タイムライン" -noAccountDescription: "自己紹介はあらへん" +noAccountDescription: "自己紹介食ってもた" login: "ログイン" loggingIn: "ログインしよるで" logout: "ログアウト" @@ -38,9 +38,9 @@ addUser: "ユーザーを追加や" favorite: "お気に入り" favorites: "お気に入り" unfavorite: "やっぱ気に入らん" -favorited: "お気に入りに登録したで" +favorited: "お気に入りに入れたで" alreadyFavorited: "もうお気に入りに入れとるがな。" -cantFavorite: "アカン、お気に入り登録できへんかったで。" +cantFavorite: "アカン、お気に入りに入れれんかったわ。" pin: "ピン留めしとく" unpin: "やっぱピン留めせん" copyContent: "内容をコピー" @@ -462,7 +462,7 @@ uiLanguage: "UIの表示言語" aboutX: "{x}について" emojiStyle: "絵文字のスタイル" native: "ネイティブ" -disableDrawer: "メニューをドロワーで表示せぇへん" +disableDrawer: "メニューをドロワーで表示せえへん" showNoteActionsOnlyHover: "ノートの操作部をホバー時のみ表示するで" noHistory: "履歴はないわ。" signinHistory: "ログイン履歴" @@ -560,6 +560,7 @@ accountDeletedDescription: "このアカウントは削除されとるで。" menu: "メニュー" divider: "分割線" addItem: "項目を追加" +rearrange: "並び替え" relays: "リレー" addRelay: "リレーの追加" inboxUrl: "inboxのURL" @@ -1028,11 +1029,32 @@ pleaseConfirmBelowBeforeSignup: "このサーバーに登録する前に、下 pleaseAgreeAllToContinue: "続けるんやったら、全ての「せやな」にチェック入れてる必要があるで。" continue: "続けるで" preservedUsernames: "予約ユーザー名" +preservedUsernamesDescription: "予約しとくユーザー名を行ごとに挙げるで。ここで指定されたユーザー名はアカウント作るときに使えへんくなるけど、管理者は例外や。あと、もうあるアカウントも例外やな。" +createNoteFromTheFile: "このファイル使うてノート作るで" +archive: "アーカイブ" +channelArchiveConfirmTitle: "{name}をアーカイブしてええか?" +channelArchiveConfirmDescription: "アーカイブしたら、チャンネル一覧とか検索結果からなくなるし、新しく書き込みもできへんなるで。" +thisChannelArchived: "このチャンネル、アーカイブされとるで。" +displayOfNote: "ノートの表示" +initialAccountSetting: "初期設定" youFollowing: "フォロー中やで" +_initialAccountSetting: + accountCreated: "アカウント作り終わったで。" + letsFillYourProfile: "最初はあんたのプロフィールを設定しよか。" + profileSetting: "プロフィール設定" + theseSettingsCanEditLater: "この設定はあとから変えれるで。" + youCanEditMoreSettingsInSettingsPageLater: "これ以外にもいろんな設定を「設定」ページからできるで。後で確認してみてな。" + followUsers: "タイムラインを構築するために、気になるユーザーをフォローしてみ。" + pushNotificationDescription: "プッシュ通知を有効にすると{name}の通知をあんたのデバイスで受け取れるで。" + initialAccountSettingCompleted: "初期設定が終わったで。" + haveFun: "{name}、楽しんでな~" + ifYouNeedLearnMore: "{name}(Misskey)の使い方とかをよー知りたいんやったら{link}をみてな。" + skipAreYouSure: "初期設定飛ばすか?" _serverRules: description: "新規登録前に見せる、サーバーの簡潔なルールを設定すんで。内容は使うための決め事の要約とすることを推奨するわ。" _accountMigration: moveFrom: "別のアカウントからこのアカウントに引っ越す" + moveFromSub: "別のアカウントへエイリアスを作る" moveFromLabel: "引っ越し元のアカウント:" moveFromDescription: "別のアカウントからこのアカウントにフォロワーを引き継いで引っ越したかったら、ここでエイリアスを作っとく必要があるで。必ずお引っ越しを実行する前に作っとかなあかんで!引っ越し元のアカウントをこんな風に入力してくれへんか?:@person@instance.com" moveTo: "このアカウントをさらのアカウントに引っ越すで" @@ -1324,6 +1346,7 @@ _role: canInvite: "サーバー招待コードの発行" canManageCustomEmojis: "カスタム絵文字の管理" driveCapacity: "ドライブ容量" + alwaysMarkNsfw: "勝手にファイルにNSFWをくっつける" pinMax: "ノートのピン留めの最大数" antennaMax: "アンテナの作成可能数" wordMuteMax: "ワードミュートの最大文字数" @@ -1575,6 +1598,16 @@ _time: minute: "分" hour: "時間" day: "日" +_timelineTutorial: + title: "Misskeyってなんや?" + step1_1: "これは「タイムライン」や。{name}に投稿された「ノート」が順番に表示されるで。" + step1_2: "タイムラインには何個か種類があってな、例えば「ホームタイムライン」だったらあんたのフォローしてる人のノート、「ローカルタイムライン」には{name}全部のノートが流れてくるで。" + step2_1: "試しに、何かノートを投稿してみ。画面の鉛筆マークのボタンでフォームが開くで。" + step2_2: "最初のノートは、自己紹介とか「{name}始めてみたんや」とかがええと思うで。" + step3_1: "投稿できた?" + step3_2: "あんたのノートがタイムラインに出てきたら成功や。" + step4_1: "ノートには、「リアクション」を付けれるで。" + step4_2: "ツッコむんやったら、ノートの「+」マークを押して、好きな絵文字を選ぶで。" _2fa: alreadyRegistered: "もう設定終わっとるわ。" registerTOTP: "認証アプリの設定はじめる" diff --git a/locales/ko-KR.yml b/locales/ko-KR.yml index 0f2b9a740a..4a2fbe2a80 100644 --- a/locales/ko-KR.yml +++ b/locales/ko-KR.yml @@ -2,7 +2,7 @@ _lang_: "한국어" headlineMisskey: "노트로 연결되는 네트워크" introMisskey: "환영합니다! Misskey는 오픈 소스 분산형 마이크로 블로그 서비스입니다.\n'노트'를 작성해서 지금 일어나고 있는 일을 공유하거나, 당신만의 이야기를 모두에게 발신하세요📡\n'리액션' 기능으로 친구의 노트에 총알같이 반응을 추가할 수도 있습니다👍\n새로운 세계를 탐험해 보세요🚀" -poweredByMisskeyDescription: "{name}은(는) 오픈소스 플랫폼Misskey를 사용한 서버 중 하나입니다." +poweredByMisskeyDescription: "{name}은(는) 오픈소스 플랫폼 Misskey를 사용한 서버 가운데 하나입니다." monthAndDay: "{month}월 {day}일" search: "검색" notifications: "알림" @@ -1036,7 +1036,19 @@ channelArchiveConfirmTitle: "{name} 을(를) 아카이브하시겠습니까?" channelArchiveConfirmDescription: "아카이브한 채널은 채널 목록과 검색 결과에 표시되지 않으며, 채널에 새로운 노트를 작성할 수 없게 됩니다." thisChannelArchived: "이 채널은 아카이브되었습니다." displayOfNote: "노트 표시" +initialAccountSetting: "초기 설정" youFollowing: "팔로잉" +_initialAccountSetting: + accountCreated: "계정 생성이 완료되었습니다!" + letsFillYourProfile: "우선 나의 프로필을 설정해 보아요." + profileSetting: "프로필 설정" + theseSettingsCanEditLater: "이 설정들은 나중에도 변경할 수 있습니다." + youCanEditMoreSettingsInSettingsPageLater: "이 외에도 '설정' 페이지에서 다양한 설정을 나의 입맛에 맛게 조절할 수 있습니다. 꼭 확인해 보세요!" + followUsers: "관심사가 맞는 유저를 팔로우하여 타임라인을 가꾸어 봅시다." + pushNotificationDescription: "푸시 알림을 활성화하면 {name}의 알림을 나의 기기에서 받아볼 수 있게 됩니다." + initialAccountSettingCompleted: "초기 설정을 모두 마쳤습니다!" + haveFun: "{name}와 함께 즐거운 시간 보내세요!" + ifYouNeedLearnMore: "{name}(Misskey)의 사용 방법에 대해 자세히 알아보려면 {link}를 참고해 주세요." _serverRules: description: "회원 가입 이전에 간단하게 표시할 서버 규칙입니다. 이용 약관의 요약으로 구성하는 것을 추천합니다." _accountMigration: diff --git a/locales/no-NO.yml b/locales/no-NO.yml index 883b17c78f..f7f0d442d4 100644 --- a/locales/no-NO.yml +++ b/locales/no-NO.yml @@ -274,10 +274,16 @@ letsLookAtTimeline: "La oss se på tidslinje" cannotBeChangedLater: "Du kan ikke endre senere." likeOnly: "Bare liker" retryAllQueuesConfirmTitle: "Vil du prøve igjen akkurat nå?" +video: "Video" +videos: "Videoer" continue: "Fortsett" youFollowing: "Følger" +_initialAccountSetting: + theseSettingsCanEditLater: "Du kan endre disse innstillingene senere." _achievements: _types: + _notes100000: + flavor: "Du har jammen mye å si." _noteFavorited1: title: "Stjernekikker" _myNoteFavorited1: @@ -290,13 +296,28 @@ _achievements: title: "For mange venner" _followers10: title: "Følg meg!" + _followers100: + title: "Populær" + _postedAtLateNight: + flavor: "Det er på tide å gå til sengs." + _driveFolderCircularReference: + title: "Rundskrivreferanse" _reactWithoutRead: title: "Leste du det virkelig?" _clickedClickHere: title: "Klikk her" description: "Du har klikket her" + _justPlainLucky: + title: "Rett og slett heldig" + _setNameToSyuilo: + description: "Du har satt navnet ditt til \"syuilo\"" _loggedInOnBirthday: title: "Gratulerer med dagen" + _loggedInOnNewYearsDay: + title: "Godt nytt år" + _brainDiver: + title: "Brain Diver" + flavor: "Misskey-Misskey La-Tu-Ma" _role: options: "Alternativ" _priority: @@ -318,6 +339,7 @@ _registry: key: "Nøkkel" keys: "Nøkler" _aboutMisskey: + about: "Misskey er programvare med åpen kildekode som har blitt utviklet av syuilo siden 2014." translation: "Oversett Misskey" _instanceTicker: none: "Ikke vis" @@ -355,6 +377,8 @@ _time: minute: "Minutter" hour: "Timer" day: "Dager" +_timelineTutorial: + title: "Hvordan bruke Misskey" _2fa: renewTOTPCancel: "Avbryt" _weekday: @@ -374,14 +398,18 @@ _widgets: clock: "Klokke" photos: "Bilder" button: "Knapp" + aiscriptApp: "AiScript App" userList: "Brukerliste" _userList: chooseList: "Velg liste" _cw: show: "Vis mer" _poll: + noOnlyOneChoice: "Trenger minst to valger." + choiceN: "Valg {n}" noMore: "Du kan ikke legge til flere." deadlineTime: "Timer" + votesCount: "{n} stemmer" vote: "Stem" showResult: "Vis resultatet" voted: "Stemt" From e382f74bb38c5d78828c4ade2621dd96315c8da6 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 9 May 2023 09:17:17 +0900 Subject: [PATCH 10/10] [ci skip] 13.12.0 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 336b56ff53..003e907c5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ - --> -## 13.x.x (unreleased) +## 13.12.0 ### NOTE - Node.js 18.6.0以上が必要になりました diff --git a/package.json b/package.json index 1358b6f42b..5b1d21b815 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "13.12.0-beta.6", + "version": "13.12.0", "codename": "nasubi", "repository": { "type": "git",