Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f968de1987 | ||
|
|
f10920883d |
No files matched your search
Generated
+2
-2
@@ -6841,7 +6841,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "theseus"
|
name = "theseus"
|
||||||
version = "1.0.2-beta14"
|
version = "1.0.2-beta15"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ariadne",
|
"ariadne",
|
||||||
"async-minecraft-ping",
|
"async-minecraft-ping",
|
||||||
@@ -6945,7 +6945,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "theseus_gui"
|
name = "theseus_gui"
|
||||||
version = "1.0.2-beta14"
|
version = "1.0.2-beta15"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"ashpd",
|
"ashpd",
|
||||||
"async_zip",
|
"async_zip",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@modrinth/app-frontend",
|
"name": "@modrinth/app-frontend",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.0.2-beta14",
|
"version": "1.0.2-beta15",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -32,6 +32,39 @@ export const ANNOUNCEMENT_CHANGE_TYPES: readonly AnnouncementChangeType[] = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
export const launcherAnnouncements: readonly LauncherAnnouncement[] = [
|
export const launcherAnnouncements: readonly LauncherAnnouncement[] = [
|
||||||
|
{
|
||||||
|
id: 'launcher-1.0.2-beta15',
|
||||||
|
version: '1.0.2-beta15',
|
||||||
|
publishedAt: '2026-10-24',
|
||||||
|
title: {
|
||||||
|
'en-US': 'Starlight Launcher 1.0.2-beta15',
|
||||||
|
'zh-CN': 'Starlight Launcher 1.0.2-beta15',
|
||||||
|
},
|
||||||
|
changes: {
|
||||||
|
fixed: [
|
||||||
|
{
|
||||||
|
'en-US':
|
||||||
|
'Fixed the announcement center failing to open and blank pages in the wiki and profile views caused by it.',
|
||||||
|
'zh-CN': '修复公告中心无法打开,以及由此导致的维基与个人资料页面空白。',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'en-US':
|
||||||
|
'Fixed the skin preview showing garbled textures after switching between players.',
|
||||||
|
'zh-CN': '修复切换玩家后皮肤预览出现纹理错乱的问题。',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'en-US':
|
||||||
|
'Fixed instance group changes only showing up after refreshing the page.',
|
||||||
|
'zh-CN': '修复实例分组修改后需要刷新页面才能生效的问题。',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'en-US':
|
||||||
|
'Fixed server maps not loading because the map iframe was blocked by the content security policy.',
|
||||||
|
'zh-CN': '修复服务器地图因 iframe 被内容安全策略拦截而无法显示的问题。',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'launcher-1.0.2-beta14',
|
id: 'launcher-1.0.2-beta14',
|
||||||
version: '1.0.2-beta14',
|
version: '1.0.2-beta14',
|
||||||
|
|||||||
@@ -219,6 +219,32 @@ function saveCache(next: RemoteAnnouncement[]) {
|
|||||||
// localStorage may be unavailable (private mode / quota)
|
// localStorage may be unavailable (private mode / quota)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const imageUrls = reactive<Record<string, string>>({})
|
||||||
|
|
||||||
|
async function loadImage(item: RemoteAnnouncement, token: string) {
|
||||||
|
const name = item.image_name
|
||||||
|
if (!name || imageUrls[item.id]) return
|
||||||
|
try {
|
||||||
|
const url = `https://skin.starlight.cool/starlight/skin/image/BROADCAST_ATTACHMENT/${encodeURIComponent(name)}`
|
||||||
|
const response = await tauriFetch(url, {
|
||||||
|
method: 'GET',
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
})
|
||||||
|
if (!response.ok) return
|
||||||
|
const type = response.headers.get('content-type') ?? ''
|
||||||
|
if (type.includes('application/json') || type.includes('text/')) return
|
||||||
|
const blob = await response.blob()
|
||||||
|
imageUrls[item.id] = URL.createObjectURL(blob)
|
||||||
|
} catch {
|
||||||
|
// 图片加载失败不影响公告本身展示
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function revokeImages() {
|
||||||
|
for (const url of Object.values(imageUrls)) URL.revokeObjectURL(url)
|
||||||
|
for (const key of Object.keys(imageUrls)) delete imageUrls[key]
|
||||||
|
}
|
||||||
|
|
||||||
async function refresh() {
|
async function refresh() {
|
||||||
if (disposed) return
|
if (disposed) return
|
||||||
loadCache()
|
loadCache()
|
||||||
|
|||||||
@@ -622,6 +622,7 @@ watch(signedIn, (value) => {
|
|||||||
</div>
|
</div>
|
||||||
<SkinPreviewRenderer
|
<SkinPreviewRenderer
|
||||||
v-else
|
v-else
|
||||||
|
:key="`${selectedPlayer.uuid}:${texture.skin ?? ''}:${texture.cape ?? ''}`"
|
||||||
:texture-src="texture.skin ?? ''"
|
:texture-src="texture.skin ?? ''"
|
||||||
:cape-src="texture.cape"
|
:cape-src="texture.cape"
|
||||||
:variant="skinVariant"
|
:variant="skinVariant"
|
||||||
|
|||||||
@@ -157,6 +157,13 @@ export function useInstanceGroups(instances: Ref<{ id: string; groups: string[]
|
|||||||
|
|
||||||
async function setMemberships(updates: InstanceGroupMembershipUpdate[]): Promise<boolean> {
|
async function setMemberships(updates: InstanceGroupMembershipUpdate[]): Promise<boolean> {
|
||||||
await set_group_memberships(updates)
|
await set_group_memberships(updates)
|
||||||
|
// 接口成功后同步本地实例的 groups 字段,否则依赖 instances 的分组视图不会重算,
|
||||||
|
// 用户必须刷新页面才能看到新的分组归属。
|
||||||
|
const byId = new Map(updates.map((update) => [update.instance_id, update.group_ids]))
|
||||||
|
instances.value = instances.value.map((instance) => {
|
||||||
|
const nextGroups = byId.get(instance.id)
|
||||||
|
return nextGroups ? { ...instance, groups: [...nextGroups] } : instance
|
||||||
|
})
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus_gui"
|
name = "theseus_gui"
|
||||||
# The actual version is set by the theseus-build workflow on tagging
|
# The actual version is set by the theseus-build workflow on tagging
|
||||||
version = "1.0.2-beta14"
|
version = "1.0.2-beta15"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
description = "Axolotl Launcher is a cross-platform Minecraft launcher"
|
description = "Axolotl Launcher is a cross-platform Minecraft launcher"
|
||||||
homepage = "https://www.ghs.red"
|
homepage = "https://www.ghs.red"
|
||||||
|
|||||||
@@ -126,7 +126,7 @@
|
|||||||
"script-src": "'self' 'unsafe-eval' 'wasm-unsafe-eval'",
|
"script-src": "'self' 'unsafe-eval' 'wasm-unsafe-eval'",
|
||||||
"worker-src": "'self' blob:",
|
"worker-src": "'self' blob:",
|
||||||
|
|
||||||
"frame-src": "https://www.youtube.com https://www.youtube-nocookie.com https://discord.com 'self' http://axolotl-skin.localhost axolotl-skin://localhost https://skin.starlight.cool https://map.starlight.cool",
|
"frame-src": "https: http://axolotl-skin.localhost axolotl-skin://localhost 'self'",
|
||||||
"media-src": "'self' data: https://*.githubusercontent.com"
|
"media-src": "'self' data: https://*.githubusercontent.com"
|
||||||
},
|
},
|
||||||
"csp": {
|
"csp": {
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
"img-src": "https: 'unsafe-inline' 'self' asset: http://asset.localhost http://textures.minecraft.net blob: data:",
|
"img-src": "https: 'unsafe-inline' 'self' asset: http://asset.localhost http://textures.minecraft.net blob: data:",
|
||||||
"style-src": "'unsafe-inline' 'self'",
|
"style-src": "'unsafe-inline' 'self'",
|
||||||
"script-src": "'self' 'unsafe-eval' 'wasm-unsafe-eval'",
|
"script-src": "'self' 'unsafe-eval' 'wasm-unsafe-eval'",
|
||||||
"frame-src": "https://www.youtube.com https://www.youtube-nocookie.com https://discord.com 'self' axolotl-skin://localhost http://axolotl-skin.localhost https://skin.starlight.cool https://map.starlight.cool",
|
"frame-src": "https: axolotl-skin://localhost http://axolotl-skin.localhost 'self'",
|
||||||
"media-src": "'self' data: https://*.githubusercontent.com"
|
"media-src": "'self' data: https://*.githubusercontent.com"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "theseus"
|
name = "theseus"
|
||||||
# The actual version is set by the theseus-build workflow on tagging
|
# The actual version is set by the theseus-build workflow on tagging
|
||||||
version = "1.0.2-beta14"
|
version = "1.0.2-beta15"
|
||||||
edition.workspace = true
|
edition.workspace = true
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
Reference in new issue
Block a user