From c98debc569cc3c2a3a1e3c5d5ea0cce7c1589702 Mon Sep 17 00:00:00 2001 From: naskya Date: Sun, 29 Oct 2023 20:09:26 +0900 Subject: [PATCH] Firefish v1.0.5-dev20 --- .config/example.yml | 3 + locales/ca-ES.yml | 2 +- locales/gl.yml | 2 +- locales/id-ID.yml | 11 + locales/it-IT.yml | 11 + locales/ja-KS.yml | 7 +- locales/pl-PL.yml | 67 +- locales/pt-PT.yml | 2 +- locales/pt_BR.yml | 2 +- neko/UPSTREAM_COMMIT_ID | 2 +- package.json | 2 +- packages/backend/package.json | 3 +- packages/backend/src/index.ts | 2 +- .../src/remote/activitypub/db-resolver.ts | 8 +- .../src/remote/activitypub/models/person.ts | 2 +- .../server/api/endpoints/i/2fa/key-done.ts | 12 +- .../server/api/endpoints/notes/translate.ts | 1 + packages/backend/src/server/nodeinfo.ts | 3 - packages/client/src/account.ts | 11 +- .../client/src/components/MkChatPreview.vue | 2 +- .../client/src/components/MkCropperDialog.vue | 2 +- packages/client/src/components/MkDialog.vue | 5 +- .../client/src/components/MkDrive.file.vue | 2 +- packages/client/src/components/MkFolder.vue | 4 +- .../client/src/components/MkFollowButton.vue | 2 +- packages/client/src/components/MkHeatmap.vue | 2 +- .../client/src/components/MkMediaList.vue | 6 +- packages/client/src/components/MkMention.vue | 2 +- .../client/src/components/MkModPlayer.vue | 93 +- packages/client/src/components/MkNote.vue | 2 +- .../client/src/components/MkNoteDetailed.vue | 2 +- packages/client/src/components/MkNoteSub.vue | 2 +- .../client/src/components/MkNotifications.vue | 2 +- packages/client/src/components/MkPostForm.vue | 9 +- .../MkPushNotificationAllowButton.vue | 3 +- .../client/src/components/MkQuoteButton.vue | 2 +- .../components/MkReactionsViewer.reaction.vue | 2 +- .../src/components/MkReactionsViewer.vue | 2 +- .../client/src/components/MkRenoteButton.vue | 2 +- packages/client/src/components/MkTimeline.vue | 2 +- .../src/components/MkTutorialDialog.vue | 2 +- .../client/src/components/MkVisibility.vue | 2 +- .../client/src/components/MkWaitingDialog.vue | 2 +- .../client/src/components/global/MkAcct.vue | 4 +- .../client/src/components/global/MkAvatar.vue | 2 +- .../src/components/global/MkPageHeader.vue | 5 +- .../src/components/global/MkUserName.vue | 2 +- packages/client/src/components/mfm.ts | 2 +- packages/client/src/components/page/page.vue | 2 +- packages/client/src/init.ts | 5 +- packages/client/src/navbar.ts | 2 +- packages/client/src/os.ts | 4 +- packages/client/src/pages/about-firefish.vue | 2 +- packages/client/src/pages/admin/_header_.vue | 7 +- packages/client/src/pages/admin/index.vue | 2 +- packages/client/src/pages/auth.vue | 3 +- packages/client/src/pages/channel.vue | 2 +- packages/client/src/pages/clip.vue | 2 +- packages/client/src/pages/explore.users.vue | 2 +- packages/client/src/pages/follow-requests.vue | 2 +- packages/client/src/pages/messaging/index.vue | 2 +- .../messaging/messaging-room.message.vue | 2 +- .../src/pages/messaging/messaging-room.vue | 2 +- packages/client/src/pages/miauth.vue | 3 +- packages/client/src/pages/note.vue | 2 +- .../src/pages/page-editor/page-editor.vue | 2 +- packages/client/src/pages/scratchpad.vue | 2 +- packages/client/src/pages/settings/2fa.vue | 4 +- .../src/pages/settings/account-info.vue | 2 +- .../client/src/pages/settings/accounts.vue | 2 +- packages/client/src/pages/settings/drive.vue | 2 +- packages/client/src/pages/settings/email.vue | 2 +- .../client/src/pages/settings/general.vue | 2 +- packages/client/src/pages/settings/index.vue | 3 +- .../src/pages/settings/instance-mute.vue | 2 +- .../client/src/pages/settings/migration.vue | 2 +- .../src/pages/settings/notifications.vue | 2 +- .../pages/settings/preferences-backups.vue | 2 +- .../client/src/pages/settings/privacy.vue | 2 +- .../client/src/pages/settings/profile.vue | 2 +- .../client/src/pages/settings/word-mute.vue | 2 +- packages/client/src/pages/theme-editor.vue | 2 +- packages/client/src/pages/timeline.vue | 2 +- packages/client/src/pages/user/home.vue | 4 +- packages/client/src/pages/user/index.vue | 2 +- packages/client/src/pizzax.ts | 2 +- packages/client/src/reactiveAccount.ts | 9 + packages/client/src/router.ts | 3 +- packages/client/src/scripts/aiscript/api.ts | 2 +- .../client/src/scripts/check-word-mute.ts | 6 +- packages/client/src/scripts/chiptune2.ts | 6 +- packages/client/src/scripts/get-note-menu.ts | 2 +- packages/client/src/scripts/get-user-menu.ts | 3 +- packages/client/src/scripts/please-login.ts | 2 +- packages/client/src/scripts/upload.ts | 2 +- .../client/src/scripts/use-note-capture.ts | 2 +- packages/client/src/stream.ts | 2 +- packages/client/src/theme-store.ts | 2 +- packages/client/src/ui/_common_/common.vue | 2 +- .../src/ui/_common_/navbar-for-mobile.vue | 3 +- packages/client/src/ui/_common_/navbar.vue | 3 +- packages/client/src/ui/_common_/sw-inject.ts | 3 +- packages/client/src/ui/deck.vue | 2 +- packages/client/src/ui/deck/tl-column.vue | 2 +- packages/client/src/ui/universal.vue | 5 +- packages/client/src/widgets/aichan.vue | 13 +- packages/client/src/widgets/aiscript.vue | 2 +- packages/client/src/widgets/button.vue | 2 +- packages/client/src/widgets/calendar.vue | 2 +- packages/firefish-js/LICENSE | 2 +- packages/firefish-js/README.md | 10 +- packages/firefish-js/api-extractor.json | 364 - packages/firefish-js/bun.lockb | Bin 0 -> 205415 bytes packages/firefish-js/etc/firefish-js.api.json | 9814 ----------------- packages/firefish-js/etc/firefish-js.api.md | 2839 ----- .../firefish-js/markdown/firefish-js.acct.md | 14 - ...firefish-js.api.apiclient._constructor_.md | 24 - .../firefish-js.api.apiclient.credential.md | 11 - .../firefish-js.api.apiclient.fetch.md | 11 - .../markdown/firefish-js.api.apiclient.md | 32 - .../firefish-js.api.apiclient.origin.md | 11 - .../firefish-js.api.apiclient.request.md | 57 - .../markdown/firefish-js.api.apierror.md | 17 - .../markdown/firefish-js.api.fetchlike.md | 22 - .../markdown/firefish-js.api.isapierror.md | 22 - .../firefish-js/markdown/firefish-js.api.md | 25 - ...fish-js.channelconnection._constructor_.md | 22 - .../firefish-js.channelconnection.channel.md | 11 - .../firefish-js.channelconnection.dispose.md | 15 - .../firefish-js.channelconnection.id.md | 11 - .../firefish-js.channelconnection.incount.md | 11 - .../markdown/firefish-js.channelconnection.md | 39 - .../firefish-js.channelconnection.name.md | 11 - .../firefish-js.channelconnection.outcount.md | 11 - .../firefish-js.channelconnection.send.md | 26 - .../firefish-js.channelconnection.stream.md | 11 - .../markdown/firefish-js.channels.md | 143 - .../markdown/firefish-js.endpoints.md | 1911 ---- .../markdown/firefish-js.entities.ad.md | 11 - .../firefish-js.entities.announcement.md | 21 - .../markdown/firefish-js.entities.antenna.md | 29 - .../markdown/firefish-js.entities.app.md | 11 - .../firefish-js.entities.authsession.md | 17 - .../markdown/firefish-js.entities.blocking.md | 18 - .../markdown/firefish-js.entities.channel.md | 15 - .../markdown/firefish-js.entities.clip.md | 11 - .../firefish-js.entities.customemoji.md | 17 - .../firefish-js.entities.datestring.md | 11 - ...sh-js.entities.detailedinstancemetadata.md | 15 - .../firefish-js.entities.drivefile.md | 26 - .../firefish-js.entities.drivefolder.md | 11 - .../firefish-js.entities.following.md | 18 - ...-js.entities.followingfolloweepopulated.md | 15 - ...-js.entities.followingfollowerpopulated.md | 15 - .../firefish-js.entities.followrequest.md | 17 - .../firefish-js.entities.gallerypost.md | 11 - .../markdown/firefish-js.entities.id.md | 11 - .../markdown/firefish-js.entities.instance.md | 40 - .../firefish-js.entities.instancemetadata.md | 15 - ...refish-js.entities.liteinstancemetadata.md | 46 - .../markdown/firefish-js.entities.md | 51 - .../firefish-js.entities.medetailed.md | 40 - .../firefish-js.entities.messagingmessage.md | 27 - .../markdown/firefish-js.entities.note.md | 51 - .../firefish-js.entities.notefavorite.md | 18 - .../firefish-js.entities.notereaction.md | 18 - .../firefish-js.entities.notification.md | 82 - .../firefish-js.entities.origintype.md | 11 - .../markdown/firefish-js.entities.page.md | 33 - .../firefish-js.entities.pageevent.md | 19 - .../firefish-js.entities.serverinfo.md | 24 - .../markdown/firefish-js.entities.signin.md | 19 - .../markdown/firefish-js.entities.stats.md | 19 - .../markdown/firefish-js.entities.user.md | 13 - .../firefish-js.entities.userdetailed.md | 56 - .../firefish-js.entities.usergroup.md | 11 - .../markdown/firefish-js.entities.userlist.md | 18 - .../markdown/firefish-js.entities.userlite.md | 35 - .../firefish-js.entities.usersorting.md | 17 - .../markdown/firefish-js.ffvisibility.md | 11 - packages/firefish-js/markdown/firefish-js.md | 43 - .../markdown/firefish-js.mutednotereasons.md | 16 - .../markdown/firefish-js.notevisibilities.md | 16 - .../markdown/firefish-js.notificationtypes.md | 24 - .../markdown/firefish-js.permissions.md | 11 - .../firefish-js.stream._constructor_.md | 30 - .../markdown/firefish-js.stream.close.md | 15 - .../firefish-js.stream.disconnecttochannel.md | 22 - .../markdown/firefish-js.stream.md | 36 - ...refish-js.stream.removesharedconnection.md | 22 - ...sh-js.stream.removesharedconnectionpool.md | 22 - .../markdown/firefish-js.stream.send.md | 23 - .../markdown/firefish-js.stream.state.md | 11 - .../markdown/firefish-js.stream.usechannel.md | 28 - packages/firefish-js/markdown/index.md | 12 - packages/firefish-js/package.json | 32 +- packages/firefish-js/src/streaming.ts | 9 +- pnpm-lock.yaml | 1755 ++- 198 files changed, 1092 insertions(+), 18003 deletions(-) create mode 100644 packages/client/src/reactiveAccount.ts delete mode 100644 packages/firefish-js/api-extractor.json create mode 100755 packages/firefish-js/bun.lockb delete mode 100644 packages/firefish-js/etc/firefish-js.api.json delete mode 100644 packages/firefish-js/etc/firefish-js.api.md delete mode 100644 packages/firefish-js/markdown/firefish-js.acct.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.credential.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.fetch.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.origin.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apiclient.request.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.apierror.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.fetchlike.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.isapierror.md delete mode 100644 packages/firefish-js/markdown/firefish-js.api.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.channel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.dispose.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.id.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.incount.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.name.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.outcount.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.send.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channelconnection.stream.md delete mode 100644 packages/firefish-js/markdown/firefish-js.channels.md delete mode 100644 packages/firefish-js/markdown/firefish-js.endpoints.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.ad.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.announcement.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.antenna.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.app.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.authsession.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.blocking.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.channel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.clip.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.customemoji.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.datestring.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.detailedinstancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.drivefile.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.drivefolder.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.following.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followingfolloweepopulated.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followingfollowerpopulated.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.followrequest.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.gallerypost.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.id.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.instance.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.instancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.liteinstancemetadata.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.medetailed.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.messagingmessage.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.note.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notefavorite.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notereaction.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.notification.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.origintype.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.page.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.pageevent.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.serverinfo.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.signin.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.stats.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.user.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userdetailed.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.usergroup.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userlist.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.userlite.md delete mode 100644 packages/firefish-js/markdown/firefish-js.entities.usersorting.md delete mode 100644 packages/firefish-js/markdown/firefish-js.ffvisibility.md delete mode 100644 packages/firefish-js/markdown/firefish-js.md delete mode 100644 packages/firefish-js/markdown/firefish-js.mutednotereasons.md delete mode 100644 packages/firefish-js/markdown/firefish-js.notevisibilities.md delete mode 100644 packages/firefish-js/markdown/firefish-js.notificationtypes.md delete mode 100644 packages/firefish-js/markdown/firefish-js.permissions.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream._constructor_.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.close.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.disconnecttochannel.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.removesharedconnection.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.removesharedconnectionpool.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.send.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.state.md delete mode 100644 packages/firefish-js/markdown/firefish-js.stream.usechannel.md delete mode 100644 packages/firefish-js/markdown/index.md diff --git a/.config/example.yml b/.config/example.yml index f269ff455..a79683a62 100644 --- a/.config/example.yml +++ b/.config/example.yml @@ -171,6 +171,9 @@ reservedUsernames: [ # Proxy remote files (default: false) #proxyRemoteFiles: true +# Use authorized fetch for outgoing requests +signToActivityPubGet: true + #allowedPrivateNetworks: [ # '127.0.0.1/32' #] diff --git a/locales/ca-ES.yml b/locales/ca-ES.yml index 341b66cb3..ce6a70199 100644 --- a/locales/ca-ES.yml +++ b/locales/ca-ES.yml @@ -1550,7 +1550,7 @@ troubleshooting: Resolució de problemes learnMore: Més informació misskeyUpdated: Firefish s'ha actualitzat! translate: Tradueix -translatedFrom: Traduït desde {x} +translatedFrom: Traduït del {x} aiChanMode: Ai-chan a la interfície d'usuari clàssica keepCw: Mantenir els avisos de contingut pubSub: Comptes Pub/Sub diff --git a/locales/gl.yml b/locales/gl.yml index 3b8d60181..eada0c213 100644 --- a/locales/gl.yml +++ b/locales/gl.yml @@ -1,4 +1,4 @@ -_lang_: Inglés +_lang_: Galego introFirefish: Benvida! Firefish é unha plataforma de medios sociais de código aberto, descentralizada e gratuíta para sempre!🚀 monthAndDay: '{day}/{month}' diff --git a/locales/id-ID.yml b/locales/id-ID.yml index 9bd99d40c..3c3d068d9 100644 --- a/locales/id-ID.yml +++ b/locales/id-ID.yml @@ -2181,3 +2181,14 @@ openServerInfo: Tampilkan informasi server dengan mengeklik ticker server di seb kiriman vibrate: Putar getaran clickToShowPatterns: Klik untuk menampilkan pola modul +iconSet: Set ikon +_iconSets: + fill: Penuh + regular: Reguler + bold: Tebal + duotone: Duotone + light: Tipis +reactions: Reaksi +replies: Balasan +quotes: Kutipan +renotes: Postingan ulang diff --git a/locales/it-IT.yml b/locales/it-IT.yml index dc9da6dc7..a4d3f5ba4 100644 --- a/locales/it-IT.yml +++ b/locales/it-IT.yml @@ -2169,3 +2169,14 @@ openServerInfo: Mostra informazioni sul server cliccando sul riquadro del server un post vibrate: Abilita la vibrazione clickToShowPatterns: Clicca per vedere i pattern del modulo +iconSet: Set di icone +_iconSets: + fill: Con riempimento + regular: Regolare + bold: Grassetto + duotone: Con due toni + light: Sottile +reactions: Reazioni +replies: Risposte +quotes: Citazioni +renotes: Boost diff --git a/locales/ja-KS.yml b/locales/ja-KS.yml index c76808436..4f77592dc 100644 --- a/locales/ja-KS.yml +++ b/locales/ja-KS.yml @@ -1444,7 +1444,12 @@ _tutorial: step4_1: 投稿しとーみ step5_1: タイムライン! 文字と写真の宝石箱や~ step5_2: うちのサーバーでは{timelines}種類のタイムラインをご用意しとります。 - step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。うちはそこまで喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。 + step4_2: 最初は{introduction}に投稿したり、シンプルに「ここは賑やかどすなぁ。ウチはそんなに喋れまへんが、どうぞよろしゅうに」などと投稿しはる方もいてます。 + step5_7: グローバル{icon}タイムラインでは、接続しとるそこいらのサーバーからアレがガーッ流れてきてえらいこっちゃで。 + step5_6: おすすめ{icon}タイムラインでは、うちの管理人がばりおすすめしとるサーバーの投稿を表示させとうよ。 + step5_5: ソーシャル{icon}タイムラインでは、ホームタイムラインとローカルタイムラインの投稿が両方見られてホンマお得やわぁ。 + step5_3: ホーム{icon}タイムラインでは、あんたはんがフォローしてはる兄ちゃんらの投稿が見られまんねん。 + step5_4: ローカル{icon}タイムラインでは、このサーバーにおる人らの投稿を見られますわ。 _postForm: _placeholders: b: なんかおましたか? diff --git a/locales/pl-PL.yml b/locales/pl-PL.yml index 5b83762cd..1369babee 100644 --- a/locales/pl-PL.yml +++ b/locales/pl-PL.yml @@ -1,6 +1,6 @@ _lang_: "Polski" -headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która zawsze - będzie darmowa! 🚀" +headlineFirefish: "Otwartoźródłowa, zdecentralizowana sieć społecznościowa, która + zawsze będzie darmowa! 🚀" introFirefish: "Hej! Firefish to otwartoźródłowa oraz zdecentralizowana sieć społecznościowa, która zawsze będzie darmowa! 🚀" monthAndDay: "{month}-{day}" @@ -94,7 +94,7 @@ privacy: "Prywatność" makeFollowManuallyApprove: "Prośby o możliwość obserwacji wymagają zatwierdzenia" defaultNoteVisibility: "Domyślna widoczność" follow: "Obserwuj" -followRequest: "Poproś o możliwość obserwacji" +followRequest: "Poproś o możliwość obserwowania" followRequests: "Prośby o możliwość obserwacji" unfollow: "Przestań obserwować" followRequestPending: "Oczekująca prośba o możliwość obserwacji" @@ -147,9 +147,9 @@ cacheRemoteFilesDescription: "Gdy ta opcja jest wyłączona, zdalne pliki są ł bezpośrednio ze zdalnego serwera. Wyłączenie tej opcji zmniejszy użycie powierzchni dyskowej, ale zwiększy transfer, ponieważ miniaturki nie będą generowane." flagAsBot: "To konto jest botem" -flagAsBotDescription: "Jeżeli ten kanał jest kontrolowany przez jakiś program, ustaw - tę opcję. Jeżeli włączona, będzie działać jako flaga informująca innych programistów, - aby zapobiegać nieskończonej interakcji z różnymi botami i dostosowywać wewnętrzne +flagAsBotDescription: "Ustaw tę opcję ten jeśli kanał kontrolowany jest przez jakiś + program. Po włączeniu, będzie działać jako flaga informująca innych programistów, + aby zapobiegać nieskończonej interakcji pomiędzy innymi botami i dostosowywać wewnętrzne systemy Firefish, traktując konto jako bota." flagAsCat: "Czy jesteś kotem? 😺" flagAsCatDescription: "Dostaniesz kocie uszka, oraz będziesz mówić jak kot!" @@ -158,7 +158,7 @@ autoAcceptFollowed: "Automatycznie przyjmuj prośby o możliwość obserwacji od których obserwujesz" addAccount: "Dodaj konto" loginFailed: "Nie udało się zalogować" -showOnRemote: "Zobacz na zdalnym serwerze" +showOnRemote: "Zobacz oryginalną treść" general: "Ogólne" wallpaper: "Tapeta" setWallpaper: "Ustaw tapetę" @@ -211,7 +211,7 @@ noUsers: "Brak użytkowników" editProfile: "Edytuj profil" noteDeleteConfirm: "Czy na pewno chcesz usunąć ten wpis?" pinLimitExceeded: "Nie możesz przypiąć więcej wpisów" -intro: "Zakończono instalację Firefish! Utwórz konto administratora." +intro: "Zakończono instalację Firefish! Utwórz teraz konto administratora." done: "Gotowe" processing: "Przetwarzanie" preview: "Podgląd" @@ -299,11 +299,11 @@ emptyDrive: "Dysk jest pusty" emptyFolder: "Ten katalog jest pusty" unableToDelete: "Nie można usunąć" inputNewFileName: "Wprowadź nową nazwę pliku" -inputNewDescription: "Proszę wpisać nowy napis" +inputNewDescription: "Podaj nowy napis" inputNewFolderName: "Wprowadź nową nazwę katalogu" circularReferenceFolder: "Katalog docelowy jest podkatalogiem katalogu, który chcesz przenieść." -hasChildFilesOrFolders: "Ponieważ ten katalog nie jest pusty, nie może być usunięty." +hasChildFilesOrFolders: "Katalog nie może być usunięty ponieważ nie jest pusty." copyUrl: "Skopiuj adres URL" rename: "Zmień nazwę" avatar: "Awatar" @@ -578,8 +578,8 @@ disablePlayer: "Zamknij odtwarzacz wideo" expandTweet: "Rozwiń tweet" themeEditor: "Edytor motywu" description: "Opis" -describeFile: "Dodaj podpis" -enterFileDescription: "Wprowadź napis" +describeFile: "Dodaj opis" +enterFileDescription: "Wprowadź opis" author: "Autor" leaveConfirm: "Są niezapisane zmiany. Czy chcesz je odrzucić?" manage: "Zarządzanie" @@ -616,7 +616,7 @@ emptyToDisableSmtpAuth: "Pozostaw adres e-mail i hasło puste, aby wyłączyć w SMTP" smtpSecureInfo: "Wyłącz, jeżeli używasz STARTTLS" testEmail: "Przetestuj dostarczanie wiadomości e-mail" -wordMute: "Wyciszenie słowa" +wordMute: "Wyciszenie słów i języków" instanceMute: "Wyciszenie serwera" userSaysSomething: "{name} powiedział* coś" makeActive: "Aktywuj" @@ -691,8 +691,7 @@ no: "Nie" driveFilesCount: "Liczba plików na dysku" driveUsage: "Użycie przestrzeni dyskowej" noCrawle: "Odrzuć indeksowanie przez crawlery" -noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twojego profilu, - wpisów, stron itd." +noCrawleDescription: "Proś wyszukiwarki internetowe, aby nie indeksowały Twoich treści." lockedAccountInfo: "Dopóki nie ustawisz widoczności wpisu na \"Obserwujący\", twoje wpisy będą mogli widzieć wszyscy, nawet jeśli ustawisz manualne zatwierdzanie obserwujących." alwaysMarkSensitive: "Oznacz domyślnie jako NSFW" @@ -759,7 +758,7 @@ useReactionPickerForContextMenu: "Otwórz wybornik reakcji prawym kliknięciem" typingUsers: "{users} pisze/ą" jumpToSpecifiedDate: "Przejdź do określonej daty" showingPastTimeline: "Obecnie wyświetla starą oś czasu" -clear: "Wróć" +clear: "Wyczyść" markAllAsRead: "Oznacz wszystkie jako przeczytane" goBack: "Wróć" unlikeConfirm: "Na pewno chcesz usunąć polubienie?" @@ -800,7 +799,7 @@ gallery: "Galeria" recentPosts: "Ostatnie wpisy" popularPosts: "Popularne wpisy" shareWithNote: "Udostępnij z wpisem" -ads: "Reklamy" +ads: "Banery" expiration: "Ankieta kończy się" memo: "Notatki" priority: "Priorytet" @@ -852,7 +851,7 @@ ffVisibility: "Widoczność obserwowanych/obserwujących" ffVisibilityDescription: "Pozwala skonfigurować, kto może zobaczyć, kogo obserwujesz i kto Cię obserwuje." continueThread: "Kontynuuj wątek" -deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie Twojego konta. Kontynuować?" +deleteAccountConfirm: "Spowoduje to nieodwracalne usunięcie tego konta. Kontynuować?" incorrectPassword: "Nieprawidłowe hasło." voteConfirm: "Potwierdzić swój głos na \"{choice}\"?" hide: "Ukryj" @@ -1001,8 +1000,8 @@ _nsfw: force: "Ukrywaj wszystkie media" _mfm: cheatSheet: "Ściąga MFM" - intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key (w - tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz + intro: "MFM jest językiem składniowym używanym przez m.in. Firefish, forki *key + (w tym Firefish), oraz Akkomę, który może być użyty w wielu miejscach. Tu znajdziesz listę wszystkich możliwych elementów składni MFM." dummy: "Firefish rozszerza świat Fediwersum" mention: "Wspomnij" @@ -1250,7 +1249,7 @@ _tutorial: innej połączonej instancji." step6_1: "Więc, czym to jest to miejsce?" step6_2: "Cóż, nie dołączył*ś po prostu do Firefish. Dołączył*ś do portalu do Fediverse, - połączonej sieci tysięcy serwerów, zwanych instancjami." + sieci tysięcy połączonych ze sobą serwerów, zwanych instancjami." step6_3: "Każdy serwer działa w inny sposób, i nie wszystkie serwery używają Firefish. Ten jednak używa! Jest to trochę skomplikowane, ale w krótkim czasie załapiesz o co chodzi." @@ -1816,8 +1815,8 @@ instanceSecurity: Bezpieczeństwo serwera privateMode: Tryb prywatny allowedInstances: Dopuszczone serwery recommended: Polecane -allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji, - każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego). +allowedInstancesDescription: Hosty serwerów, które mają być dopuszczone do federacji. + Każdy oddzielony nowym wierszem (dotyczy tylko trybu prywatnego). seperateRenoteQuote: Oddziel przyciski podbicia i cytowania refreshInterval: 'Częstotliwość aktualizacji ' slow: Wolna @@ -1916,14 +1915,14 @@ sendErrorReportsDescription: "Gdy ta opcja jest włączona, szczegółowe inform błędach będą udostępnianie z Firefish gdy wystąpi problem, pomagając w ulepszaniu Firefish.\nZawrze to informacje takie jak wersja twojego systemu operacyjnego, przeglądarki, Twoja aktywność na Firefish itd." -privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z białej listy mogą federować - się z twoim serwerem. Wszystkie posty będą ukryte publicznie. +privateModeInfo: Gdy ta opcja jest włączona, tylko serwery z listy serwerów dozwolonych + mogą federować się z twoim serwerem. Żadne posty nie będą publicznie dostępne. oneHour: Godzina oneDay: Dzień oneWeek: Tydzień recommendedInstances: Polecane serwery recommendedInstancesDescription: Polecane serwery, mające pojawić się w odpowiedniej - osi czasu, oddzielane nowymi liniami. NIE dodawaj “https://”, TYLKO samą domenę. + osi czasu, oddzielane nowymi liniami. rateLimitExceeded: Przekroczono ratelimit cropImage: Kadruj zdjęcie cropImageAsk: Czy chcesz skadrować to zdjęcie? @@ -1948,7 +1947,7 @@ activeEmailValidationDescription: Włącza ściślejszą walidację adresów e-m obejmuje sprawdzanie adresów jednorazowych oraz tego, czy rzeczywiście można się z nim komunikować. Jeśli wyłączone, walidowany jest tylko format wiadomości e-mail. shuffle: Losuj -showAds: Pokazuj reklamy +showAds: Pokazuj banery enterSendsMessage: Wciśnij Enter w komunikatorze, by wysłać wiadomość (domyślnie – Ctrl + Enter) adminCustomCssWarn: To ustawienie powinno być używane tylko pod warunkiem, że wiesz @@ -2012,7 +2011,7 @@ silencedInstancesDescription: Wypisz nazwy hostów serwerów, które chcesz wyci cannotUploadBecauseExceedsFileSizeLimit: Ten plik nie mógł być przesłany, ponieważ jego wielkość przekracza dozwolony limit. sendModMail: Wyślij Powiadomienie Moderacyjne -searchPlaceholder: Szukaj Firefish +searchPlaceholder: Szukaj w Firefish jumpToPrevious: Przejdź do poprzedniej sekcji listsDesc: Listy umożliwiają tworzenie osi czasu z określonymi użytkownikami. Dostęp do nich można uzyskać na stronie osi czasu. @@ -2028,3 +2027,15 @@ newer: nowsze older: starsze cw: Ostrzeżenie zawartości removeReaction: Usuń reakcję +reactions: Reakcje +clipsDesc: Spinki to skategoryzowane zakładki, które można udostępniać. Możesz utworzyć + spinkę dla każdego wpisu w menu wpisu. +swipeOnMobile: Pozwalaj na przeciąganie pomiędzy stronami +image: Obrazek +xl: XL +replies: Odpowiedzi +video: Film +quotes: Cytaty +clickToShowPatterns: Kliknij aby pokazać wzory modułów +renotes: Boosty +audio: Dźwięk diff --git a/locales/pt-PT.yml b/locales/pt-PT.yml index cb5ebabdc..092b0ac75 100644 --- a/locales/pt-PT.yml +++ b/locales/pt-PT.yml @@ -1,4 +1,4 @@ -_lang_: "Português" +_lang_: "Português (Portugal)" headlineFirefish: "Uma rede ligada por notas" introFirefish: "Bem-vindo! Firefish é um serviço de microblogue descentralizado de código aberto, gratuito para sempre! 🚀" diff --git a/locales/pt_BR.yml b/locales/pt_BR.yml index f8fb65118..deaa2f32d 100644 --- a/locales/pt_BR.yml +++ b/locales/pt_BR.yml @@ -1,6 +1,6 @@ +_lang_: Português (Brasil) username: Nome de usuário ok: OK -_lang_: Inglês headlineFirefish: Uma plataforma de mídia social descentralizada e de código aberto que é gratuita para sempre! 🚀 search: Pesquisar diff --git a/neko/UPSTREAM_COMMIT_ID b/neko/UPSTREAM_COMMIT_ID index 429cb4480..93f6cb6be 100644 --- a/neko/UPSTREAM_COMMIT_ID +++ b/neko/UPSTREAM_COMMIT_ID @@ -1 +1 @@ -0a44d0652244240aa50fbae3ea88c616c8e1c136 +3b3320d5323648a5ad9a9c3e12561613e3b89a6c diff --git a/package.json b/package.json index dbe54fb93..62e01284d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "firefish", - "version": "1.0.5-dev19", + "version": "1.0.5-dev20", "codename": "aqua", "repository": { "type": "git", diff --git a/packages/backend/package.json b/packages/backend/package.json index 06920aec3..e567088a3 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -47,6 +47,7 @@ "blurhash": "2.0.5", "bull": "4.11.3", "cacheable-lookup": "TheEssem/cacheable-lookup", + "cbor-x": "^1.5.4", "chalk": "5.3.0", "chalk-template": "0.4.0", "chokidar": "^3.5.3", @@ -86,7 +87,7 @@ "meilisearch": "0.34.1", "mfm-js": "0.23.3", "mime-types": "2.1.35", - "msgpackr": "1.9.7", + "msgpackr": "^1.9.9", "multer": "1.4.4-lts.1", "native-utils": "link:native-utils", "nested-property": "4.0.0", diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 278f630f7..33b5826a7 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -1,5 +1,5 @@ /** - * Misskey Entry Point! + * Firefish Entry Point */ import { EventEmitter } from "node:events"; diff --git a/packages/backend/src/remote/activitypub/db-resolver.ts b/packages/backend/src/remote/activitypub/db-resolver.ts index 39f3c6e43..a753606a1 100644 --- a/packages/backend/src/remote/activitypub/db-resolver.ts +++ b/packages/backend/src/remote/activitypub/db-resolver.ts @@ -70,7 +70,7 @@ export function parseUri(value: string | IObject): UriParseResult { export default class DbResolver { /** - * AP Note => Misskey Note in DB + * AP Note => Firefish Note in DB */ public async getNoteFromApId(value: string | IObject): Promise { const parsed = parseUri(value); @@ -114,7 +114,7 @@ export default class DbResolver { } /** - * AP Person => Misskey User in DB + * AP Person => Firefish User in DB */ public async getUserFromApId( value: string | IObject, @@ -147,7 +147,7 @@ export default class DbResolver { } /** - * AP KeyId => Misskey User and Key + * AP KeyId => Firefish User and Key */ public async getAuthUserFromKeyId(keyId: string): Promise<{ user: CacheableRemoteUser; @@ -181,7 +181,7 @@ export default class DbResolver { } /** - * AP Actor id => Misskey User and Key + * AP Actor id => Firefish User and Key */ public async getAuthUserFromApId(uri: string): Promise<{ user: CacheableRemoteUser; diff --git a/packages/backend/src/remote/activitypub/models/person.ts b/packages/backend/src/remote/activitypub/models/person.ts index f8f22b01a..52554de3d 100644 --- a/packages/backend/src/remote/activitypub/models/person.ts +++ b/packages/backend/src/remote/activitypub/models/person.ts @@ -452,7 +452,7 @@ export async function updatePerson( const emojiNames = emojis.map((emoji) => emoji.name); - const { fields } = analyzeAttachments(person.attachment || []); + const fields = analyzeAttachments(person.attachment || []); const tags = extractApHashtags(person.tag) .map((tag) => normalizeForSearch(tag)) diff --git a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts index 32f972d0b..9ea437b03 100644 --- a/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts +++ b/packages/backend/src/server/api/endpoints/i/2fa/key-done.ts @@ -1,4 +1,4 @@ -import { decode } from "msgpackr"; +import { decode } from "cbor-x"; import define from "../../../define.js"; import { UserProfiles, @@ -62,7 +62,7 @@ export default define(meta, paramDef, async (ps, user) => { const clientDataJSONHash = hash(Buffer.from(ps.clientDataJSON, "utf-8")); - const attestation = decode(Buffer.from(ps.attestationObject, "utf-8")); + const attestation = decode(Buffer.from(ps.attestationObject, "hex")); const rpIdHash = attestation.authData.slice(0, 32); if (!rpIdHashReal.equals(rpIdHash)) { @@ -79,7 +79,13 @@ export default define(meta, paramDef, async (ps, user) => { const credentialIdLength = authData.readUInt16BE(53); const credentialId = authData.slice(55, 55 + credentialIdLength); const publicKeyData = authData.slice(55 + credentialIdLength); - const publicKey: Map = decode(publicKeyData); + const publicKey: Map = new Map( + Object.entries(decode(publicKeyData)).map(([key, value]) => [ + Number(key), + value, + ]), + ); + if (publicKey.get(3) !== -7) { throw new Error("alg mismatch"); } diff --git a/packages/backend/src/server/api/endpoints/notes/translate.ts b/packages/backend/src/server/api/endpoints/notes/translate.ts index 1e90fb617..d46a81934 100644 --- a/packages/backend/src/server/api/endpoints/notes/translate.ts +++ b/packages/backend/src/server/api/endpoints/notes/translate.ts @@ -64,6 +64,7 @@ export default define(meta, paramDef, async (ps, user) => { let targetLang = ps.targetLang; if (targetLang.includes("-")) targetLang = targetLang.split("-")[0]; + if (targetLang.includes("_")) targetLang = targetLang.split("_")[0]; if (instance.libreTranslateApiUrl != null) { const jsonBody = { diff --git a/packages/backend/src/server/nodeinfo.ts b/packages/backend/src/server/nodeinfo.ts index 2d0144652..a1d519f3e 100644 --- a/packages/backend/src/server/nodeinfo.ts +++ b/packages/backend/src/server/nodeinfo.ts @@ -89,9 +89,6 @@ const nodeinfo2 = async () => { enableRecaptcha: meta.enableRecaptcha, maxNoteTextLength: MAX_NOTE_TEXT_LENGTH, maxCaptionTextLength: MAX_CAPTION_TEXT_LENGTH, - enableTwitterIntegration: meta.enableTwitterIntegration, - enableGithubIntegration: meta.enableGithubIntegration, - enableDiscordIntegration: meta.enableDiscordIntegration, enableEmail: meta.enableEmail, enableServiceWorker: meta.enableServiceWorker, proxyAccountName: proxyAccount ? proxyAccount.username : null, diff --git a/packages/client/src/account.ts b/packages/client/src/account.ts index a4ee4f9f6..d4018c721 100644 --- a/packages/client/src/account.ts +++ b/packages/client/src/account.ts @@ -6,17 +6,11 @@ import { apiUrl } from "@/config"; import { alert, api, popup, popupMenu, waiting } from "@/os"; import { reloadChannel, unisonReload } from "@/scripts/unison-reload"; import icon from "@/scripts/icon"; +import { $i } from "@/reactiveAccount"; // TODO: 他のタブと永続化されたstateを同期 -type Account = firefish.entities.MeDetailed; - -const accountData = localStorage.getItem("account"); - -// TODO: 外部からはreadonlyに -export const $i = accountData - ? reactive(JSON.parse(accountData) as Account) - : null; +export type Account = firefish.entities.MeDetailed; export const iAmModerator = $i != null && ($i.isAdmin || $i.isModerator); export const iAmAdmin = $i?.isAdmin; @@ -101,7 +95,6 @@ function fetchAccount(token: string): Promise { if (res.error.id === "a8c724b3-6e9c-4b46-b1a8-bc3ed6258370") { showSuspendedDialog(); signout(); - return; } else { alert({ type: "error", diff --git a/packages/client/src/components/MkChatPreview.vue b/packages/client/src/components/MkChatPreview.vue index d4c8dfaa7..27db671bd 100644 --- a/packages/client/src/components/MkChatPreview.vue +++ b/packages/client/src/components/MkChatPreview.vue @@ -66,7 +66,7 @@ import * as Acct from "firefish-js/built/acct"; import { i18n } from "@/i18n"; import { acct } from "@/filters/user"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; const getAcct = Acct.toString; diff --git a/packages/client/src/components/MkCropperDialog.vue b/packages/client/src/components/MkCropperDialog.vue index c85cdf941..1c5669933 100644 --- a/packages/client/src/components/MkCropperDialog.vue +++ b/packages/client/src/components/MkCropperDialog.vue @@ -42,7 +42,7 @@ import Cropper from "cropperjs"; import tinycolor from "tinycolor2"; import XModalWindow from "@/components/MkModalWindow.vue"; import * as os from "@/os"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; import { apiUrl, url } from "@/config"; import { query } from "@/scripts/url"; diff --git a/packages/client/src/components/MkDialog.vue b/packages/client/src/components/MkDialog.vue index 216fb4500..79439709e 100644 --- a/packages/client/src/components/MkDialog.vue +++ b/packages/client/src/components/MkDialog.vue @@ -19,7 +19,10 @@ > { const isModule = (file: firefish.entities.DriveFile): boolean => { return ( - FILE_TYPE_TRACKER_MODULES.some((type) => { - return file.type === type; - }) || + FILE_TYPE_TRACKER_MODULES.includes(file.type) || FILE_EXT_TRACKER_MODULES.some((ext) => { return file.name.toLowerCase().endsWith("." + ext); }) diff --git a/packages/client/src/components/MkMention.vue b/packages/client/src/components/MkMention.vue index fa8e2a871..b113d9cb1 100644 --- a/packages/client/src/components/MkMention.vue +++ b/packages/client/src/components/MkMention.vue @@ -37,7 +37,7 @@ import { toUnicode } from "punycode"; import {} from "vue"; import { host as localHost } from "@/config"; -import { $i } from "@/account"; +import { $i } from "@/reactiveAccount"; import { defaultStore } from "@/store"; const props = defineProps<{ diff --git a/packages/client/src/components/MkModPlayer.vue b/packages/client/src/components/MkModPlayer.vue index 08bfa69b8..1129d2bb6 100644 --- a/packages/client/src/components/MkModPlayer.vue +++ b/packages/client/src/components/MkModPlayer.vue @@ -1,33 +1,33 @@