Skip to content

v1.1.9

Latest

Choose a tag to compare

@deeppacketdev-hub deeppacketdev-hub released this 19 Jun 15:09
546ea5f

Release v1.1.9 🚀

This release introduces a full Instance Migration & Content Transfer Wizard, an automatic Mod Dependency Resolver, major performance optimizations across the entire app, and an expanded Java settings experience per instance.


🌟 What's New

🔄 Instance Migration & Content Transfer Wizard

  • Step-by-step Migration Wizard: A brand-new 3-step wizard lets you upgrade an instance to a new Minecraft version or transfer content (mods, shaders, resource packs, worlds) to another existing instance — all guided and automatic.
  • Smart Mod Scanning: The migration engine scans every mod file, computes its SHA1 hash, and performs bulk identification via the Modrinth API to find compatible versions for the target game version.
  • Phase-Based Progress: Migration runs through clearly tracked phases — scanning → identifying → reviewing → creating instance → downloading updated mods → copying shaders & resource packs → finalizing — with real-time progress and cute Minecraft-themed status messages.
  • Mod Status per File: Each scanned mod gets a clear status: Available (updated version found), Up to Date (already compatible), Not Found (unknown mod), No Compatible Version, Manual Download Required (CurseForge restriction), or Copy (file copy fallback).
  • Migration History: Instances now store which version they were migrated from, preserving lineage for future reference.
  • 60+ new localization strings added for the full migration UI across all 6 supported languages.

🔗 Automatic Mod Dependency Resolution

  • Recursive Dependency Resolver: When installing a mod from Modrinth, the app now automatically scans the full dependency tree and detects any required libraries not yet present in the instance.
  • Dependency Install Dialog: If missing dependencies are found, a clear prompt appears listing them, with "Download All" or "Main Only" options — preventing broken mod setups entirely.
  • Bulk Hash-Based Mod Lookup: Added two new Modrinth API integrations — bulk identification by SHA1 hash and bulk update lookup by target game version — powering both dependency resolution and the migration engine.

☕ Per-Instance Java Version Selection

  • Java Version Picker: A new dropdown in Instance Settings lets you pin a specific Java version (Auto, Java 8, Java 17, Java 21) per instance without needing to enter a full custom path.
  • Expanded Java Section: The Java settings area now has a clear two-part layout — version picker at the top and an optional custom path field below — with descriptive labels for each.

⚡ Performance & Architecture

🖥️ Lazy Tab Rendering & Theme Freeze

  • Lazy Tab Loading: The main content area now defers view construction until a tab is first selected, then keeps it alive in memory. This eliminates the UI stutter when switching to Skins, Screenshots, Worlds, or News for the first time.
  • Theme Observation Freeze: Inactive tabs now receive a frozen, static theme instead of the live observable one, preventing hidden views from re-rendering on every theme change and significantly reducing background CPU usage.

🎨 Dynamic Background GPU Optimization

  • 80% Rendering Cost Reduction: Dynamic backgrounds now render at 20% resolution on a small canvas, then scale up with a GPU blur. This dramatically cuts Canvas drawing and GPU load across all background styles (Aurora, Floating Orbs, Mesh Gradient, Waves).
  • Style-Aware Blur: Each background style applies a dynamically computed blur radius for optimal visual quality at minimum cost.

📥 Download Speed & Efficiency

  • Size-First File Skip: The download engine now checks file size first to skip already-downloaded files, avoiding expensive SHA1 computations for assets that are already present and correct.
  • Progress Throttling: Download progress updates are batched and pushed to the UI at most every 100ms, preventing unnecessary redraws during high-frequency concurrent downloads.

📋 Game Log Batching

  • Log Flush Throttle: Game process log lines are now collected in a buffer and flushed to the log view every 150ms (~6 FPS), instead of triggering a full UI update per line. This eliminates log-induced jank during heavy Forge/mod loading.
  • Cancellable Launch: The entire launch sequence can now be cooperatively cancelled at any point — stopping the game also cancels any in-progress download or installation step cleanly.

💾 Debounced Config Saving

  • Config saves are now debounced with a 300ms delay and written on a background thread, keeping the main thread fully unblocked even when sliders or toggles are changed rapidly.

🖼️ In-Memory Image Caching

  • Version artwork and custom instance icons are now cached in memory as NSImage objects, preventing redundant disk reads that previously occurred every time a view was re-evaluated.
  • Added artwork support for Minecraft 26.2 (Chaos Cubed).

🗄️ Automatic Mod Metadata Sync

  • Each time the Mod Browser opens, the app now automatically reconciles stored mod metadata (Modrinth & CurseForge) with the actual files on disk, removing stale entries for mods the user manually deleted.

🛠️ UI Refinements

🃏 Instance Card — Running State Redesign

  • The running-state card now matches the proportions of a normal instance card, with a dedicated icon area and info area.
  • Hover-to-Stop: Hovering over a running card reveals a stop overlay on the icon area — click it to stop the game or cancel the download. The old "Cancel Download" button has been removed.
  • Download Progress: The file counter now appears as a compact dot + monospaced number beneath the progress bar.

🔘 Consistent Button Interactions

  • Introduced a unified button style system (OnyxCardButtonStyle, ListRowButtonStyle, SnappyButtonStyle, SidebarButtonStyle) applied consistently across cards, mod rows, screenshot cards, account switcher, and the custom theme editor.
  • All interactive rows previously using raw tap gestures have been migrated to proper Button components with correct hit testing, accessibility support, and press feedback.

📰 News — New Category Filters

  • Added three new news filter tabs: Minecraft Live, Realms, and Marketplace — each with unique accent colors (Crimson, Gold, Teal) and smart content matching.

🎨 Theme Engine Overhaul

  • Theme colors and color scheme are now stored as explicit properties updated by a dedicated method, making theme changes predictable and preventing spurious redraws across the app.
  • The system no longer reapplies the AppKit appearance if it hasn't actually changed, reducing unnecessary system-level updates.
  • Custom theme gradient backgrounds are now handled independently from the theme palette, fixing transparency issues in the window background.

🔧 Forge/NeoForge — Cooperative Cancellation

  • The Forge/NeoForge installer subprocess now properly responds to task cancellation: if the launch is stopped, the installer process is immediately terminated and the error is handled cleanly without leaving zombie processes.

⚙️ Settings Slider Fixes

  • The animation speed and RAM sliders in Global Settings now save only when the user releases the slider, not on every drag event — preventing config writes and live reloads mid-drag.
  • Directory size calculations in Settings are now performed entirely on a background thread, keeping the UI responsive.
  • The Custom Theme Editor now uses local state during editing and commits changes only on confirm, preventing visual flicker mid-edit.

🛠 Configuration Updates

  • Version Bump: Updated to 1.1.9.
  • Instance Model: Instance now conforms to Equatable for cleaner change detection throughout the app.