Merge branch 'develop' into feature/channel_muting
This commit is contained in:
commit
6de322cc91
|
|
@ -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
|
||||||
|
|
|
||||||
11
CHANGELOG.md
11
CHANGELOG.md
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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',
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue