Merge pull request #16709 from misskey-dev/develop

Release: 2025.10.2
This commit is contained in:
misskey-release-bot[bot] 2025-10-27 04:19:45 +00:00 committed by GitHub
commit 19053339d9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 24 additions and 16 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,3 +1,9 @@
## 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.1", "version": "2025.10.2",
"codename": "nasubi", "codename": "nasubi",
"repository": { "repository": {
"type": "git", "type": "git",

View File

@ -257,12 +257,8 @@ function onImagePointerdown(ev: PointerEvent) {
xOffset /= 2; xOffset /= 2;
yOffset /= 2; yOffset /= 2;
const rect = canvasEl.value.getBoundingClientRect(); let startX = ev.offsetX - xOffset;
const pointerOffsetX = ev.clientX - rect.left; let startY = ev.offsetY - yOffset;
const pointerOffsetY = ev.clientY - rect.top;
let startX = pointerOffsetX - xOffset;
let startY = pointerOffsetY - yOffset;
if (AW / AH < BW / BH) { // if (AW / AH < BW / BH) { //
startX = startX / (Math.max(AW, AH) / Math.max(BH / BW, 1)); startX = startX / (Math.max(AW, AH) / Math.max(BH / BW, 1));
@ -315,11 +311,9 @@ function onImagePointerdown(ev: PointerEvent) {
}); });
} }
_move(ev.clientX, ev.clientY); _move(ev.offsetX, ev.offsetY);
function _move(pointerClientX: number, pointerClientY: number) { function _move(pointerX: number, pointerY: number) {
const pointerX = pointerClientX - rect.left;
const pointerY = pointerClientY - rect.top;
let x = pointerX - xOffset; let x = pointerX - xOffset;
let y = pointerY - yOffset; let y = pointerY - yOffset;
@ -346,7 +340,7 @@ function onImagePointerdown(ev: PointerEvent) {
} }
function move(ev: PointerEvent) { function move(ev: PointerEvent) {
_move(ev.clientX, ev.clientY); _move(ev.offsetX, ev.offsetY);
} }
function up() { function up() {

View File

@ -58,7 +58,7 @@ const remaining = computed(() => {
}); });
const total = computed(() => sum(props.choices.map(x => x.votes))); const total = computed(() => sum(props.choices.map(x => x.votes)));
const closed = computed(() => remaining.value <= 0); const closed = computed(() => props.expiresAt != null && remaining.value <= 0);
const isVoted = computed(() => !props.multiple && props.choices.some(c => c.isVoted)); const isVoted = computed(() => !props.multiple && props.choices.some(c => c.isVoted));
const timer = computed(() => i18n.tsx._poll[ const timer = computed(() => i18n.tsx._poll[
remaining.value >= 86400 ? 'remainingDays' : remaining.value >= 86400 ? 'remainingDays' :

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

@ -242,3 +242,9 @@ export async function installTheme(code: string): Promise<void> {
if (!theme) return; if (!theme) return;
await addTheme(theme); await addTheme(theme);
} }
export function clearAppliedThemeCache() {
miLocalStorage.removeItem('theme');
miLocalStorage.removeItem('themeId');
miLocalStorage.removeItem('themeCachedVersion');
}

View File

@ -9,14 +9,15 @@ import * as os from '@/os.js';
import { miLocalStorage } from '@/local-storage.js'; import { miLocalStorage } from '@/local-storage.js';
import { fetchCustomEmojis } from '@/custom-emojis.js'; import { fetchCustomEmojis } from '@/custom-emojis.js';
import { fetchInstance } from '@/instance.js'; import { fetchInstance } from '@/instance.js';
import { clearAppliedThemeCache } from '@/theme.js';
export async function clearCache() { export async function clearCache() {
os.waiting(); os.waiting();
miLocalStorage.removeItem('instance'); miLocalStorage.removeItem('instance');
miLocalStorage.removeItem('instanceCachedAt'); miLocalStorage.removeItem('instanceCachedAt');
miLocalStorage.removeItem('theme');
miLocalStorage.removeItem('emojis'); miLocalStorage.removeItem('emojis');
miLocalStorage.removeItem('lastEmojisFetchedAt'); miLocalStorage.removeItem('lastEmojisFetchedAt');
clearAppliedThemeCache();
await misskeyApiGet('clear-browser-cache', {}).catch(() => { await misskeyApiGet('clear-browser-cache', {}).catch(() => {
// ignore // ignore
}); });

View File

@ -1,7 +1,7 @@
{ {
"type": "module", "type": "module",
"name": "misskey-js", "name": "misskey-js",
"version": "2025.10.1", "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",