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