Merge remote-tracking branch 'misskey-dev/develop' into prismisskey
# Conflicts: # CHANGELOG.md # locales/index.d.ts # locales/ja-JP.yml # package.json # packages/frontend/src/pages/timeline.vue # packages/frontend/src/ui/deck/tl-column.vue # pnpm-lock.yaml
This commit is contained in:
commit
7dbbfb657c
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -12,20 +12,27 @@
|
||||||
|
|
||||||
-->
|
-->
|
||||||
|
|
||||||
## next
|
## 2023.9.2
|
||||||
|
|
||||||
### General
|
### General
|
||||||
- Feat: ノートの編集をできるように
|
- Feat: ノートの編集をできるように
|
||||||
- ロールで編集可否を設定可能
|
- ロールで編集可否を設定可能
|
||||||
|
- Feat: 通知を種類ごとに 全員から受け取る/フォロー中のユーザーのみ受け取る/フォロワーのみ受け取る/相互のみ受け取る/指定したリストのメンバーのみ受け取る/受け取らない から選べるように
|
||||||
- Enhance: タイムラインからRenoteを除外するオプションを追加
|
- Enhance: タイムラインからRenoteを除外するオプションを追加
|
||||||
- Enhance: ユーザーページのノート一覧でRenoteを除外できるように
|
- Enhance: ユーザーページのノート一覧でRenoteを除外できるように
|
||||||
|
- Enhance: タイムラインでファイルが添付されたノートのみ表示するオプションを追加
|
||||||
|
- Enhance: モデレーションログ機能の強化
|
||||||
|
- Enhance: 依存関係の更新
|
||||||
|
- Enhance: ローカリゼーションの更新
|
||||||
|
|
||||||
### Client
|
### Client
|
||||||
- Enhance: モデレーションログ機能の強化
|
|
||||||
- Enhance: Plugin:register_post_form_actionを用いてCWを取得・変更できるように
|
- Enhance: Plugin:register_post_form_actionを用いてCWを取得・変更できるように
|
||||||
|
- Enhance: admin/ad/listにて掲載中の広告が絞り込めるように
|
||||||
|
- Enhance: AiScriptにリモートサーバーのAPIを叩く用の関数を追加(`Mk:apiExternal`)
|
||||||
|
|
||||||
### Server
|
### Server
|
||||||
- Enhance: MasterプロセスのPIDを書き出せるように
|
- Enhance: MasterプロセスのPIDを書き出せるように
|
||||||
|
- Enhance: admin/ad/createにてレスポンス200、設定した広告情報を返すように
|
||||||
|
|
||||||
## 2023.9.1
|
## 2023.9.1
|
||||||
|
|
||||||
|
|
|
@ -2039,3 +2039,4 @@ _webhookSettings:
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
suspend: "Zmrazit"
|
suspend: "Zmrazit"
|
||||||
resetPassword: "Resetovat heslo"
|
resetPassword: "Resetovat heslo"
|
||||||
|
createInvitation: "Vygenerovat pozvánku"
|
||||||
|
|
|
@ -1120,6 +1120,9 @@ notifyNotes: "Über neue Notizen benachrichtigen"
|
||||||
unnotifyNotes: "Nicht über neue Notizen benachrichtigen"
|
unnotifyNotes: "Nicht über neue Notizen benachrichtigen"
|
||||||
authentication: "Authentifikation"
|
authentication: "Authentifikation"
|
||||||
authenticationRequiredToContinue: "Bitte authentifiziere dich, um fortzufahren"
|
authenticationRequiredToContinue: "Bitte authentifiziere dich, um fortzufahren"
|
||||||
|
dateAndTime: "Zeit"
|
||||||
|
showRenotes: "Renotes anzeigen"
|
||||||
|
edited: "Bearbeitet"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "Nur für existierende Nutzer"
|
forExistingUsers: "Nur für existierende Nutzer"
|
||||||
forExistingUsersDescription: "Ist diese Option aktiviert, wird diese Ankündigung nur Nutzern angezeigt, die zum Zeitpunkt der Ankündigung bereits registriert sind. Ist sie deaktiviert, wird sie auch Nutzern, die sich nach dessen Veröffentlichung registrieren, angezeigt."
|
forExistingUsersDescription: "Ist diese Option aktiviert, wird diese Ankündigung nur Nutzern angezeigt, die zum Zeitpunkt der Ankündigung bereits registriert sind. Ist sie deaktiviert, wird sie auch Nutzern, die sich nach dessen Veröffentlichung registrieren, angezeigt."
|
||||||
|
@ -1450,6 +1453,7 @@ _role:
|
||||||
gtlAvailable: "Kann auf die globale Chronik zugreifen"
|
gtlAvailable: "Kann auf die globale Chronik zugreifen"
|
||||||
ltlAvailable: "Kann auf die lokale Chronik zugreifen"
|
ltlAvailable: "Kann auf die lokale Chronik zugreifen"
|
||||||
canPublicNote: "Kann öffentliche Notizen erstellen"
|
canPublicNote: "Kann öffentliche Notizen erstellen"
|
||||||
|
canEditNote: "Notizbearbeitung"
|
||||||
canInvite: "Erstellung von Einladungscodes für diese Instanz"
|
canInvite: "Erstellung von Einladungscodes für diese Instanz"
|
||||||
inviteLimit: "Maximalanzahl an Einladungen"
|
inviteLimit: "Maximalanzahl an Einladungen"
|
||||||
inviteLimitCycle: "Zyklus des Einladungslimits"
|
inviteLimitCycle: "Zyklus des Einladungslimits"
|
||||||
|
@ -2101,6 +2105,8 @@ _webhookSettings:
|
||||||
reaction: "Wenn du eine Reaktion erhältst"
|
reaction: "Wenn du eine Reaktion erhältst"
|
||||||
mention: "Wenn du erwähnt wirst"
|
mention: "Wenn du erwähnt wirst"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "Rolle erstellt"
|
||||||
|
deleteRole: "Rolle gelöscht"
|
||||||
updateRole: "Rolle aktualisiert"
|
updateRole: "Rolle aktualisiert"
|
||||||
assignRole: "Zu Rolle zugewiesen"
|
assignRole: "Zu Rolle zugewiesen"
|
||||||
unassignRole: "Aus Rolle entfernt"
|
unassignRole: "Aus Rolle entfernt"
|
||||||
|
@ -2124,3 +2130,5 @@ _moderationLogTypes:
|
||||||
unsuspendRemoteInstance: "Fremde Instanz entsperrt"
|
unsuspendRemoteInstance: "Fremde Instanz entsperrt"
|
||||||
markSensitiveDriveFile: "Datei als sensitiv markiert"
|
markSensitiveDriveFile: "Datei als sensitiv markiert"
|
||||||
unmarkSensitiveDriveFile: "Datei als nicht sensitiv markiert"
|
unmarkSensitiveDriveFile: "Datei als nicht sensitiv markiert"
|
||||||
|
resolveAbuseReport: "Meldung bearbeitet"
|
||||||
|
createInvitation: "Einladung erstellt"
|
||||||
|
|
|
@ -1127,6 +1127,9 @@ notifyNotes: "Notify about new notes"
|
||||||
unnotifyNotes: "Stop notifying about new notes"
|
unnotifyNotes: "Stop notifying about new notes"
|
||||||
authentication: "Authentication"
|
authentication: "Authentication"
|
||||||
authenticationRequiredToContinue: "Please authenticate to continue"
|
authenticationRequiredToContinue: "Please authenticate to continue"
|
||||||
|
dateAndTime: "Timestamp"
|
||||||
|
showRenotes: "Show renotes"
|
||||||
|
edited: "Edited"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "Existing users only"
|
forExistingUsers: "Existing users only"
|
||||||
forExistingUsersDescription: "This announcement will only be shown to users existing at the point of publishment if enabled. If disabled, those newly signing up after it has been posted will also see it."
|
forExistingUsersDescription: "This announcement will only be shown to users existing at the point of publishment if enabled. If disabled, those newly signing up after it has been posted will also see it."
|
||||||
|
@ -1457,6 +1460,7 @@ _role:
|
||||||
gtlAvailable: "Can view the global timeline"
|
gtlAvailable: "Can view the global timeline"
|
||||||
ltlAvailable: "Can view the local timeline"
|
ltlAvailable: "Can view the local timeline"
|
||||||
canPublicNote: "Can send public notes"
|
canPublicNote: "Can send public notes"
|
||||||
|
canEditNote: "Note editing"
|
||||||
canInvite: "Can create instance invite codes"
|
canInvite: "Can create instance invite codes"
|
||||||
inviteLimit: "Invite limit"
|
inviteLimit: "Invite limit"
|
||||||
inviteLimitCycle: "Invite limit cooldown"
|
inviteLimitCycle: "Invite limit cooldown"
|
||||||
|
@ -2111,6 +2115,8 @@ _webhookSettings:
|
||||||
reaction: "When receiving a reaction"
|
reaction: "When receiving a reaction"
|
||||||
mention: "When being mentioned"
|
mention: "When being mentioned"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "Role created"
|
||||||
|
deleteRole: "Role deleted"
|
||||||
updateRole: "Role updated"
|
updateRole: "Role updated"
|
||||||
assignRole: "Assigned to role"
|
assignRole: "Assigned to role"
|
||||||
unassignRole: "Removed from role"
|
unassignRole: "Removed from role"
|
||||||
|
@ -2134,3 +2140,5 @@ _moderationLogTypes:
|
||||||
unsuspendRemoteInstance: "Remote instance unsuspended"
|
unsuspendRemoteInstance: "Remote instance unsuspended"
|
||||||
markSensitiveDriveFile: "File marked as sensitive"
|
markSensitiveDriveFile: "File marked as sensitive"
|
||||||
unmarkSensitiveDriveFile: "File unmarked as sensitive"
|
unmarkSensitiveDriveFile: "File unmarked as sensitive"
|
||||||
|
resolveAbuseReport: "Report resolved"
|
||||||
|
createInvitation: "Invite generated"
|
||||||
|
|
|
@ -418,6 +418,7 @@ moderator: "Moderador"
|
||||||
moderation: "Moderación"
|
moderation: "Moderación"
|
||||||
moderationNote: "Nota de moderación"
|
moderationNote: "Nota de moderación"
|
||||||
addModerationNote: "Añadir nota de moderación"
|
addModerationNote: "Añadir nota de moderación"
|
||||||
|
moderationLogs: "Log de moderación"
|
||||||
nUsersMentioned: "{n} usuarios mencionados"
|
nUsersMentioned: "{n} usuarios mencionados"
|
||||||
securityKeyAndPasskey: "Clave de seguridad / clave de paso"
|
securityKeyAndPasskey: "Clave de seguridad / clave de paso"
|
||||||
securityKey: "Clave de seguridad"
|
securityKey: "Clave de seguridad"
|
||||||
|
@ -710,6 +711,7 @@ lockedAccountInfo: "A menos que configures la visibilidad de tus notas como \"S
|
||||||
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto"
|
alwaysMarkSensitive: "Marcar los medios de comunicación como contenido sensible por defecto"
|
||||||
loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas"
|
loadRawImages: "Cargar las imágenes originales en lugar de mostrar las miniaturas"
|
||||||
disableShowingAnimatedImages: "No reproducir imágenes animadas"
|
disableShowingAnimatedImages: "No reproducir imágenes animadas"
|
||||||
|
highlightSensitiveMedia: "Resaltar medios marcados como sensibles"
|
||||||
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por favor, acceda al enlace proporcionado en el correo electrónico para completar la configuración."
|
verificationEmailSent: "Se le ha enviado un correo electrónico de confirmación. Por favor, acceda al enlace proporcionado en el correo electrónico para completar la configuración."
|
||||||
notSet: "Sin especificar"
|
notSet: "Sin especificar"
|
||||||
emailVerified: "Su dirección de correo electrónico ha sido verificada."
|
emailVerified: "Su dirección de correo electrónico ha sido verificada."
|
||||||
|
@ -1109,6 +1111,16 @@ youHaveUnreadAnnouncements: "Hay anuncios sin leer"
|
||||||
useSecurityKey: "Por favor, sigue las instrucciones de tu dispositivo o navegador para usar tu clave de seguridad o tu clave de paso."
|
useSecurityKey: "Por favor, sigue las instrucciones de tu dispositivo o navegador para usar tu clave de seguridad o tu clave de paso."
|
||||||
replies: "Responder"
|
replies: "Responder"
|
||||||
renotes: "Renotar"
|
renotes: "Renotar"
|
||||||
|
loadReplies: "Ver respuestas"
|
||||||
|
loadConversation: "Ver conversación"
|
||||||
|
pinnedList: "Lista fijada"
|
||||||
|
keepScreenOn: "Mantener pantalla encendida"
|
||||||
|
verifiedLink: "Propiedad del enlace verificada"
|
||||||
|
notifyNotes: "Notificar nuevas notas"
|
||||||
|
unnotifyNotes: "Dejar de notificar nuevas notas"
|
||||||
|
authentication: "Autenticación"
|
||||||
|
authenticationRequiredToContinue: "Por favor, autentifícate para continuar"
|
||||||
|
dateAndTime: "Fecha y hora"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "Solo para usuarios registrados"
|
forExistingUsers: "Solo para usuarios registrados"
|
||||||
forExistingUsersDescription: "Este anuncio solo se mostrará a aquellos usuarios registrados en el momento de su publicación. Si se deshabilita esta opción, aquellos usuarios que se registren tras su publicación también lo verán."
|
forExistingUsersDescription: "Este anuncio solo se mostrará a aquellos usuarios registrados en el momento de su publicación. Si se deshabilita esta opción, aquellos usuarios que se registren tras su publicación también lo verán."
|
||||||
|
@ -1137,7 +1149,13 @@ _serverRules:
|
||||||
description: "Un conjunto de reglas que serán mostradas antes del registro. Configurar un sumario de términos de servicio es recomendado."
|
description: "Un conjunto de reglas que serán mostradas antes del registro. Configurar un sumario de términos de servicio es recomendado."
|
||||||
_serverSettings:
|
_serverSettings:
|
||||||
iconUrl: "URL del ícono"
|
iconUrl: "URL del ícono"
|
||||||
|
appIconDescription: "Indica el icono que se va a usar cuando {host} se muestre como una app."
|
||||||
|
appIconUsageExample: "Por ejemplo, como PWA o cuando se muestre como un marcador en la pantalla inicial del dispositivo"
|
||||||
|
appIconStyleRecommendation: "Como el icono puede ser recortado como un cuadrado o un círculo, se recomienda un icono con un margen coloreado alrededor del contenido."
|
||||||
|
appIconResolutionMustBe: "La resolución mínima es {resolution}."
|
||||||
manifestJsonOverride: "Sobreescribir manifest.json"
|
manifestJsonOverride: "Sobreescribir manifest.json"
|
||||||
|
shortName: "Nombre corto"
|
||||||
|
shortNameDescription: "Forma corta del nombre de la instancia que puede mostrarse si el nombre completo es demasiado largo."
|
||||||
_accountMigration:
|
_accountMigration:
|
||||||
moveFrom: "Trasladar de otra cuenta a ésta"
|
moveFrom: "Trasladar de otra cuenta a ésta"
|
||||||
moveFromSub: "Crear un alias para otra cuenta."
|
moveFromSub: "Crear un alias para otra cuenta."
|
||||||
|
@ -1784,6 +1802,7 @@ _antennaSources:
|
||||||
homeTimeline: "Notas de los usuarios que sigues"
|
homeTimeline: "Notas de los usuarios que sigues"
|
||||||
users: "Notas de un usuario o varios"
|
users: "Notas de un usuario o varios"
|
||||||
userList: "Notas de los usuarios de una lista"
|
userList: "Notas de los usuarios de una lista"
|
||||||
|
userBlacklist: "Todas las notas excepto aquellas de uno o más usuarios especificados"
|
||||||
_weekday:
|
_weekday:
|
||||||
sunday: "Domingo"
|
sunday: "Domingo"
|
||||||
monday: "Lunes"
|
monday: "Lunes"
|
||||||
|
@ -1883,6 +1902,7 @@ _profile:
|
||||||
metadataContent: "Contenido"
|
metadataContent: "Contenido"
|
||||||
changeAvatar: "Cambiar avatar"
|
changeAvatar: "Cambiar avatar"
|
||||||
changeBanner: "Cambiar banner"
|
changeBanner: "Cambiar banner"
|
||||||
|
verifiedLinkDescription: "Introduciendo una URL que contiene un enlace a tu perfil, se puede mostrar un icono de verificación de propiedad al lado del campo."
|
||||||
_exportOrImport:
|
_exportOrImport:
|
||||||
allNotes: "Todas las notas"
|
allNotes: "Todas las notas"
|
||||||
favoritedNotes: "Notas favoritas"
|
favoritedNotes: "Notas favoritas"
|
||||||
|
@ -2001,6 +2021,7 @@ _notification:
|
||||||
youReceivedFollowRequest: "Has mandado una solicitud de seguimiento"
|
youReceivedFollowRequest: "Has mandado una solicitud de seguimiento"
|
||||||
yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada"
|
yourFollowRequestAccepted: "Tu solicitud de seguimiento fue aceptada"
|
||||||
pollEnded: "Estan disponibles los resultados de la encuesta"
|
pollEnded: "Estan disponibles los resultados de la encuesta"
|
||||||
|
newNote: "Nueva nota"
|
||||||
unreadAntennaNote: "Antena {name}"
|
unreadAntennaNote: "Antena {name}"
|
||||||
emptyPushNotificationMessage: "Se han actualizado las notificaciones push"
|
emptyPushNotificationMessage: "Se han actualizado las notificaciones push"
|
||||||
achievementEarned: "Logro desbloqueado"
|
achievementEarned: "Logro desbloqueado"
|
||||||
|
@ -2010,6 +2031,7 @@ _notification:
|
||||||
notificationWillBeDisplayedLikeThis: "Las notificaciones tendrán este aspecto"
|
notificationWillBeDisplayedLikeThis: "Las notificaciones tendrán este aspecto"
|
||||||
_types:
|
_types:
|
||||||
all: "Todo"
|
all: "Todo"
|
||||||
|
note: "Nuevas notas"
|
||||||
follow: "Siguiendo"
|
follow: "Siguiendo"
|
||||||
mention: "Menciones"
|
mention: "Menciones"
|
||||||
reply: "Respuestas"
|
reply: "Respuestas"
|
||||||
|
@ -2080,5 +2102,30 @@ _webhookSettings:
|
||||||
reaction: "Cuando se recibe una reacción"
|
reaction: "Cuando se recibe una reacción"
|
||||||
mention: "Cuando hay una mención"
|
mention: "Cuando hay una mención"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "Rol creado"
|
||||||
|
deleteRole: "Rol eliminado"
|
||||||
|
updateRole: "Rol actualizado"
|
||||||
|
assignRole: "Rol asignado"
|
||||||
|
unassignRole: "Rol retirado"
|
||||||
suspend: "Suspender"
|
suspend: "Suspender"
|
||||||
|
unsuspend: "Suspensión retirada"
|
||||||
|
addCustomEmoji: "Añadido emoji personalizado"
|
||||||
|
updateCustomEmoji: "Emoji personalizado actualizado"
|
||||||
|
deleteCustomEmoji: "Emoji personalizado eliminado"
|
||||||
|
updateServerSettings: "Ajustes de servidor actualizados"
|
||||||
|
updateUserNote: "Nota de moderación actualizada"
|
||||||
|
deleteDriveFile: "Archivo eliminado"
|
||||||
|
deleteNote: "Nota eliminada"
|
||||||
|
createGlobalAnnouncement: "Anuncio global creado"
|
||||||
|
createUserAnnouncement: "Anuncio de usuario creado"
|
||||||
|
updateGlobalAnnouncement: "Anuncio global actualizado"
|
||||||
|
updateUserAnnouncement: "Anuncio de usuario actualizado"
|
||||||
|
deleteGlobalAnnouncement: "Anuncio global eliminado"
|
||||||
|
deleteUserAnnouncement: "Anuncio de usuario eliminado"
|
||||||
resetPassword: "Resetear contraseña"
|
resetPassword: "Resetear contraseña"
|
||||||
|
suspendRemoteInstance: "Instancia remota suspendida"
|
||||||
|
unsuspendRemoteInstance: "Suspensión de instancia remota retirada"
|
||||||
|
markSensitiveDriveFile: "Archivo marcado como sensible"
|
||||||
|
unmarkSensitiveDriveFile: "Archivo marcado como no sensible"
|
||||||
|
resolveAbuseReport: "Reporte resuelto"
|
||||||
|
createInvitation: "Generar invitación"
|
||||||
|
|
|
@ -1100,6 +1100,7 @@ currentAnnouncements: "Pengumuman Saat Ini"
|
||||||
pastAnnouncements: "Pengumuman Terdahulu"
|
pastAnnouncements: "Pengumuman Terdahulu"
|
||||||
replies: "Balas"
|
replies: "Balas"
|
||||||
renotes: "Renote"
|
renotes: "Renote"
|
||||||
|
dateAndTime: "Tanggal dan Waktu"
|
||||||
_initialAccountSetting:
|
_initialAccountSetting:
|
||||||
accountCreated: "Akun kamu telah sukses dibuat!"
|
accountCreated: "Akun kamu telah sukses dibuat!"
|
||||||
letsStartAccountSetup: "Untuk pemula, ayo atur profilmu dulu."
|
letsStartAccountSetup: "Untuk pemula, ayo atur profilmu dulu."
|
||||||
|
@ -2044,3 +2045,4 @@ _webhookSettings:
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
suspend: "Tangguhkan"
|
suspend: "Tangguhkan"
|
||||||
resetPassword: "Atur ulang kata sandi"
|
resetPassword: "Atur ulang kata sandi"
|
||||||
|
createInvitation: "Buat kode undangan"
|
||||||
|
|
|
@ -1136,6 +1136,9 @@ export interface Locale {
|
||||||
"authenticationRequiredToContinue": string;
|
"authenticationRequiredToContinue": string;
|
||||||
"dateAndTime": string;
|
"dateAndTime": string;
|
||||||
"showRenotes": string;
|
"showRenotes": string;
|
||||||
|
"edited": string;
|
||||||
|
"notificationRecieveConfig": string;
|
||||||
|
"mutualFollow": string;
|
||||||
"_announcement": {
|
"_announcement": {
|
||||||
"forExistingUsers": string;
|
"forExistingUsers": string;
|
||||||
"forExistingUsersDescription": string;
|
"forExistingUsersDescription": string;
|
||||||
|
@ -2270,9 +2273,9 @@ export interface Locale {
|
||||||
"_moderationLogTypes": {
|
"_moderationLogTypes": {
|
||||||
"createRole": string;
|
"createRole": string;
|
||||||
"deleteRole": string;
|
"deleteRole": string;
|
||||||
|
"updateRole": string;
|
||||||
"assignRole": string;
|
"assignRole": string;
|
||||||
"unassignRole": string;
|
"unassignRole": string;
|
||||||
"updateRole": string;
|
|
||||||
"suspend": string;
|
"suspend": string;
|
||||||
"unsuspend": string;
|
"unsuspend": string;
|
||||||
"addCustomEmoji": string;
|
"addCustomEmoji": string;
|
||||||
|
@ -2295,6 +2298,9 @@ export interface Locale {
|
||||||
"unmarkSensitiveDriveFile": string;
|
"unmarkSensitiveDriveFile": string;
|
||||||
"resolveAbuseReport": string;
|
"resolveAbuseReport": string;
|
||||||
"createInvitation": string;
|
"createInvitation": string;
|
||||||
|
"createAd": string;
|
||||||
|
"deleteAd": string;
|
||||||
|
"updateAd": string;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
declare const locales: {
|
declare const locales: {
|
||||||
|
|
|
@ -130,8 +130,8 @@ unmarkAsSensitive: "Non segnare come esplicito "
|
||||||
enterFileName: "Nome del file"
|
enterFileName: "Nome del file"
|
||||||
mute: "Silenzia"
|
mute: "Silenzia"
|
||||||
unmute: "Riattiva l'audio"
|
unmute: "Riattiva l'audio"
|
||||||
renoteMute: "Silenzia i Rinota"
|
renoteMute: "Silenzia le Rinota"
|
||||||
renoteUnmute: "Non silenziare i Rinota"
|
renoteUnmute: "Non silenziare le Rinota"
|
||||||
block: "Blocca"
|
block: "Blocca"
|
||||||
unblock: "Sblocca"
|
unblock: "Sblocca"
|
||||||
suspend: "Sospensione"
|
suspend: "Sospensione"
|
||||||
|
@ -991,7 +991,7 @@ thisPostMayBeAnnoying: "Questa nota potrebbe essere offensiva"
|
||||||
thisPostMayBeAnnoyingHome: "Pubblica sulla timeline principale"
|
thisPostMayBeAnnoyingHome: "Pubblica sulla timeline principale"
|
||||||
thisPostMayBeAnnoyingCancel: "Annulla"
|
thisPostMayBeAnnoyingCancel: "Annulla"
|
||||||
thisPostMayBeAnnoyingIgnore: "Pubblica lo stesso"
|
thisPostMayBeAnnoyingIgnore: "Pubblica lo stesso"
|
||||||
collapseRenotes: "Comprimi i Rinota già letti"
|
collapseRenotes: "Comprimi le Rinota già viste"
|
||||||
internalServerError: "Errore interno del server"
|
internalServerError: "Errore interno del server"
|
||||||
internalServerErrorDescription: "Si è verificato un errore imprevisto all'interno del server"
|
internalServerErrorDescription: "Si è verificato un errore imprevisto all'interno del server"
|
||||||
copyErrorInfo: "Copia le informazioni sull'errore"
|
copyErrorInfo: "Copia le informazioni sull'errore"
|
||||||
|
@ -1120,6 +1120,8 @@ notifyNotes: "Notifica nuove Note"
|
||||||
unnotifyNotes: "Interrompi le notifiche di nuove Note"
|
unnotifyNotes: "Interrompi le notifiche di nuove Note"
|
||||||
authentication: "Autenticazione"
|
authentication: "Autenticazione"
|
||||||
authenticationRequiredToContinue: "Per procedere, è richiesta l'autenticazione"
|
authenticationRequiredToContinue: "Per procedere, è richiesta l'autenticazione"
|
||||||
|
dateAndTime: "Data e Ora"
|
||||||
|
showRenotes: "Leggi le Rinota"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "Solo ai profili attuali"
|
forExistingUsers: "Solo ai profili attuali"
|
||||||
forExistingUsersDescription: "L'annuncio sarà visibile solo ai profili esistenti in questo momento. Se disabilitato, sarà visibile anche ai profili che verranno creati dopo la pubblicazione di questo annuncio."
|
forExistingUsersDescription: "L'annuncio sarà visibile solo ai profili esistenti in questo momento. Se disabilitato, sarà visibile anche ai profili che verranno creati dopo la pubblicazione di questo annuncio."
|
||||||
|
@ -2101,6 +2103,8 @@ _webhookSettings:
|
||||||
reaction: "Quando ricevo una reazione"
|
reaction: "Quando ricevo una reazione"
|
||||||
mention: "Quando mi menzionano"
|
mention: "Quando mi menzionano"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "Ruolo creato"
|
||||||
|
deleteRole: "Ruolo eliminato"
|
||||||
updateRole: "Ruolo aggiornato"
|
updateRole: "Ruolo aggiornato"
|
||||||
assignRole: "Ruolo assegnato"
|
assignRole: "Ruolo assegnato"
|
||||||
unassignRole: "Ruolo disassegnato"
|
unassignRole: "Ruolo disassegnato"
|
||||||
|
@ -2124,3 +2128,5 @@ _moderationLogTypes:
|
||||||
unsuspendRemoteInstance: "Istanza remota riattivata"
|
unsuspendRemoteInstance: "Istanza remota riattivata"
|
||||||
markSensitiveDriveFile: "File nel Drive segnato come esplicito"
|
markSensitiveDriveFile: "File nel Drive segnato come esplicito"
|
||||||
unmarkSensitiveDriveFile: "File nel Drive segnato come non esplicito"
|
unmarkSensitiveDriveFile: "File nel Drive segnato come non esplicito"
|
||||||
|
resolveAbuseReport: "Segnalazione risolta"
|
||||||
|
createInvitation: "Genera codice di invito"
|
||||||
|
|
|
@ -1133,6 +1133,10 @@ authentication: "認証"
|
||||||
authenticationRequiredToContinue: "続けるには認証を行ってください"
|
authenticationRequiredToContinue: "続けるには認証を行ってください"
|
||||||
dateAndTime: "日時"
|
dateAndTime: "日時"
|
||||||
showRenotes: "リノートを表示"
|
showRenotes: "リノートを表示"
|
||||||
|
edited: "編集済み"
|
||||||
|
notificationRecieveConfig: "通知の受信設定"
|
||||||
|
mutualFollow: "相互フォロー"
|
||||||
|
fileAttachedOnly: "ファイル付きのみ"
|
||||||
|
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "既存ユーザーのみ"
|
forExistingUsers: "既存ユーザーのみ"
|
||||||
|
@ -2183,6 +2187,7 @@ _webhookSettings:
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
createRole: "ロールを作成"
|
createRole: "ロールを作成"
|
||||||
deleteRole: "ロールを削除"
|
deleteRole: "ロールを削除"
|
||||||
|
updateRole: "ロールを更新"
|
||||||
assignRole: "ロールへアサイン"
|
assignRole: "ロールへアサイン"
|
||||||
unassignRole: "ロールのアサイン解除"
|
unassignRole: "ロールのアサイン解除"
|
||||||
updateRole: "ロール設定更新"
|
updateRole: "ロール設定更新"
|
||||||
|
@ -2208,3 +2213,6 @@ _moderationLogTypes:
|
||||||
unmarkSensitiveDriveFile: "ファイルをセンシティブ解除"
|
unmarkSensitiveDriveFile: "ファイルをセンシティブ解除"
|
||||||
resolveAbuseReport: "通報を解決"
|
resolveAbuseReport: "通報を解決"
|
||||||
createInvitation: "招待コードを作成"
|
createInvitation: "招待コードを作成"
|
||||||
|
createAd: "広告を作成"
|
||||||
|
deleteAd: "広告を削除"
|
||||||
|
updateAd: "広告を更新"
|
||||||
|
|
|
@ -1105,6 +1105,10 @@ youHaveUnreadAnnouncements: "あんたまだこのお知らせ読んどらんや
|
||||||
useSecurityKey: "ブラウザまたはデバイスの言う通りに、セキュリティキーまたはパスキーを使ってや。"
|
useSecurityKey: "ブラウザまたはデバイスの言う通りに、セキュリティキーまたはパスキーを使ってや。"
|
||||||
replies: "返事"
|
replies: "返事"
|
||||||
renotes: "Renote"
|
renotes: "Renote"
|
||||||
|
loadReplies: "返信を見るで"
|
||||||
|
loadConversation: "会話を見るで"
|
||||||
|
verifiedLink: "このリンク先の所有者であることが確認されたで。"
|
||||||
|
authenticationRequiredToContinue: "続けるには認証をやってや。"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "もうおるユーザーのみ"
|
forExistingUsers: "もうおるユーザーのみ"
|
||||||
forExistingUsersDescription: "有効にすると、このお知らせ作成時点でおるユーザーにのみお知らせが表示されます。無効にすると、このお知らせ作成後にアカウントを作成したユーザーにもお知らせが表示されます。"
|
forExistingUsersDescription: "有効にすると、このお知らせ作成時点でおるユーザーにのみお知らせが表示されます。無効にすると、このお知らせ作成後にアカウントを作成したユーザーにもお知らせが表示されます。"
|
||||||
|
@ -1133,6 +1137,11 @@ _serverRules:
|
||||||
description: "新規登録前に見せる、サーバーの簡潔なルールを設定すんで。内容は使うための決め事の要約とすることを推奨するわ。"
|
description: "新規登録前に見せる、サーバーの簡潔なルールを設定すんで。内容は使うための決め事の要約とすることを推奨するわ。"
|
||||||
_serverSettings:
|
_serverSettings:
|
||||||
iconUrl: "アイコン画像のURL"
|
iconUrl: "アイコン画像のURL"
|
||||||
|
appIconDescription: "{host}がアプリとして表示してるんやつをアイコンを指定すんで。"
|
||||||
|
appIconUsageExample: "PWAや、スマートフォンのホーム画面にブックマークとして追加された時など"
|
||||||
|
appIconStyleRecommendation: "円形もしくは角丸にクロップされる場合があるさかいに、塗り潰された余白のある背景があるものが推奨されるで。"
|
||||||
|
appIconResolutionMustBe: "解像度は必ず{resolution}である必要があるで。"
|
||||||
|
shortNameDescription: "サーバーの名前が長い時に、代わりに表示することのできるあだ名。"
|
||||||
_accountMigration:
|
_accountMigration:
|
||||||
moveFrom: "別のアカウントからこのアカウントに引っ越す"
|
moveFrom: "別のアカウントからこのアカウントに引っ越す"
|
||||||
moveFromSub: "別のアカウントへエイリアスを作る"
|
moveFromSub: "別のアカウントへエイリアスを作る"
|
||||||
|
@ -1703,6 +1712,7 @@ _2fa:
|
||||||
step2Click: "QRコードをクリックすると、今使とる端末に入っとる認証アプリとかキーリングに登録できるで。"
|
step2Click: "QRコードをクリックすると、今使とる端末に入っとる認証アプリとかキーリングに登録できるで。"
|
||||||
step3Title: "確認コードを入れてーや"
|
step3Title: "確認コードを入れてーや"
|
||||||
step3: "アプリに表示されているトークンを入力して終わりや。"
|
step3: "アプリに表示されているトークンを入力して終わりや。"
|
||||||
|
setupCompleted: "設定が完了したで。"
|
||||||
step4: "これからログインするときも、同じようにトークンを入力するんやで"
|
step4: "これからログインするときも、同じようにトークンを入力するんやで"
|
||||||
securityKeyNotSupported: "今使とるブラウザはセキュリティキーに対応してへんのやってさ。"
|
securityKeyNotSupported: "今使とるブラウザはセキュリティキーに対応してへんのやってさ。"
|
||||||
registerTOTPBeforeKey: "セキュリティキー・パスキーを登録するんやったら、まず認証アプリを設定してーな。"
|
registerTOTPBeforeKey: "セキュリティキー・パスキーを登録するんやったら、まず認証アプリを設定してーな。"
|
||||||
|
@ -1717,6 +1727,10 @@ _2fa:
|
||||||
renewTOTPConfirm: "今までの認証アプリの確認コードは使えんくなるけどええか?"
|
renewTOTPConfirm: "今までの認証アプリの確認コードは使えんくなるけどええか?"
|
||||||
renewTOTPOk: "もっかい設定する"
|
renewTOTPOk: "もっかい設定する"
|
||||||
renewTOTPCancel: "やめとく"
|
renewTOTPCancel: "やめとく"
|
||||||
|
checkBackupCodesBeforeCloseThisWizard: "このウィザードを閉じる前に、したのバックアップコードを確認しいや。"
|
||||||
|
backupCodesDescription: "認証アプリが使用できんなった場合、以下のバックアップコードを使ってアカウントにアクセスできるで。これらのコードは必ず安全な場所に置いときや。各コードは一回だけ使用できるで。"
|
||||||
|
backupCodeUsedWarning: "バックアップコードが使用されたで。認証アプリが使えなくなってるん場合、なるべく早く認証アプリを再設定しや。"
|
||||||
|
backupCodesExhaustedWarning: "バックアップコードが全て使用されたで。認証アプリを利用できん場合、これ以上アカウントにアクセスできなくなるで。認証アプリを再登録しや。"
|
||||||
_permissions:
|
_permissions:
|
||||||
"read:account": "アカウントの情報を見るで"
|
"read:account": "アカウントの情報を見るで"
|
||||||
"write:account": "アカウントの情報を変更するで"
|
"write:account": "アカウントの情報を変更するで"
|
||||||
|
@ -1989,6 +2003,9 @@ _notification:
|
||||||
unreadAntennaNote: "アンテナ {name}"
|
unreadAntennaNote: "アンテナ {name}"
|
||||||
emptyPushNotificationMessage: "プッシュ通知の更新をしといたで"
|
emptyPushNotificationMessage: "プッシュ通知の更新をしといたで"
|
||||||
achievementEarned: "実績を獲得しとるで"
|
achievementEarned: "実績を獲得しとるで"
|
||||||
|
checkNotificationBehavior: "通知の表示を確かめるで"
|
||||||
|
sendTestNotification: "テスト通知を送信するで"
|
||||||
|
notificationWillBeDisplayedLikeThis: "通知はこのように表示されるで"
|
||||||
_types:
|
_types:
|
||||||
all: "すべて"
|
all: "すべて"
|
||||||
follow: "フォロー"
|
follow: "フォロー"
|
||||||
|
@ -2024,6 +2041,7 @@ _deck:
|
||||||
introduction2: "画面の右にある + を押して、いつでもカラムを追加できるで。"
|
introduction2: "画面の右にある + を押して、いつでもカラムを追加できるで。"
|
||||||
widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選んでウィジェットを追加してなー"
|
widgetsIntroduction: "カラムのメニューから、「ウィジェットの編集」を選んでウィジェットを追加してなー"
|
||||||
useSimpleUiForNonRootPages: "非ルートページは簡易UIで表示"
|
useSimpleUiForNonRootPages: "非ルートページは簡易UIで表示"
|
||||||
|
usedAsMinWidthWhenFlexible: "「幅を自動調整」が有効の場合、これが幅の最小値となるで"
|
||||||
_columns:
|
_columns:
|
||||||
main: "メイン"
|
main: "メイン"
|
||||||
widgets: "ウィジェット"
|
widgets: "ウィジェット"
|
||||||
|
@ -2061,3 +2079,4 @@ _webhookSettings:
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
suspend: "凍結"
|
suspend: "凍結"
|
||||||
resetPassword: "パスワードをリセット"
|
resetPassword: "パスワードをリセット"
|
||||||
|
createInvitation: "招待コードを作成"
|
||||||
|
|
|
@ -2076,3 +2076,4 @@ _webhookSettings:
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
suspend: "정지"
|
suspend: "정지"
|
||||||
resetPassword: "비밀번호 재설정"
|
resetPassword: "비밀번호 재설정"
|
||||||
|
createInvitation: "초대 코드 생성"
|
||||||
|
|
|
@ -416,6 +416,9 @@ totp: "แอป Authenticator"
|
||||||
totpDescription: "ใช้แอปยืนยันตัวตนเพื่อป้อนรหัสผ่านแบบใช้ครั้งเดียว"
|
totpDescription: "ใช้แอปยืนยันตัวตนเพื่อป้อนรหัสผ่านแบบใช้ครั้งเดียว"
|
||||||
moderator: "ผู้ควบคุม"
|
moderator: "ผู้ควบคุม"
|
||||||
moderation: "การกลั่นกรอง"
|
moderation: "การกลั่นกรอง"
|
||||||
|
moderationNote: "โน้ตการกลั่นกรอง"
|
||||||
|
addModerationNote: "เพิ่มโน้ตการกลั่นกรอง"
|
||||||
|
moderationLogs: "บันทึกการกลั่นกรอง"
|
||||||
nUsersMentioned: "กล่าวถึงโดยผู้ใช้ {n} รายนี้"
|
nUsersMentioned: "กล่าวถึงโดยผู้ใช้ {n} รายนี้"
|
||||||
securityKeyAndPasskey: "ความปลอดภัยและรหัสผ่าน"
|
securityKeyAndPasskey: "ความปลอดภัยและรหัสผ่าน"
|
||||||
securityKey: "กุญแจความปลอดภัย"
|
securityKey: "กุญแจความปลอดภัย"
|
||||||
|
@ -708,6 +711,7 @@ lockedAccountInfo: "เว้นแต่ว่าคุณจะต้องต
|
||||||
alwaysMarkSensitive: "ทำเครื่องหมายเป็น NSFW เป็นค่าเริ่มต้น"
|
alwaysMarkSensitive: "ทำเครื่องหมายเป็น NSFW เป็นค่าเริ่มต้น"
|
||||||
loadRawImages: "โหลดภาพต้นฉบับแทนการแสดงภาพขนาดย่อ"
|
loadRawImages: "โหลดภาพต้นฉบับแทนการแสดงภาพขนาดย่อ"
|
||||||
disableShowingAnimatedImages: "ไม่ต้องเล่นภาพเคลื่อนไหว"
|
disableShowingAnimatedImages: "ไม่ต้องเล่นภาพเคลื่อนไหว"
|
||||||
|
highlightSensitiveMedia: "ไฮไลท์สื่อที่ละเอียดอ่อน"
|
||||||
verificationEmailSent: "ส่งอีเมลยืนยันแล้วนะ ได้โปรดกรุณาไปที่ลิงก์ที่รวมไว้เพื่อทำการตรวจสอบให้เสร็จสิ้น"
|
verificationEmailSent: "ส่งอีเมลยืนยันแล้วนะ ได้โปรดกรุณาไปที่ลิงก์ที่รวมไว้เพื่อทำการตรวจสอบให้เสร็จสิ้น"
|
||||||
notSet: "ไม่ได้ตั้งค่า"
|
notSet: "ไม่ได้ตั้งค่า"
|
||||||
emailVerified: "อีเมลได้รับการยืนยันแล้ว"
|
emailVerified: "อีเมลได้รับการยืนยันแล้ว"
|
||||||
|
@ -1022,6 +1026,7 @@ retryAllQueuesConfirmText: "สิ่งนี้จะเพิ่มการ
|
||||||
enableChartsForRemoteUser: "สร้างแผนภูมิข้อมูลผู้ใช้ระยะไกล"
|
enableChartsForRemoteUser: "สร้างแผนภูมิข้อมูลผู้ใช้ระยะไกล"
|
||||||
enableChartsForFederatedInstances: "สร้างแผนภูมิข้อมูลอินสแตนซ์ระยะไกล"
|
enableChartsForFederatedInstances: "สร้างแผนภูมิข้อมูลอินสแตนซ์ระยะไกล"
|
||||||
showClipButtonInNoteFooter: "เพิ่ม \"คลิป\" เพื่อบันทึกเมนูการทำงาน"
|
showClipButtonInNoteFooter: "เพิ่ม \"คลิป\" เพื่อบันทึกเมนูการทำงาน"
|
||||||
|
reactionsDisplaySize: "รีแอคชั่นแสดงผลขนาด"
|
||||||
noteIdOrUrl: "โน้ต ID หรือ URL"
|
noteIdOrUrl: "โน้ต ID หรือ URL"
|
||||||
video: "วีดีโอ"
|
video: "วีดีโอ"
|
||||||
videos: "วีดีโอ"
|
videos: "วีดีโอ"
|
||||||
|
@ -1100,11 +1105,23 @@ iHaveReadXCarefullyAndAgree: "ฉันได้อ่านข้อควา
|
||||||
dialog: "ไดอะล็อก"
|
dialog: "ไดอะล็อก"
|
||||||
icon: "ไอคอน"
|
icon: "ไอคอน"
|
||||||
forYou: "สำหรับคุณ"
|
forYou: "สำหรับคุณ"
|
||||||
|
currentAnnouncements: "ประกาศในปัจจุบัน"
|
||||||
|
pastAnnouncements: "ประกาศที่ผ่านมา"
|
||||||
|
youHaveUnreadAnnouncements: "มีการประกาศที่ยังไม่ได้อ่าน"
|
||||||
replies: "ตอบกลับ"
|
replies: "ตอบกลับ"
|
||||||
renotes: "รีโน้ต"
|
renotes: "รีโน้ต"
|
||||||
loadReplies: "แสดงการตอบกลับ"
|
loadReplies: "แสดงการตอบกลับ"
|
||||||
loadConversation: "แสดงบทสนทนา"
|
loadConversation: "แสดงบทสนทนา"
|
||||||
|
pinnedList: "รายการที่ปักหมุดไว้แล้ว"
|
||||||
|
keepScreenOn: "เปิดหน้าจอไว้"
|
||||||
|
notifyNotes: "แจ้งเตือนเกี่ยวกับโพสต์ใหม่"
|
||||||
|
unnotifyNotes: "หยุดการแจ้งเตือนเกี่ยวกับโน้ตใหม่"
|
||||||
|
authentication: "การตรวจสอบสิทธิ์"
|
||||||
|
dateAndTime: "เวลาประทับ"
|
||||||
|
showRenotes: "แสดงรีโน้ต"
|
||||||
|
edited: "แก้ไขแล้ว"
|
||||||
_announcement:
|
_announcement:
|
||||||
|
forExistingUsers: "ผู้ใช้งานที่มีอยู่เท่านั้น"
|
||||||
forExistingUsersDescription: "การประกาศนี้จะแสดงต่อผู้ใช้ที่มีอยู่ ณ จุดที่เผยแพร่นั้นๆถ้าหากเปิดใช้งาน ถ้าหากปิดใช้งานผู้ที่กำลังสมัครใหม่หลังจากโพสต์แล้วนั้นก็จะเห็นเช่นกัน"
|
forExistingUsersDescription: "การประกาศนี้จะแสดงต่อผู้ใช้ที่มีอยู่ ณ จุดที่เผยแพร่นั้นๆถ้าหากเปิดใช้งาน ถ้าหากปิดใช้งานผู้ที่กำลังสมัครใหม่หลังจากโพสต์แล้วนั้นก็จะเห็นเช่นกัน"
|
||||||
needConfirmationToReadDescription: "ข้อความแจ้งแยก ถ้าหากต้องการเพื่อยืนยันว่ากำลังทำเครื่องหมายประกาศนี้ว่าอ่านแล้วจะแสดงขึ้นถ้าหากเปิดใช้งาน การประกาศนั้นจะไม่รวมอยู่ในฟังก์ชั่นว่า \"ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว\""
|
needConfirmationToReadDescription: "ข้อความแจ้งแยก ถ้าหากต้องการเพื่อยืนยันว่ากำลังทำเครื่องหมายประกาศนี้ว่าอ่านแล้วจะแสดงขึ้นถ้าหากเปิดใช้งาน การประกาศนั้นจะไม่รวมอยู่ในฟังก์ชั่นว่า \"ทำเครื่องหมายทั้งหมดว่าอ่านแล้ว\""
|
||||||
end: "ประกาศเก็บถาวร"
|
end: "ประกาศเก็บถาวร"
|
||||||
|
@ -1130,6 +1147,7 @@ _serverRules:
|
||||||
description: "ชุดของกฎที่จะแสดงก่อนการลงทะเบียนเราขอแนะนำให้ตั้งค่าสรุปข้อกำหนดในการให้บริการ"
|
description: "ชุดของกฎที่จะแสดงก่อนการลงทะเบียนเราขอแนะนำให้ตั้งค่าสรุปข้อกำหนดในการให้บริการ"
|
||||||
_serverSettings:
|
_serverSettings:
|
||||||
iconUrl: "ไอคอน URL"
|
iconUrl: "ไอคอน URL"
|
||||||
|
shortName: "ชื่อย่อ"
|
||||||
_accountMigration:
|
_accountMigration:
|
||||||
moveFrom: "ย้ายข้อมูลบัญชีอื่นไปยังอีกบัญชีนี้หนึ่ง"
|
moveFrom: "ย้ายข้อมูลบัญชีอื่นไปยังอีกบัญชีนี้หนึ่ง"
|
||||||
moveFromSub: "สร้างนามแฝงไปยังบัญชีอื่น"
|
moveFromSub: "สร้างนามแฝงไปยังบัญชีอื่น"
|
||||||
|
@ -1424,6 +1442,7 @@ _role:
|
||||||
gtlAvailable: "การดูไทม์ไลน์ทั่วโลก"
|
gtlAvailable: "การดูไทม์ไลน์ทั่วโลก"
|
||||||
ltlAvailable: "การดูไทม์ไลน์ในท้องถิ่น"
|
ltlAvailable: "การดูไทม์ไลน์ในท้องถิ่น"
|
||||||
canPublicNote: "สามารถส่งโน้ตสาธารณะ"
|
canPublicNote: "สามารถส่งโน้ตสาธารณะ"
|
||||||
|
canEditNote: "กำลังแก้ไขโน้ต"
|
||||||
canInvite: "สร้างรหัสเชิญอินสแตนซ์"
|
canInvite: "สร้างรหัสเชิญอินสแตนซ์"
|
||||||
inviteLimit: "จำกัดการเชิญ"
|
inviteLimit: "จำกัดการเชิญ"
|
||||||
inviteLimitCycle: "จำกัดการเชิญไว้คูลดาวน์"
|
inviteLimitCycle: "จำกัดการเชิญไว้คูลดาวน์"
|
||||||
|
@ -1987,6 +2006,7 @@ _notification:
|
||||||
youReceivedFollowRequest: "คุณมีคำขอติดตามใหม่น่ะ"
|
youReceivedFollowRequest: "คุณมีคำขอติดตามใหม่น่ะ"
|
||||||
yourFollowRequestAccepted: "คำขอติดตามของคุณได้รับการยอมรับแล้วน่ะ"
|
yourFollowRequestAccepted: "คำขอติดตามของคุณได้รับการยอมรับแล้วน่ะ"
|
||||||
pollEnded: "โพลสำรวจความคิดเห็นผลลัพธ์มีพร้อมใช้งาน"
|
pollEnded: "โพลสำรวจความคิดเห็นผลลัพธ์มีพร้อมใช้งาน"
|
||||||
|
newNote: "โพสต์ใหม่"
|
||||||
unreadAntennaNote: "เสาอากาศ {name}"
|
unreadAntennaNote: "เสาอากาศ {name}"
|
||||||
emptyPushNotificationMessage: "การแจ้งเตือนแบบพุชได้รับการอัพเดทแล้ว"
|
emptyPushNotificationMessage: "การแจ้งเตือนแบบพุชได้รับการอัพเดทแล้ว"
|
||||||
achievementEarned: "รับความสำเร็จ"
|
achievementEarned: "รับความสำเร็จ"
|
||||||
|
@ -1996,6 +2016,7 @@ _notification:
|
||||||
notificationWillBeDisplayedLikeThis: "การแจ้งเตือนมีลักษณะแบบนี้"
|
notificationWillBeDisplayedLikeThis: "การแจ้งเตือนมีลักษณะแบบนี้"
|
||||||
_types:
|
_types:
|
||||||
all: "ทั้งหมด"
|
all: "ทั้งหมด"
|
||||||
|
note: "โน้ตใหม่"
|
||||||
follow: "กำลังติดตาม"
|
follow: "กำลังติดตาม"
|
||||||
mention: "กล่าวถึง"
|
mention: "กล่าวถึง"
|
||||||
reply: "ตอบกลับ"
|
reply: "ตอบกลับ"
|
||||||
|
@ -2066,5 +2087,20 @@ _webhookSettings:
|
||||||
reaction: "เมื่อได้รับรีแอคชั่น"
|
reaction: "เมื่อได้รับรีแอคชั่น"
|
||||||
mention: "เมื่อกำลังถูกกล่าวถึง"
|
mention: "เมื่อกำลังถูกกล่าวถึง"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "สร้างบทบาทแล้ว"
|
||||||
|
deleteRole: "ลบบทบาทแล้ว"
|
||||||
|
updateRole: "อัปเดตบทบาทแล้ว"
|
||||||
|
assignRole: "ได้รับมอบหมายบทบาท"
|
||||||
|
unassignRole: "ถอดออกจากบทบาทแล้ว"
|
||||||
suspend: "ถูกระงับ"
|
suspend: "ถูกระงับ"
|
||||||
|
unsuspend: "เลิกถูกระงับ"
|
||||||
|
addCustomEmoji: "เพิ่มอีโมจิที่กำหนดเองแล้ว"
|
||||||
|
updateCustomEmoji: "อัปเดตอีโมจิที่กำหนดเองแล้ว"
|
||||||
|
deleteCustomEmoji: "ลบอีโมจิที่กำหนดเองออกแล้ว"
|
||||||
|
updateServerSettings: "อัปเดตการตั้งค่าเซิร์ฟเวอร์แล้ว"
|
||||||
|
updateUserNote: "อัปเดตโน้ตการกลั่นกรองแล้ว"
|
||||||
|
deleteDriveFile: "ลบไฟล์ออกแล้ว"
|
||||||
|
deleteNote: "ลบโน้ตออกแล้ว"
|
||||||
resetPassword: "รีเซ็ตรหัสผ่าน"
|
resetPassword: "รีเซ็ตรหัสผ่าน"
|
||||||
|
resolveAbuseReport: "รายงานได้รับการแก้ไขแล้ว"
|
||||||
|
createInvitation: "สร้างคำเชิญ"
|
||||||
|
|
|
@ -1120,6 +1120,9 @@ notifyNotes: "打开发帖通知"
|
||||||
unnotifyNotes: "关闭发帖通知"
|
unnotifyNotes: "关闭发帖通知"
|
||||||
authentication: "验证"
|
authentication: "验证"
|
||||||
authenticationRequiredToContinue: "要继续,请先进行验证"
|
authenticationRequiredToContinue: "要继续,请先进行验证"
|
||||||
|
dateAndTime: "日期和时间"
|
||||||
|
showRenotes: "显示转帖"
|
||||||
|
edited: "已编辑"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "仅限现有用户"
|
forExistingUsers: "仅限现有用户"
|
||||||
forExistingUsersDescription: "若启用,该公告将仅对创建此公告时存在的用户可见。 如果禁用,则在创建此公告后注册的用户也可以看到该公告。"
|
forExistingUsersDescription: "若启用,该公告将仅对创建此公告时存在的用户可见。 如果禁用,则在创建此公告后注册的用户也可以看到该公告。"
|
||||||
|
@ -1450,6 +1453,7 @@ _role:
|
||||||
gtlAvailable: "查看全局时间线"
|
gtlAvailable: "查看全局时间线"
|
||||||
ltlAvailable: "查看本地时间线"
|
ltlAvailable: "查看本地时间线"
|
||||||
canPublicNote: "允许公开发帖"
|
canPublicNote: "允许公开发帖"
|
||||||
|
canEditNote: "编辑帖子"
|
||||||
canInvite: "发放服务器邀请码"
|
canInvite: "发放服务器邀请码"
|
||||||
inviteLimit: "可发行邀请码的数量"
|
inviteLimit: "可发行邀请码的数量"
|
||||||
inviteLimitCycle: "邀请码的发行间隔"
|
inviteLimitCycle: "邀请码的发行间隔"
|
||||||
|
@ -2101,6 +2105,8 @@ _webhookSettings:
|
||||||
reaction: "被回应时"
|
reaction: "被回应时"
|
||||||
mention: "被提及时"
|
mention: "被提及时"
|
||||||
_moderationLogTypes:
|
_moderationLogTypes:
|
||||||
|
createRole: "创建角色"
|
||||||
|
deleteRole: "删除角色"
|
||||||
updateRole: "更新角色"
|
updateRole: "更新角色"
|
||||||
assignRole: "分配角色"
|
assignRole: "分配角色"
|
||||||
unassignRole: "取消分配角色"
|
unassignRole: "取消分配角色"
|
||||||
|
@ -2122,3 +2128,5 @@ _moderationLogTypes:
|
||||||
resetPassword: "重置密码"
|
resetPassword: "重置密码"
|
||||||
markSensitiveDriveFile: "标记网盘文件为敏感媒体"
|
markSensitiveDriveFile: "标记网盘文件为敏感媒体"
|
||||||
unmarkSensitiveDriveFile: "取消标记网盘文件为敏感媒体"
|
unmarkSensitiveDriveFile: "取消标记网盘文件为敏感媒体"
|
||||||
|
resolveAbuseReport: "处理举报"
|
||||||
|
createInvitation: "发行邀请码"
|
||||||
|
|
|
@ -15,7 +15,7 @@ gotIt: "知道了"
|
||||||
cancel: "取消"
|
cancel: "取消"
|
||||||
noThankYou: "現在不要"
|
noThankYou: "現在不要"
|
||||||
enterUsername: "輸入使用者名稱"
|
enterUsername: "輸入使用者名稱"
|
||||||
renotedBy: "{user} 轉發"
|
renotedBy: "{user} 轉發了"
|
||||||
noNotes: "無貼文"
|
noNotes: "無貼文"
|
||||||
noNotifications: "沒有通知"
|
noNotifications: "沒有通知"
|
||||||
instance: "伺服器"
|
instance: "伺服器"
|
||||||
|
@ -75,9 +75,9 @@ import: "匯入"
|
||||||
export: "匯出"
|
export: "匯出"
|
||||||
files: "檔案"
|
files: "檔案"
|
||||||
download: "下載"
|
download: "下載"
|
||||||
driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此附件的貼文也會跟著消失。\n"
|
driveFileDeleteConfirm: "確定要刪除檔案「{name}」嗎?使用此檔案的貼文也會跟著被刪除。"
|
||||||
unfollowConfirm: "確定要取消追隨{name}嗎?"
|
unfollowConfirm: "確定要取消追隨{name}嗎?"
|
||||||
exportRequested: "已請求匯出。這可能會花一點時間。匯出的檔案將會被放到雲端裡。"
|
exportRequested: "已請求匯出。這可能會花一點時間。匯出的檔案將會被放到雲端硬碟裡。"
|
||||||
importRequested: "已請求匯入。這可能會花一點時間。"
|
importRequested: "已請求匯入。這可能會花一點時間。"
|
||||||
lists: "清單"
|
lists: "清單"
|
||||||
noLists: "你沒有任何清單"
|
noLists: "你沒有任何清單"
|
||||||
|
@ -156,16 +156,16 @@ emojiUrl: "表情符號 URL"
|
||||||
addEmoji: "新增表情符號"
|
addEmoji: "新增表情符號"
|
||||||
settingGuide: "推薦設定"
|
settingGuide: "推薦設定"
|
||||||
cacheRemoteFiles: "快取遠端檔案"
|
cacheRemoteFiles: "快取遠端檔案"
|
||||||
cacheRemoteFilesDescription: "啟用此設定後,遠端檔案會被快取在本伺服器的儲存空間中。雖然顯示圖片會變快,但會消耗較多伺服器的儲存空間。至於要快取遠端使用者到什麼程度,是依照角色的雲端硬碟容量而定。當超過這個限制時,從較舊的檔案開始自快取中刪除並改為連結。關閉這個設定時,遠端檔案從一開始就維持連結的方式,但為了產生圖片的縮圖並保護使用者的隱私,建議將 default.yml 的 proxyRemoteFiles 設為 true。"
|
cacheRemoteFilesDescription: "啟用此設定後,遠端檔案會被快取在本伺服器的儲存空間中。雖然顯示圖片會變快,但會消耗較多伺服器的儲存空間。至於要快取遠端使用者到什麼程度,是依照角色的雲端硬碟容量而定。當超過這個限制時,從較舊的檔案開始自快取中刪除並改為連結。關閉這個設定時,遠端檔案從一開始就維持連結的方式,但建議將 default.yml 的 proxyRemoteFiles 設為 true,以便產生圖片的縮圖並保護使用者的隱私,。"
|
||||||
youCanCleanRemoteFilesCache: "按檔案管理的🗑️按鈕,可將快取全部刪除。"
|
youCanCleanRemoteFilesCache: "按檔案管理的🗑️按鈕,可將快取全部刪除。"
|
||||||
cacheRemoteSensitiveFiles: "快取遠端的敏感檔案"
|
cacheRemoteSensitiveFiles: "快取遠端的敏感檔案"
|
||||||
cacheRemoteSensitiveFilesDescription: "若停用這個設定,則不會快取遠端的敏感檔案,而是直接連結。"
|
cacheRemoteSensitiveFilesDescription: "若停用這個設定,則不會快取遠端的敏感檔案,而是直接連結。"
|
||||||
flagAsBot: "此使用者是機器人"
|
flagAsBot: "此使用者是機器人"
|
||||||
flagAsBotDescription: "標記本帳戶由程式控制,防止其他程式與本帳戶產生無限互動的行為。"
|
flagAsBotDescription: "如果本帳戶是由程式控制,請啟用此選項。啟用後,會作為標示幫助其他開發者防止機器人之間產生無限互動的行為,並會調整Misskey內部系統將本帳戶識別為機器人"
|
||||||
flagAsCat: "此帳戶是一隻貓,喵~~~!!!"
|
flagAsCat: "此帳戶是一隻貓,喵~~~!!!"
|
||||||
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示"
|
flagAsCatDescription: "如果想將本帳戶標示為一隻貓,請開啟此標示"
|
||||||
flagShowTimelineReplies: "在時間軸上顯示貼文的回覆"
|
flagShowTimelineReplies: "在時間軸上顯示貼文的回覆"
|
||||||
flagShowTimelineRepliesDescription: "啟用時,時間軸除了顯示使用者的貼文以外,還會顯示使用者對其他貼文的回覆。"
|
flagShowTimelineRepliesDescription: "啟用後,時間軸除了顯示使用者的貼文以外,還會顯示使用者對其他貼文的回覆。"
|
||||||
autoAcceptFollowed: "自動允許來自追隨中使用者的追隨請求"
|
autoAcceptFollowed: "自動允許來自追隨中使用者的追隨請求"
|
||||||
addAccount: "新增帳戶"
|
addAccount: "新增帳戶"
|
||||||
reloadAccountsList: "更新帳戶清單的資訊"
|
reloadAccountsList: "更新帳戶清單的資訊"
|
||||||
|
@ -184,7 +184,7 @@ host: "主機"
|
||||||
selectUser: "選取使用者"
|
selectUser: "選取使用者"
|
||||||
recipient: "收件人"
|
recipient: "收件人"
|
||||||
annotation: "註解"
|
annotation: "註解"
|
||||||
federation: "聯邦宇宙"
|
federation: "站台聯邦"
|
||||||
instances: "伺服器"
|
instances: "伺服器"
|
||||||
registeredAt: "初次觀測"
|
registeredAt: "初次觀測"
|
||||||
latestRequestReceivedAt: "上次收到的請求"
|
latestRequestReceivedAt: "上次收到的請求"
|
||||||
|
@ -573,7 +573,7 @@ tokenRevokedDescription: "登入權杖失效,請重新登入。"
|
||||||
accountDeleted: "帳戶已被刪除"
|
accountDeleted: "帳戶已被刪除"
|
||||||
accountDeletedDescription: "這個帳戶已被刪除。"
|
accountDeletedDescription: "這個帳戶已被刪除。"
|
||||||
menu: "選單"
|
menu: "選單"
|
||||||
divider: "分割線"
|
divider: "分隔線"
|
||||||
addItem: "新增項目"
|
addItem: "新增項目"
|
||||||
rearrange: "排序方式"
|
rearrange: "排序方式"
|
||||||
relays: "中繼"
|
relays: "中繼"
|
||||||
|
@ -582,7 +582,7 @@ inboxUrl: "收件夾URL"
|
||||||
addedRelays: "已加入的中繼"
|
addedRelays: "已加入的中繼"
|
||||||
serviceworkerInfo: "您需要啟用推送通知。"
|
serviceworkerInfo: "您需要啟用推送通知。"
|
||||||
deletedNote: "已刪除的貼文"
|
deletedNote: "已刪除的貼文"
|
||||||
invisibleNote: "隱藏的貼文"
|
invisibleNote: "私密的貼文"
|
||||||
enableInfiniteScroll: "啟用自動滾動頁面模式"
|
enableInfiniteScroll: "啟用自動滾動頁面模式"
|
||||||
visibility: "可見性"
|
visibility: "可見性"
|
||||||
poll: "投票"
|
poll: "投票"
|
||||||
|
@ -1121,6 +1121,7 @@ unnotifyNotes: "關閉貼文通知"
|
||||||
authentication: "驗證"
|
authentication: "驗證"
|
||||||
authenticationRequiredToContinue: "請於繼續前完成驗證"
|
authenticationRequiredToContinue: "請於繼續前完成驗證"
|
||||||
dateAndTime: "日期與時間"
|
dateAndTime: "日期與時間"
|
||||||
|
showRenotes: "顯示轉發貼文"
|
||||||
_announcement:
|
_announcement:
|
||||||
forExistingUsers: "僅限既有的使用者"
|
forExistingUsers: "僅限既有的使用者"
|
||||||
forExistingUsersDescription: "啟用代表僅向現存使用者顯示;停用代表張貼後註冊的新使用者也會看到。"
|
forExistingUsersDescription: "啟用代表僅向現存使用者顯示;停用代表張貼後註冊的新使用者也會看到。"
|
||||||
|
@ -1451,6 +1452,7 @@ _role:
|
||||||
gtlAvailable: "瀏覽全域時間軸"
|
gtlAvailable: "瀏覽全域時間軸"
|
||||||
ltlAvailable: "瀏覽本地時間軸"
|
ltlAvailable: "瀏覽本地時間軸"
|
||||||
canPublicNote: "允許公開貼文"
|
canPublicNote: "允許公開貼文"
|
||||||
|
canEditNote: "允許編輯貼文"
|
||||||
canInvite: "發行實例邀請碼"
|
canInvite: "發行實例邀請碼"
|
||||||
inviteLimit: "可建立邀請碼的數量"
|
inviteLimit: "可建立邀請碼的數量"
|
||||||
inviteLimitCycle: "邀請碼的發放間隔"
|
inviteLimitCycle: "邀請碼的發放間隔"
|
||||||
|
@ -1576,8 +1578,8 @@ _displayOfSensitiveMedia:
|
||||||
force: "隱藏所有檔案"
|
force: "隱藏所有檔案"
|
||||||
_instanceTicker:
|
_instanceTicker:
|
||||||
none: "隱藏"
|
none: "隱藏"
|
||||||
remote: "向遠端使用者顯示"
|
remote: "只顯示遠端使用者"
|
||||||
always: "總是顯示"
|
always: "一律顯示"
|
||||||
_serverDisconnectedBehavior:
|
_serverDisconnectedBehavior:
|
||||||
reload: "自動重載"
|
reload: "自動重載"
|
||||||
dialog: "彈出式警告"
|
dialog: "彈出式警告"
|
||||||
|
@ -1610,7 +1612,7 @@ _wordMute:
|
||||||
mutedNotes: "已靜音的貼文"
|
mutedNotes: "已靜音的貼文"
|
||||||
_instanceMute:
|
_instanceMute:
|
||||||
instanceMuteDescription: "包括對被靜音實例上的使用者的回覆,被設定的實例上所有貼文及轉發都會被靜音。"
|
instanceMuteDescription: "包括對被靜音實例上的使用者的回覆,被設定的實例上所有貼文及轉發都會被靜音。"
|
||||||
instanceMuteDescription2: "換行以分隔"
|
instanceMuteDescription2: "設定時以換行進行分隔"
|
||||||
title: "將隱藏被設定的實例貼文。"
|
title: "將隱藏被設定的實例貼文。"
|
||||||
heading: "將實例靜音"
|
heading: "將實例靜音"
|
||||||
_theme:
|
_theme:
|
||||||
|
@ -1663,7 +1665,7 @@ _theme:
|
||||||
mentionMe: "提到了我"
|
mentionMe: "提到了我"
|
||||||
renote: "轉發貼文"
|
renote: "轉發貼文"
|
||||||
modalBg: "對話框背景"
|
modalBg: "對話框背景"
|
||||||
divider: "分割線"
|
divider: "分隔線"
|
||||||
scrollbarHandle: "捲動條"
|
scrollbarHandle: "捲動條"
|
||||||
scrollbarHandleHover: "捲動條(懸浮)"
|
scrollbarHandleHover: "捲動條(懸浮)"
|
||||||
dateLabelFg: "日期標籤文字"
|
dateLabelFg: "日期標籤文字"
|
||||||
|
@ -2127,3 +2129,5 @@ _moderationLogTypes:
|
||||||
unsuspendRemoteInstance: "解除封鎖遠端伺服器"
|
unsuspendRemoteInstance: "解除封鎖遠端伺服器"
|
||||||
markSensitiveDriveFile: "標記為敏感檔案"
|
markSensitiveDriveFile: "標記為敏感檔案"
|
||||||
unmarkSensitiveDriveFile: "撤銷標記為敏感檔案"
|
unmarkSensitiveDriveFile: "撤銷標記為敏感檔案"
|
||||||
|
resolveAbuseReport: "解決檢舉"
|
||||||
|
createInvitation: "建立邀請碼"
|
||||||
|
|
12
package.json
12
package.json
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "misskey",
|
"name": "misskey",
|
||||||
"version": "2023.9.1-prismisskey.2",
|
"version": "2023.9.2",
|
||||||
"codename": "nasubi",
|
"codename": "nasubi",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/misskey-dev/misskey.git"
|
"url": "https://github.com/misskey-dev/misskey.git"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@8.7.6",
|
"packageManager": "pnpm@8.8.0",
|
||||||
"workspaces": [
|
"workspaces": [
|
||||||
"packages/frontend",
|
"packages/frontend",
|
||||||
"packages/backend",
|
"packages/backend",
|
||||||
|
@ -46,15 +46,15 @@
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"cssnano": "6.0.1",
|
"cssnano": "6.0.1",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"postcss": "8.4.30",
|
"postcss": "8.4.31",
|
||||||
"terser": "5.20.0",
|
"terser": "5.20.0",
|
||||||
"typescript": "5.2.2"
|
"typescript": "5.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "6.7.2",
|
"@typescript-eslint/eslint-plugin": "6.7.3",
|
||||||
"@typescript-eslint/parser": "6.7.2",
|
"@typescript-eslint/parser": "6.7.3",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "13.2.0",
|
"cypress": "13.3.0",
|
||||||
"eslint": "8.50.0",
|
"eslint": "8.50.0",
|
||||||
"start-server-and-test": "2.0.1"
|
"start-server-and-test": "2.0.1"
|
||||||
},
|
},
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
"@swc/core-win32-x64-msvc": "1.3.56",
|
"@swc/core-win32-x64-msvc": "1.3.56",
|
||||||
"@tensorflow/tfjs": "4.4.0",
|
"@tensorflow/tfjs": "4.4.0",
|
||||||
"@tensorflow/tfjs-node": "4.4.0",
|
"@tensorflow/tfjs-node": "4.4.0",
|
||||||
"bufferutil": "^4.0.7",
|
"bufferutil": "4.0.7",
|
||||||
"slacc-android-arm-eabi": "0.0.10",
|
"slacc-android-arm-eabi": "0.0.10",
|
||||||
"slacc-android-arm64": "0.0.10",
|
"slacc-android-arm64": "0.0.10",
|
||||||
"slacc-darwin-arm64": "0.0.10",
|
"slacc-darwin-arm64": "0.0.10",
|
||||||
|
@ -53,7 +53,7 @@
|
||||||
"slacc-linux-x64-musl": "0.0.10",
|
"slacc-linux-x64-musl": "0.0.10",
|
||||||
"slacc-win32-arm64-msvc": "0.0.10",
|
"slacc-win32-arm64-msvc": "0.0.10",
|
||||||
"slacc-win32-x64-msvc": "0.0.10",
|
"slacc-win32-x64-msvc": "0.0.10",
|
||||||
"utf-8-validate": "^6.0.3"
|
"utf-8-validate": "6.0.3"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "3.412.0",
|
"@aws-sdk/client-s3": "3.412.0",
|
||||||
|
@ -68,17 +68,17 @@
|
||||||
"@fastify/cors": "8.4.0",
|
"@fastify/cors": "8.4.0",
|
||||||
"@fastify/express": "2.3.0",
|
"@fastify/express": "2.3.0",
|
||||||
"@fastify/http-proxy": "9.2.1",
|
"@fastify/http-proxy": "9.2.1",
|
||||||
"@fastify/multipart": "7.7.3",
|
"@fastify/multipart": "8.0.0",
|
||||||
"@fastify/static": "6.11.2",
|
"@fastify/static": "6.11.2",
|
||||||
"@fastify/view": "8.2.0",
|
"@fastify/view": "8.2.0",
|
||||||
"@nestjs/common": "10.2.6",
|
"@nestjs/common": "10.2.6",
|
||||||
"@nestjs/core": "10.2.6",
|
"@nestjs/core": "10.2.6",
|
||||||
"@nestjs/testing": "10.2.6",
|
"@nestjs/testing": "10.2.6",
|
||||||
"@peertube/http-signature": "1.7.0",
|
"@peertube/http-signature": "1.7.0",
|
||||||
"@simplewebauthn/server": "8.1.1",
|
"@simplewebauthn/server": "8.2.0",
|
||||||
"@sinonjs/fake-timers": "11.1.0",
|
"@sinonjs/fake-timers": "11.1.0",
|
||||||
"@swc/cli": "0.1.62",
|
"@swc/cli": "0.1.62",
|
||||||
"@swc/core": "1.3.87",
|
"@swc/core": "1.3.90",
|
||||||
"accepts": "1.3.8",
|
"accepts": "1.3.8",
|
||||||
"ajv": "8.12.0",
|
"ajv": "8.12.0",
|
||||||
"archiver": "6.0.1",
|
"archiver": "6.0.1",
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"jsonld": "8.3.1",
|
"jsonld": "8.3.1",
|
||||||
"jsrsasign": "10.8.6",
|
"jsrsasign": "10.8.6",
|
||||||
"meilisearch": "0.34.2",
|
"meilisearch": "0.35.0",
|
||||||
"mfm-js": "0.23.3",
|
"mfm-js": "0.23.3",
|
||||||
"microformats-parser": "1.5.2",
|
"microformats-parser": "1.5.2",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
|
@ -155,7 +155,7 @@
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"summaly": "github:misskey-dev/summaly",
|
"summaly": "github:misskey-dev/summaly",
|
||||||
"systeminformation": "5.21.8",
|
"systeminformation": "5.21.9",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tmp": "0.2.1",
|
"tmp": "0.2.1",
|
||||||
"tsc-alias": "1.8.8",
|
"tsc-alias": "1.8.8",
|
||||||
|
@ -187,33 +187,33 @@
|
||||||
"@types/jsdom": "21.1.3",
|
"@types/jsdom": "21.1.3",
|
||||||
"@types/jsonld": "1.5.10",
|
"@types/jsonld": "1.5.10",
|
||||||
"@types/jsrsasign": "10.5.9",
|
"@types/jsrsasign": "10.5.9",
|
||||||
"@types/mime-types": "2.1.1",
|
"@types/mime-types": "2.1.2",
|
||||||
"@types/ms": "0.7.31",
|
"@types/ms": "0.7.32",
|
||||||
"@types/node": "20.6.4",
|
"@types/node": "20.7.1",
|
||||||
"@types/node-fetch": "3.0.3",
|
"@types/node-fetch": "3.0.3",
|
||||||
"@types/nodemailer": "6.4.11",
|
"@types/nodemailer": "6.4.11",
|
||||||
"@types/oauth": "0.9.2",
|
"@types/oauth": "0.9.2",
|
||||||
"@types/oauth2orize": "1.11.1",
|
"@types/oauth2orize": "1.11.1",
|
||||||
"@types/oauth2orize-pkce": "0.1.0",
|
"@types/oauth2orize-pkce": "0.1.0",
|
||||||
"@types/pg": "8.10.2",
|
"@types/pg": "8.10.3",
|
||||||
"@types/pug": "2.0.6",
|
"@types/pug": "2.0.7",
|
||||||
"@types/punycode": "2.1.0",
|
"@types/punycode": "2.1.0",
|
||||||
"@types/qrcode": "1.5.2",
|
"@types/qrcode": "1.5.2",
|
||||||
"@types/random-seed": "0.3.3",
|
"@types/random-seed": "0.3.3",
|
||||||
"@types/ratelimiter": "3.4.4",
|
"@types/ratelimiter": "3.4.4",
|
||||||
"@types/rename": "1.0.4",
|
"@types/rename": "1.0.5",
|
||||||
"@types/sanitize-html": "2.9.0",
|
"@types/sanitize-html": "2.9.1",
|
||||||
"@types/semver": "7.5.2",
|
"@types/semver": "7.5.3",
|
||||||
"@types/sharp": "0.32.0",
|
"@types/sharp": "0.32.0",
|
||||||
"@types/simple-oauth2": "5.0.4",
|
"@types/simple-oauth2": "5.0.5",
|
||||||
"@types/sinonjs__fake-timers": "8.1.2",
|
"@types/sinonjs__fake-timers": "8.1.3",
|
||||||
"@types/tinycolor2": "1.4.4",
|
"@types/tinycolor2": "1.4.4",
|
||||||
"@types/tmp": "0.2.4",
|
"@types/tmp": "0.2.4",
|
||||||
"@types/vary": "1.1.0",
|
"@types/vary": "1.1.1",
|
||||||
"@types/web-push": "3.6.0",
|
"@types/web-push": "3.6.1",
|
||||||
"@types/ws": "8.5.5",
|
"@types/ws": "8.5.6",
|
||||||
"@typescript-eslint/eslint-plugin": "6.7.2",
|
"@typescript-eslint/eslint-plugin": "6.7.3",
|
||||||
"@typescript-eslint/parser": "6.7.2",
|
"@typescript-eslint/parser": "6.7.3",
|
||||||
"aws-sdk-client-mock": "3.0.0",
|
"aws-sdk-client-mock": "3.0.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint": "8.50.0",
|
"eslint": "8.50.0",
|
||||||
|
|
|
@ -34,10 +34,11 @@ describe('api:notes/create', () => {
|
||||||
.toBe(VALID);
|
.toBe(VALID);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('null post', () => {
|
// TODO
|
||||||
expect(v({ text: null }))
|
//test('null post', () => {
|
||||||
.toBe(INVALID);
|
// expect(v({ text: null }))
|
||||||
});
|
// .toBe(INVALID);
|
||||||
|
//});
|
||||||
|
|
||||||
test('0 characters post', () => {
|
test('0 characters post', () => {
|
||||||
expect(v({ text: '' }))
|
expect(v({ text: '' }))
|
||||||
|
|
|
@ -119,7 +119,7 @@ export const paramDef = {
|
||||||
type: 'string',
|
type: 'string',
|
||||||
minLength: 1,
|
minLength: 1,
|
||||||
maxLength: MAX_NOTE_TEXT_LENGTH,
|
maxLength: MAX_NOTE_TEXT_LENGTH,
|
||||||
nullable: false,
|
nullable: true,
|
||||||
},
|
},
|
||||||
fileIds: {
|
fileIds: {
|
||||||
type: 'array',
|
type: 'array',
|
||||||
|
|
|
@ -188,7 +188,7 @@ export class ClientServerService {
|
||||||
// Authenticate
|
// Authenticate
|
||||||
fastify.addHook('onRequest', async (request, reply) => {
|
fastify.addHook('onRequest', async (request, reply) => {
|
||||||
// %71ueueとかでリクエストされたら困るため
|
// %71ueueとかでリクエストされたら困るため
|
||||||
const url = decodeURI(request.url);
|
const url = decodeURI(request.routerPath);
|
||||||
if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) {
|
if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) {
|
||||||
const token = request.cookies.token;
|
const token = request.cookies.token;
|
||||||
if (token == null) {
|
if (token == null) {
|
||||||
|
@ -728,8 +728,8 @@ export class ClientServerService {
|
||||||
|
|
||||||
fastify.setErrorHandler(async (error, request, reply) => {
|
fastify.setErrorHandler(async (error, request, reply) => {
|
||||||
const errId = randomUUID();
|
const errId = randomUUID();
|
||||||
this.clientLoggerService.logger.error(`Internal error occurred in ${request.routerPath}: ${error.message}`, {
|
this.clientLoggerService.logger.error(`Internal error occurred in ${request.routeOptions.url}: ${error.message}`, {
|
||||||
path: request.routerPath,
|
path: request.routeOptions.url,
|
||||||
params: request.params,
|
params: request.params,
|
||||||
query: request.query,
|
query: request.query,
|
||||||
code: error.name,
|
code: error.name,
|
||||||
|
|
|
@ -35,7 +35,7 @@ html
|
||||||
link(rel='prefetch' href=infoImageUrl)
|
link(rel='prefetch' href=infoImageUrl)
|
||||||
link(rel='prefetch' href=notFoundImageUrl)
|
link(rel='prefetch' href=notFoundImageUrl)
|
||||||
//- https://github.com/misskey-dev/misskey/issues/9842
|
//- https://github.com/misskey-dev/misskey/issues/9842
|
||||||
link(rel='stylesheet' href='/assets/tabler-icons/tabler-icons.min.css?v2.35.0')
|
link(rel='stylesheet' href='/assets/tabler-icons/tabler-icons.min.css?v2.37.0')
|
||||||
link(rel='modulepreload' href=`/vite/${clientEntry.file}`)
|
link(rel='modulepreload' href=`/vite/${clientEntry.file}`)
|
||||||
|
|
||||||
if !config.clientManifestExists
|
if !config.clientManifestExists
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/about-icon.png?raw=true" as="image" type="image/png" crossorigin="anonymous">
|
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/about-icon.png?raw=true" as="image" type="image/png" crossorigin="anonymous">
|
||||||
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/fedi.jpg?raw=true" as="image" type="image/jpeg" crossorigin="anonymous">
|
<link rel="preload" href="https://github.com/misskey-dev/misskey/blob/master/packages/frontend/assets/fedi.jpg?raw=true" as="image" type="image/jpeg" crossorigin="anonymous">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/@tabler/icons-webfont@2.32.0/tabler-icons.min.css">
|
<link rel="stylesheet" href="https://unpkg.com/@tabler/icons-webfont@2.37.0/tabler-icons.min.css">
|
||||||
<link rel="stylesheet" href="https://unpkg.com/@fontsource/m-plus-rounded-1c/index.css">
|
<link rel="stylesheet" href="https://unpkg.com/@fontsource/m-plus-rounded-1c/index.css">
|
||||||
<style>
|
<style>
|
||||||
html {
|
html {
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"@rollup/plugin-replace": "5.0.2",
|
"@rollup/plugin-replace": "5.0.2",
|
||||||
"@rollup/pluginutils": "5.0.4",
|
"@rollup/pluginutils": "5.0.4",
|
||||||
"@syuilo/aiscript": "0.16.0",
|
"@syuilo/aiscript": "0.16.0",
|
||||||
"@tabler/icons-webfont": "2.35.0",
|
"@tabler/icons-webfont": "2.37.0",
|
||||||
"@vitejs/plugin-vue": "4.3.4",
|
"@vitejs/plugin-vue": "4.3.4",
|
||||||
"@vue-macros/reactivity-transform": "0.3.23",
|
"@vue-macros/reactivity-transform": "0.3.23",
|
||||||
"@vue/compiler-sfc": "3.3.4",
|
"@vue/compiler-sfc": "3.3.4",
|
||||||
|
@ -32,7 +32,7 @@
|
||||||
"broadcast-channel": "5.3.0",
|
"broadcast-channel": "5.3.0",
|
||||||
"browser-image-resizer": "github:misskey-dev/browser-image-resizer#v2.2.1-misskey.3",
|
"browser-image-resizer": "github:misskey-dev/browser-image-resizer#v2.2.1-misskey.3",
|
||||||
"buraha": "0.0.1",
|
"buraha": "0.0.1",
|
||||||
"canvas-confetti": "1.6.0",
|
"canvas-confetti": "1.6.1",
|
||||||
"chart.js": "4.4.0",
|
"chart.js": "4.4.0",
|
||||||
"chartjs-adapter-date-fns": "3.0.0",
|
"chartjs-adapter-date-fns": "3.0.0",
|
||||||
"chartjs-chart-matrix": "2.0.1",
|
"chartjs-chart-matrix": "2.0.1",
|
||||||
|
@ -43,7 +43,7 @@
|
||||||
"cropperjs": "2.0.0-beta.4",
|
"cropperjs": "2.0.0-beta.4",
|
||||||
"date-fns": "2.30.0",
|
"date-fns": "2.30.0",
|
||||||
"escape-regexp": "0.0.1",
|
"escape-regexp": "0.0.1",
|
||||||
"estree-walker": "^3.0.3",
|
"estree-walker": "3.0.3",
|
||||||
"eventemitter3": "5.0.1",
|
"eventemitter3": "5.0.1",
|
||||||
"gsap": "3.12.2",
|
"gsap": "3.12.2",
|
||||||
"idb-keyval": "6.2.1",
|
"idb-keyval": "6.2.1",
|
||||||
|
@ -57,12 +57,12 @@
|
||||||
"prismjs": "1.29.0",
|
"prismjs": "1.29.0",
|
||||||
"punycode": "2.3.0",
|
"punycode": "2.3.0",
|
||||||
"querystring": "0.2.1",
|
"querystring": "0.2.1",
|
||||||
"rollup": "3.29.2",
|
"rollup": "3.29.4",
|
||||||
"sanitize-html": "2.11.0",
|
"sanitize-html": "2.11.0",
|
||||||
"sass": "1.68.0",
|
"sass": "1.68.0",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"three": "0.156.1",
|
"three": "0.157.0",
|
||||||
"throttle-debounce": "5.0.0",
|
"throttle-debounce": "5.0.0",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tsc-alias": "1.8.8",
|
"tsc-alias": "1.8.8",
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
"twemoji-parser": "14.0.0",
|
"twemoji-parser": "14.0.0",
|
||||||
"typescript": "5.2.2",
|
"typescript": "5.2.2",
|
||||||
"uuid": "9.0.1",
|
"uuid": "9.0.1",
|
||||||
"v-code-diff": "^1.7.1",
|
"v-code-diff": "1.7.1",
|
||||||
"vanilla-tilt": "1.8.1",
|
"vanilla-tilt": "1.8.1",
|
||||||
"vite": "4.4.9",
|
"vite": "4.4.9",
|
||||||
"vue": "3.3.4",
|
"vue": "3.3.4",
|
||||||
|
@ -78,44 +78,44 @@
|
||||||
"vuedraggable": "next"
|
"vuedraggable": "next"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@storybook/addon-actions": "7.4.4",
|
"@storybook/addon-actions": "7.4.5",
|
||||||
"@storybook/addon-essentials": "7.4.4",
|
"@storybook/addon-essentials": "7.4.5",
|
||||||
"@storybook/addon-interactions": "7.4.4",
|
"@storybook/addon-interactions": "7.4.5",
|
||||||
"@storybook/addon-links": "7.4.4",
|
"@storybook/addon-links": "7.4.5",
|
||||||
"@storybook/addon-storysource": "7.4.4",
|
"@storybook/addon-storysource": "7.4.5",
|
||||||
"@storybook/addons": "7.4.4",
|
"@storybook/addons": "7.4.5",
|
||||||
"@storybook/blocks": "7.4.4",
|
"@storybook/blocks": "7.4.5",
|
||||||
"@storybook/core-events": "7.4.4",
|
"@storybook/core-events": "7.4.5",
|
||||||
"@storybook/jest": "0.2.2",
|
"@storybook/jest": "0.2.2",
|
||||||
"@storybook/manager-api": "7.4.4",
|
"@storybook/manager-api": "7.4.5",
|
||||||
"@storybook/preview-api": "7.4.4",
|
"@storybook/preview-api": "7.4.5",
|
||||||
"@storybook/react": "7.4.4",
|
"@storybook/react": "7.4.5",
|
||||||
"@storybook/react-vite": "7.4.4",
|
"@storybook/react-vite": "7.4.5",
|
||||||
"@storybook/testing-library": "0.2.1",
|
"@storybook/testing-library": "0.2.1",
|
||||||
"@storybook/theming": "7.4.4",
|
"@storybook/theming": "7.4.5",
|
||||||
"@storybook/types": "7.4.4",
|
"@storybook/types": "7.4.5",
|
||||||
"@storybook/vue3": "7.4.4",
|
"@storybook/vue3": "7.4.5",
|
||||||
"@storybook/vue3-vite": "7.4.4",
|
"@storybook/vue3-vite": "7.4.5",
|
||||||
"@testing-library/vue": "7.0.0",
|
"@testing-library/vue": "7.0.0",
|
||||||
"@types/escape-regexp": "0.0.1",
|
"@types/escape-regexp": "0.0.1",
|
||||||
"@types/estree": "1.0.2",
|
"@types/estree": "1.0.2",
|
||||||
"@types/matter-js": "0.19.0",
|
"@types/matter-js": "0.19.1",
|
||||||
"@types/micromatch": "4.0.2",
|
"@types/micromatch": "4.0.3",
|
||||||
"@types/node": "20.6.4",
|
"@types/node": "20.7.1",
|
||||||
"@types/punycode": "2.1.0",
|
"@types/punycode": "2.1.0",
|
||||||
"@types/sanitize-html": "2.9.0",
|
"@types/sanitize-html": "2.9.1",
|
||||||
"@types/throttle-debounce": "5.0.0",
|
"@types/throttle-debounce": "5.0.0",
|
||||||
"@types/tinycolor2": "1.4.4",
|
"@types/tinycolor2": "1.4.4",
|
||||||
"@types/uuid": "9.0.4",
|
"@types/uuid": "9.0.4",
|
||||||
"@types/websocket": "1.0.6",
|
"@types/websocket": "1.0.7",
|
||||||
"@types/ws": "8.5.5",
|
"@types/ws": "8.5.6",
|
||||||
"@typescript-eslint/eslint-plugin": "6.7.2",
|
"@typescript-eslint/eslint-plugin": "6.7.3",
|
||||||
"@typescript-eslint/parser": "6.7.2",
|
"@typescript-eslint/parser": "6.7.3",
|
||||||
"@vitest/coverage-v8": "0.34.5",
|
"@vitest/coverage-v8": "0.34.5",
|
||||||
"@vue/runtime-core": "3.3.4",
|
"@vue/runtime-core": "3.3.4",
|
||||||
"acorn": "8.10.0",
|
"acorn": "8.10.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "13.2.0",
|
"cypress": "13.3.0",
|
||||||
"eslint": "8.50.0",
|
"eslint": "8.50.0",
|
||||||
"eslint-plugin-import": "2.28.1",
|
"eslint-plugin-import": "2.28.1",
|
||||||
"eslint-plugin-vue": "9.17.0",
|
"eslint-plugin-vue": "9.17.0",
|
||||||
|
@ -129,13 +129,13 @@
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "18.2.0",
|
"react-dom": "18.2.0",
|
||||||
"start-server-and-test": "2.0.1",
|
"start-server-and-test": "2.0.1",
|
||||||
"storybook": "7.4.4",
|
"storybook": "7.4.5",
|
||||||
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
||||||
"summaly": "github:misskey-dev/summaly",
|
"summaly": "github:misskey-dev/summaly",
|
||||||
"vite-plugin-turbosnap": "1.0.3",
|
"vite-plugin-turbosnap": "1.0.3",
|
||||||
"vitest": "0.34.5",
|
"vitest": "0.34.5",
|
||||||
"vitest-fetch-mock": "0.2.2",
|
"vitest-fetch-mock": "0.2.2",
|
||||||
"vue-eslint-parser": "9.3.1",
|
"vue-eslint-parser": "9.3.1",
|
||||||
"vue-tsc": "1.8.13"
|
"vue-tsc": "1.8.15"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,11 @@ const props = withDefaults(defineProps<{
|
||||||
sound?: boolean;
|
sound?: boolean;
|
||||||
withRenotes?: boolean;
|
withRenotes?: boolean;
|
||||||
withReplies?: boolean;
|
withReplies?: boolean;
|
||||||
|
onlyFiles?: boolean;
|
||||||
}>(), {
|
}>(), {
|
||||||
withRenotes: true,
|
withRenotes: true,
|
||||||
withReplies: false,
|
withReplies: false,
|
||||||
|
onlyFiles: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
|
@ -69,10 +71,12 @@ if (props.src === 'antenna') {
|
||||||
query = {
|
query = {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
};
|
};
|
||||||
connection = stream.useChannel('homeTimeline', {
|
connection = stream.useChannel('homeTimeline', {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
});
|
});
|
||||||
connection.on('note', prepend);
|
connection.on('note', prepend);
|
||||||
|
|
||||||
|
@ -82,10 +86,12 @@ if (props.src === 'antenna') {
|
||||||
query = {
|
query = {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
};
|
};
|
||||||
connection = stream.useChannel('localTimeline', {
|
connection = stream.useChannel('localTimeline', {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
});
|
});
|
||||||
connection.on('note', prepend);
|
connection.on('note', prepend);
|
||||||
} else if (props.src === 'media') {
|
} else if (props.src === 'media') {
|
||||||
|
@ -106,10 +112,12 @@ if (props.src === 'antenna') {
|
||||||
query = {
|
query = {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
};
|
};
|
||||||
connection = stream.useChannel('hybridTimeline', {
|
connection = stream.useChannel('hybridTimeline', {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
});
|
});
|
||||||
connection.on('note', prepend);
|
connection.on('note', prepend);
|
||||||
} else if (props.src === 'all') {
|
} else if (props.src === 'all') {
|
||||||
|
@ -128,10 +136,12 @@ if (props.src === 'antenna') {
|
||||||
query = {
|
query = {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
};
|
};
|
||||||
connection = stream.useChannel('globalTimeline', {
|
connection = stream.useChannel('globalTimeline', {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
});
|
});
|
||||||
connection.on('note', prepend);
|
connection.on('note', prepend);
|
||||||
} else if (props.src === 'mentions') {
|
} else if (props.src === 'mentions') {
|
||||||
|
@ -155,11 +165,13 @@ if (props.src === 'antenna') {
|
||||||
query = {
|
query = {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
listId: props.list,
|
listId: props.list,
|
||||||
};
|
};
|
||||||
connection = stream.useChannel('userList', {
|
connection = stream.useChannel('userList', {
|
||||||
withRenotes: props.withRenotes,
|
withRenotes: props.withRenotes,
|
||||||
withReplies: props.withReplies,
|
withReplies: props.withReplies,
|
||||||
|
withFiles: props.onlyFiles ? true : undefined,
|
||||||
listId: props.list,
|
listId: props.list,
|
||||||
});
|
});
|
||||||
connection.on('note', prepend);
|
connection.on('note', prepend);
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
// TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する
|
// TODO: なんでもかんでもos.tsに突っ込むのやめたいのでよしなに分割する
|
||||||
|
|
||||||
import { pendingApiRequestsCount, api, apiGet } from '@/scripts/api.js';
|
import { pendingApiRequestsCount, api, apiExternal, apiGet } from '@/scripts/api.js';
|
||||||
export { pendingApiRequestsCount, api, apiGet };
|
export { pendingApiRequestsCount, api, apiExternal, apiGet };
|
||||||
import { Component, markRaw, Ref, ref, defineAsyncComponent } from 'vue';
|
import { Component, markRaw, Ref, ref, defineAsyncComponent } from 'vue';
|
||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import insertTextAtCursor from 'insert-text-at-cursor';
|
import insertTextAtCursor from 'insert-text-at-cursor';
|
||||||
|
|
|
@ -15,10 +15,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<div :class="$style.tl">
|
<div :class="$style.tl">
|
||||||
<MkTimeline
|
<MkTimeline
|
||||||
ref="tlComponent"
|
ref="tlComponent"
|
||||||
:key="src + withRenotes + withReplies"
|
:key="src + withRenotes + withReplies + onlyFiles"
|
||||||
:src="src"
|
:src="src"
|
||||||
:withRenotes="withRenotes"
|
:withRenotes="withRenotes"
|
||||||
:withReplies="withReplies"
|
:withReplies="withReplies"
|
||||||
|
:onlyFiles="onlyFiles"
|
||||||
:sound="true"
|
:sound="true"
|
||||||
@queue="queueUpdated"
|
@queue="queueUpdated"
|
||||||
/>
|
/>
|
||||||
|
@ -64,6 +65,7 @@ let srcWhenNotSignin = $ref(isLocalTimelineAvailable ? 'local' : 'global');
|
||||||
const src = $computed({ get: () => ($i ? defaultStore.reactiveState.tl.value.src : srcWhenNotSignin), set: (x) => saveSrc(x) });
|
const src = $computed({ get: () => ($i ? defaultStore.reactiveState.tl.value.src : srcWhenNotSignin), set: (x) => saveSrc(x) });
|
||||||
const withRenotes = $ref(true);
|
const withRenotes = $ref(true);
|
||||||
const withReplies = $ref(false);
|
const withReplies = $ref(false);
|
||||||
|
const onlyFiles = $ref(false);
|
||||||
|
|
||||||
watch($$(src), () => queue = 0);
|
watch($$(src), () => queue = 0);
|
||||||
|
|
||||||
|
@ -149,6 +151,11 @@ const headerActions = $computed(() => [{
|
||||||
text: i18n.ts.withReplies,
|
text: i18n.ts.withReplies,
|
||||||
icon: 'ti ti-arrow-back-up',
|
icon: 'ti ti-arrow-back-up',
|
||||||
ref: $$(withReplies),
|
ref: $$(withReplies),
|
||||||
|
}, {
|
||||||
|
type: 'switch',
|
||||||
|
text: i18n.ts.fileAttachedOnly,
|
||||||
|
icon: 'ti ti-photo',
|
||||||
|
ref: $$(onlyFiles),
|
||||||
}], ev.currentTarget ?? ev.target);
|
}], ev.currentTarget ?? ev.target);
|
||||||
},
|
},
|
||||||
}]);
|
}]);
|
||||||
|
@ -176,7 +183,7 @@ const headerTabs = $computed(() => [...(defaultStore.reactiveState.pinnedUserLis
|
||||||
}] : []), {
|
}] : []), {
|
||||||
key: 'social',
|
key: 'social',
|
||||||
title: i18n.ts._timelines.social,
|
title: i18n.ts._timelines.social,
|
||||||
icon: 'ti ti-rocket',
|
icon: 'ti ti-universe',
|
||||||
iconOnly: true,
|
iconOnly: true,
|
||||||
}] : []), ...(isGlobalTimelineAvailable ? [{
|
}] : []), ...(isGlobalTimelineAvailable ? [{
|
||||||
key: 'global',
|
key: 'global',
|
||||||
|
@ -217,7 +224,7 @@ const headerTabsWhenNotLogin = $computed(() => [
|
||||||
|
|
||||||
definePageMetadata(computed(() => ({
|
definePageMetadata(computed(() => ({
|
||||||
title: i18n.ts.timeline,
|
title: i18n.ts.timeline,
|
||||||
icon: src === 'local' ? 'ti ti-planet' : src === 'social' ? 'ti ti-rocket' : src === 'global' ? 'ti ti-whirl' : 'ti ti-home',
|
icon: src === 'local' ? 'ti ti-planet' : src === 'social' ? 'ti ti-universe' : src === 'global' ? 'ti ti-whirl' : 'ti ti-home',
|
||||||
})));
|
})));
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,16 @@ export function createAiScriptEnv(opts) {
|
||||||
return values.ERROR('request_failed', utils.jsToVal(err));
|
return values.ERROR('request_failed', utils.jsToVal(err));
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
'Mk:apiExternal': values.FN_NATIVE(async ([host, ep, param, token]) => {
|
||||||
|
utils.assertString(host);
|
||||||
|
utils.assertString(ep);
|
||||||
|
if (token) utils.assertString(token);
|
||||||
|
return os.apiExternal(host.value, ep.value, utils.valToJs(param), token?.value).then(res => {
|
||||||
|
return utils.jsToVal(res);
|
||||||
|
}, err => {
|
||||||
|
return values.ERROR('request_failed', utils.jsToVal(err));
|
||||||
|
});
|
||||||
|
}),
|
||||||
'Mk:save': values.FN_NATIVE(([key, value]) => {
|
'Mk:save': values.FN_NATIVE(([key, value]) => {
|
||||||
utils.assertString(key);
|
utils.assertString(key);
|
||||||
miLocalStorage.setItem(`aiscript:${opts.storageKey}:${key.value}`, JSON.stringify(utils.valToJs(value)));
|
miLocalStorage.setItem(`aiscript:${opts.storageKey}:${key.value}`, JSON.stringify(utils.valToJs(value)));
|
||||||
|
|
|
@ -11,6 +11,7 @@ export const pendingApiRequestsCount = ref(0);
|
||||||
|
|
||||||
// Implements Misskey.api.ApiClient.request
|
// Implements Misskey.api.ApiClient.request
|
||||||
export function api<E extends keyof Misskey.Endpoints, P extends Misskey.Endpoints[E]['req']>(endpoint: E, data: P = {} as any, token?: string | null | undefined, signal?: AbortSignal): Promise<Misskey.Endpoints[E]['res']> {
|
export function api<E extends keyof Misskey.Endpoints, P extends Misskey.Endpoints[E]['req']>(endpoint: E, data: P = {} as any, token?: string | null | undefined, signal?: AbortSignal): Promise<Misskey.Endpoints[E]['res']> {
|
||||||
|
if (endpoint.includes('://')) throw new Error('invalid endpoint');
|
||||||
pendingApiRequestsCount.value++;
|
pendingApiRequestsCount.value++;
|
||||||
|
|
||||||
const onFinally = () => {
|
const onFinally = () => {
|
||||||
|
@ -23,7 +24,50 @@ export function api<E extends keyof Misskey.Endpoints, P extends Misskey.Endpoin
|
||||||
if (token !== undefined) (data as any).i = token;
|
if (token !== undefined) (data as any).i = token;
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
window.fetch(endpoint.indexOf('://') > -1 ? endpoint : `${apiUrl}/${endpoint}`, {
|
window.fetch(`${apiUrl}/${endpoint}`, {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(data),
|
||||||
|
credentials: 'omit',
|
||||||
|
cache: 'no-cache',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
signal,
|
||||||
|
}).then(async (res) => {
|
||||||
|
const body = res.status === 204 ? null : await res.json();
|
||||||
|
|
||||||
|
if (res.status === 200) {
|
||||||
|
resolve(body);
|
||||||
|
} else if (res.status === 204) {
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
reject(body.error);
|
||||||
|
}
|
||||||
|
}).catch(reject);
|
||||||
|
});
|
||||||
|
|
||||||
|
promise.then(onFinally, onFinally);
|
||||||
|
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function apiExternal<E extends keyof Misskey.Endpoints, P extends Misskey.Endpoints[E]['req']>(hostUrl: string, endpoint: E, data: P = {} as any, token?: string | null | undefined, signal?: AbortSignal): Promise<Misskey.Endpoints[E]['res']> {
|
||||||
|
if (!/^https?:\/\//.test(hostUrl)) throw new Error('invalid host name');
|
||||||
|
if (endpoint.includes('://')) throw new Error('invalid endpoint');
|
||||||
|
pendingApiRequestsCount.value++;
|
||||||
|
|
||||||
|
const onFinally = () => {
|
||||||
|
pendingApiRequestsCount.value--;
|
||||||
|
};
|
||||||
|
|
||||||
|
const promise = new Promise<Misskey.Endpoints[E]['res'] | void>((resolve, reject) => {
|
||||||
|
// Append a credential
|
||||||
|
(data as any).i = token;
|
||||||
|
|
||||||
|
const fullUrl = (hostUrl.slice(-1) === '/' ? hostUrl.slice(0, -1) : hostUrl)
|
||||||
|
+ '/api/' + (endpoint.slice(0, 1) === '/' ? endpoint.slice(1) : endpoint);
|
||||||
|
// Send request
|
||||||
|
window.fetch(fullUrl, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: JSON.stringify(data),
|
body: JSON.stringify(data),
|
||||||
credentials: 'omit',
|
credentials: 'omit',
|
||||||
|
|
|
@ -32,6 +32,7 @@ export type Column = {
|
||||||
tl?: 'home' | 'local' |'media' | 'social' | 'global';
|
tl?: 'home' | 'local' |'media' | 'social' | 'global';
|
||||||
withRenotes?: boolean;
|
withRenotes?: boolean;
|
||||||
withReplies?: boolean;
|
withReplies?: boolean;
|
||||||
|
onlyFiles?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const deckStore = markRaw(new Storage('deck', {
|
export const deckStore = markRaw(new Storage('deck', {
|
||||||
|
|
|
@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #header>
|
<template #header>
|
||||||
<i v-if="column.tl === 'home'" class="ti ti-home"></i>
|
<i v-if="column.tl === 'home'" class="ti ti-home"></i>
|
||||||
<i v-else-if="column.tl === 'local'" class="ti ti-planet"></i>
|
<i v-else-if="column.tl === 'local'" class="ti ti-planet"></i>
|
||||||
<i v-else-if="column.tl === 'social'" class="ti ti-rocket"></i>
|
<i v-else-if="column.tl === 'social'" class="ti ti-universe"></i>
|
||||||
<i v-else-if="column.tl === 'media'" class="ti ti-photo"></i>
|
<i v-else-if="column.tl === 'media'" class="ti ti-photo"></i>
|
||||||
<i v-else-if="column.tl === 'global'" class="ti ti-whirl"></i>
|
<i v-else-if="column.tl === 'global'" class="ti ti-whirl"></i>
|
||||||
<span style="margin-left: 8px;">{{ column.name }}</span>
|
<span style="margin-left: 8px;">{{ column.name }}</span>
|
||||||
|
@ -24,10 +24,11 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<MkTimeline
|
<MkTimeline
|
||||||
v-else-if="column.tl"
|
v-else-if="column.tl"
|
||||||
ref="timeline"
|
ref="timeline"
|
||||||
:key="column.tl + withRenotes + withReplies"
|
:key="column.tl + withRenotes + withReplies + onlyFiles"
|
||||||
:src="column.tl"
|
:src="column.tl"
|
||||||
:withRenotes="withRenotes"
|
:withRenotes="withRenotes"
|
||||||
:withReplies="withReplies"
|
:withReplies="withReplies"
|
||||||
|
:onlyFiles="onlyFiles"
|
||||||
/>
|
/>
|
||||||
</XColumn>
|
</XColumn>
|
||||||
</template>
|
</template>
|
||||||
|
@ -53,6 +54,7 @@ const isLocalTimelineAvailable = (($i == null && instance.policies.ltlAvailable)
|
||||||
const isGlobalTimelineAvailable = (($i == null && instance.policies.gtlAvailable) || ($i != null && $i.policies.gtlAvailable));
|
const isGlobalTimelineAvailable = (($i == null && instance.policies.gtlAvailable) || ($i != null && $i.policies.gtlAvailable));
|
||||||
const withRenotes = $ref(props.column.withRenotes ?? true);
|
const withRenotes = $ref(props.column.withRenotes ?? true);
|
||||||
const withReplies = $ref(props.column.withReplies ?? false);
|
const withReplies = $ref(props.column.withReplies ?? false);
|
||||||
|
const onlyFiles = $ref(props.column.onlyFiles ?? false);
|
||||||
|
|
||||||
watch($$(withRenotes), v => {
|
watch($$(withRenotes), v => {
|
||||||
updateColumn(props.column.id, {
|
updateColumn(props.column.id, {
|
||||||
|
@ -66,6 +68,12 @@ watch($$(withReplies), v => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
watch($$(onlyFiles), v => {
|
||||||
|
updateColumn(props.column.id, {
|
||||||
|
onlyFiles: v,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (props.column.tl == null) {
|
if (props.column.tl == null) {
|
||||||
setType();
|
setType();
|
||||||
|
@ -114,6 +122,10 @@ const menu = [{
|
||||||
type: 'switch',
|
type: 'switch',
|
||||||
text: i18n.ts.withReplies,
|
text: i18n.ts.withReplies,
|
||||||
ref: $$(withReplies),
|
ref: $$(withReplies),
|
||||||
|
}, {
|
||||||
|
type: 'switch',
|
||||||
|
text: i18n.ts.fileAttachedOnly,
|
||||||
|
ref: $$(onlyFiles),
|
||||||
}];
|
}];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<i v-if="widgetProps.src === 'home'" class="ti ti-home"></i>
|
<i v-if="widgetProps.src === 'home'" class="ti ti-home"></i>
|
||||||
<i v-else-if="widgetProps.src === 'local'" class="ti ti-planet"></i>
|
<i v-else-if="widgetProps.src === 'local'" class="ti ti-planet"></i>
|
||||||
<i v-else-if="widgetProps.src === 'social'" class="ti ti-rocket"></i>
|
<i v-else-if="widgetProps.src === 'social'" class="ti ti-universe"></i>
|
||||||
<i v-else-if="widgetProps.src === 'global'" class="ti ti-whirl"></i>
|
<i v-else-if="widgetProps.src === 'global'" class="ti ti-whirl"></i>
|
||||||
<i v-else-if="widgetProps.src === 'list'" class="ti ti-list"></i>
|
<i v-else-if="widgetProps.src === 'list'" class="ti ti-list"></i>
|
||||||
<i v-else-if="widgetProps.src === 'antenna'" class="ti ti-antenna"></i>
|
<i v-else-if="widgetProps.src === 'antenna'" class="ti ti-antenna"></i>
|
||||||
|
@ -128,7 +128,7 @@ const choose = async (ev) => {
|
||||||
action: () => { setSrc('media'); },
|
action: () => { setSrc('media'); },
|
||||||
}, {
|
}, {
|
||||||
text: i18n.ts._timelines.social,
|
text: i18n.ts._timelines.social,
|
||||||
icon: 'ti ti-rocket',
|
icon: 'ti ti-universe',
|
||||||
action: () => { setSrc('social'); },
|
action: () => { setSrc('social'); },
|
||||||
}, {
|
}, {
|
||||||
text: i18n.ts._timelines.global,
|
text: i18n.ts._timelines.global,
|
||||||
|
|
|
@ -2607,6 +2607,15 @@ type ModerationLog = {
|
||||||
} | {
|
} | {
|
||||||
type: 'createInvitation';
|
type: 'createInvitation';
|
||||||
info: ModerationLogPayloads['createInvitation'];
|
info: ModerationLogPayloads['createInvitation'];
|
||||||
|
} | {
|
||||||
|
type: 'createAd';
|
||||||
|
info: ModerationLogPayloads['createAd'];
|
||||||
|
} | {
|
||||||
|
type: 'updateAd';
|
||||||
|
info: ModerationLogPayloads['updateAd'];
|
||||||
|
} | {
|
||||||
|
type: 'deleteAd';
|
||||||
|
info: ModerationLogPayloads['deleteAd'];
|
||||||
});
|
});
|
||||||
|
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
|
|
|
@ -20,12 +20,12 @@
|
||||||
"url": "git+https://github.com/misskey-dev/misskey.js.git"
|
"url": "git+https://github.com/misskey-dev/misskey.js.git"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@microsoft/api-extractor": "7.37.0",
|
"@microsoft/api-extractor": "7.37.2",
|
||||||
"@swc/jest": "0.2.29",
|
"@swc/jest": "0.2.29",
|
||||||
"@types/jest": "29.5.5",
|
"@types/jest": "29.5.5",
|
||||||
"@types/node": "20.6.4",
|
"@types/node": "20.7.1",
|
||||||
"@typescript-eslint/eslint-plugin": "6.7.2",
|
"@typescript-eslint/eslint-plugin": "6.7.3",
|
||||||
"@typescript-eslint/parser": "6.7.2",
|
"@typescript-eslint/parser": "6.7.3",
|
||||||
"eslint": "8.50.0",
|
"eslint": "8.50.0",
|
||||||
"jest": "29.7.0",
|
"jest": "29.7.0",
|
||||||
"jest-fetch-mock": "3.0.3",
|
"jest-fetch-mock": "3.0.3",
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@swc/cli": "0.1.62",
|
"@swc/cli": "0.1.62",
|
||||||
"@swc/core": "1.3.87",
|
"@swc/core": "1.3.90",
|
||||||
"eventemitter3": "5.0.1",
|
"eventemitter3": "5.0.1",
|
||||||
"reconnecting-websocket": "4.4.0"
|
"reconnecting-websocket": "4.4.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -658,4 +658,13 @@ export type ModerationLog = {
|
||||||
} | {
|
} | {
|
||||||
type: 'createInvitation';
|
type: 'createInvitation';
|
||||||
info: ModerationLogPayloads['createInvitation'];
|
info: ModerationLogPayloads['createInvitation'];
|
||||||
|
} | {
|
||||||
|
type: 'createAd';
|
||||||
|
info: ModerationLogPayloads['createAd'];
|
||||||
|
} | {
|
||||||
|
type: 'updateAd';
|
||||||
|
info: ModerationLogPayloads['updateAd'];
|
||||||
|
} | {
|
||||||
|
type: 'deleteAd';
|
||||||
|
info: ModerationLogPayloads['deleteAd'];
|
||||||
});
|
});
|
||||||
|
|
|
@ -9,12 +9,12 @@
|
||||||
"lint": "pnpm typecheck && pnpm eslint"
|
"lint": "pnpm typecheck && pnpm eslint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "0.19.3",
|
"esbuild": "0.19.4",
|
||||||
"idb-keyval": "6.2.1",
|
"idb-keyval": "6.2.1",
|
||||||
"misskey-js": "workspace:*"
|
"misskey-js": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/parser": "6.7.2",
|
"@typescript-eslint/parser": "6.7.3",
|
||||||
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
|
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
|
||||||
"eslint": "8.50.0",
|
"eslint": "8.50.0",
|
||||||
"eslint-plugin-import": "2.28.1",
|
"eslint-plugin-import": "2.28.1",
|
||||||
|
|
1771
pnpm-lock.yaml
1771
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue