{"status":200,"now_time":"2026-10-11T08:40:15.815Z","owner":"FCL-Team","repo":"FoldCraftLauncher","versions":5,"prerelease":false,"cache":{"hit":true,"outdated":false,"cached_at":"2026-10-11T08:29:02.895Z"},"releases":[{"id":408972659,"version":"1.3.3.9","title":"1.3.3.9","published_at":"2026-10-10T13:34:30Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **「同时控制视角」开关 (#1922)**：右菜单手势分类新增开关，默认关闭。触控板拖动与按键的指针跟随是两条独立的转视角路径，此前会同时下发增量、互相干扰；关闭时由 FCLInput 记录视角占用者，先开始拖动的一方独占，另一方的增量在占用期间被直接丢弃（锚点照常推进，不把这段位移累积到释放后一次性下发），抬起即释放——按键侧在抬起/取消与 cancelAllEvent 两处释放，触控板侧在 UP/CANCEL 释放；切换开关时清空占用者，避免上一模式遗留的占用阻塞另一来源；开关持久化到游戏菜单设置，旧配置缺失时默认关闭\n\n#### 🐛 修复\n\n1. **26.3 下打开文件夹/链接失效 (#1921)**：26.3 的游戏改用 SDL_OpenURL（Blaze3D.openUri）打开链接与文件夹，而 SDLActivity.openURL 原实现自建 ACTION_VIEW Intent 并带 NO_HISTORY/MULTIPLE_TASK/NEW_DOCUMENT 标志，file: 路径因缺少权限与对应 Activity 而打不开；改为转交 FCLBridge.openLink，与启动器内其它打开入口共用同一套分发——file: 路径由启动器弹文件浏览器，其余交给系统\n2. **「按住」交互被瞬间打断 (#1923)**：机械动力等模组的数值设置界面需要按住右键拖动、松开右键才确认，而打开该界面本身会切换光标模式，GameMenu 在模式切换时无条件补发仍被视为按下的鼠标键释放，右键在界面刚打开的一瞬间就被松掉；模式切换并不等于事件来源丢失——手指或鼠标键仍按住时 UP 会照常到达，抢先补发反而制造了假释放；新增 FCLInput.onCursorModeChanged 仅作废悬停坐标快照（避免切换点的坐标跳变派生出整段位移），不再补发释放；切后台、窗口失焦这些真正丢失来源的场景仍走 resetExternalMouseState\n3. **按住期间切换光标模式导致长按手势合成的鼠标键卡住**：触控板长按超过阈值后会按下按滑动方向合成的左/右键，原实现只在捕获模式分支的 UP/CANCEL 里释放；按住期间切换光标模式会让抬手事件落到另一模式的分支，合成的按键便一直留在按下状态；改为在分流之前统一撤销未触发的长按并释放合成的鼠标键\n\n### English\n\n#### ✨ New Features\n\n1. **\"Simultaneous View Control\" toggle (#1922)**: A new toggle in the right menu's gesture section, off by default. Touch-pad dragging and key-based pointer follow are two independent look paths that used to send deltas at the same time and interfere with each other; with the toggle off, FCLInput tracks a look owner, the side that starts dragging first owns control and the other side's deltas are dropped while it is held (the anchor still advances, so the displacement is not accumulated and flushed on release), and it is released on lift — the key side releases in both the up/cancel path and cancelAllEvent, the touch-pad side on UP/CANCEL. Toggling the switch clears the owner so a leftover from the previous mode cannot block the other source, and the setting persists in the in-game menu settings, defaulting to off when absent from an older config\n\n#### 🐛 Bug Fixes\n\n1. **Opening folders/links doing nothing on 26.3 (#1921)**: On 26.3 the game opens links and folders through SDL_OpenURL (Blaze3D.openUri), while SDLActivity.openURL built its own ACTION_VIEW intent with NO_HISTORY/MULTIPLE_TASK/NEW_DOCUMENT flags, so file: paths failed for lack of permission and a matching activity; it now forwards to FCLBridge.openLink, sharing one dispatch path with the launcher's other open entries — the launcher shows the file browser for file: paths and delegates the rest to the system\n2. **\"Hold\" interactions cut short (#1923)**: Numeric settings screens in mods such as Create require holding the right button while dragging and confirm when it is released, yet opening such a screen itself switches the cursor mode, and GameMenu unconditionally resent releases for buttons still considered held — dropping the right button the moment the screen opened; a mode switch is not a lost event source (the up event still arrives while a finger or mouse button is held), so pre-emptively resending created a false release; FCLInput.onCursorModeChanged now only invalidates the hover-coordinate snapshot (so the coordinate jump at the switch point cannot derive a whole segment of displacement) without resending releases, while genuinely-lost-source cases (backgrounding, window focus loss) still go through resetExternalMouseState\n3. **Mouse buttons synthesized by the long-press gesture getting stuck when the cursor mode changed mid-hold**: After the touch pad's long press exceeds its threshold it holds a left/right button synthesized from the slide direction, and the old code released it only in the capture branch's UP/CANCEL; switching cursor mode mid-hold routed the up event to the other branch, leaving the synthesized button down forever; the untriggered long press is now cancelled and the synthesized buttons released before the branch split\n\n","assets":[{"name":"FCL-release-1.3.3.9-all.apk","size":330291439,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.9/FCL-release-1.3.3.9-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.9-arm64-v8a.apk","size":172616992,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.9/FCL-release-1.3.3.9-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.9-armeabi-v7a.apk","size":165365717,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.9/FCL-release-1.3.3.9-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.9-x86.apk","size":158958617,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.9/FCL-release-1.3.3.9-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.9-x86_64.apk","size":178296584,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.9/FCL-release-1.3.3.9-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":408519200,"version":"1.3.3.8","title":"1.3.3.8","published_at":"2026-10-10T02:04:16Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **陀螺仪重构与触控加速 (#1876)**：陀螺仪由绝对坐标补发改相对增量流，仅在游戏捕获指针（转视角）时生效，退出捕获态不再补发绝对坐标，消除关闭陀螺仪时视角被拽回；角速度经滑动窗口平均抑制手抖、低于死区的微小移动视为噪声忽略，轴映射随屏幕旋转自适应；灵敏度与反转拆分为横向/纵向独立设置；触摸板新增「滑动加速」与「距离加速」开关，分别按滑动速度与本次按住的累计距离放大转视角增量；触摸坐标与光标/指针位置全程 float 透传，取整交给 native 侧，消除慢速移动时小步长增量被截断导致的转视角顿挫\n2. **外置键鼠链路健壮性重构 (#1878)**：指针捕获增加看门狗，静默丢失自动重试，持续失败降级为悬停差值转视角，未捕获鼠标的 touch 点击补投按键；实体鼠标模式仅游戏内维持捕获、菜单态用系统指针，切换即时生效；鼠标键状态机去重，根治右键/中键经系统转换与原始事件双触发的问题；右菜单鼠标页新增指针捕获切换键与输入法切换键设置，支持主键+修饰键组合（默认 F8 与 Shift+Enter），冲突组合拒绝绑定；快捷键匹配后按下与抬起一律不再下发（此前只吞抬起会让游戏侧持续按住），按键监听态在菜单收起、菜单视图隐藏与页面暂停三处统一放弃\n3. **游戏会话前台服务保活**：游戏界面创建时启动 specialUse 类型前台服务（通知可点击返回游戏会话），销毁时停止；游戏运行期间进程不再是缓存级优先级，降低切后台后因内存占用被系统回收的概率\n4. **强制分辨率迁入游戏内菜单**：由版本设置迁移至右菜单调试分类，默认 1920×1080，开关即时生效，宽高可经设置按钮实时修改；启动参数宽度补上 cursorOffset，与 surface 回调、刷新尺寸三处口径一致；屏幕→游戏坐标换算收敛进 FCLBridge，新增 pushEventLookDelta 统一四处视角增量发送点，强制分辨率下统一除拉伸系数，修复光标偏移与视角增量偏差；移除版本设置与 SharedPreferences 旧入口\n5. **接入 Android 12+ 系统游戏模式**：manifest 声明 android.game_mode_config，并在 res/xml-v33 声明拒绝系统降分辨率与帧率覆写干预（API 33 属性），性能/省电策略可对应用单独配置\n6. **文件浏览器常规文件管理 (#1875)**：新建文件夹/文件、重命名、删除（二次确认）、复制/剪切/粘贴（会话级剪贴板，重名自动追加序号）；排序方式（名称/大小/修改时间）与显示隐藏文件开关经 SharedPreferences 持久化；长按条目弹出详情/重命名/删除/复制/剪切/分享菜单；浏览模式与多选模式支持全选、批量复制/剪切/删除；文件操作走 IO 线程，目录大小后台计算，失败提示并记录日志；单选文件选择模式不提供批量入口（批量结果会违反单选契约）\n7. **Vulkan 兼容性检测禁用开关 (#1911)**：版本设置页渲染分组新增开关并持久化到版本设置，开启后启动 26.2+ 版本跳过 Vulkan 兼容性检测及相关提示\n8. **glfwGetWindowPos 补全 (#1915)**：补上 IntBuffer 重载并对齐官方签名，数组版由固定返回 0 改为返回真实窗口坐标\n\n#### ⚡ 优化\n\n1. **Xms 与 Xmx 解耦**：Xms 取 min(512MB, Xmx)，堆按需增长；Xms=Xmx 会让 G1 按峰值全量提交物理内存且不收缩堆，白占内存易触发系统杀进程与温控\n2. **陀螺仪旋转缓存化**：屏幕旋转改由 DisplayListener 推送刷新缓存，不再在每个传感器事件里查询显示服务；时间系数更名 TIME_SCALE 并补充标定注释\n\n#### 🐛 修复\n\n1. **26.3 下快捷输入与「发送文本」无效 (#1909)**：SDL 渲染路径不注册 GLFW 字符回调，字符改经 SDL 文本输入通道提交，新增 GameTextSender 收敛文本提交入口（快捷输入与按钮发送文本共用）；聊天栏打开后轮询等待 native 文本输入通道激活再提交，超时丢弃并记日志\n2. **按住拖动视角时开关游戏界面视角突跳**：按住期间进出捕获态/菜单态会切换锚点含义，跨模式继续拖动时整段位移被一次性下发；TouchPad 增加光标模式快照，MOVE 检测到模式变化即从当前光标重新锚定并丢弃本帧\n3. **部分设备 60fps 锁定**：窗口级 preferredDisplayModeId 硬请求同分辨率下最高刷新率档（只比同分辨率，避免选中低分辨率高刷档）；surface 投票目标改由 supportedModes 计算（不再硬编码 120），兼容标志改 CHANGE_FRAME_RATE_ALWAYS，非无缝切档机型也生效；DisplayListener 监听系统中途降档（智能刷新率/省电）自动重发请求，1s 冷却防 ROM 回调风暴；右菜单调试分类新增「请求最高刷新率」开关（默认开），关闭即清除两类请求回落系统自适应\n4. **按键与字符成对补发误伤非 Cleanroom 实例**：成对补发本是 Cleanroom 的 lwjglx 兼容层所需，此前对所有实例生效；改为仅 Cleanroom 生效，标志随启动参数落在 FCLBridge 上（launch 线程无 Looper，不能在启动线程触碰 CallbackBridge）\n5. **模组列表搜索/筛选后远程信息查询丢失 (#1912)**：连续搜索时每轮刷新会取消在途查询，而条目 view 可能被原位复用（既不重绑定也不触发 attach），最后一轮刷新后查询不再发起；列表变化后 post 到布局完成主动扫描可见条目补发查询；同时修复 view 复用时上一个条目的在途查询把远程信息写错条目\n6. **冷启动点击模组收藏无法进入详情 (#1910)**：DownloadPage 新建实例的 pageId 默认值恰为模组模式，但 switchType 从未执行时仓库与回调均为 null，原守卫仅比较 pageId 会跳过初始化，构造详情页的空指针被 Task 框架吞掉表现为静默无跳转；改用 typeInitialized 标志与 isTypeReady 判断\n7. **账户/版本页标题动画重复触发**：标题动画原由点击回调与 pageSelectedListener 两处触发，连点会连续播放多次；收拢到 pageSelectedListener 单点调用\n8. **手柄输入模式对话框小屏无法关闭 (#1894)**：内容改为 ScrollView 包裹、确认按钮固定底部，小屏横屏不再被裁掉；支持手柄操作对话框（上下选择模式，A/Start 确认）\n9. **整合包导出页**：作者改用账户游戏名、文件名自动预填；描述框由固定 200dp 改为自适应高度（minHeight 100dp）；单行输入改完成动作，并区分误清焦点与正常失焦，修复从文件选择器返回后键盘自动弹出\n\n### English\n\n#### ✨ New Features\n\n1. **Gyroscope rework & touch acceleration (#1876)**: The gyroscope switched from absolute-coordinate resend to a relative delta stream — it only acts while the game has captured the pointer (look mode), and no absolute coordinates are resent on exit, so the view is no longer dragged back; angular velocity passes through a moving-average window to suppress hand tremor and sub-dead-zone movements are treated as noise, with the axis mapping following screen rotation; sensitivity and inversion are now separate for the horizontal/vertical axes; the touch pad gained \"slide acceleration\" and \"distance acceleration\" toggles that scale the look delta by slide speed and by the accumulated distance of the current hold; touch coordinates and cursor/pointer positions are now floats end-to-end (rounding is left to the native side), removing the stutter caused by truncated increments during slow movements\n2. **External mouse/keyboard robustness rework (#1878)**: Pointer capture gained a watchdog that retries silent loss and degrades to hover-delta look when capture keeps failing, re-sending touch clicks as button presses while uncaptured; physical-mouse mode keeps capture only in-game and hands the system pointer back in menus, switching immediately; a mouse-button state machine deduplicates right/middle button events that used to fire twice (system-translated and raw); the mouse page of the right menu gained customizable shortcut keys for the pointer-capture toggle and the IME toggle with modifier-key combinations (defaults F8 and Shift+Enter), rejecting conflicting combinations; matched shortcuts now swallow both key-down and key-up (previously only key-up was swallowed, leaving the game stuck pressing), and the key-listening state is abandoned in all three cases — menu collapsed, menu view hidden, page paused\n3. **Game session foreground service**: A specialUse foreground service (its notification taps back into the game session) starts with the game activity an","assets":[{"name":"FCL-release-1.3.3.8-all.apk","size":330289819,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.8/FCL-release-1.3.3.8-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.8-arm64-v8a.apk","size":172615368,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.8/FCL-release-1.3.3.8-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.8-armeabi-v7a.apk","size":165364097,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.8/FCL-release-1.3.3.8-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.8-x86.apk","size":158956993,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.8/FCL-release-1.3.3.8-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.8-x86_64.apk","size":178294960,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.8/FCL-release-1.3.3.8-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":403338074,"version":"1.3.3.7","title":"1.3.3.7","published_at":"2026-10-05T03:21:14Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **Vulkan 设备检测与驱动能力补齐 (#1866)**：新增 native 检测模块，dlopen 系统 libvulkan 或经 liblinkerhook 加载 Turnip 驱动，枚举物理设备读取 apiVersion/扩展/特性，并移植 MC 版本与 Vulkan 依赖关系表；启动 26.2+ 版本前自动校验（缓存命中直接判定，无缓存时询问检测），不满足时列出缺失项警告，确认后仍可继续启动；版本设置页新增「检测 Vulkan」入口与结果对话框，展示总体结论、版本区间支持情况与逐项扩展/特性依赖标注；检测结果经 DataStore 缓存，驱动状态或检测规则变更时自动失效；vkshim 包装系统 Vulkan 加载器，设备缺失 VK_EXT_vertex_attribute_divisor 时用 KHR/核心功能合成，并补齐 fillModeNonSolid（线框/点填充）降级模拟；同时修复 Turnip 驱动下检测失败的问题\n2. **版本深度删除 (#1873)**：版本列表删除弹窗新增深度删除，可一并清理仅被该版本引用的库与资源文件（libraries、资产索引与对象、虚拟资产目录）；删除前对规范路径做目录内断言，携带 `..` 或指向共享目录之外的路径一律跳过并记日志；删除与深度删除过程实时显示进度日志，完成后的统计与失败原因改由对话框展示，不再一闪而过的 Toast\n3. **模组列表排序 (#1892)**：支持名称/文件名/大小/修改时间四个维度，重复选择同一维度切换升降序；排序选择经 DataStore 全局持久化，重启后保持；排序模式下扫描完成后在后台排序再一次性显示，大小/修改时间排序先批量读取文件属性再比较，避免比较器内反复 IO\n4. **数值调节条加减按钮**：FCLNumberSeekBar 左右新增主题色圆底加减按钮，点按步进一个显示单位、长按连发、滑出热区取消，触控热区以轨道端点为界，与数值文本点按/拖动互不干扰\n5. **皮肤对话框预览同步开关状态 (#1884)**：离线/微软账户皮肤对话框的 3D 预览应用「3D 皮肤层」与「身体腿部分离」开关状态，与主界面显示效果保持一致\n\n#### ⚡ 优化\n\n1. **模组扫描缓存与增量刷新**：ModManager 按版本缓存共享实例并增加目录快照校验，同一版本避免重复全量扫描；模组下载完成后事件通知管理页增量刷新，无需重新进入页面\n2. **已安装标记跨源匹配**：模组下载页「已安装」标记支持跨源匹配，聚合反查同时命中 Modrinth 与 CurseForge，任一来源已安装即正确标注\n\n#### 🐛 修复\n\n1. **Forge/NeoForge/OptiFine 安装卡死且无法取消 (#1903)**：安装器进程运行器协程化，轮询间隔检查任务取消，取消即杀 :jvm 进程并中止任务，修复安装卡在处理器阶段时取消按钮无效；退出码/启动标记文件名带会话 ID，取消后立即重试不再读到陈旧退出码；超时判定引入 CPU 进度检测（/proc utime+stime），无进展 3 分钟判挂起，procfs 不可用时退化为日志空闲 10 分钟，单次尝试绝对时限 15 分钟；处理器消息显示步骤 i/N、jar 名、JRE 版本与已运行时长，静默处理器阶段任务消息持续走动，不再表现为假死\n2. **控制器初始化竞态**：修复控制器初始化竞态导致的保存报错与用户布局丢失\n3. **oshi 系统信息初始化崩溃**：oshi 5.x 的 initProcessorCounts 返回 List，误包装成 Pair 导致构造遍历时抛 IncompatibleClassChangeError\n4. **Quilt 安装崩溃**：Quilt meta JSON 缺少 intermediary 字段时判空跳过，不再空指针崩溃\n5. **SDL 消息框**：修复 message 误设为标题导致错误信息显示不全\n\n### English\n\n#### ✨ New Features\n\n1. **Vulkan device detection & driver capability shimming (#1866)**: A new native detection module dlopens the system libvulkan or loads the Turnip driver via liblinkerhook, enumerates physical devices for apiVersion/extensions/features, with a ported MC-version-to-Vulkan dependency table; Vulkan support is now verified automatically before launching 26.2+ versions (cached results are judged directly, otherwise detection is offered), and when requirements are unmet a warning lists the missing items while still allowing launch; version settings gained a \"Detect Vulkan\" entry with a result dialog showing the overall verdict, per-version-range support and per-item extension/feature annotations; results are cached in DataStore and invalidated automatically when the driver or rules change; vkshim wraps the system Vulkan loader, synthesizing VK_EXT_vertex_attribute_divisor from KHR/core equivalents when missing, plus a fillModeNonSolid (wire/point fill) fallback simulation; the detection failure under Turnip drivers is also fixed\n2. **Version deep deletion (#1873)**: The version list delete dialog gained deep deletion, which also cleans up libraries and assets referenced only by that version (libraries, asset indexes/objects, virtual assets); every path is asserted to stay inside its shared directory after canonicalization — paths carrying `..` or pointing outside are skipped and logged; deletion and deep deletion now show real-time progress logs, with final stats and failure reasons presented in a dialog instead of fleeting toasts\n3. **Mod list sorting (#1892)**: Four dimensions — name/filename/size/modification time — with ascending/descending toggled by re-selecting the same dimension; the choice is persisted globally via DataStore; in sorting mode the list is sorted in the background after scanning and shown in one pass, and size/mtime sorting batch-reads file attributes before comparing to avoid repeated IO inside comparators\n4. **Seek bar stepper buttons**: FCLNumberSeekBar gained themed round +/- buttons on both sides — tap steps one display unit, long-press repeats, sliding out cancels; the touch targets are bounded by the track endpoints and never overlap the value text tap/drag area\n5. **Skin dialog preview honors switches (#1884)**: The 3D preview in the offline/Microsoft account skin dialogs now applies the \"3D skin layer\" and \"body-leg separation\" switch states, matching the main interface\n\n#### ⚡ Improvements\n\n1. **Mod scan caching & incremental refresh**: ModManager caches a shared instance per version with a directory-snapshot check, avoiding repeated full scans of the same version; after a mod download completes, an event notifies the manage page to refresh incrementally\n2. **Cross-source \"installed\" badge**: The \"installed\" badge on the mod download page now matches across sources — the aggregate reverse lookup hits both Modrinth and CurseForge, so an install from either source is labeled correctly\n\n#### 🐛 Bug Fixes\n\n1. **Forge/NeoForge/OptiFine installation freezing and being impossible to cancel (#1903)**: The installer process runner is now coroutine-based — each poll checks the task's cancellation supplier, killing the :jvm process and aborting the task on cancel, fixing the dead cancel button whi","assets":[{"name":"FCL-release-1.3.3.7-all.apk","size":330048299,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.7/FCL-release-1.3.3.7-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.7-arm64-v8a.apk","size":172374208,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.7/FCL-release-1.3.3.7-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.7-armeabi-v7a.apk","size":165122945,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.7/FCL-release-1.3.3.7-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.7-x86.apk","size":158715845,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.7/FCL-release-1.3.3.7-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.7-x86_64.apk","size":178053804,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.7/FCL-release-1.3.3.7-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":399650229,"version":"1.3.3.6","title":"1.3.3.6","published_at":"2026-09-30T01:42:04Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **整合包导出**：新增 Modrinth（.mrpack）与 CurseForge 整合包导出，复用导出向导界面，支持覆盖文件筛选、禁用/旧版模组自动跳过、可选打包配置与模组覆盖文件；CurseForge 导出经批量指纹反查服务端文件 ID (#1859)\n2. **全新引导组件**：自研引导遮罩替换停更的 TapTargetView，覆盖账户、启动与各菜单入口，遮罩带位置过渡动画；引导文案同步补充长按版本卡片快速切换、联机等说明\n3. **Fabric/Quilt 安装自动选择 API**：安装新游戏选择 Fabric/Quilt 加载器时自动勾选对应的 Fabric API / QSL\n4. **\"更新内容\"入口**：启动器设置新增入口，可重复查看当前版本的更新说明 (#1856)；检查更新与更新内容拉取改同步 CAS 防抖，修复快速连点重复触发\n5. **控件编辑器吸附开关**：编辑吸附新增\"仅吸附相邻按键\"选项 (#646)\n\n#### ⚡ 优化\n\n1. **启动卡顿优化**：启动准备段（版本解析、模组全量扫描等重活）迁至后台线程，消除点击启动时的界面卡顿，准备弹窗内实时显示解析与扫描模组进度\n2. **皮肤模型判定**：优先使用账户提供的模型类型，无指定时再回退图像检测\n3. **lwjgl3ify**：兼容补丁改为启动时内存合并，不再改写版本 JSON 文件\n4. 内部清理：删除 fakefx 包 113 个不可达死代码类，删除未使用的帮助文档组件与孤儿布局\n\n#### 🐛 修复\n\n1. **控件编辑器系列**：新建/克隆控件默认屏幕中心并对齐组 z 序，修复添加控件被菜单遮挡看似消失 (#1865)；配置文件原子写入与布局按键数据按 id 去重，避免崩溃后键位重复 (#624)；仅吸附相邻按键时同边对齐只对另一轴相邻目标开放，修复无法与同一按钮横纵两轴同时对齐\n2. **整合包更新**：修复 Modrinth 整合包更新读取旧配置时 TypeToken 误用 Curse 清单类型，导致 ClassCastException 必然回滚\n3. **账户与收藏**：补全 Classic 账户密码重登弹窗，修复重登线程永久阻塞；收藏库补 v1→v2 正式迁移替代破坏式重建，修复收藏数据损坏\n4. **渲染**：EGL 上下文重建后未重传披风纹理，导致切换页面后披风消失；初始默认皮肤 alex 与渲染模型不一致导致手臂透明\n5. **日志分享**：迁移后台线程并对超大文件跳过处理，避免 ANR (#1871)\n6. **主题透明度**：主题色透明度不再影响文字与图标可见性\n7. **其他**：Java 管理弹窗删除图标过小且删除选中项后未回落自动选择；亮色模式下引导气泡文字看不清；GameOption 键值表与文件观察者改实例级，防止跨游戏目录串数据；OAuth 取消标志跨线程可见性与缓存 Storage 并发竞态等\n\n### English\n\n#### ✨ New Features\n\n1. **Modpack export**: Added Modrinth (.mrpack) and CurseForge modpack export, reusing the export wizard — with override-file filtering, automatic skipping of disabled/old mods, optional config and override packaging; CurseForge export resolves server-side file IDs via batch fingerprint lookup (#1859)\n2. **New onboarding component**: An in-house spotlight overlay replaces the unmaintained TapTargetView, covering the account, launch and menu entries, with position transition animations; the guide copy now also covers long-pressing the version card for quick switching, multiplayer and more\n3. **Auto-select API when installing Fabric/Quilt**: Installing a new game with the Fabric/Quilt loader now auto-selects the matching Fabric API / QSL\n4. **\"What's New\" entry**: Launcher settings gained an entry to review the current version's update notes at any time (#1856); the update check and notes fetch now use a synchronous CAS debounce, fixing duplicate triggers from rapid tapping\n5. **Control editor snap toggle**: Editor snapping gained a \"snap to adjacent buttons only\" option (#646)\n\n#### ⚡ Improvements\n\n1. **Launch stutter fix**: The launch preparation stage (version parsing, full mod scanning and other heavy work) moved to a background thread, eliminating UI stutter when tapping launch; the preparation dialog shows parsing and scanning progress in real time\n2. **Skin model detection**: The account-provided model type is preferred, falling back to image detection only when unspecified\n3. **lwjgl3ify**: Compatibility patches are now merged in memory at launch instead of rewriting the version JSON file\n4. Internal cleanup: removed 113 unreachable dead-code classes from the fakefx package, plus unused help-document components and orphan layouts\n\n#### 🐛 Bug Fixes\n\n1. **Control editor series**: New/cloned controls now default to the screen center with aligned z-order, fixing added controls seemingly disappearing behind menus (#1865); config files are written atomically and layout key data is de-duplicated by id, preventing duplicated keys after crashes (#624); when \"snap to adjacent buttons only\" is on, same-edge alignment is only offered to adjacent targets on the other axis, fixing the inability to align with the same button on both axes\n2. **Modpack updates**: Fixed Modrinth modpack updates always rolling back due to a TypeToken misusing the Curse manifest type when reading old configs, causing a ClassCastException\n3. **Accounts & favorites**: Completed the Classic account password re-login dialog, fixing a permanently blocked re-login thread; the favorites database gained a proper v1→v2 migration replacing the destructive rebuild, fixing corrupted favorites data\n4. **Rendering**: Fixed the cape disappearing after page switches because the EGL context recreation did not re-upload the cape texture; fixed transparent arms caused by the initial default alex skin mismatching the render model\n5. **Log sharing**: Moved to a background thread and skips processing oversized files, preventing ANR (#1871)\n6. **Theme transparency**: Theme color transparency no longer affects text and icon visibility\n7. **Others**: The Java management dialog's delete icon was too small and the selection did not fall back after deleting; onboarding bubble text was hard to read in light mode; GameOption key tables and file watchers are now instance-level, preventing data leaking across game directories; OAuth cancel-flag cross-thread visibility, cache Storage concurrency races, and more\n\n","assets":[{"name":"FCL-release-1.3.3.6-all.apk","size":329923401,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.6/FCL-release-1.3.3.6-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.6-arm64-v8a.apk","size":172287410,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.6/FCL-release-1.3.3.6-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.6-armeabi-v7a.apk","size":165038471,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.6/FCL-release-1.3.3.6-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.6-x86.apk","size":158629671,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.6/FCL-release-1.3.3.6-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.6-x86_64.apk","size":177967960,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.6/FCL-release-1.3.3.6-x86_64.apk","content_type":"application/vnd.android.package-archive"}]},{"id":396213051,"version":"1.3.3.5","title":"1.3.3.5","published_at":"2026-09-25T01:45:57Z","prerelease":false,"message":"\n### 中文\n\n#### ✨ 新功能\n\n1. **兼容 lwjgl3ify，开箱即玩 GT New Horizons**：自动检测 mods 目录中的 lwjgl3ify 并合并内嵌 relauncher 配置（RetroFuturaBootstrap 主类、Java 版本要求、全套 --add-opens 参数与依赖闭包），合并幂等、lwjgl3ify 升级后自动重新合并，首次合并前自动备份原版本 JSON；内嵌库按来源重写 Maven 下载地址，forgePatches 构件从 jar 内离线还原；自动关闭桌面快捷方式生成，避免在 Android 上静默退出；版本设置强制 jre8 时提示切换 Auto 并建议 ≥4GB 内存\n2. **Legacy Fabric 加载器安装**：同步上游 HMCL，安装页新增 Legacy Fabric / Legacy Fabric API 条目，与 Fabric 按是否存在 net.legacyfabric 库互斥区分，兼容矩阵、依赖绑定与版本区间对齐上游；启动链路将 legacyfabric 归入 fabric 体系\n3. **世界存档能力同步上游**：世界列表条目新增世界图标与复制世界入口；支持 26.1 新存档格式（世界生成设置与玩家数据外置文件、难度设置等新字段）；新增 session.lock 锁检测，世界被占用时给出提示；NBT 读取支持 GZip / LZ4 Block 压缩自动检测\n4. **光影管理 tab**：管理页新增光影管理，扫描版本 shaderpacks 目录的 zip 与文件夹形式光影包，支持导入、搜索过滤、多选删除、长按重命名与详情弹窗，可跳转下载页光影 tab；启停由游戏内光影模组（Iris/OptiFine 等）完成\n5. **版本图标识别同步上游**：快照与预发布版显示命令方块图标\n\n#### ⚡ 优化\n\n1. **主题色透明度百分比显示**：透明度设置改以百分比呈现，更直观；FCLMenuView 选中色不再受主题透明度影响\n2. 精简资源包页属性初始化与世界列表过滤判空\n\n#### 🐛 修复\n\n1. 修复 jre25 下 AWT 回退 headless：cacio17 更新至 jdk25 修复版构建，依赖 java.awt.Font 的模组不再启动即崩\n2. 修复外接物理键盘输入重复：物理键盘字符随按键一次性下发\n3. 修复定制 ROM 上控制器仓库搜索框回车崩溃：补 imeOptions 搜索动作\n\n### English\n\n#### ✨ New Features\n\n1. **lwjgl3ify compatibility — GT New Horizons out of the box**: lwjgl3ify jars in the mods folder are detected automatically and their embedded relauncher config (RetroFuturaBootstrap main class, Java version requirement, the full --add-opens set and dependency closure) is merged into the instance version idempotently — re-merged after lwjgl3ify upgrades, with the original version JSON backed up before the first merge; embedded libraries get rewritten Maven sources, and the forgePatches artifact is restored offline from the jar; desktop-entry creation is disabled automatically to prevent silent exits on Android; a hint to switch to Auto (with ≥4GB RAM recommended) is shown when jre8 is forced\n2. **Legacy Fabric loader installation**: Synced from upstream HMCL — the install page gained Legacy Fabric / Legacy Fabric API entries, mutually exclusive with Fabric by the presence of net.legacyfabric libraries, with the compatibility matrix, dependency bindings and version ranges aligned upstream; the launch chain routes legacyfabric through the fabric system\n3. **World save capabilities synced from upstream**: World list entries now show world icons and a copy-world action; the new 26.1 save format is supported (external world-gen settings and player data files, new fields such as difficulty settings); session.lock detection warns when a world is in use; NBT reading auto-detects GZip / LZ4 Block compression\n4. **Shader pack management tab**: The manage page gained a shader tab that scans the version's shaderpacks folder (zip files and folders), supporting import, search filtering, multi-select deletion, long-press rename and a detail dialog, with a shortcut to the download page's shader tab; enabling/disabling is left to in-game shader mods (Iris/OptiFine, etc.)\n5. **Version icon recognition synced from upstream**: Snapshots and pre-release versions now show a command block icon\n\n#### ⚡ Improvements\n\n1. **Theme color transparency shown as a percentage**: More intuitive than raw values; the FCLMenuView selection color is no longer affected by theme transparency\n2. Simplified resource pack page property initialization and world list filtering null checks\n\n#### 🐛 Bug Fixes\n\n1. Fixed AWT falling back to headless on jre25: cacio17 updated to a JDK 25 fixed build, so mods depending on java.awt.Font no longer crash on launch\n2. Fixed duplicated input with external physical keyboards: physical keyboard characters are now sent together with key events in one pass\n3. Fixed a crash when pressing enter in the controller repository search box on custom ROMs: an imeOptions search action was added\n\n","assets":[{"name":"FCL-release-1.3.3.5-all.apk","size":329951905,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.5/FCL-release-1.3.3.5-all.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.5-arm64-v8a.apk","size":172315918,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.5/FCL-release-1.3.3.5-arm64-v8a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.5-armeabi-v7a.apk","size":165066983,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.5/FCL-release-1.3.3.5-armeabi-v7a.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.5-x86.apk","size":158658179,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.5/FCL-release-1.3.3.5-x86.apk","content_type":"application/vnd.android.package-archive"},{"name":"FCL-release-1.3.3.5-x86_64.apk","size":177996468,"download_url":"https://fcl.switch.api.072211.xyz/api/releases/1.3.3.5/FCL-release-1.3.3.5-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)"}