Merge remote-tracking branch 'misskey-original/develop' into develop
This commit is contained in:
		
						commit
						212986a3a8
					
				|  | @ -12,10 +12,11 @@ | |||
| 
 | ||||
| --> | ||||
| 
 | ||||
| ## 2023.x.x (unreleased) | ||||
| ## 2023.11.0 (unreleased) | ||||
| 
 | ||||
| ### General | ||||
| - | ||||
| - Feat: アイコンデコレーション機能 | ||||
| - Enhance: すでにフォローしたすべての人の返信をTLに追加できるように | ||||
| 
 | ||||
| ## Client | ||||
| - Feat: プラグイン・テーマを外部サイトから直接インストールできるようになりました | ||||
|  | @ -23,7 +24,7 @@ | |||
| 	  https://misskey-hub.net/docs/advanced/publish-on-your-website.html | ||||
| 
 | ||||
| ### Server | ||||
| - | ||||
| - Fix: リストTLに自分のフォロワー限定投稿が含まれない問題を修正 | ||||
| 
 | ||||
| ## 2023.10.2 | ||||
| 
 | ||||
|  | @ -35,7 +36,6 @@ | |||
| - Enhance: フォロー/フォロー解除したときに過去分のHTLにも含まれる投稿が反映されるように | ||||
| - Enhance: ローカリゼーションの更新 | ||||
| - Enhance: 依存関係の更新 | ||||
| - Enhance: すでにフォローしたすべての人の返信をTLに追加できるように | ||||
| 
 | ||||
| ### Client | ||||
| - Enhance: TLの返信表示オプションを記憶するように | ||||
|  |  | |||
|  | @ -868,7 +868,7 @@ export class NoteCreateService implements OnApplicationShutdown { | |||
| 
 | ||||
| 			if (note.visibility === 'followers') { | ||||
| 				// TODO: 重そうだから何とかしたい Set 使う?
 | ||||
| 				userListMemberships = userListMemberships.filter(x => followings.some(f => f.followerId === x.userListUserId)); | ||||
| 				userListMemberships = userListMemberships.filter(x => x.userListUserId === user.id || followings.some(f => f.followerId === x.userListUserId)); | ||||
| 			} | ||||
| 
 | ||||
| 			// TODO: あまりにも数が多いと redisPipeline.exec に失敗する(理由は不明)ため、3万件程度を目安に分割して実行するようにする
 | ||||
|  |  | |||
|  | @ -26,7 +26,12 @@ export function convertSchemaToOpenApiSchema(schema: Schema) { | |||
| 	if (schema.allOf) res.allOf = schema.allOf.map(convertSchemaToOpenApiSchema); | ||||
| 
 | ||||
| 	if (schema.ref) { | ||||
| 		res.$ref = `#/components/schemas/${schema.ref}`; | ||||
| 		const $ref = `#/components/schemas/${schema.ref}`; | ||||
| 		if (schema.nullable || schema.optional) { | ||||
| 			res.allOf = [{ $ref }]; | ||||
| 		} else { | ||||
| 			res.$ref = $ref; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	return res; | ||||
|  |  | |||
|  | @ -947,6 +947,22 @@ describe('Timelines', () => { | |||
| 			assert.strictEqual(res.body.find((note: any) => note.id === bobNote.id).text, 'hi'); | ||||
| 		}); | ||||
| 
 | ||||
| 		test.concurrent('リスインしている自分の visibility: followers なノートが含まれる', async () => { | ||||
| 			const [alice] = await Promise.all([signup(), signup()]); | ||||
| 
 | ||||
| 			const list = await api('/users/lists/create', { name: 'list' }, alice).then(res => res.body); | ||||
| 			await api('/users/lists/push', { listId: list.id, userId: alice.id }, alice); | ||||
| 			await sleep(1000); | ||||
| 			const aliceNote = await post(alice, { text: 'hi', visibility: 'followers' }); | ||||
| 
 | ||||
| 			await waitForPushToTl(); | ||||
| 
 | ||||
| 			const res = await api('/notes/user-list-timeline', { listId: list.id }, alice); | ||||
| 
 | ||||
| 			assert.strictEqual(res.body.some((note: any) => note.id === aliceNote.id), true); | ||||
| 			assert.strictEqual(res.body.find((note: any) => note.id === aliceNote.id).text, 'hi'); | ||||
| 		}); | ||||
| 
 | ||||
| 		test.concurrent('リスインしているユーザーのチャンネルノートが含まれない', async () => { | ||||
| 			const [alice, bob] = await Promise.all([signup(), signup()]); | ||||
| 
 | ||||
|  |  | |||
|  | @ -294,6 +294,7 @@ const patrons = [ | |||
| 	'美少女JKぐーちゃん', | ||||
| 	'てば', | ||||
| 	'たっくん', | ||||
| 	'SHO SEKIGUCHI', | ||||
| ]; | ||||
| 
 | ||||
| let thereIsTreasure = $ref($i && !claimedAchievements.includes('foundTreasure')); | ||||
|  |  | |||
|  | @ -94,7 +94,7 @@ SPDX-License-Identifier: AGPL-3.0-only | |||
| 				:class="[$style.avatarDecoration, { [$style.avatarDecorationActive]: $i.avatarDecorations.some(x => x.id === avatarDecoration.id) }]" | ||||
| 				@click="toggleDecoration(avatarDecoration)" | ||||
| 			> | ||||
| 				<div :class="$style.avatarDecorationName">{{ avatarDecoration.name }}</div> | ||||
| 				<div :class="$style.avatarDecorationName"><MkCondensedLine :minScale="2 / 3">{{ avatarDecoration.name }}</MkCondensedLine></div> | ||||
| 				<MkAvatar style="width: 64px; height: 64px;" :user="$i" :decoration="avatarDecoration.url"/> | ||||
| 			</div> | ||||
| 		</div> | ||||
|  | @ -377,13 +377,17 @@ definePageMetadata({ | |||
| 
 | ||||
| .avatarDecoration { | ||||
| 	cursor: pointer; | ||||
| 	padding: 16px 16px 24px 16px; | ||||
| 	padding: 16px 16px 28px 16px; | ||||
| 	border: solid 2px var(--divider); | ||||
| 	border-radius: 8px; | ||||
| 	text-align: center; | ||||
| 	font-size: 90%; | ||||
| 	overflow: clip; | ||||
| 	contain: content; | ||||
| } | ||||
| 
 | ||||
| .avatarDecorationActive { | ||||
| 	background-color: var(--accentedBg); | ||||
| 	border-color: var(--accent); | ||||
| } | ||||
| 
 | ||||
|  | @ -391,6 +395,6 @@ definePageMetadata({ | |||
| 	position: relative; | ||||
| 	z-index: 10; | ||||
| 	font-weight: bold; | ||||
| 	margin-bottom: 16px; | ||||
| 	margin-bottom: 20px; | ||||
| } | ||||
| </style> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue