Skip to content

Commit b4ca24d

Browse files
authored
release: v2025.1.0-kakurega.1.40.1 (#168)
2 parents 6d95513 + 68a7b0e commit b4ca24d

23 files changed

+129
-51
lines changed

CHANGELOG.md

+16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
## 2025.2.0
2+
3+
### General
4+
- Fix: Docker のビルドに失敗する問題を修正
5+
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/883)
6+
7+
### Client
8+
- Fix: 一部環境でセンシティブなファイルを含むノートの非表示が効かない問題
9+
- Fix: データセーバー有効時にもユーザーページの「ファイル」タブで画像が読み込まれてしまう問題を修正
10+
- Fix: MFMの `sparkle` エフェクトが正しく表示されない問題を修正
11+
- ローカライゼーションの更新
12+
13+
### Server
14+
- Fix: 個別お知らせページのmetaタグ出力の条件が間違っていたのを修正
15+
16+
117
## 2025.1.0
218

319
### Note

CHANGELOG_KAKUREGA.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ Base: 2025.1.0
55
### 変更
66
Misskey 2025.1.0をマージしました。
77

8-
> [!IMPORTANT] 重要な変更点 (サーバー管理者向け)
8+
> [!IMPORTANT]
9+
> #### 重要な変更点 (サーバー管理者向け)
910
> Misskey 2025.1.0で検索プロバイダを変更できる機能が追加されました。
10-
> デフォルトの設定ではpostgres標準の検索(LIKE)になっているため、引き続きpgroongaを使用する場合は `.config/default.yml` 内の `fulltextSearch.provider``pgroonga` に設定する必要があります。
11+
> デフォルトの設定ではpostgres標準の検索(LIKE)になっているため、引き続きpgroongaを使用する場合は `.config/default.yml` 内の `fulltextSearch.provider``sqlPgroonga` に設定する必要があります。
1112
> 詳しくは `.config/example.yml` を参照してください。
1213
1314
## 1.39.6

Dockerfile

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ ARG NODE_VERSION=22.11.0-bookworm
66

77
FROM --platform=$BUILDPLATFORM node:${NODE_VERSION} AS native-builder
88

9+
ENV COREPACK_DEFAULT_TO_LATEST=0
10+
911
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
1012
--mount=type=cache,target=/var/lib/apt,sharing=locked \
1113
rm -f /etc/apt/apt.conf.d/docker-clean \
@@ -44,6 +46,8 @@ RUN rm -rf .git/
4446

4547
FROM --platform=$TARGETPLATFORM node:${NODE_VERSION} AS target-builder
4648

49+
ENV COREPACK_DEFAULT_TO_LATEST=0
50+
4751
RUN apt-get update \
4852
&& apt-get install -yqq --no-install-recommends \
4953
build-essential
@@ -68,6 +72,7 @@ FROM --platform=$TARGETPLATFORM node:${NODE_VERSION}-slim AS runner
6872

6973
ARG UID="991"
7074
ARG GID="991"
75+
ENV COREPACK_DEFAULT_TO_LATEST=0
7176

7277
RUN apt-get update \
7378
&& apt-get install -y --no-install-recommends \

SECURITY.md

+5
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ bug report to the GitHub repository.
77

88
Thanks for helping make Misskey safe for everyone.
99

10+
> [!note]
11+
> CNA [requires](https://www.cve.org/ResourcesSupport/AllResources/CNARules#section_5-2_Description) that CVEs include a description in English for inclusion in the CVE Catalog.
12+
>
13+
> When creating a security advisory, all content must be written in English (it is acceptable to include a non-English description along with the English one).
14+
1015
## When create a patch
1116

1217
If you can also create a patch to fix the vulnerability, please create a PR on the private fork.

locales/de-DE.yml

+9
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ introMisskey: "Willkommen! Misskey ist eine dezentralisierte Open-Source Microbl
55
poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform <b>Misskey</b> betriebenen Dienste."
66
monthAndDay: "{day}.{month}."
77
search: "Suchen"
8+
reset: "Zurücksetzen"
89
notifications: "Benachrichtigungen"
910
username: "Benutzername"
1011
password: "Passwort"
@@ -48,6 +49,7 @@ pin: "An dein Profil anheften"
4849
unpin: "Von deinem Profil lösen"
4950
copyContent: "Inhalt kopieren"
5051
copyLink: "Link kopieren"
52+
copyRemoteLink: "Renote-Link kopieren"
5153
copyLinkRenote: "Renote-Link kopieren"
5254
delete: "Löschen"
5355
deleteAndEdit: "Löschen und Bearbeiten"
@@ -517,6 +519,7 @@ emojiStyle: "Emoji-Stil"
517519
native: "Nativ"
518520
menuStyle: "Menü Stil"
519521
style: "Stil"
522+
drawer: "App-Übersicht"
520523
popup: "Pop-up"
521524
showNoteActionsOnlyHover: "Notizmenü nur bei Mouseover anzeigen"
522525
showReactionsCount: "Zeige die Anzahl der Reaktionen auf Notizen an"
@@ -691,6 +694,7 @@ regexpError: "Fehler in einem regulären Ausdruck"
691694
regexpErrorDescription: "Im regulären Ausdruck deiner in Zeile {line} von {tab}en Wortstummschaltungen ist ein Fehler aufgetreten:"
692695
instanceMute: "Instanzstummschaltungen"
693696
userSaysSomething: "{name} hat etwas gesagt"
697+
userSaysSomethingAbout: "{name} sagt etwas über '{word}'"
694698
makeActive: "Aktivieren"
695699
display: "Anzeigeart"
696700
copy: "Kopieren"
@@ -859,6 +863,7 @@ administration: "Verwaltung"
859863
accounts: "Benutzerkonten"
860864
switch: "Wechseln"
861865
noMaintainerInformationWarning: "Betreiberinformationen sind nicht konfiguriert."
866+
noInquiryUrlWarning: "Keine gültige URL."
862867
noBotProtectionWarning: "Schutz vor Bots ist nicht konfiguriert."
863868
configure: "Konfigurieren"
864869
postToGallery: "Neuen Galeriebeitrag erstellen"
@@ -1091,6 +1096,7 @@ retryAllQueuesConfirmTitle: "Wirklich erneut versuchen?"
10911096
retryAllQueuesConfirmText: "Dies wird zu einer temporären Erhöhung der Serverlast führen."
10921097
enableChartsForRemoteUser: "Diagramme für Nutzer fremder Instanzen erstellen"
10931098
enableChartsForFederatedInstances: "Diagramme für fremde Instanzen erstellen"
1099+
enableStatsForFederatedInstances: "Abruf von Informationen über förderierte Server"
10941100
showClipButtonInNoteFooter: "\"Clip\" zum Notizmenu hinzufügen"
10951101
reactionsDisplaySize: "Reaktionsanzeigegröße"
10961102
limitWidthOfReaction: "Begrenze die Breite der Reaktion und zeige sie verkleinert an"
@@ -1139,6 +1145,8 @@ preventAiLearningDescription: "Fordert Crawler auf, gepostetes Text- oder Bildma
11391145
options: "Optionen"
11401146
specifyUser: "Spezifischer Benutzer"
11411147
lookupConfirm: "Zustimmen?"
1148+
openTagPageConfirm: "Hashtag Seite wirklich öffnen?"
1149+
specifyHost: "Host"
11421150
failedToPreviewUrl: "Vorschau nicht anzeigbar"
11431151
update: "Aktualisieren"
11441152
rolesThatCanBeUsedThisEmojiAsReaction: "Rollen, die dieses Emoji als Reaktion verwenden können"
@@ -1197,6 +1205,7 @@ showRenotes: "Renotes anzeigen"
11971205
edited: "Bearbeitet"
11981206
notificationRecieveConfig: "Benachrichtigungseinstellungen"
11991207
mutualFollow: "Gegenseitig gefolgt"
1208+
followingOrFollower: "Follow oder Follower"
12001209
fileAttachedOnly: "Nur Notizen mit Dateien"
12011210
showRepliesToOthersInTimeline: "Antworten in Chronik anzeigen"
12021211
hideRepliesToOthersInTimeline: "Antworten nicht in Chronik anzeigen"

locales/en-US.yml

+4
Original file line numberDiff line numberDiff line change
@@ -2749,6 +2749,7 @@ _customEmojisManager:
27492749
deleteSelectionRanges: "Delete rows in the selection"
27502750
searchSettings: "Search settings"
27512751
searchSettingCaption: "Set detailed search criteria."
2752+
searchLimit: ""
27522753
sortOrder: "Sort order"
27532754
registrationLogs: "Registration log"
27542755
registrationLogsCaption: "Logs will be displayed when updating or deleting Emojis. They will disappear after updating or deleting them, moving to a new page, or reloading."
@@ -2773,8 +2774,11 @@ _customEmojisManager:
27732774
markAsDeleteTargetRanges: "Mark rows in the selection as a target to delete"
27742775
alertUpdateEmojisNothingDescription: "There are no updated Emojis."
27752776
alertDeleteEmojisNothingDescription: "There are no Emojis to be deleted."
2777+
confirmMovePage: ""
2778+
confirmChangeView: ""
27762779
confirmUpdateEmojisDescription: "Update {count} Emoji(s). Are you sure to continue?"
27772780
confirmDeleteEmojisDescription: "Delete checked {count} Emoji(s). Are you sure to continue?"
2781+
confirmResetDescription: ""
27782782
dialogSelectRoleTitle: "Search by roll set in Emojis"
27792783
_register:
27802784
uploadSettingTitle: "Upload settings"

locales/es-ES.yml

+6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ introMisskey: "¡Bienvenido/a! Misskey es un servicio de microblogging descentra
55
poweredByMisskeyDescription: "{name} es uno de los servicios (también llamado instancia) que usa la plataforma de código abierto <b>Misskey</b>"
66
monthAndDay: "{day}/{month}"
77
search: "Buscar"
8+
reset: "Reiniciar"
89
notifications: "Notificaciones"
910
username: "Nombre de usuario"
1011
password: "Contraseña"
@@ -518,6 +519,7 @@ emojiStyle: "Estilo de emoji"
518519
native: "Nativo"
519520
menuStyle: "Diseño del menú"
520521
style: "Diseño"
522+
drawer: "Cajón de Aplicaciones"
521523
popup: "Ventana emergente"
522524
showNoteActionsOnlyHover: "Mostrar acciones de la nota sólo al pasar el cursor"
523525
showReactionsCount: "Mostrar el número de reacciones en las notas"
@@ -683,7 +685,10 @@ smtpSecure: "Usar SSL/TLS implícito en la conexión SMTP"
683685
smtpSecureInfo: "Apagar cuando se use STARTTLS"
684686
testEmail: "Prueba de envío"
685687
wordMute: "Silenciar palabras"
688+
wordMuteDescription: "Minimiza las notas que contienen la palabra o frase especificada. Las notas minimizadas pueden visualizarse haciendo clic sobre ellas."
686689
hardWordMute: "Filtro de palabra fuerte"
690+
showMutedWord: "Mostrar palabras silenciadas."
691+
hardWordMuteDescription: "Oculta las notas que contienen la palabra o frase especificada. A diferencia de Silenciar palabra, la nota quedará completamente oculta a la vista."
687692
regexpError: "Error de la expresión regular"
688693
regexpErrorDescription: "Ocurrió un error en la expresión regular en la linea {line} de las palabras muteadas {tab}"
689694
instanceMute: "Instancias silenciadas"
@@ -1134,6 +1139,7 @@ preventAiLearningDescription: "Pedirle a las arañas (crawlers) no usar los text
11341139
options: "Opción"
11351140
specifyUser: "Especificar usuario"
11361141
lookupConfirm: "¿Quiere informarse?"
1142+
specifyHost: "Especificar Host"
11371143
failedToPreviewUrl: "No se pudo generar la vista previa"
11381144
update: "Actualizar"
11391145
rolesThatCanBeUsedThisEmojiAsReaction: "Roles que pueden usar este emoji como reacción"

locales/it-IT.yml

+8-8
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ makeFollowManuallyApprove: "Approva i follower manualmente"
107107
defaultNoteVisibility: "Privacy predefinita delle note"
108108
follow: "Segui"
109109
followRequest: "Richiesta di follow"
110-
followRequests: "Richieste di follow"
110+
followRequests: "Relazioni"
111111
unfollow: "Togli Following"
112112
followRequestPending: "Richiesta in approvazione"
113113
enterEmoji: "Inserisci emoji"
@@ -537,7 +537,7 @@ regenerate: "Generare di nuovo"
537537
fontSize: "Dimensione carattere"
538538
mediaListWithOneImageAppearance: "Altezza dell'elenco media con una sola immagine "
539539
limitTo: "Limita a {x}"
540-
noFollowRequests: "Non hai alcuna richiesta di follow"
540+
noFollowRequests: "Non ci sono richieste di relazione"
541541
openImageInNewTab: "Apri le immagini in un nuovo tab"
542542
dashboard: "Pannello di controllo"
543543
local: "Locale"
@@ -1933,7 +1933,7 @@ _serverDisconnectedBehavior:
19331933
quiet: "Visualizza avviso in modo discreto"
19341934
_channel:
19351935
create: "Nuovo canale"
1936-
edit: "Gerisci canale"
1936+
edit: "Modifica il canale"
19371937
setBanner: "Scegli intestazione"
19381938
removeBanner: "Rimuovi intestazione"
19391939
featured: "Popolari nel canale"
@@ -1961,7 +1961,7 @@ _instanceMute:
19611961
_theme:
19621962
explore: "Esplora temi"
19631963
install: "Installa un tema"
1964-
manage: "Gestione temi"
1964+
manage: "Gestione dei temi"
19651965
code: "Codice tema"
19661966
description: "Descrizione"
19671967
installed: "{name} è installato"
@@ -2108,12 +2108,12 @@ _permissions:
21082108
"read:messaging": "Visualizzare la chat"
21092109
"write:messaging": "Gestire la chat"
21102110
"read:mutes": "Vedi i profili silenziati"
2111-
"write:mutes": "Gestisci i profili silenziati"
2111+
"write:mutes": "Gestione dei profili silenziati"
21122112
"write:notes": "Creare / Eliminare note"
21132113
"read:notifications": "Visualizzare notifiche"
2114-
"write:notifications": "Gestire notifiche"
2114+
"write:notifications": "Gestione delle notifiche"
21152115
"read:reactions": "Vedi reazioni"
2116-
"write:reactions": "Gerisci reazioni"
2116+
"write:reactions": "Gestione delle reazioni"
21172117
"write:votes": "Votare"
21182118
"read:pages": "Visualizzare pagine"
21192119
"write:pages": "Gestire pagine"
@@ -2122,7 +2122,7 @@ _permissions:
21222122
"read:user-groups": "Vedere i gruppi di utenti"
21232123
"write:user-groups": "Gestire i gruppi di utenti"
21242124
"read:channels": "Visualizza canali"
2125-
"write:channels": "Gerisci canali"
2125+
"write:channels": "Gestione dei canali"
21262126
"read:gallery": "Visualizza la galleria."
21272127
"write:gallery": "Gestione della galleria"
21282128
"read:gallery-likes": "Visualizza i contenuti della galleria."

locales/ko-KR.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,7 @@ confirmWhenRevealingSensitiveMedia: "민감한 미디어를 열 때 두 번 확
12831283
sensitiveMediaRevealConfirm: "민감한 미디어입니다. 표시할까요?"
12841284
createdLists: "만든 리스트"
12851285
createdAntennas: "만든 안테나"
1286-
fromX: "{x}부터"
1286+
fromX: "{x}에서"
12871287
genEmbedCode: "임베디드 코드 만들기"
12881288
noteOfThisUser: "이 유저의 노트 목록"
12891289
clipNoteLimitExceeded: "더 이상 이 클립에 노트를 추가 할 수 없습니다."

locales/zh-CN.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ pin: "置顶"
4949
unpin: "取消置顶"
5050
copyContent: "复制内容"
5151
copyLink: "复制链接"
52-
copyRemoteLink: "复制远程连接"
52+
copyRemoteLink: "复制远程链接"
5353
copyLinkRenote: "复制转帖链接"
5454
delete: "删除"
5555
deleteAndEdit: "删除并编辑"

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "misskey",
3-
"version": "2025.1.0-kakurega.1.40.0",
3+
"version": "2025.1.0-kakurega.1.40.1",
44
"codename": "nasubi",
55
"repository": {
66
"type": "git",

packages/backend/src/server/web/ClientServerService.ts

+1
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,7 @@ export class ClientServerService {
820820
fastify.get<{ Params: { announcementId: string; } }>('/announcements/:announcementId', async (request, reply) => {
821821
const announcement = await this.announcementsRepository.findOneBy({
822822
id: request.params.announcementId,
823+
userId: IsNull(),
823824
});
824825

825826
if (announcement) {

packages/backend/test-federation/compose.tpl.yml

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ services:
1717
- ./.config/docker.env
1818
environment:
1919
- NODE_ENV=production
20+
- COREPACK_DEFAULT_TO_LATEST=0
2021
volumes:
2122
- type: bind
2223
source: ../../../built

packages/backend/test-federation/compose.yml

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ services:
2525
environment:
2626
- NODE_ENV=development
2727
- NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/rootCA.crt
28+
- COREPACK_DEFAULT_TO_LATEST=0
2829
volumes:
2930
- type: bind
3031
source: ../package.json
@@ -85,6 +86,8 @@ services:
8586
depends_on:
8687
redis.test:
8788
condition: service_healthy
89+
environment:
90+
- COREPACK_DEFAULT_TO_LATEST=0
8891
volumes:
8992
- type: bind
9093
source: ../package.json

packages/frontend/src/account.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ export async function signout() {
4141
if (!$i) return;
4242

4343
waiting();
44+
document.cookie.split(';').forEach((cookie) => {
45+
const cookieName = cookie.split('=')[0].trim();
46+
if (cookieName === 'token') {
47+
document.cookie = `${cookieName}=; max-age=0; path=/`;
48+
}
49+
});
4450
miLocalStorage.removeItem('account');
4551
await removeAccount($i.id);
4652
const accounts = await getAccounts();
@@ -101,6 +107,9 @@ export async function removeAccount(idOrToken: Account['id']) {
101107
}
102108

103109
function fetchAccount(token: string, id?: string, forceShowDialog?: boolean): Promise<Account> {
110+
document.cookie = "token=; path=/; max-age=0";
111+
document.cookie = `token=${token}; path=/queue; max-age=86400; SameSite=Strict; Secure`; // bull dashboardの認証とかで使う
112+
104113
return new Promise((done, fail) => {
105114
window.fetch(`${apiUrl}/i`, {
106115
method: 'POST',
@@ -213,7 +222,6 @@ export async function login(token: Account['token'], redirect?: string) {
213222
throw reason;
214223
});
215224
miLocalStorage.setItem('account', JSON.stringify(me));
216-
document.cookie = `token=${token}; path=/; max-age=31536000`; // bull dashboardの認証とかで使う
217225
await addAccount(me.id, token);
218226

219227
if (redirect) {

packages/frontend/src/components/MkCustomEmojiDetailedDialog.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ SPDX-License-Identifier: AGPL-3.0-only
5757

5858
<script lang="ts" setup>
5959
import * as Misskey from 'misskey-js';
60-
import { defineProps, shallowRef } from 'vue';
60+
import { shallowRef } from 'vue';
6161
import MkLink from '@/components/MkLink.vue';
6262
import { i18n } from '@/i18n.js';
6363
import MkModalWindow from '@/components/MkModalWindow.vue';

packages/frontend/src/components/MkDriveFileThumbnail.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ SPDX-License-Identifier: AGPL-3.0-only
1818
:alt="file.name"
1919
:title="file.name"
2020
:cover="fit !== 'contain'"
21-
:forceBlurHash="forceBlurhash"
21+
:forceBlurhash="forceBlurhash"
2222
/>
2323
<i v-else-if="is === 'image'" class="ti ti-photo" :class="$style.icon"></i>
2424
<i v-else-if="is === 'video'" class="ti ti-video" :class="$style.icon"></i>

packages/frontend/src/components/MkNote.vue

+8-8
Original file line numberDiff line numberDiff line change
@@ -347,16 +347,16 @@ function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string
347347
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly: false): Array<string | string[]> | false | 'sensitiveMute';
348348
*/
349349
function checkMute(noteToCheck: Misskey.entities.Note, mutedWords: Array<string | string[]> | undefined | null, checkOnly = false): Array<string | string[]> | false | 'sensitiveMute' {
350-
if (mutedWords == null) return false;
350+
if (mutedWords != null) {
351+
const result = checkWordMute(noteToCheck, $i, mutedWords);
352+
if (Array.isArray(result)) return result;
351353

352-
const result = checkWordMute(noteToCheck, $i, mutedWords);
353-
if (Array.isArray(result)) return result;
354+
const replyResult = noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords);
355+
if (Array.isArray(replyResult)) return replyResult;
354356

355-
const replyResult = noteToCheck.reply && checkWordMute(noteToCheck.reply, $i, mutedWords);
356-
if (Array.isArray(replyResult)) return replyResult;
357-
358-
const renoteResult = noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords);
359-
if (Array.isArray(renoteResult)) return renoteResult;
357+
const renoteResult = noteToCheck.renote && checkWordMute(noteToCheck.renote, $i, mutedWords);
358+
if (Array.isArray(renoteResult)) return renoteResult;
359+
}
360360

361361
if (checkOnly) return false;
362362

0 commit comments

Comments
 (0)