Merge branch 'develop' into feature/channel_muting

This commit is contained in:
samunohito 2025-10-27 22:30:16 +09:00
commit 6de322cc91
10 changed files with 32 additions and 14 deletions

View File

@ -11,6 +11,7 @@ jobs:
permissions: permissions:
contents: read contents: read
issues: write issues: write
pull-requests: write
steps: steps:
- name: Reply - name: Reply
uses: actions/github-script@v6 uses: actions/github-script@v6

View File

@ -1,17 +1,22 @@
## 2025.10.2 ## Unreleased
### General ### General
- Feat: チャンネルミュート機能の実装 #10649 - Feat: チャンネルミュート機能の実装 #10649
- チャンネルの概要画面の右上からミュートできます(リンクコピー、共有、設定と同列) - チャンネルの概要画面の右上からミュートできます(リンクコピー、共有、設定と同列)
### Client ### Client
- Fix: アプリ内からキャッシュをクリアするとテーマ再適用するまでレンダリングが正しく行われない問題を修正 - Fix: 紙吹雪エフェクトがアニメーション設定を考慮せず常に表示される問題を修正
- Fix: 期限が無期限のアンケートに投票できない問題を修正
### Server ### Server
- -
## 2025.10.2
### Client
- Fix: アプリ内からキャッシュをクリアするとテーマ再適用するまでレンダリングが正しく行われない問題を修正
- Fix: 期限が無期限のアンケートに投票できない問題を修正
## 2025.10.1 ## 2025.10.1
### General ### General

View File

@ -1,6 +1,6 @@
{ {
"name": "misskey", "name": "misskey",
"version": "2025.10.2-alpha.0", "version": "2025.10.2",
"codename": "nasubi", "codename": "nasubi",
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -20,3 +20,4 @@ export const instanceName = (siteName === 'Misskey' || siteName == null) ? host
export const ui = localStorage.getItem('ui'); export const ui = localStorage.getItem('ui');
export const debug = localStorage.getItem('debug') === 'true'; export const debug = localStorage.getItem('debug') === 'true';
export const isSafeMode = localStorage.getItem('isSafeMode') === 'true'; export const isSafeMode = localStorage.getItem('isSafeMode') === 'true';
export const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion)').matches;

View File

@ -14,7 +14,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<header :class="$style.header"> <header :class="$style.header">
<div :class="$style.headerLeft"> <div :class="$style.headerLeft">
<button v-if="!fixed" :class="$style.cancel" class="_button" @click="cancel"><i class="ti ti-x"></i></button> <button v-if="!fixed" :class="$style.cancel" class="_button" @click="cancel"><i class="ti ti-x"></i></button>
<button v-click-anime v-tooltip="i18n.ts.switchAccount" :class="$style.account" class="_button" @click="openAccountMenu"> <button v-click-anime v-tooltip="i18n.ts.account" :class="$style.account" class="_button" @click="openAccountMenu">
<img :class="$style.avatar" :src="(postAccount ?? $i).avatarUrl" style="border-radius: 100%;"/> <img :class="$style.avatar" :src="(postAccount ?? $i).avatarUrl" style="border-radius: 100%;"/>
</button> </button>
</div> </div>

View File

@ -137,6 +137,7 @@ import FormSplit from '@/components/form/split.vue';
import MkFolder from '@/components/MkFolder.vue'; import MkFolder from '@/components/MkFolder.vue';
import MkKeyValue from '@/components/MkKeyValue.vue'; import MkKeyValue from '@/components/MkKeyValue.vue';
import MkLink from '@/components/MkLink.vue'; import MkLink from '@/components/MkLink.vue';
import MkInfo from '@/components/MkInfo.vue';
const initStats = () => misskeyApi('stats', {}); const initStats = () => misskeyApi('stats', {});
</script> </script>

View File

@ -5,6 +5,7 @@
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import { hemisphere } from '@@/js/intl-const.js'; import { hemisphere } from '@@/js/intl-const.js';
import { prefersReducedMotion } from '@@/js/config.js';
import { definePreferences } from './manager.js'; import { definePreferences } from './manager.js';
import type { Theme } from '@/theme.js'; import type { Theme } from '@/theme.js';
import type { SoundType } from '@/utility/sound.js'; import type { SoundType } from '@/utility/sound.js';
@ -211,10 +212,10 @@ export const PREF_DEF = definePreferences({
default: false, default: false,
}, },
animation: { animation: {
default: !window.matchMedia('(prefers-reduced-motion)').matches, default: !prefersReducedMotion,
}, },
animatedMfm: { animatedMfm: {
default: !window.matchMedia('(prefers-reduced-motion)').matches, default: !prefersReducedMotion,
}, },
advancedMfm: { advancedMfm: {
default: true, default: true,
@ -232,7 +233,7 @@ export const PREF_DEF = definePreferences({
default: false, default: false,
}, },
disableShowingAnimatedImages: { disableShowingAnimatedImages: {
default: window.matchMedia('(prefers-reduced-motion)').matches, default: prefersReducedMotion,
}, },
emojiStyle: { emojiStyle: {
default: 'twemoji', // twemoji / fluentEmoji / native default: 'twemoji', // twemoji / fluentEmoji / native

View File

@ -7,6 +7,7 @@ import { markRaw, ref } from 'vue';
import * as Misskey from 'misskey-js'; import * as Misskey from 'misskey-js';
import lightTheme from '@@/themes/l-light.json5'; import lightTheme from '@@/themes/l-light.json5';
import darkTheme from '@@/themes/d-green-lime.json5'; import darkTheme from '@@/themes/d-green-lime.json5';
import { prefersReducedMotion } from '@@/js/config.js';
import { hemisphere } from '@@/js/intl-const.js'; import { hemisphere } from '@@/js/intl-const.js';
import type { DeviceKind } from '@/utility/device-kind.js'; import type { DeviceKind } from '@/utility/device-kind.js';
import type { Plugin } from '@/plugin.js'; import type { Plugin } from '@/plugin.js';
@ -220,11 +221,11 @@ export const store = markRaw(new Pizzax('base', {
}, },
animation: { animation: {
where: 'device', where: 'device',
default: !window.matchMedia('(prefers-reduced-motion)').matches, default: !prefersReducedMotion,
}, },
animatedMfm: { animatedMfm: {
where: 'device', where: 'device',
default: !window.matchMedia('(prefers-reduced-motion)').matches, default: !prefersReducedMotion,
}, },
advancedMfm: { advancedMfm: {
where: 'device', where: 'device',
@ -248,7 +249,7 @@ export const store = markRaw(new Pizzax('base', {
}, },
disableShowingAnimatedImages: { disableShowingAnimatedImages: {
where: 'device', where: 'device',
default: window.matchMedia('(prefers-reduced-motion)').matches, default: prefersReducedMotion,
}, },
emojiStyle: { emojiStyle: {
where: 'device', where: 'device',

View File

@ -5,13 +5,21 @@
import _confetti from 'canvas-confetti'; import _confetti from 'canvas-confetti';
import * as os from '@/os.js'; import * as os from '@/os.js';
import { prefer } from '@/preferences.js';
export function confetti(options: { duration?: number; } = {}) { export function confetti(options: { duration?: number; } = {}) {
if (!prefer.s.animation) return;
const duration = options.duration ?? 1000 * 4; const duration = options.duration ?? 1000 * 4;
const animationEnd = Date.now() + duration; const animationEnd = Date.now() + duration;
const defaults = { startVelocity: 30, spread: 360, ticks: 60, zIndex: os.claimZIndex('high') }; const defaults = {
startVelocity: 30,
spread: 360,
ticks: 60,
zIndex: os.claimZIndex('high'),
} satisfies _confetti.Options;
function randomInRange(min, max) { function randomInRange(min: number, max: number) {
return Math.random() * (max - min) + min; return Math.random() * (max - min) + min;
} }

View File

@ -1,7 +1,7 @@
{ {
"type": "module", "type": "module",
"name": "misskey-js", "name": "misskey-js",
"version": "2025.10.2-alpha.0", "version": "2025.10.2",
"description": "Misskey SDK for JavaScript", "description": "Misskey SDK for JavaScript",
"license": "MIT", "license": "MIT",
"main": "./built/index.js", "main": "./built/index.js",