Compare commits

...

11 commits

Author SHA1 Message Date
fly_mc
0145477c96 Merge branch 'develop' into pari-dev 2024-11-23 13:56:16 +08:00
fly_mc
8600bbaba6 skipRender 2024-11-23 13:56:11 +08:00
syuilo
04b221409c fix(backend): use atomic command to improve security 2024-11-23 04:44:33 +09:00
かっこかり
0e90589290
Update CHANGELOG.md (typo) 2024-11-22 21:19:12 +09:00
FLY_MC
e2e21bdc98
Merge pull request #4 from paricafe/pari-dev
Merge Release: 2024.11.0
2024-11-22 20:13:14 +08:00
fly_mc
8742bd9bc1 Merge branch 'pari-dev' into pari 2024-11-22 00:41:44 +08:00
fly_mc
6612b45f59 Merge branch 'pari-dev' into pari 2024-11-22 00:33:08 +08:00
77705d34d1 fix handling of private renotes
Signed-off-by: eternal-flame-AD <yume@yumechi.jp>
2024-11-22 00:18:02 +08:00
fly_mc
437dbbe75d Merge branch 'pari-dev' into pari 2024-11-21 23:38:29 +08:00
fly_mc
2e95c4082b Merge branch 'pari-dev' into pari 2024-11-21 00:22:19 +08:00
FLY_MC
9d8f9353e4
Merge pull request #3 from paricafe/pari-dev
Pari dev
2024-11-21 00:01:40 +08:00
5 changed files with 9 additions and 7 deletions

View file

@ -49,7 +49,7 @@
- Fix: デッキのタイムラインカラムで「センシティブなファイルを含むノートを表示」設定が使用できなかった問題を修正 - Fix: デッキのタイムラインカラムで「センシティブなファイルを含むノートを表示」設定が使用できなかった問題を修正
- Fix: Encode RSS urls with escape sequences before fetching allowing query parameters to be used - Fix: Encode RSS urls with escape sequences before fetching allowing query parameters to be used
- Fix: リンク切れを修正 - Fix: リンク切れを修正
= Fix: ノート投稿ボタンにホバー時のスタイルが適用されていないのを修正 - Fix: ノート投稿ボタンにホバー時のスタイルが適用されていないのを修正
(Cherry-picked from https://github.com/taiyme/misskey/pull/305) (Cherry-picked from https://github.com/taiyme/misskey/pull/305)
- Fix: メールアドレス登録有効化時の「完了」ダイアログボックスの表示条件を修正 - Fix: メールアドレス登録有効化時の「完了」ダイアログボックスの表示条件を修正
- Fix: 画面幅が狭い環境でデザインが崩れる問題を修正 - Fix: 画面幅が狭い環境でデザインが崩れる問題を修正

View file

@ -7,6 +7,7 @@ import { setImmediate } from 'node:timers/promises';
import * as mfm from 'mfm-js'; import * as mfm from 'mfm-js';
import { In, DataSource, IsNull, LessThan } from 'typeorm'; import { In, DataSource, IsNull, LessThan } from 'typeorm';
import * as Redis from 'ioredis'; import * as Redis from 'ioredis';
import * as Bull from 'bullmq';
import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common'; import { Inject, Injectable, OnApplicationShutdown } from '@nestjs/common';
import { extractMentions } from '@/misc/extract-mentions.js'; import { extractMentions } from '@/misc/extract-mentions.js';
import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js';
@ -295,7 +296,7 @@ export class NoteCreateService implements OnApplicationShutdown {
case 'followers': case 'followers':
// 他人のfollowers noteはreject // 他人のfollowers noteはreject
if (data.renote.userId !== user.id) { if (data.renote.userId !== user.id) {
throw new Error('Renote target is not public or home'); throw new Bull.UnrecoverableError('Renote target is not public or home');
} }
// Renote対象がfollowersならfollowersにする // Renote対象がfollowersならfollowersにする
@ -303,7 +304,7 @@ export class NoteCreateService implements OnApplicationShutdown {
break; break;
case 'specified': case 'specified':
// specified / direct noteはreject // specified / direct noteはreject
throw new Error('Renote target is not public or home'); throw new Bull.UnrecoverableError('Renote target is not public or home');
} }
} }

View file

@ -189,14 +189,12 @@ export class WebAuthnService {
*/ */
@bindThis @bindThis
public async verifySignInWithPasskeyAuthentication(context: string, response: AuthenticationResponseJSON): Promise<MiUser['id'] | null> { public async verifySignInWithPasskeyAuthentication(context: string, response: AuthenticationResponseJSON): Promise<MiUser['id'] | null> {
const challenge = await this.redisClient.get(`webauthn:challenge:${context}`); const challenge = await this.redisClient.getdel(`webauthn:challenge:${context}`);
if (!challenge) { if (!challenge) {
throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', `challenge '${context}' not found`); throw new IdentifiableError('2d16e51c-007b-4edd-afd2-f7dd02c947f6', `challenge '${context}' not found`);
} }
await this.redisClient.del(`webauthn:challenge:${context}`);
const key = await this.userSecurityKeysRepository.findOneBy({ const key = await this.userSecurityKeysRepository.findOneBy({
id: response.id, id: response.id,
}); });

View file

@ -37,6 +37,9 @@ export interface IObject {
tag?: IObject | IObject[]; tag?: IObject | IObject[];
sensitive?: boolean; sensitive?: boolean;
updated?: string; updated?: string;
visibility?: string;
mentionedUsers?: any[];
visibleUsers?: any[];
} }
/** /**

View file

@ -806,7 +806,7 @@ function emitUpdReaction(emoji: string, delta: number) {
.skipRender { .skipRender {
content-visibility: auto; content-visibility: auto;
contain-intrinsic-size: 0 180px; contain-intrinsic-size: 0 250px;
} }
.tip { .tip {