export type AnnouncementLocale = 'en-US' | 'zh-CN' export type AnnouncementChangeType = | 'added' | 'changed' | 'deprecated' | 'removed' | 'fixed' | 'security' export type LocalizedAnnouncementText = Readonly> export type AnnouncementChange = LocalizedAnnouncementText export type LauncherAnnouncement = { readonly id: string readonly version: string readonly publishedAt: string readonly title: LocalizedAnnouncementText readonly changes: Readonly>> readonly notes?: LocalizedAnnouncementText readonly externalUrl?: string } export const ANNOUNCEMENT_CHANGE_TYPES: readonly AnnouncementChangeType[] = [ 'added', 'changed', 'deprecated', 'removed', 'fixed', 'security', ] export const launcherAnnouncements: readonly LauncherAnnouncement[] = [ { id: 'launcher-1.0.1', version: '1.0.1', publishedAt: '2026-10-03', title: { 'en-US': 'Starlight Launcher 1.0.1', 'zh-CN': 'Starlight Launcher 1.0.1', }, changes: { added: [ { 'en-US': 'Instance backups: create deduplicated snapshots of an instance while it is closed, preview and restore them, exclude specific files or folders, and move the backup repository.', 'zh-CN': '实例备份:在实例关闭时创建去重快照,可预览与恢复,支持排除指定文件或文件夹,并可迁移备份仓库。', }, { 'en-US': "Customize the launcher's UI font and monospace font in appearance settings.", 'zh-CN': '在外观设置中自定义启动器界面字体与等宽字体。', }, ], fixed: [ { 'en-US': 'Fixed beta builds not auto-updating from beta9 to beta10 (prerelease versions were compared as text instead of by number).', 'zh-CN': '修复 beta 版本无法从 beta9 自动更新到 beta10 的问题(预发布版本此前按文本而非数字比较)。', }, { 'en-US': 'Fixed a cross-crate visibility issue that prevented the launcher from compiling with the ignore-SSL-errors option.', 'zh-CN': '修复因跨 crate 可见性导致的编译失败,此前启用“忽略 SSL 证书错误”选项时无法编译。', }, ], }, }, { id: 'launcher-1.0.1-beta10', version: '1.0.1-beta10', publishedAt: '2026-10-02', title: { 'en-US': 'Starlight Launcher 1.0.1-beta10', 'zh-CN': 'Starlight Launcher 1.0.1-beta10', }, changes: { added: [ { 'en-US': 'Reworked the instance-page tour into four steps covering content, files, worlds, and logs.', 'zh-CN': '重做实例页导览,分为内容、文件、世界、日志四步。', }, { 'en-US': 'When the install location is a drive root, the installer now creates a Starlight subfolder automatically.', 'zh-CN': '安装位置选到盘符根目录时,安装器会自动创建 Starlight 子文件夹。', }, ], fixed: [ { 'en-US': 'Fixed the launcher UI scale reverting after a restart.', 'zh-CN': '修复启动器界面缩放重启后恢复原状的问题。', }, { 'en-US': 'Fixed developer feature flags not saving.', 'zh-CN': '修复开发者功能开关无法保存的问题。', }, { 'en-US': 'Fixed instance group edits not saving for instances without an applied content set.', 'zh-CN': '修复没有应用内容集的实例无法保存分组修改的问题。', }, { 'en-US': 'Fixed the launcher crashing on startup when feature flags were out of sync between the frontend and backend.', 'zh-CN': '修复前后端功能开关不同步导致启动器启动崩溃的问题。', }, { 'en-US': 'Fixed being unable to copy text inside the embedded skin site.', 'zh-CN': '修复内嵌皮肤站中无法复制文本的问题。', }, { 'en-US': 'Fixed the onboarding prompt not dismissing when clicking anywhere.', 'zh-CN': '修复导览提示点击任意位置无法关闭的问题。', }, ], }, }, { id: 'launcher-1.0.1-beta9', version: '1.0.1-beta9', publishedAt: '2026-10-02', title: { 'en-US': 'Starlight Launcher 1.0.1-beta9', 'zh-CN': 'Starlight Launcher 1.0.1-beta9', }, changes: { fixed: [ { 'en-US': 'Fixed a crash on the minimal home layout caused by an unrecognized multiplayer feature flag (missing backend enum variant).', 'zh-CN': '修复多人联机功能开关缺少后端枚举变体、导致精简主页报错的问题。', }, ], }, }, { id: 'launcher-1.0.1-beta8', version: '1.0.1-beta8', publishedAt: '2026-10-02', title: { 'en-US': 'Starlight Launcher 1.0.1-beta8', 'zh-CN': 'Starlight Launcher 1.0.1-beta8', }, changes: { fixed: [ { 'en-US': 'Fixed the sidebar navigation entries breaking after the screenshot center was added.', 'zh-CN': '修复添加截图中心后侧边栏导航项损坏的问题。', }, { 'en-US': 'Fixed being unable to install the StarLight hosted pack even after signing in (missing command permission).', 'zh-CN': '修复登录后仍无法安装 StarLight 实例的问题(命令权限缺失)。', }, { 'en-US': 'Fixed the launcher UI scaling not applying when changed (missing command permission).', 'zh-CN': '修复修改启动器界面缩放后不生效的问题(命令权限缺失)。', }, { 'en-US': 'Fixed several screenshot center actions failing due to missing command permissions.', 'zh-CN': '修复截图中心部分操作因命令权限缺失而失败的问题。', }, ], }, }, { id: 'launcher-1.0.1-beta7', version: '1.0.1-beta7', publishedAt: '2026-10-02', title: { 'en-US': 'Starlight Launcher 1.0.1-beta7', 'zh-CN': 'Starlight Launcher 1.0.1-beta7', }, changes: { added: [ { 'en-US': 'Added a screenshot center: browse screenshots across every instance, group them (custom groups, by instance, or by date), preview, edit (crop, rotate, annotate, censor), and export as ZIP.', 'zh-CN': '新增截图中心:跨实例浏览截图,支持自定义/按实例/按日期分组,可预览、编辑(裁剪、标注、打码等)并导出为 ZIP。', }, { 'en-US': 'Added the multiplayer (Terracotta) entry to the sidebar, behind a feature flag.', 'zh-CN': '侧边栏新增多人联机(陶瓦)入口,由功能开关控制。', }, ], changed: [ { 'en-US': 'Launcher UI scaling is now persisted in the backend and applied via native webview zoom, so it scales embedded pages correctly and keeps onboarding anchors aligned.', 'zh-CN': '启动器界面缩放改为后端持久化,并通过原生 webview 缩放应用,可正确缩放内嵌页面且导览锚点不再偏移。', }, ], fixed: [ { 'en-US': 'Fixed the onboarding tour skipping its first step when the target anchor was missing.', 'zh-CN': '修复导览首步在目标锚点缺失时被自动跳过的问题。', }, ], }, }, { id: 'launcher-1.0.1-beta6', version: '1.0.1-beta6', publishedAt: '2026-10-01', title: { 'en-US': 'Starlight Launcher 1.0.1-beta6', 'zh-CN': 'Starlight Launcher 1.0.1-beta6', }, changes: { fixed: [ { 'en-US': 'Fixed the onboarding tour skipping steps automatically, getting stuck, or not navigating between steps; the tour bubble no longer covers the left navigation bar.', 'zh-CN': '修复新手导览自动跳过、卡住或不跳转的问题;导览气泡不再遮挡左侧导航栏。', }, { 'en-US': 'Fixed the onboarding tour target on the minimal home layout.', 'zh-CN': '修复精简主页下导览目标找不到的问题。', }, ], added: [ { 'en-US': 'Feature flag names in developer settings are now shown in Chinese.', 'zh-CN': '开发者设置中的功能开关名现在显示中文。', }, ], }, }, { id: 'launcher-1.0.1-beta5', version: '1.0.1-beta5', publishedAt: '2026-10-01', title: { 'en-US': 'Starlight Launcher 1.0.1-beta5', 'zh-CN': 'Starlight Launcher 1.0.1-beta5', }, changes: { added: [ { 'en-US': 'Reworked the onboarding tour, covering the home page, StarLight login, announcements, instance creation, discovery, skins, library, lab, downloads, and update settings in order.', 'zh-CN': '重做了新手导览,依次介绍主页、StarLight 登录、公告、创建实例、发现内容、皮肤、实例库、实验室、下载与更新设置。', }, ], fixed: [ { 'en-US': 'Fixed the developer feature flags page rendering blank.', 'zh-CN': '修复开发者“功能开关”页面空白的问题。', }, { 'en-US': 'Fixed a build error that prevented the launcher from compiling.', 'zh-CN': '修复导致启动器无法编译的构建错误。', }, ], }, }, { id: 'launcher-1.0.1-beta4', version: '1.0.1-beta4', publishedAt: '2026-09-30', title: { 'en-US': 'Starlight Launcher 1.0.1-beta4', 'zh-CN': 'Starlight Launcher 1.0.1-beta4', }, changes: { fixed: [ { 'en-US': 'Fixed a build error in 1.0.1-beta3 that prevented the launcher from compiling.', 'zh-CN': '修复 1.0.1-beta3 中导致启动器无法编译的构建错误。', }, ], }, }, { id: 'launcher-1.0.1-beta3', version: '1.0.1-beta3', publishedAt: '2026-09-30', title: { 'en-US': 'Starlight Launcher 1.0.1-beta3', 'zh-CN': 'Starlight Launcher 1.0.1-beta3', }, changes: { added: [ { 'en-US': 'Added a launcher UI scale setting under Appearance, which also helps when embedded pages are cut off.', 'zh-CN': '在“界面与外观”中新增启动器缩放设置,同时可缓解内嵌网页被裁切的问题。', }, { 'en-US': 'Added a one-time welcome announcement on first launch, with an entry in the home sidebar.', 'zh-CN': '新增首次启动时的欢迎公告弹窗,并在主页侧栏提供入口。', }, ], fixed: [ { 'en-US': 'Fixed the browse page going blank without a CurseForge API key; the navigation tabs now stay visible.', 'zh-CN': '修复未配置 CurseForge API Key 时浏览页整页空白的问题,导航栏现在保持可见。', }, { 'en-US': 'Fixed the about page license links and the update changelog link to point at the correct repository.', 'zh-CN': '修复关于页许可证链接与更新日志链接,改为指向正确的仓库。', }, ], }, }, { id: 'launcher-1.0.1-beta2', version: '1.0.1-beta2', publishedAt: '2026-09-28', title: { 'en-US': 'Starlight Launcher 1.0.1-beta2', 'zh-CN': 'Starlight Launcher 1.0.1-beta2', }, changes: { added: [ { 'en-US': 'GitHub releases now include one complete update package for publishing to the StarLight skin site.', 'zh-CN': 'GitHub 发布现会生成一个可直接发布到 StarLight 皮肤站的完整更新包。', }, ], fixed: [ { 'en-US': 'Improved the reliability of live logs and database switching.', 'zh-CN': '提高实时日志与数据库切换的可靠性。', }, ], }, }, { id: 'launcher-1.0.1-beta1', version: '1.0.1-beta1', publishedAt: '2026-09-27', title: { 'en-US': 'Starlight Launcher 1.0.1-beta1', 'zh-CN': 'Starlight Launcher 1.0.1-beta1', }, changes: { added: [ { 'en-US': 'Added a one-time welcome announcement on first launch, covering the development team, the StarLight-only note, the rulebook update, and server connection addresses.', 'zh-CN': '新增首次启动时的欢迎公告弹窗,包含开发团队、StarLight 专用说明、服规更新与服务器连接地址。', }, ], }, }, { id: 'launcher-1.0.0', version: '1.0.0', publishedAt: '2026-09-26', title: { 'en-US': 'Starlight Launcher 1.0.0', 'zh-CN': 'Starlight Launcher 1.0.0', }, changes: { added: [ { 'en-US': 'Enabled the built-in automatic updater. The launcher can now check for and install new versions from the update channel.', 'zh-CN': '启用内置自动更新,启动器现在可以从更新通道检查并安装新版本。', }, ], fixed: [ { 'en-US': 'Fixed a crash on startup caused by the updater running before launcher state finished initializing.', 'zh-CN': '修复了更新器在启动器状态初始化完成前运行导致的启动崩溃。', }, ], }, }, { id: 'launcher-1.0.0-beta15', version: '1.0.0-beta15', publishedAt: '2026-09-26', title: { 'en-US': 'Starlight Launcher 1.0.0-beta15', 'zh-CN': 'Starlight Launcher 1.0.0-beta15', }, changes: { fixed: [ { 'en-US': 'Fixed the launcher crashing on startup in 1.0.0-beta14 by temporarily reverting the built-in updater. The updater will be re-enabled after the crash is resolved.', 'zh-CN': '修复 1.0.0-beta14 中启动器一打开就崩溃的问题:暂时回退了内置自动更新。待崩溃问题解决后会重新启用。', }, ], }, }, { id: 'launcher-1.0.0-beta14', version: '1.0.0-beta14', publishedAt: '2026-09-26', title: { 'en-US': 'Starlight Launcher 1.0.0-beta14', 'zh-CN': 'Starlight Launcher 1.0.0-beta14', }, changes: { added: [ { 'en-US': 'Enabled the built-in automatic updater, so the launcher can check for and install new versions from the update channel.', 'zh-CN': '启用内置自动更新,启动器现在可以从更新通道检查并安装新版本。', }, ], fixed: [ { 'en-US': 'Fixed the updater manifest download URL and release ordering so update checks succeed.', 'zh-CN': '修复更新清单的下载地址与发布顺序,更新检查现在可以成功。', }, { 'en-US': 'Updated the signing key pair used to sign update packages.', 'zh-CN': '更新了用于签名更新包的密钥对。', }, ], changed: [ { 'en-US': 'Removed upstream release announcements prior to 1.0.0-beta1.', 'zh-CN': '移除了 1.0.0-beta1 之前的上游版本公告。', }, ], }, }, { id: 'launcher-1.0.0-beta13', version: '1.0.0-beta13', publishedAt: '2026-09-25', title: { 'en-US': 'Starlight Launcher 1.0.0-beta13', 'zh-CN': 'Starlight Launcher 1.0.0-beta13', }, changes: { added: [ { 'en-US': 'Installing a modpack now lets you choose the game directory.', 'zh-CN': '一键安装整合包时现在可以选择游戏目录。', }, { 'en-US': 'Approved (hosted) modpack sync and StarLight instance mode were added.', 'zh-CN': '新增获批整合包同步与 StarLight 实例模式。', }, { 'en-US': 'Added the skin editor, improved font settings, and polished the about page (including an easter egg).', 'zh-CN': '新增皮肤编辑器、改进字体设置,并完善关于页(含彩蛋)。', }, ], changed: [ { 'en-US': 'The about page now plays a looping wither victory animation.', 'zh-CN': '关于页现在会播放循环的凋灵胜利动画。', }, ], fixed: [ { 'en-US': 'Fixed several issues when importing an instance from a .minecraft folder (content copy, version isolation, symlinks, loader version detection).', 'zh-CN': '修复从 .minecraft 文件夹导入实例的多项问题(内容复制、版本隔离、符号链接、加载器版本识别等)。', }, { 'en-US': 'Fixed the instance log view stopping updates and overlapping log lines.', 'zh-CN': '修复实例日志窗口停更与日志行重叠的问题。', }, { 'en-US': 'Fixed hosted (SLS) instances leaving external data behind on delete and reusing the same folder on reinstall.', 'zh-CN': '修复 SLS 实例删除残留外部数据、重装共用同一文件夹的问题。', }, { 'en-US': 'Fixed the sidebar player picker not appearing right after signing in to the skin site.', 'zh-CN': '修复登录皮肤站后侧栏玩家选择器未立即显示的问题。', }, { 'en-US': 'Fixed launches getting stuck and the player picker not reappearing when not signed in to the skin site.', 'zh-CN': '修复未登录皮肤站时启动卡住且不再弹出玩家选择的问题。', }, { 'en-US': 'Fixed various skin site login, player list sync, and display issues.', 'zh-CN': '修复皮肤站登录、玩家列表同步及若干显示问题。', }, ], }, }, { id: 'launcher-1.0.0-beta1', version: '1.0.0-beta1', publishedAt: '2026-09-13', title: { 'en-US': 'Starlight Launcher 1.0.0-beta1', 'zh-CN': 'Starlight Launcher 1.0.0-beta1', }, changes: { changed: [ { 'en-US': 'The launcher has been rebranded from Axolotl Launcher to Starlight Launcher, with a new icon and a refreshed about page.', 'zh-CN': '启动器已从 Axolotl Launcher 更名为 Starlight Launcher,并更换了全新图标与关于页。', }, { 'en-US': 'The "Powered by" and copyright notices now correctly credit Axolotl Launcher as the upstream project.', 'zh-CN': '版权与 "Powered by" 署名现在正确标注上游项目 Axolotl Launcher。', }, { 'en-US': 'The developer list on the about page now shows Ax_Tps and Disy920.', 'zh-CN': '关于页的开发组现在显示 Ax_Tps 与 Disy920。', }, ], added: [ { 'en-US': 'A "Starlight" entry was added to the sidebar, which embeds the StarLight skin site.', 'zh-CN': '侧边栏新增「斯达莱特」入口,内嵌 StarLight 皮肤站。', }, { 'en-US': 'A launch progress panel was added to the home sidebar, showing the current launch stage and progress.', 'zh-CN': '主页侧边栏新增启动进度面板,显示当前启动阶段与进度。', }, { 'en-US': 'An easter egg mini-game (star merge) was added, reachable via the secret code "starlight", the Konami code, or a long press on a developer name on the about page.', 'zh-CN': '新增彩蛋小游戏(下界之星合成),可通过暗号 starlight、Konami 秘技或长按关于页开发者名字触发。', }, ], removed: [ { 'en-US': 'The hard-coded Starlight official server was removed from "Pinned servers"; only servers you favorite yourself are shown now.', 'zh-CN': '移除了「固定的服务器」中写死的 Starlight 官方服务器,现在只显示你自己收藏的服务器。', }, { 'en-US': 'The swimming axolotl animation on the about page was replaced with a static nether star.', 'zh-CN': '关于页中游动的美西螈动画已替换为静止的下界之星。', }, ], fixed: [ { 'en-US': 'Minecraft now launches in a maximized window when the maximize option is enabled.', 'zh-CN': '启用最大化选项后,Minecraft 现在会以最大化窗口启动。', }, ], }, }, ] export function getAnnouncementByVersion(version: string | null | undefined) { if (!version) return undefined return launcherAnnouncements.find((announcement) => announcement.version === version) } export function getAnnouncements(): readonly LauncherAnnouncement[] { return launcherAnnouncements } export function getAnnouncementById(id: string) { return launcherAnnouncements.find((announcement) => announcement.id === id) } export function getLocalizedAnnouncementText( text: LocalizedAnnouncementText, locale: string, ): string { return locale === 'zh-CN' ? text['zh-CN'] : text['en-US'] }