Compare commits

..

4 Commits

Author SHA1 Message Date
syuilo cb4364da53 New translations ja-jp.yml (Chinese Simplified) 2025-05-29 23:15:30 +09:00
syuilo 58383e7a01 New translations ja-jp.yml (Spanish) 2025-05-29 23:15:29 +09:00
syuilo 0249454c61 New translations ja-jp.yml (Catalan) 2025-05-29 21:10:02 +09:00
syuilo 9a9a5431b1 New translations ja-jp.yml (English) 2025-05-29 19:06:16 +09:00
11 changed files with 80 additions and 106 deletions

View File

@ -52,7 +52,6 @@
- Enhance: シンタックスハイライトのエンジンをJavaScriptベースのものに変更 - Enhance: シンタックスハイライトのエンジンをJavaScriptベースのものに変更
- フロントエンドの読み込みサイズを軽量化しました - フロントエンドの読み込みサイズを軽量化しました
- ほとんどの言語のハイライトは問題なく行えますが、互換性の問題により一部の言語が正常にハイライトできなくなる可能性があります。詳しくは https://shiki.style/references/engine-js-compat をご覧ください。 - ほとんどの言語のハイライトは問題なく行えますが、互換性の問題により一部の言語が正常にハイライトできなくなる可能性があります。詳しくは https://shiki.style/references/engine-js-compat をご覧ください。
- Fix: チャットに動画ファイルを送付すると、動画の表示が崩れてしまい視聴出来ない問題を修正
- Fix: "時計"ウィジェット(Clock)において、Transparent設定が有効でも、その背景が透過されない問題を修正 - Fix: "時計"ウィジェット(Clock)において、Transparent設定が有効でも、その背景が透過されない問題を修正
- Fix: 一定時間操作がなかったら動画プレイヤーのコントロールを隠すように - Fix: 一定時間操作がなかったら動画プレイヤーのコントロールを隠すように
- Fix: Twitchのクリップがプレイヤーで再生できない問題を修正 - Fix: Twitchのクリップがプレイヤーで再生できない問題を修正
@ -63,7 +62,6 @@
- Enhance: ノートのレスポンスにアンケートが添付されているかどうかを示すフラグ`hasPoll`を追加 - Enhance: ノートのレスポンスにアンケートが添付されているかどうかを示すフラグ`hasPoll`を追加
- Enhance: チャットルームのレスポンスに招待されているかどうかを示すフラグ`invitationExists`を追加 - Enhance: チャットルームのレスポンスに招待されているかどうかを示すフラグ`invitationExists`を追加
- Enhance: レートリミットの計算方法を調整 (#13997) - Enhance: レートリミットの計算方法を調整 (#13997)
- Enhance: 外部サイトのOGPのキャッシュ期間を調整
- Fix: チャットルームが削除された場合・チャットルームから抜けた場合に、未読状態が残り続けることがあるのを修正 - Fix: チャットルームが削除された場合・チャットルームから抜けた場合に、未読状態が残り続けることがあるのを修正
- Fix: ユーザ除外アンテナをインポートできない問題を修正 - Fix: ユーザ除外アンテナをインポートできない問題を修正
- Fix: アンテナのセンシティブなチャンネルのノートを含むかどうかの情報がエクスポートされない問題を修正 - Fix: アンテナのセンシティブなチャンネルのノートを含むかどうかの情報がエクスポートされない問題を修正

4
locales/index.d.ts vendored
View File

@ -1326,10 +1326,6 @@ export interface Locale extends ILocale {
* *
*/ */
"syncDeviceDarkMode": string; "syncDeviceDarkMode": string;
/**
* {x}
*/
"switchDarkModeManuallyWhenSyncEnabledConfirm": ParameterizedString<"x">;
/** /**
* *
*/ */

View File

@ -327,7 +327,6 @@ dark: "ダーク"
lightThemes: "明るいテーマ" lightThemes: "明るいテーマ"
darkThemes: "暗いテーマ" darkThemes: "暗いテーマ"
syncDeviceDarkMode: "デバイスのダークモードと同期する" syncDeviceDarkMode: "デバイスのダークモードと同期する"
switchDarkModeManuallyWhenSyncEnabledConfirm: "「{x}」がオンになっています。同期をオフにして手動でモードを切り替えますか?"
drive: "ドライブ" drive: "ドライブ"
fileName: "ファイル名" fileName: "ファイル名"
selectFile: "ファイルを選択" selectFile: "ファイルを選択"

View File

@ -327,7 +327,6 @@ dark: "深色"
lightThemes: "淺色佈景主題" lightThemes: "淺色佈景主題"
darkThemes: "深色佈景主題" darkThemes: "深色佈景主題"
syncDeviceDarkMode: "與裝置的深色模式同步" syncDeviceDarkMode: "與裝置的深色模式同步"
switchDarkModeManuallyWhenSyncEnabledConfirm: "「{x}」已開啟。要關閉同步並手動切換模式嗎?\n"
drive: "雲端硬碟" drive: "雲端硬碟"
fileName: "檔案名稱" fileName: "檔案名稱"
selectFile: "選擇檔案" selectFile: "選擇檔案"

View File

@ -1,6 +1,6 @@
{ {
"name": "misskey", "name": "misskey",
"version": "2025.5.1-beta.5", "version": "2025.5.1-beta.4",
"codename": "nasubi", "codename": "nasubi",
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -83,7 +83,7 @@ export const DEFAULT_POLICIES: RolePolicies = {
canUseTranslator: true, canUseTranslator: true,
canHideAds: false, canHideAds: false,
driveCapacityMb: 100, driveCapacityMb: 100,
maxFileSizeMb: 30, maxFileSizeMb: 10,
alwaysMarkNsfw: false, alwaysMarkNsfw: false,
canUpdateBioMedia: true, canUpdateBioMedia: true,
pinLimit: 5, pinLimit: 5,

View File

@ -94,8 +94,8 @@ export class UrlPreviewService {
summary.icon = this.wrap(summary.icon); summary.icon = this.wrap(summary.icon);
summary.thumbnail = this.wrap(summary.thumbnail); summary.thumbnail = this.wrap(summary.thumbnail);
// Cache 1day // Cache 7days
reply.header('Cache-Control', 'max-age=86400, immutable'); reply.header('Cache-Control', 'max-age=604800, immutable');
return summary; return summary;
} catch (err) { } catch (err) {

View File

@ -10,8 +10,7 @@ SPDX-License-Identifier: AGPL-3.0-only
tail === 'left' ? $style.left : $style.right, tail === 'left' ? $style.left : $style.right,
negativeMargin === true && $style.negativeMargin, negativeMargin === true && $style.negativeMargin,
shadow === true && $style.shadow, shadow === true && $style.shadow,
accented === true && $style.accented, accented === true && $style.accented
fullWidth === true && $style.fullWidth,
]" ]"
> >
<div :class="$style.bg"> <div :class="$style.bg">
@ -33,13 +32,11 @@ withDefaults(defineProps<{
negativeMargin?: boolean; negativeMargin?: boolean;
shadow?: boolean; shadow?: boolean;
accented?: boolean; accented?: boolean;
fullWidth?: boolean;
}>(), { }>(), {
tail: 'right', tail: 'right',
negativeMargin: false, negativeMargin: false,
shadow: false, shadow: false,
accented: false, accented: false,
fullWidth: false,
}); });
</script> </script>
@ -76,14 +73,6 @@ withDefaults(defineProps<{
margin-right: calc(calc(var(--fukidashi-radius) * .13) * -1); margin-right: calc(calc(var(--fukidashi-radius) * .13) * -1);
} }
} }
&.fullWidth {
width: 100%;
&.content {
width: 100%;
}
}
} }
.bg { .bg {
@ -96,7 +85,6 @@ withDefaults(defineProps<{
.content { .content {
position: relative; position: relative;
padding: 10px 14px; padding: 10px 14px;
box-sizing: border-box;
} }
@container (max-width: 450px) { @container (max-width: 450px) {

View File

@ -6,9 +6,9 @@ SPDX-License-Identifier: AGPL-3.0-only
<template> <template>
<div :class="[$style.root, { [$style.isMe]: isMe }]"> <div :class="[$style.root, { [$style.isMe]: isMe }]">
<MkAvatar :class="$style.avatar" :user="message.fromUser!" :link="!isMe" :preview="false"/> <MkAvatar :class="$style.avatar" :user="message.fromUser!" :link="!isMe" :preview="false"/>
<div :class="[$style.body, message.file != null ? $style.fullWidth : null]" @contextmenu.stop="onContextmenu"> <div :class="$style.body" @contextmenu.stop="onContextmenu">
<div :class="$style.header"><MkUserName v-if="!isMe && prefer.s['chat.showSenderName'] && message.fromUser != null" :user="message.fromUser"/></div> <div :class="$style.header"><MkUserName v-if="!isMe && prefer.s['chat.showSenderName'] && message.fromUser != null" :user="message.fromUser"/></div>
<MkFukidashi :class="$style.fukidashi" :tail="isMe ? 'right' : 'left'" :fullWidth="message.file != null" :accented="isMe"> <MkFukidashi :class="$style.fukidashi" :tail="isMe ? 'right' : 'left'" :accented="isMe">
<Mfm <Mfm
v-if="message.text" v-if="message.text"
ref="text" ref="text"
@ -259,10 +259,6 @@ function showMenu(ev: MouseEvent, contextmenu = false) {
.body { .body {
margin: 0 12px; margin: 0 12px;
&.fullWidth {
width: 100%;
}
} }
.header { .header {

View File

@ -9,7 +9,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-adaptive-border class="rfqxtzch _panel"> <div v-adaptive-border class="rfqxtzch _panel">
<div class="toggle"> <div class="toggle">
<div class="toggleWrapper"> <div class="toggleWrapper">
<div class="toggle" :class="store.r.darkMode.value ? 'checked' : null" @click="toggleDarkMode()"> <input id="dn" v-model="darkMode" type="checkbox" class="dn"/>
<label for="dn" class="toggle">
<span class="before">{{ i18n.ts.light }}</span> <span class="before">{{ i18n.ts.light }}</span>
<span class="after">{{ i18n.ts.dark }}</span> <span class="after">{{ i18n.ts.dark }}</span>
<span class="toggle__handler"> <span class="toggle__handler">
@ -23,7 +24,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<span class="star star--4"></span> <span class="star star--4"></span>
<span class="star star--5"></span> <span class="star star--5"></span>
<span class="star star--6"></span> <span class="star star--6"></span>
</div> </label>
</div> </div>
</div> </div>
<div class="sync"> <div class="sync">
@ -36,7 +37,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div> </div>
<div class="_gaps"> <div class="_gaps">
<template v-if="!store.r.darkMode.value"> <template v-if="!darkMode">
<SearchMarker :keywords="['light', 'theme']"> <SearchMarker :keywords="['light', 'theme']">
<MkFolder :defaultOpen="true" :max-height="500"> <MkFolder :defaultOpen="true" :max-height="500">
<template #icon><i class="ti ti-sun"></i></template> <template #icon><i class="ti ti-sun"></i></template>
@ -204,7 +205,6 @@ import JSON5 from 'json5';
import defaultLightTheme from '@@/themes/l-light.json5'; import defaultLightTheme from '@@/themes/l-light.json5';
import defaultDarkTheme from '@@/themes/d-green-lime.json5'; import defaultDarkTheme from '@@/themes/d-green-lime.json5';
import type { Theme } from '@/theme.js'; import type { Theme } from '@/theme.js';
import * as os from '@/os.js';
import MkSwitch from '@/components/MkSwitch.vue'; import MkSwitch from '@/components/MkSwitch.vue';
import FormSection from '@/components/form/section.vue'; import FormSection from '@/components/form/section.vue';
import FormLink from '@/components/form/link.vue'; import FormLink from '@/components/form/link.vue';
@ -257,6 +257,7 @@ const lightThemeId = computed({
}, },
}); });
const darkMode = computed(store.makeGetterSetter('darkMode'));
const syncDeviceDarkMode = prefer.model('syncDeviceDarkMode'); const syncDeviceDarkMode = prefer.model('syncDeviceDarkMode');
const themesCount = installedThemes.value.length; const themesCount = installedThemes.value.length;
@ -266,21 +267,6 @@ watch(syncDeviceDarkMode, () => {
} }
}); });
async function toggleDarkMode() {
const value = !store.r.darkMode.value;
if (syncDeviceDarkMode.value) {
const { canceled } = await os.confirm({
text: i18n.tsx.switchDarkModeManuallyWhenSyncEnabledConfirm({ x: i18n.ts.syncDeviceDarkMode }),
});
if (canceled) return;
syncDeviceDarkMode.value = false;
store.set('darkMode', value);
} else {
store.set('darkMode', value);
}
}
const themesSyncEnabled = ref(prefer.isSyncEnabled('themes')); const themesSyncEnabled = ref(prefer.isSyncEnabled('themes'));
function changeThemesSyncEnabled(value: boolean) { function changeThemesSyncEnabled(value: boolean) {
@ -379,6 +365,16 @@ definePage(() => ({
overflow: clip; overflow: clip;
padding: 0 100px; padding: 0 100px;
vertical-align: bottom; vertical-align: bottom;
input {
position: absolute;
left: -99em;
}
}
.dn:focus-visible ~ .toggle {
outline: 2px solid var(--MI_THEME-focus);
outline-offset: 2px;
} }
.toggle { .toggle {
@ -407,61 +403,6 @@ definePage(() => ({
right: -68px; right: -68px;
color: var(--MI_THEME-fg); color: var(--MI_THEME-fg);
} }
&.checked {
background-color: #749DD6;
> .before {
color: var(--MI_THEME-fg);
}
> .after {
color: var(--MI_THEME-accent);
}
.toggle__handler {
background-color: #FFE5B5;
transform: translate3d(40px, 0, 0) rotate(0);
.crater { opacity: 1; }
}
.star--1 {
width: 2px;
height: 2px;
}
.star--2 {
width: 4px;
height: 4px;
transform: translate3d(-5px, 0, 0);
}
.star--3 {
width: 2px;
height: 2px;
transform: translate3d(-7px, 0, 0);
}
.star--4,
.star--5,
.star--6 {
opacity: 1;
transform: translate3d(0,0,0);
}
.star--4 {
transition: all 300ms 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
.star--5 {
transition: all 300ms 300ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
.star--6 {
transition: all 300ms 400ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
}
} }
.toggle__handler { .toggle__handler {
@ -572,6 +513,63 @@ definePage(() => ({
height: 2px; height: 2px;
transform: translate3d(3px,0,0); transform: translate3d(3px,0,0);
} }
input:checked {
+ .toggle {
background-color: #749DD6;
> .before {
color: var(--MI_THEME-fg);
}
> .after {
color: var(--MI_THEME-accent);
}
.toggle__handler {
background-color: #FFE5B5;
transform: translate3d(40px, 0, 0) rotate(0);
.crater { opacity: 1; }
}
.star--1 {
width: 2px;
height: 2px;
}
.star--2 {
width: 4px;
height: 4px;
transform: translate3d(-5px, 0, 0);
}
.star--3 {
width: 2px;
height: 2px;
transform: translate3d(-7px, 0, 0);
}
.star--4,
.star--5,
.star--6 {
opacity: 1;
transform: translate3d(0,0,0);
}
.star--4 {
transition: all 300ms 200ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
.star--5 {
transition: all 300ms 300ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
.star--6 {
transition: all 300ms 400ms cubic-bezier(0.445, 0.05, 0.55, 0.95) !important;
}
}
}
} }
> .sync { > .sync {

View File

@ -1,7 +1,7 @@
{ {
"type": "module", "type": "module",
"name": "misskey-js", "name": "misskey-js",
"version": "2025.5.1-beta.5", "version": "2025.5.1-beta.4",
"description": "Misskey SDK for JavaScript", "description": "Misskey SDK for JavaScript",
"license": "MIT", "license": "MIT",
"main": "./built/index.js", "main": "./built/index.js",