{"status":200,"now_time":"2026-09-20T15:11:25.896Z","owner":"FCL-Team","repo":"FoldCraftLauncher","versions":5,"prerelease":false,"cache":{"hit":true,"outdated":true,"cached_at":"2026-09-20T14:08:29.150Z"},"releases":[{"id":391152527,"version":"1.3.3.3","title":"1.3.3.3","published_at":"2026-09-18T01:15:18Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **下载页聚合搜索**：CurseForge 与 Modrinth 双源并行搜索，结果交错合并并按标识/标题归一化去重，单源失败时自动降级只显示可用来源\n2. **MultiMC 整合包导入**：同步上游 HMCL 实现，支持 natives 字符串键、本地库文件名推导、minecraftArguments 兼容等适配，可导入 lwj3ify 等特殊实例\n3. **FCL 弹窗彩蛋**：点击启动游戏按保底概率触发\n\n#### ⚡ 优化\n\n1. **下载源体系跟进上游重构**：DownloadProvider 全链路对齐上游 HMCL，URL/URI 与组件类型模型精简\n2. **版本列表会话级快照缓存**：命中快照即时显示、后台重算覆盖，切换页面不再等待；排序改用 GameVersionNumber 真实游戏版本号降序，手动刷新强制失效缓存\n3. **主界面右菜单布局调整**：执行 Jar 功能移入 Java 管理对话框，右菜单更聚焦版本与账户\n4. **渲染器选择体验**：对话框打开时自动定位到当前选中的渲染器\n5. **FCLNumberSeekBar 轨道自绘**：数值文本两侧断开并圆角收口，视觉更完整\n6. **主题派生色透明度独立设置**：主色全透明时背景不再不可见\n7. **版本图标像素感知加载**：按图标尺寸切换缩放插值（小图最近邻、大图双线性），禁用密度预缩放解码，安装器、下载页等全部加载点统一，像素风图标放大不再发糊；更换 NeoForge 版本图标\n\n#### 🐛 修复\n\n1. 修复 SDL 复用窗口被提前销毁导致游戏崩溃\n2. 修复 Controlify 环境无法呼出软键盘：SDL 输入法按渲染路径分流，仅 SDL 渲染激活时走 SDL 通道，其余回落原路径\n3. 微软登录体验修复：登录结束或设备码轮询成功后自动关闭内嵌登录页，返回键直接退出不回退网页；修复 OAuth 事件监听残留导致堆叠多个登录页\n4. 修复多任务返回后导航栏常驻遮挡底部按钮（对话框重获焦点时恢复沉浸标志）；编辑控件对话框背景补 10dp inset 恢复屏幕边缘间隔\n5. 修复皮肤半透明像素体素化重叠产生的大量条纹，半透明回落零厚度面片呈现\n6. 修复 SeekBar 行复用时 max/min 钳制回调误写数据\n7. 修复下载源空缓存在后台线程早读导致的崩溃（DownloadProviders 改惰性查表）\n8. 修复 goSetting 菜单已选中时不触发切页；usesGlobal 反序列化缺省值改为 true\n\n### English\n\n#### ✨ New Features\n\n1. **Aggregated search on the download page**: CurseForge and Modrinth are searched in parallel, results are interleaved and deduplicated by normalized identifier/title, and a failing source degrades gracefully to the other\n2. **MultiMC modpack import**: Synced from upstream HMCL, with adaptations for string-keyed natives, local library filename derivation, and minecraftArguments compatibility — imports special instances such as lwj3ify\n3. **FCL easter egg dialog**: Triggered with a pity probability when launching the game\n\n#### ⚡ Improvements\n\n1. **Download provider system follows the upstream refactor**: The full DownloadProvider chain is aligned with upstream HMCL, with a leaner URL/URI and component-type model\n2. **Session-level version list snapshot cache**: A cache hit shows instantly while recomputation runs in the background, so switching pages no longer waits; sorting now uses real game version numbers (GameVersionNumber) in descending order, and manual refresh invalidates the cache\n3. **Main screen right menu layout reworked**: \"Execute Jar\" moved into the Java management dialog, keeping the right menu focused on versions and accounts\n4. **Renderer selection UX**: The dialog now auto-scrolls to the currently selected renderer when opened\n5. **Self-drawn FCLNumberSeekBar track**: The track breaks and rounds around the value text for a cleaner look\n6. **Separate theme derived-color alpha setting**: The background no longer disappears when the theme color is fully transparent\n7. **Pixel-aware version icon loading**: Scaling interpolation switches by icon size (nearest-neighbor for small icons, bilinear for large ones), density pre-scaling decoding is disabled, and all loading points (installer, download pages, etc.) are unified — pixel-art icons stay sharp when scaled up; the NeoForge version icon was replaced\n\n#### 🐛 Bug Fixes\n\n1. Fixed game crashes caused by SDL reused windows being destroyed early\n2. Fixed the soft keyboard not opening with Controlify: SDL IME now routes by render path — the SDL channel is used only when SDL rendering is active, otherwise it falls back to the original path\n3. Microsoft login fixes: the embedded login page now closes automatically when login finishes or device-code polling succeeds, and Back exits directly instead of navigating back through web pages; fixed stacked login pages caused by leaked OAuth event listeners\n4. Fixed the navigation bar staying on top and covering bottom buttons after returning from multitasking (immersive flags are restored when dialogs regain focus); the control edit dialog background gains a 10dp inset to restore screen-edge spacing\n5. Fixed heavy striping from overlapping semi-transparent voxels in skins — translucency now falls back to zero-thickness faces\n6. Fixed SeekBar row reuse writing wrong data through max/min clamping callbacks\n7. Fixed background crashes from an early read of the empty download-provider cache (DownloadProviders now uses lazy lookup)\n8. Fixed goSetting not switching pages when already selected; the usesGlobal deserialization default is now true\n\n","assets":[{"name":"FCL-release-1.3.3.3-all.apk","size":329317164,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.3/FCL-release-1.3.3.3-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.3-arm64-v8a.apk","size":171681177,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.3/FCL-release-1.3.3.3-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.3-armeabi-v7a.apk","size":164432242,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.3/FCL-release-1.3.3.3-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.3-x86.apk","size":158023438,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.3/FCL-release-1.3.3.3-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.3-x86_64.apk","size":177361727,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.3/FCL-release-1.3.3.3-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":387765498,"version":"1.3.3.2","title":"1.3.3.2","published_at":"2026-09-13T02:06:04Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **游戏内复述功能恢复（TTS）**：libflite 桥接安卓系统 TTS，游戏复述改走系统语音引擎\n2. **原生 JSound**：原生 libjsound.so 桥接 OpenAL，一套源码服务 jre8/17/21/25，修复 Forge 加载器下 Java Sound 失效\n3. **控制布局编辑与运行时增强**：控件双角手柄缩放、悬浮操作栏、控件组管理面板与控件组复制、滑动链、摇杆死区与前进锁、全局控件不透明度\n4. **控件编辑器重构为 Kotlin**：全面对齐游戏菜单视觉，修复吸附与编辑条问题，新增控件组复制\n5. **游戏内右菜单重构**：顶部图标 Tab 直接显示分类内容；物品栏缩放移入手势页、控件不透明度移入左菜单、锁定/隐藏控件移入调试页\n6. **渲染器版本上限调整**：判断/展示双轨版本号与 26.3 版本目录，修正各渲染器版本适配情况\n\n#### ⚡ 优化\n\n1. **解除帧率锁定**：游戏帧率不再锁定屏幕刷新率，启动时向系统投票设备最高刷新率；关闭垂直同步时交换间隔强制置 0 并切入 BufferQueue 异步模式\n2. **JNA natives 分架构打包**：去 zip 化，改为分架构 natives 目录并随 APK 架构裁剪打包\n3. **FCLNumberSeekBar 重构为 Kotlin**：轨道加粗为胶囊条、数值文本去除底衬，修复两端点击热区与显示位置不一致\n4. **皮肤模型细节**：缩小腰部接缝间隙\n5. **下载管理面板样式调整**\n\n#### 🐛 修复\n\n1. 修复游戏内无法解析 SRV 记录的问题\n2. 修复使用 zink 启动 26.3+ 时无法自动回退 Vulkan\n3. 修复 lwjgl-sdl 并入合并产物后与 Forge 模块解析的 split package 冲突\n4. 修复插件卸载缺少 REQUEST_DELETE_PACKAGES 权限导致系统卸载器立即退出\n5. 修复模组更新保留旧版本时切换后崩溃\n6. 修复熄屏状态下打开启动器可能崩溃\n7. 修复主题色带透明度时 ltColor/dkColor 透明度不跟随\n8. 修复 ViewPager2 布局时误清输入框焦点导致的输入异常（FCLEditText 增加焦点恢复守卫）\n9. 修复下载模组列表已安装标记不实时刷新：扫描完成后通知列表、下载成功回调触发重检、payload 局部绑定避免动画重播\n\n#### 🔧 其他\n\n1. 更新多语言翻译\n\n### English\n\n#### ✨ New Features\n\n1. **In-game narration restored (TTS)**: libflite now bridges Android system TTS, so game narration uses the system speech engine\n2. **Native JSound**: Native libjsound.so bridging OpenAL, one set of sources serving jre8/17/21/25, fixing Java Sound failures under the Forge loader\n3. **Control layout editing and runtime enhancements**: Dual-corner handle scaling, floating action bar, control group management panel with group duplication, sliding chains, joystick dead zone and forward lock, global control opacity\n4. **Control editor rewritten in Kotlin**: Fully aligned with the in-game menu visuals, fixed snapping and editing bar issues, added control group duplication\n5. **In-game right menu rework**: Top icon tabs now show category content directly; hotbar scale moved to the gestures page, control opacity to the left menu, and lock/hide controls to the debug page\n6. **Renderer version limits adjusted**: Dual-track version numbers for checking/display plus a 26.3 version catalog, with renderer compatibility corrected\n\n#### ⚡ Improvements\n\n1. **Frame rate unlocked**: The game frame rate is no longer locked to the screen refresh rate — the launcher votes for the device's maximum refresh rate at startup; with vsync off the swap interval is forced to 0 and the BufferQueue switches to async mode\n2. **Per-ABI JNA natives packaging**: De-zipped, switched to per-ABI natives directories pruned together with the APK architecture\n3. **FCLNumberSeekBar rewritten in Kotlin**: Track thickened into a capsule bar, value text background removed, and mismatched edge click hotspots/display positions fixed\n4. **Skin model detail**: Narrowed the waist seam gap\n5. **Download manager panel style refresh**\n\n#### 🐛 Bug Fixes\n\n1. Fixed SRV record resolution failing in game\n2. Fixed failing to fall back to Vulkan when launching 26.3+ with zink\n3. Fixed the split package conflict between the merged lwjgl-sdl artifact and Forge module resolution\n4. Fixed plugin uninstall exiting immediately due to the missing REQUEST_DELETE_PACKAGES permission\n5. Fixed a crash when switching mods kept as old versions after an update\n6. Fixed a possible crash when opening the launcher while the screen is off\n7. Fixed ltColor/dkColor alpha not following when the theme color has transparency\n8. Fixed input anomalies caused by ViewPager2 layout clearing EditText focus (FCLEditText now guards focus restoration)\n9. Fixed installed badges in the mod download list not refreshing in real time: the list is notified after scanning, download success callbacks trigger a re-check, and payload-based partial binding avoids animation replays\n\n#### 🔧 Other\n\n1. Updated translations\n\n","assets":[{"name":"FCL-release-1.3.3.2-all.apk","size":329267676,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.2/FCL-release-1.3.3.2-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.2-arm64-v8a.apk","size":171633253,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.2/FCL-release-1.3.3.2-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.2-armeabi-v7a.apk","size":164384314,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.2/FCL-release-1.3.3.2-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.2-x86.apk","size":157975390,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.2/FCL-release-1.3.3.2-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.2-x86_64.apk","size":177313643,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.2/FCL-release-1.3.3.2-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":384398387,"version":"1.3.3.1","title":"1.3.3.1","published_at":"2026-09-08T01:52:48Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **SDL3 集成**：集成 SDL3 输入/渲染，支持启动 Minecraft 26.3+；SDL 直通输入不再落入按键映射层\n2. **插件管理功能**：设置页新增「插件管理」，统一扫描管理渲染器/驱动/native 库插件，支持禁用持久化；新增 RendererPlugin V2 支持与插件环境变量配置；插件管理页置顶 MioLibPatcher 管理项，支持启用/禁用与功能开关（配置对话框改 v2 风格，Sable Rapier 默认开启）\n3. **皮肤 3D 预览重构**：改用 GLTF 模型 + 烘焙动画 + 体素化第二层\n4. **手柄输入对齐**：首次手柄输入弹窗选择模式；「禁用手柄映射」改为「手柄控制」总开关（持久化，关闭时禁用模式选择）\n5. **JSound 集成**：javax.sound → OpenAL 桥接集成到 lwjgl 共享源码，提升游戏音频兼容性\n6. **控件转换器**：改用纯 Kotlin 实现并支持导入 ZL2 布局\n7. **待机动画随机插播变体**：基础待机 8~15 秒后插播一个变体（避开上一次，播完回待机）\n8. **游戏内菜单卡片化**：左右菜单条目卡片化，抽公共 MenuUi 卡片背景与间距\n9. **下载页分类 tab 图标**：分类 tab 添加图标，并调整下载管理面板样式\n10. **FCLSpinner 重写为自定义 View**：修复滑动页面指示器错乱与 listener 伪回调；文字随主题色着色（浅底对话框场景可关闭）；展开时箭头旋转 180° 过渡，选项弹窗增加下落淡入/上滑淡出动画\n11. **语言切换新增**：日语、土耳其语、繁体中文（台湾）\n\n#### ⚡ 优化\n\n1. **Fabric 下载列表加载速度**：优化列表构建性能，缩短加载等待\n2. **控制数据序列化改手写 JSON**：全面消除 Gson 递归解析；控制器保存任务合并，避免序列化任务风暴\n3. **版本列表分类指示器**：改为 TabLayout 并自适应铺满\n4. **选择类弹窗统一**：统一为 ItemSelectionDialog 卡片式风格；渲染器选择对话框改用卡片 item，统一行高并新增来源显示（内置/插件名），无版本范围时显示未知\n5. **统一游戏日志分享逻辑**：附带 hs_err 崩溃日志并脱敏 accessToken\n6. **IO 线程池扩容**：Schedulers.io() 线程数 4 调整为 8\n7. **Turnip 驱动加载重写**：改为命名空间方案，提升驱动加载兼容性\n\n#### 🐛 修复\n\n1. 修复 SDL 函数经 dlsym 解析绕过 hook 导致的窗口复用不生效（解析出口改用代理）\n2. 修复 SDL_EGL_LIBRARY 对系统 EGL 错误拼接启动器 native 路径\n3. 修复导出 MCBBS 整合包因文件过多导致的 Out Of Memory\n4. 修复皮肤预览渲染线程退出时 Choreographer 死线程崩溃\n5. 修复联机对话框节点列表阻塞点击响应（改独立线程获取）\n6. 修复插件 v2 环境变量配置不持久的问题\n7. 修复崩溃页背景不随亮暗模式切换，暗色模式下背景与文字同色无法看清\n8. 修复 RendererEnvDialog 的 FCLSpinner 深色模式文字与对话框背景同色\n9. 修复检查更新时间戳比较精度不一致导致的首次误报（统一秒级精度）\n\n#### 🔧 其他\n\n1. 新增控制数据序列化回归测试\n2. 接入 checkstyle 静态检查与 PR 自动评论机器人（规则适配现状）\n3. 启用 core library desugaring，兼容 Java 9+ stdlib API\n4. 删除「强制渲染器在大核上运行」功能\n5. 更新 MioLibPatcher\n6. 更新多语言翻译\n\n### English\n\n#### ✨ New Features\n\n1. **SDL3 integration**: Integrated SDL3 input/rendering to support launching Minecraft 26.3+; SDL direct input no longer falls into the key-mapping layer\n2. **Plugin manager**: New \"Plugin management\" in settings, scanning and managing renderer/driver/native plugins in one place with persisted enable/disable state; RendererPlugin V2 and per-plugin environment variable support; MioLibPatcher pinned to the top of the plugin page with enable/disable and feature toggles (config dialog restyled to v2, Sable Rapier enabled by default)\n3. **Skin 3D preview rebuilt**: GLTF model + baked animations + voxelized overlay layer\n4. **Gamepad input alignment**: Mode-selection prompt on first gamepad input; \"disable gamepad mapping\" replaced by a \"gamepad control\" master switch (persisted, disables mode selection when off)\n5. **JSound integration**: javax.sound → OpenAL bridge integrated into the lwjgl shared sources for better in-game audio compatibility\n6. **Control converter**: Rewritten in pure Kotlin with support for importing ZL2 layouts\n7. **Idle animation variants**: A random variant is inserted after 8–15 seconds of base idle (avoiding the previous one, returning to idle when finished)\n8. **In-game menu cards**: Left/right menu items are now card-styled, with a shared MenuUi card background and spacing\n9. **Download page category tab icons**: Category tabs now show icons, and the download manager panel style is refreshed\n10. **FCLSpinner rewritten as a custom view**: Fixed sliding indicator glitches and fake listener callbacks; text now tints with the theme (can be disabled on light-background dialogs); 180° arrow rotation when expanded, plus drop/fade window transition animations for the option popup\n11. **New languages**: Japanese, Turkish and Traditional Chinese (Taiwan)\n\n#### ⚡ Improvements\n\n1. **Fabric download list speed**: Optimized list building for shorter waits\n2. **Hand-written JSON for control data serialization**: Gson recursive parsing fully removed; controller save tasks merged to avoid serialization task storms\n3. **Version list category indicator**: Migrated to TabLayout, filling the width adaptively\n4. **Unified selection dialogs**: ItemSelectionDialog card-based style; the renderer selection dialog now uses card items with unified row height and a source column (built-in/plugin name), showing \"unknown\" when no version range exists\n5. **Unified game log sharing**: hs_err crash logs are attached and access tokens are sanitized\n6. **IO thread pool expanded**: Schedulers.io() thread count raised from 4 to 8\n7. **Turnip driver loading rewritten**: Namespace-based scheme for better driver loading compatibility\n\n#### 🐛 Bug Fixes\n\n1. Fixed SDL window reuse not taking effect because dlsym-resolved functions bypassed hooks (proxy at the resolution exit)\n2. Fixed SDL_EGL_LIBRARY wrongly appending the launcher native path to the system EGL\n3. Fixed Out Of Memory when exporting MCBBS modpacks with too many files\n4. Fixed a Choreographer dead-thread crash when the skin preview render thread exits\n5. Fixed the multiplayer dialog node list blocking click response (now fetched on a dedicated thread)\n6. Fixed plugin v2 environment variable configuration not persisting\n7. Fixed the crash page background not following light/dark mode, leaving text unre","assets":[{"name":"FCL-release-1.3.3.1-all.apk","size":329159607,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.1/FCL-release-1.3.3.1-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.1-arm64-v8a.apk","size":172422167,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.1/FCL-release-1.3.3.1-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.1-armeabi-v7a.apk","size":165169496,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.1/FCL-release-1.3.3.1-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.1-x86.apk","size":158750312,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.1/FCL-release-1.3.3.1-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.1-x86_64.apk","size":178092251,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.1/FCL-release-1.3.3.1-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":381648623,"version":"1.3.3.0","title":"1.3.3.0","published_at":"2026-09-03T00:23:39Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **全局下载管理与前置依赖一键下载**：下载面板统一管理下载任务，标题行实时显示下载速度；下载模组时自动识别前置依赖并支持一键下载\n2. **模组远程查询磁盘缓存**：指纹/详情/版本列表/分类结果落盘缓存，存储改用 SQLite，消除全量加载与写放大，大幅减少重复网络请求\n3. **整合包安装实时进度**：解压与解析阶段上报实时进度，安装过程不再是无进展的黑盒\n4. **任务等待过程可见**：版本列表刷新任务显示名称，安装加载器期间的联网等待不再表现为静默卡住\n5. **下载面板实时速度**：标题行显示当前下载速度\n\n#### ⚡ 优化\n\n1. **下载稳定性**：重试间增加指数退避等待，连接超时从 8 秒调整为 10 秒\n2. **懒加载控制布局**：控制器布局按键按需异步加载，优化加载速度\n3. **MenuView 重写为 Kotlin**：优化触摸打开抽屉的判定\n4. **模组查询细节优化**：CurseForge 大文件指纹改为流式计算避免 OOM（HMCL#6631）；Modrinth 指纹未命中（404）写入负缓存，消除重复白查与错误日志\n\n#### 🐛 修复\n\n1. 修复离线皮肤对话框取消时覆盖旧皮肤文件，现在点确认时才落位 SKIN_DIR\n2. 修复取色拖动时部分设备卡死（主题刷新消息合并，避免高频重绘风暴）\n3. 修复 NeoForge 版本列表对缺失 versions 字段未判空导致的崩溃\n4. 修复控制器编辑模式视图组初始化时序问题（setup 阶段自动初始化，不再依赖菜单列表绑定兜底）\n5. 修复任务对话框日志区在写日志的任务结束后不收起\n6. 修复 Kotlin 2.4.10 产物 dex 时 metadata 解析崩溃（buildscript classpath 覆盖 R8 9.4.17）\n7. 修复前置解析的 Stream.toList 在低版本设备的兼容性问题\n\n#### 🔧 其他\n\n1. 模组数据类 record 化并迁移 kotlinx.serialization，根治缺失字段 NPE\n2. 文件选择回调迁移 SelectedFile，统一 content 与本地路径处理\n3. 更新 MioLibPatcher\n4. 工具链升级：Kotlin Gradle 插件 2.4.10、Gradle 8.14.4\n5. 更新多语言翻译（日语、繁中 HK、土耳其语等，来自 Weblate）\n\n### English\n\n#### ✨ New Features\n\n1. **Global download manager & one-tap prerequisite download**: The download panel now manages download tasks centrally with real-time speed in the title row; mod prerequisite dependencies are detected automatically and can be downloaded with one tap\n2. **Disk cache for remote mod queries**: Fingerprints/details/version lists/categories are cached on disk, now backed by SQLite, eliminating full in-memory loads and write amplification and greatly reducing repeated network requests\n3. **Real-time modpack install progress**: The unzip and parse stages now report live progress instead of an unresponsive wait\n4. **Visible task waits**: Version list refresh tasks display their names, so the network wait while installing loaders no longer looks like a silent hang\n5. **Live download speed**: The download panel title row shows the current download speed\n\n#### ⚡ Improvements\n\n1. **Download stability**: Exponential backoff waits between retries; connection timeout raised from 8 to 10 seconds\n2. **Lazy controller layout loading**: Controller layout keys load asynchronously on demand, speeding up loading\n3. **MenuView rewritten in Kotlin**: Improved touch-open drawer detection\n4. **Mod query refinements**: CurseForge fingerprints of large files are now computed in a streaming fashion to avoid OOM (HMCL#6631); Modrinth fingerprint misses (404) are negatively cached, eliminating repeated futile lookups and error logs\n\n#### 🐛 Bug Fixes\n\n1. Fixed the offline skin dialog overwriting the old skin file on cancel; the skin file is now only written on confirm\n2. Fixed freezing on some devices while dragging the theme color picker (theme refresh messages are merged to avoid high-frequency redraw storms)\n3. Fixed a crash from NeoForge version lists missing the versions field\n4. Fixed controller edit-mode view group initialization timing (auto-initialized during setup instead of relying on the menu-list binding fallback)\n5. Fixed the task dialog log area not collapsing after the logging task finishes\n6. Fixed a dex metadata parsing crash for Kotlin 2.4.10 output (buildscript classpath now pins R8 9.4.17)\n7. Fixed a compatibility issue with Stream.toList in prerequisite parsing on older devices\n\n#### 🔧 Other\n\n1. Mod data classes record-ized and migrated to kotlinx.serialization, eliminating missing-field NPEs at the root\n2. File-selection callbacks migrated to SelectedFile, unifying content URI and local path handling\n3. Updated MioLibPatcher\n4. Toolchain upgrades: Kotlin Gradle plugin 2.4.10, Gradle 8.14.4\n5. Updated translations (Japanese, Traditional Chinese HK, Turkish, etc., via Weblate)\n\n","assets":[{"name":"FCL-release-1.3.3.0-all.apk","size":326153712,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.0/FCL-release-1.3.3.0-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.0-arm64-v8a.apk","size":172302845,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.0/FCL-release-1.3.3.0-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.0-armeabi-v7a.apk","size":164112842,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.0/FCL-release-1.3.3.0-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.0-x86.apk","size":157363622,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.0/FCL-release-1.3.3.0-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.0-x86_64.apk","size":176491063,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.0/FCL-release-1.3.3.0-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":378840086,"version":"1.3.2.9","title":"1.3.2.9","published_at":"2026-08-29T01:35:38Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **微软登录实时显示认证进度**：登录过程中实时显示 Xbox 认证、档案获取等各阶段进度，不再只有转圈\n2. **语言切换立即生效**：切换语言后重建 Activity 直接应用新语言，移除\"重启后生效\"提示\n3. **设置项分组显示**：启动器设置页的主题/背景/游戏内等设置、版本设置页的渲染相关项分别连成组并带次要主题色分隔线，关于页链接行同样合并分组\n4. **深色模式主要主题色**：新增深色模式下的主色调，设置页操作按钮改为图标按钮\n5. **运行时安装详细进度**：运行时安装页逐条目显示\"正在复制 xxx\"等文件级进度\n6. **未选账户启动引导**：启动游戏未选中账户时改为提示并跳转账户管理页\n\n#### ⚡ 优化\n\n1. **游戏内菜单重构**：重构为 RecyclerView 多级菜单\n2. **安装器进程通信改文件轮询**：通过退出码文件与日志增量读取通信，日志实时显示；修复多次创建安装进程时的卡死与误杀，进程超时后自动重启 :jvm 重跑同一命令\n3. **内置浏览器缓存策略**：改为默认缓存策略，退出时不再清除缓存\n\n#### 🐛 修复\n\n1. 修复切换游戏目录后模组下载位置与推荐版本未跟随新目录\n2. 修复反复安装后 View 树泄漏（TaskDialog 任务监听引用链与临时页动画结束回调不执行），消除累积卡顿\n3. 修复版本设置页输入框失焦（列表误重建），FCLEditText 迁移 Kotlin 并防御部分定制 ROM 焦点前进崩溃\n4. 修复布局编辑关闭后按键位置偏移（千分比换算向下截断导致相邻按键贴住）\n5. 修复设置页 Spinner 绑定伪回调误触发选中逻辑导致主题模式切换卡顿\n6. 修复整合包导出文件选择页滚动时监听器与双向绑定累积导致的 OOM\n7. 修复外部应用调用启动器安装整合包时崩溃\n8. 修复游标抓取状态回调的竞态与空指针隐患\n9. 修复游戏启动时未应用 FPS/内存显示与持续性能模式开关\n10. 修复版本设置页控制器未初始化时显示默认名称、FCLNumberSeekBar 设置进度未同步保存\n11. 调整下载页搜索框输入法全屏行为\n\n#### 🔧 其他\n\n1. 移除自定义 UUID 功能，游戏启动始终使用账户 UUID\n2. 移除\"清除缓存\"设置项及相关字符串资源，创建账户对话框移除 TabLayout 切换\n3. 禁用主界面 ViewPager2 鼠标滚轮翻页\n4. 下载页游戏目录/版本与已安装标记改为动态获取，移除已无消费的快照链\n5. 显式声明代码直接使用的传递依赖（core-ktx/lifecycle/recyclerview/coroutines），补全 README 相关项目与依赖清单\n6. 清理模块合并后的死代码与重复启动逻辑\n\n### English\n\n#### ✨ New Features\n\n1. **Real-time Microsoft login progress**: Each authentication stage (Xbox auth, profile fetch, etc.) is now shown live during login instead of a bare spinner\n2. **Instant language switching**: Activities are recreated to apply the new language immediately; the \"restart to apply\" hint is removed\n3. **Grouped settings items**: Related settings are grouped with secondary-theme-color dividers — theme/background/in-game groups on the launcher settings page, renderer-related items on the version settings page, and merged link groups on the about page\n4. **Dark-mode primary theme color**: Added a primary color for dark mode; settings page action buttons are now icon buttons\n5. **Detailed runtime installation progress**: The runtime installation page shows per-file progress such as which file is being copied\n6. **No-account launch guidance**: Starting a game without a selected account now shows a prompt and jumps to the account management page\n\n#### ⚡ Improvements\n\n1. **In-game menu refactored**: Rebuilt as a RecyclerView multi-level menu\n2. **Installer process communication via file polling**: Communicates through an exit-code file with incremental log reading for real-time log display; fixed hangs and wrong-process kills when creating installer processes repeatedly, with automatic :jvm restart and command retry on timeout\n3. **Built-in browser caching**: Now uses the default caching policy and no longer clears the cache on exit\n\n#### 🐛 Bug Fixes\n\n1. Fixed mod download location and recommended version not following the newly selected game directory\n2. Fixed view tree leaks after repeated installations (TaskDialog task-listener chain and temp-page animation end callbacks never running), eliminating accumulated jank\n3. Fixed version settings page input focus loss (spurious list rebuild); FCLEditText migrated to Kotlin with a guard against the focus-advance crash on some custom ROMs\n4. Fixed key position offset after closing the layout editor (truncating the permille conversion made adjacent keys stick together)\n5. Fixed theme mode switching jank caused by settings-page spinner pseudo-callbacks falsely triggering selection logic\n6. Fixed an OOM in the modpack export file picker caused by listeners and bidirectional bindings accumulating while scrolling\n7. Fixed a crash when external apps invoke the launcher to install a modpack\n8. Fixed a race condition and NPE risk in cursor grab state callbacks\n9. Fixed FPS/memory display and sustained performance mode toggles not being applied at game launch\n10. Fixed default controller name display when not initialized on the version settings page, and FCLNumberSeekBar not syncing/saving its progress\n11. Adjusted the download page search box IME fullscreen behavior\n\n#### 🔧 Other\n\n1. Removed the custom UUID feature; game launch always uses the account UUID\n2. Removed the \"clear cache\" setting and its string resources; removed the TabLayout switch from the create-account dialog\n3. Disabled ViewPager2 mouse-wheel page switching on the main UI\n4. Download page game directory/version and installed markers are now fetched dynamically; the unused snapshot chain was removed\n5. Explicitly declared directly-used transitive dependencies (core-ktx/lifecycle/recyclerview/coroutines); completed the README project and dependency list\n6. Cleaned up dead code and duplicate launch logic left over from the module merge\n\n","assets":[{"name":"FCL-release-1.3.2.9-all.apk","size":326080688,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.2.9/FCL-release-1.3.2.9-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.2.9-arm64-v8a.apk","size":172229821,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.2.9/FCL-release-1.3.2.9-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.2.9-armeabi-v7a.apk","size":164039814,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.2.9/FCL-release-1.3.2.9-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.2.9-x86.apk","size":157290594,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.2.9/FCL-release-1.3.2.9-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.2.9-x86_64.apk","size":176418035,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.2.9/FCL-release-1.3.2.9-x86_64.apk","content_type":"application/vnd.android.package-archive"}]}],"agent_setup":"把这段文字发给你的AI助手:\nHelp me to configure my project to fetch GitHub release information from the mirror at https://fcl.switch.api.072211.xyz. Follow the API documentation at https://fcl.switch.api.072211.xyz/docs.\n\nAvailable endpoints:\n  GET https://fcl.switch.api.072211.xyz/api/releases — list releases (?latest=true for latest only)\n  GET https://fcl.switch.api.072211.xyz/api/releases/latest — latest release (legacy)\n  GET https://fcl.switch.api.072211.xyz/api/releases/{tag} — get specific release\n  GET https://fcl.switch.api.072211.xyz/api/releases/{tag}/{asset} — download asset\n\nQuery parameters: owner, repo, versions (1-20, default 5), latest (true/false), prerelease (true/false), cache_ttl (60-86400, default 600)"}