Merge branch 'develop' into fix-7311
This commit is contained in:
commit
4ca1598838
|
@ -37,6 +37,7 @@
|
|||
- 引用したいノートのURLをコピーしリプライ投稿画面にペーストして添付することで達成できます
|
||||
- Enhance: フォローするかどうかの確認ダイアログを出せるように
|
||||
- Enhance: アイコン画像・バナー画像を外せるように
|
||||
- Chore: AiScriptを0.18.0にバージョンアップ
|
||||
- Fix: 一部のページ内リンクが正しく動作しない問題を修正
|
||||
- Fix: 周年の実績が閏年を考慮しない問題を修正
|
||||
- Fix: ローカルURLのプレビューポップアップが左上に表示される
|
||||
|
@ -63,6 +64,7 @@
|
|||
- Fix: リプライのみの引用リノートと、CWのみの引用リノートが純粋なリノートとして誤って扱われてしまう問題を修正
|
||||
- Fix: 登録にメール認証が必須になっている場合、登録されているメールアドレスを削除できないように
|
||||
(Cherry-picked from https://github.com/MisskeyIO/misskey/pull/606)
|
||||
- Fix: Add Cache-Control to Bull Board
|
||||
- Fix: nginx経由で/files/にRangeリクエストされた場合に正しく応答できないのを修正
|
||||
- Fix: 一部のタイムラインのストリーミングでインスタンスミュートが効かない問題を修正
|
||||
- Fix: グローバルタイムラインで返信が表示されないことがある問題を修正
|
||||
|
|
|
@ -120,12 +120,20 @@ export class ServerService implements OnApplicationShutdown {
|
|||
return;
|
||||
}
|
||||
|
||||
const name = path.split('@')[0].replace(/\.webp$/i, '');
|
||||
const host = path.split('@')[1]?.replace(/\.webp$/i, '');
|
||||
const emojiPath = path.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({
|
||||
// `@.` is the spec of ReactionService.decodeReaction
|
||||
host: (host == null || host === '.') ? IsNull() : host,
|
||||
host: (host === undefined || host === '.') ? IsNull() : host,
|
||||
name: name,
|
||||
});
|
||||
|
||||
|
|
|
@ -202,6 +202,10 @@ export class ClientServerService {
|
|||
// %71ueueとかでリクエストされたら困るため
|
||||
const url = decodeURI(request.routeOptions.url);
|
||||
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;
|
||||
if (token == null) {
|
||||
reply.code(401).send('Login required');
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
"@rollup/plugin-json": "6.1.0",
|
||||
"@rollup/plugin-replace": "5.0.5",
|
||||
"@rollup/pluginutils": "5.1.0",
|
||||
"@syuilo/aiscript": "0.17.0",
|
||||
"@syuilo/aiscript": "0.18.0",
|
||||
"@tabler/icons-webfont": "2.44.0",
|
||||
"@twemoji/parser": "15.0.0",
|
||||
"@vitejs/plugin-vue": "5.0.4",
|
||||
|
|
|
@ -48,7 +48,7 @@ import MkInput from '@/components/MkInput.vue';
|
|||
import MkSelect from '@/components/MkSelect.vue';
|
||||
import { useRouter } from '@/router/supplier.js';
|
||||
|
||||
const PRESET_DEFAULT = `/// @ 0.16.0
|
||||
const PRESET_DEFAULT = `/// @ 0.18.0
|
||||
|
||||
var name = ""
|
||||
|
||||
|
@ -60,13 +60,13 @@ Ui:render([
|
|||
Ui:C:button({
|
||||
text: "Hello"
|
||||
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+今日の日付」である乱数生成器を用意
|
||||
let random = Math:gen_rng(\`{USER_ID}{Date:year()}{Date:month()}{Date:day()}\`)
|
||||
// シードが「PlayID+ユーザーID+今日の日付」である乱数生成器を用意
|
||||
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}** です。\`
|
||||
|
@ -109,7 +109,7 @@ Ui:render([
|
|||
])
|
||||
`;
|
||||
|
||||
const PRESET_SHUFFLE = `/// @ 0.16.0
|
||||
const PRESET_SHUFFLE = `/// @ 0.18.0
|
||||
// 巻き戻し可能な文字シャッフルのプリセット
|
||||
|
||||
let string = "ペペロンチーノ"
|
||||
|
@ -123,13 +123,13 @@ var cursor = 0
|
|||
|
||||
@do() {
|
||||
if (cursor != 0) {
|
||||
results = results.slice(0 (cursor + 1))
|
||||
results = results.slice(0, (cursor + 1))
|
||||
cursor = 0
|
||||
}
|
||||
|
||||
let chars = []
|
||||
for (let i, length) {
|
||||
let r = Math:rnd(0 (length - 1))
|
||||
let r = Math:rnd(0, (length - 1))
|
||||
chars.push(string.pick(r))
|
||||
}
|
||||
let result = chars.join("")
|
||||
|
@ -188,27 +188,27 @@ var cursor = 0
|
|||
do()
|
||||
`;
|
||||
|
||||
const PRESET_QUIZ = `/// @ 0.16.0
|
||||
const PRESET_QUIZ = `/// @ 0.18.0
|
||||
let title = '地理クイズ'
|
||||
|
||||
let qas = [{
|
||||
q: 'オーストラリアの首都は?'
|
||||
choices: ['シドニー' 'キャンベラ' 'メルボルン']
|
||||
choices: ['シドニー', 'キャンベラ', 'メルボルン']
|
||||
a: 'キャンベラ'
|
||||
aDescription: '最大の都市はシドニーですが首都はキャンベラです。'
|
||||
} {
|
||||
q: '国土面積2番目の国は?'
|
||||
choices: ['カナダ' 'アメリカ' '中国']
|
||||
choices: ['カナダ', 'アメリカ', '中国']
|
||||
a: 'カナダ'
|
||||
aDescription: '大きい順にロシア、カナダ、アメリカ、中国です。'
|
||||
} {
|
||||
q: '二重内陸国ではないのは?'
|
||||
choices: ['リヒテンシュタイン' 'ウズベキスタン' 'レソト']
|
||||
choices: ['リヒテンシュタイン', 'ウズベキスタン', 'レソト']
|
||||
a: 'レソト'
|
||||
aDescription: 'レソトは(一重)内陸国です。'
|
||||
} {
|
||||
q: '閘門がない運河は?'
|
||||
choices: ['キール運河' 'スエズ運河' 'パナマ運河']
|
||||
choices: ['キール運河', 'スエズ運河', 'パナマ運河']
|
||||
a: 'スエズ運河'
|
||||
aDescription: 'スエズ運河は高低差がないので閘門はありません。'
|
||||
}]
|
||||
|
@ -296,12 +296,12 @@ qaEls.push(Ui:C:container({
|
|||
onClick: finish
|
||||
})
|
||||
]
|
||||
} 'footer'))
|
||||
}, 'footer'))
|
||||
|
||||
Ui:render(qaEls)
|
||||
`;
|
||||
|
||||
const PRESET_TIMELINE = `/// @ 0.16.0
|
||||
const PRESET_TIMELINE = `/// @ 0.18.0
|
||||
// APIリクエストを行いローカルタイムラインを表示するプリセット
|
||||
|
||||
@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要素作成
|
||||
let noteEls = []
|
||||
|
|
|
@ -707,8 +707,8 @@ importers:
|
|||
specifier: 5.1.0
|
||||
version: 5.1.0(rollup@4.12.0)
|
||||
'@syuilo/aiscript':
|
||||
specifier: 0.17.0
|
||||
version: 0.17.0
|
||||
specifier: 0.18.0
|
||||
version: 0.18.0
|
||||
'@tabler/icons-webfont':
|
||||
specifier: 2.44.0
|
||||
version: 2.44.0
|
||||
|
@ -6678,7 +6678,7 @@ packages:
|
|||
ts-dedent: 2.2.0
|
||||
type-fest: 2.19.0
|
||||
vue: 3.4.21(typescript@5.3.3)
|
||||
vue-component-type-helpers: 2.0.10
|
||||
vue-component-type-helpers: 2.0.14
|
||||
transitivePeerDependencies:
|
||||
- encoding
|
||||
- supports-color
|
||||
|
@ -6944,8 +6944,8 @@ packages:
|
|||
dev: false
|
||||
optional: true
|
||||
|
||||
/@syuilo/aiscript@0.17.0:
|
||||
resolution: {integrity: sha512-3JtQ1rWJHMxQ3153zLCXMUOwrOgjPPYGBl0dPHhR0ohm4tn7okMQRugxMCT0t3YxByemb9FfiM6TUjd0tEGxdA==}
|
||||
/@syuilo/aiscript@0.18.0:
|
||||
resolution: {integrity: sha512-/iY9Vv4LLjtW/KUzId1QwXC4BlpIEPCMcoT7dyRhYdyxtwhS3Hx4b/4j1HYP+n3Pq9XKyW5zvkY72/+DNu4g6Q==}
|
||||
dependencies:
|
||||
seedrandom: 3.0.5
|
||||
stringz: 2.1.0
|
||||
|
@ -19347,8 +19347,8 @@ packages:
|
|||
resolution: {integrity: sha512-6bnLkn8O0JJyiFSIF0EfCogzeqNXpnjJ0vW/SZzNHfe6sPx30lTtTXlE5TFs2qhJlAtDFybStVNpL73cPe3OMQ==}
|
||||
dev: true
|
||||
|
||||
/vue-component-type-helpers@2.0.10:
|
||||
resolution: {integrity: sha512-FC5fKJjDks3Ue/KRSYBdsiCaZa0kUPQfs8yQpb8W9mlO6BenV8G1z58xobeRMzevnmEcDa09LLwuXDwb4f6NMQ==}
|
||||
/vue-component-type-helpers@2.0.14:
|
||||
resolution: {integrity: sha512-DInfgOyXlMyliyqAAD9frK28tTfch0+tMi4qoWJcZlRxUf+NFAtraJBnAsKLep+FOyLMiajkhfyEb3xLK08i7w==}
|
||||
dev: true
|
||||
|
||||
/vue-demi@0.14.7(vue@3.4.21):
|
||||
|
|
Loading…
Reference in New Issue