Merge branch 'develop' into fix-7311

This commit is contained in:
かっこかり 2024-04-27 13:14:22 +09:00 committed by GitHub
commit 4ca1598838
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 42 additions and 28 deletions

View File

@ -37,6 +37,7 @@
- 引用したいートのURLをコピーしリプライ投稿画面にペーストして添付することで達成できます - 引用したいートのURLをコピーしリプライ投稿画面にペーストして添付することで達成できます
- Enhance: フォローするかどうかの確認ダイアログを出せるように - Enhance: フォローするかどうかの確認ダイアログを出せるように
- Enhance: アイコン画像・バナー画像を外せるように - Enhance: アイコン画像・バナー画像を外せるように
- Chore: AiScriptを0.18.0にバージョンアップ
- Fix: 一部のページ内リンクが正しく動作しない問題を修正 - Fix: 一部のページ内リンクが正しく動作しない問題を修正
- Fix: 周年の実績が閏年を考慮しない問題を修正 - Fix: 周年の実績が閏年を考慮しない問題を修正
- Fix: ローカルURLのプレビューポップアップが左上に表示される - Fix: ローカルURLのプレビューポップアップが左上に表示される
@ -63,6 +64,7 @@
- Fix: リプライのみの引用リートと、CWのみの引用リートが純粋なリートとして誤って扱われてしまう問題を修正 - Fix: リプライのみの引用リートと、CWのみの引用リートが純粋なリートとして誤って扱われてしまう問題を修正
- Fix: 登録にメール認証が必須になっている場合、登録されているメールアドレスを削除できないように - Fix: 登録にメール認証が必須になっている場合、登録されているメールアドレスを削除できないように
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/606) (Cherry-picked from https://github.com/MisskeyIO/misskey/pull/606)
- Fix: Add Cache-Control to Bull Board
- Fix: nginx経由で/files/にRangeリクエストされた場合に正しく応答できないのを修正 - Fix: nginx経由で/files/にRangeリクエストされた場合に正しく応答できないのを修正
- Fix: 一部のタイムラインのストリーミングでインスタンスミュートが効かない問題を修正 - Fix: 一部のタイムラインのストリーミングでインスタンスミュートが効かない問題を修正
- Fix: グローバルタイムラインで返信が表示されないことがある問題を修正 - Fix: グローバルタイムラインで返信が表示されないことがある問題を修正

View File

@ -120,12 +120,20 @@ export class ServerService implements OnApplicationShutdown {
return; return;
} }
const name = path.split('@')[0].replace(/\.webp$/i, ''); const emojiPath = path.replace(/\.webp$/i, '');
const host = path.split('@')[1]?.replace(/\.webp$/i, ''); const pathChunks = emojiPath.split('@');
if (pathChunks.length > 2) {
reply.code(400);
return;
}
const name = pathChunks.shift();
const host = pathChunks.pop();
const emoji = await this.emojisRepository.findOneBy({ const emoji = await this.emojisRepository.findOneBy({
// `@.` is the spec of ReactionService.decodeReaction // `@.` is the spec of ReactionService.decodeReaction
host: (host == null || host === '.') ? IsNull() : host, host: (host === undefined || host === '.') ? IsNull() : host,
name: name, name: name,
}); });

View File

@ -202,6 +202,10 @@ export class ClientServerService {
// %71ueueとかでリクエストされたら困るため // %71ueueとかでリクエストされたら困るため
const url = decodeURI(request.routeOptions.url); const url = decodeURI(request.routeOptions.url);
if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) { if (url === bullBoardPath || url.startsWith(bullBoardPath + '/')) {
if (!url.startsWith(bullBoardPath + '/static/')) {
reply.header('Cache-Control', 'private, max-age=0, must-revalidate');
}
const token = request.cookies.token; const token = request.cookies.token;
if (token == null) { if (token == null) {
reply.code(401).send('Login required'); reply.code(401).send('Login required');

View File

@ -24,7 +24,7 @@
"@rollup/plugin-json": "6.1.0", "@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.5", "@rollup/plugin-replace": "5.0.5",
"@rollup/pluginutils": "5.1.0", "@rollup/pluginutils": "5.1.0",
"@syuilo/aiscript": "0.17.0", "@syuilo/aiscript": "0.18.0",
"@tabler/icons-webfont": "2.44.0", "@tabler/icons-webfont": "2.44.0",
"@twemoji/parser": "15.0.0", "@twemoji/parser": "15.0.0",
"@vitejs/plugin-vue": "5.0.4", "@vitejs/plugin-vue": "5.0.4",

View File

@ -48,7 +48,7 @@ import MkInput from '@/components/MkInput.vue';
import MkSelect from '@/components/MkSelect.vue'; import MkSelect from '@/components/MkSelect.vue';
import { useRouter } from '@/router/supplier.js'; import { useRouter } from '@/router/supplier.js';
const PRESET_DEFAULT = `/// @ 0.16.0 const PRESET_DEFAULT = `/// @ 0.18.0
var name = "" var name = ""
@ -60,13 +60,13 @@ Ui:render([
Ui:C:button({ Ui:C:button({
text: "Hello" text: "Hello"
onClick: @() { onClick: @() {
Mk:dialog(null \`Hello, {name}!\`) Mk:dialog(null, \`Hello, {name}!\`)
} }
}) })
]) ])
`; `;
const PRESET_OMIKUJI = `/// @ 0.16.0 const PRESET_OMIKUJI = `/// @ 0.18.0
// //
// //
@ -81,11 +81,11 @@ let choices = [
"大凶" "大凶"
] ]
// ID+ // PlayID+ID+
let random = Math:gen_rng(\`{USER_ID}{Date:year()}{Date:month()}{Date:day()}\`) let random = Math:gen_rng(\`{THIS_ID}{USER_ID}{Date:year()}{Date:month()}{Date:day()}\`)
// //
let chosen = choices[random(0 (choices.len - 1))] let chosen = choices[random(0, (choices.len - 1))]
// //
let result = \`今日のあなたの運勢は **{chosen}** です。\` let result = \`今日のあなたの運勢は **{chosen}** です。\`
@ -109,7 +109,7 @@ Ui:render([
]) ])
`; `;
const PRESET_SHUFFLE = `/// @ 0.16.0 const PRESET_SHUFFLE = `/// @ 0.18.0
// //
let string = "ペペロンチーノ" let string = "ペペロンチーノ"
@ -123,13 +123,13 @@ var cursor = 0
@do() { @do() {
if (cursor != 0) { if (cursor != 0) {
results = results.slice(0 (cursor + 1)) results = results.slice(0, (cursor + 1))
cursor = 0 cursor = 0
} }
let chars = [] let chars = []
for (let i, length) { for (let i, length) {
let r = Math:rnd(0 (length - 1)) let r = Math:rnd(0, (length - 1))
chars.push(string.pick(r)) chars.push(string.pick(r))
} }
let result = chars.join("") let result = chars.join("")
@ -188,27 +188,27 @@ var cursor = 0
do() do()
`; `;
const PRESET_QUIZ = `/// @ 0.16.0 const PRESET_QUIZ = `/// @ 0.18.0
let title = '地理クイズ' let title = '地理クイズ'
let qas = [{ let qas = [{
q: 'オーストラリアの首都は?' q: 'オーストラリアの首都は?'
choices: ['シドニー' 'キャンベラ' 'メルボルン'] choices: ['シドニー', 'キャンベラ', 'メルボルン']
a: 'キャンベラ' a: 'キャンベラ'
aDescription: '最大の都市はシドニーですが首都はキャンベラです。' aDescription: '最大の都市はシドニーですが首都はキャンベラです。'
} { } {
q: '国土面積2番目の国は' q: '国土面積2番目の国は'
choices: ['カナダ' 'アメリカ' '中国'] choices: ['カナダ', 'アメリカ', '中国']
a: 'カナダ' a: 'カナダ'
aDescription: '大きい順にロシア、カナダ、アメリカ、中国です。' aDescription: '大きい順にロシア、カナダ、アメリカ、中国です。'
} { } {
q: '二重内陸国ではないのは?' q: '二重内陸国ではないのは?'
choices: ['リヒテンシュタイン' 'ウズベキスタン' 'レソト'] choices: ['リヒテンシュタイン', 'ウズベキスタン', 'レソト']
a: 'レソト' a: 'レソト'
aDescription: 'レソトは(一重)内陸国です。' aDescription: 'レソトは(一重)内陸国です。'
} { } {
q: '閘門がない運河は?' q: '閘門がない運河は?'
choices: ['キール運河' 'スエズ運河' 'パナマ運河'] choices: ['キール運河', 'スエズ運河', 'パナマ運河']
a: 'スエズ運河' a: 'スエズ運河'
aDescription: 'スエズ運河は高低差がないので閘門はありません。' aDescription: 'スエズ運河は高低差がないので閘門はありません。'
}] }]
@ -296,12 +296,12 @@ qaEls.push(Ui:C:container({
onClick: finish onClick: finish
}) })
] ]
} 'footer')) }, 'footer'))
Ui:render(qaEls) Ui:render(qaEls)
`; `;
const PRESET_TIMELINE = `/// @ 0.16.0 const PRESET_TIMELINE = `/// @ 0.18.0
// API // API
@fetch() { @fetch() {
@ -315,7 +315,7 @@ const PRESET_TIMELINE = `/// @ 0.16.0
]) ])
// //
let notes = Mk:api("notes/local-timeline" {}) let notes = Mk:api("notes/local-timeline", {})
// UI // UI
let noteEls = [] let noteEls = []

View File

@ -707,8 +707,8 @@ importers:
specifier: 5.1.0 specifier: 5.1.0
version: 5.1.0(rollup@4.12.0) version: 5.1.0(rollup@4.12.0)
'@syuilo/aiscript': '@syuilo/aiscript':
specifier: 0.17.0 specifier: 0.18.0
version: 0.17.0 version: 0.18.0
'@tabler/icons-webfont': '@tabler/icons-webfont':
specifier: 2.44.0 specifier: 2.44.0
version: 2.44.0 version: 2.44.0
@ -6678,7 +6678,7 @@ packages:
ts-dedent: 2.2.0 ts-dedent: 2.2.0
type-fest: 2.19.0 type-fest: 2.19.0
vue: 3.4.21(typescript@5.3.3) vue: 3.4.21(typescript@5.3.3)
vue-component-type-helpers: 2.0.10 vue-component-type-helpers: 2.0.14
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
@ -6944,8 +6944,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@syuilo/aiscript@0.17.0: /@syuilo/aiscript@0.18.0:
resolution: {integrity: sha512-3JtQ1rWJHMxQ3153zLCXMUOwrOgjPPYGBl0dPHhR0ohm4tn7okMQRugxMCT0t3YxByemb9FfiM6TUjd0tEGxdA==} resolution: {integrity: sha512-/iY9Vv4LLjtW/KUzId1QwXC4BlpIEPCMcoT7dyRhYdyxtwhS3Hx4b/4j1HYP+n3Pq9XKyW5zvkY72/+DNu4g6Q==}
dependencies: dependencies:
seedrandom: 3.0.5 seedrandom: 3.0.5
stringz: 2.1.0 stringz: 2.1.0
@ -19347,8 +19347,8 @@ packages:
resolution: {integrity: sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==} resolution: {integrity: sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==}
dev: true dev: true
/vue-component-type-helpers@2.0.10: /vue-component-type-helpers@2.0.14:
resolution: {integrity: sha512-FC5fKJjDks3Ue/KRSYBdsiCaZa0kUPQfs8yQpb8W9mlO6BenV8G1z58xobeRMzevnmEcDa09LLwuXDwb4f6NMQ==} resolution: {integrity: sha512-DInfgOyXlMyliyqAAD9frK28tTfch0+tMi4qoWJcZlRxUf+NFAtraJBnAsKLep+FOyLMiajkhfyEb3xLK08i7w==}
dev: true dev: true
/vue-demi@0.14.7(vue@3.4.21): /vue-demi@0.14.7(vue@3.4.21):