Skip to content

Mythic v0.6.0 | "The World"

Pre-release
Pre-release

Choose a tag to compare

@zenfty zenfty released this 27 Dec 10:23
· 10 commits to main since this release
23c9cda

[Click to download Mythic from the website.]

Sponsor if you love Mythic: https://github.com/sponsors/MythicApp


What's Changed

🎮 COMPLETE GAME ARCHITECTURE OVERHAUL (#eae90c)

  • BRAND NEW GAME SYSTEM - Complete rewrite of game management with proper type safety, better state handling,
    and unified logic (#eae90c, #f74f09, #2f6071)
  • Implemented distinct game types: EpicGamesGame, LocalGame, SteamGame with proper inheritance (#2f6071,
    #0ec735)
  • New GameDataStore for persistent game storage with automatic syncing (#f9ce21, #c6e29c)
  • Implemented Mergeable protocol for smart game data merging across sources (#e929783, #fc38555, #709df42)
  • Total GameOperation reimplementation with observable progress, dock integration, and menu bar status
    (#c2f3e98, #d979747, #7a4732)
  • New GameOperationManager for better task coordination and concurrent operations (#462db0, #d70c50)
  • InstallationState enum for better differentiation between installed/uninstalled games (#f74f09)
  • Removed LegacyGame - we so back (#e0f2596)

🎨 Visual Overhaul

  • Circular progress indicators in game cards instead of linear bars (#c32d079)
  • Background blur effects on hero game cards and expanded list cards - the community has spoken! (#5367c70,
    #d917e2, #b8329c)
  • Expanding game cards on hover - this looks sick!!! (#2ca8976)
  • New Operations view with redesigned operation cards - they look sick!!! (#56de538, #0e3262b)
  • Unified GameImageCard with fallback images for macOS games (#8de80ef, #6592bf9, #c7a9dc9)
  • Removed horizontal scrolling in library for cleaner navigation (#96b8406)
  • Removed Home view navigation title for minimal aesthetic (#77ab6f1)
  • Top-aligned hero image cards with improved blur performance (#08cfa29, #d917e2, #bbc8b73)
  • Changed store icon (#ae66bd)
  • Updated About view with bundle icon (#436bb9)

🚀 Epic Games / Legendary Integration

  • Full struct parsing of Legendary data with explicit coding keys (#6188410, #d760ca8, #cdb745)
  • Implemented EpicGamesGameManager for proper Epic game handling (#cdcad2e, #2f6071)
  • Added error handling to all Legendary tasks (#828ef50)
  • Fixed game import failures (#65aceb5)
  • Fixed games persisting after uninstall (#a05de39)
  • Better throughput parsing in install/repair operations (#dbc0138, #5bb367c)
  • Folder-only selection for Epic game imports (#dbf2187)
  • Updated web auth data store persistence (#9a2d539)
  • Prefer new instance image URLs when merging game data (#69789c4)
  • Launch arguments now support spaces with parentheses (#98d9b8)
  • Verification alerts in Legendary flow (#fd1e383)

🍷 Wine & Container Improvements

  • Better process handling with modular, async-friendly code (#fe7fe8b, #39503a)
  • Split DXVK functionality with explicit container creation (#a2060f)
  • Fixed wineboot command invocation (#2801779)
  • Fixed container settings picker giving wrong results (#5beb987)
  • Fixed container URL issues in newly added games (#5a9d1dc, #5722bd6)
  • Fixed ghost operations from container settings (#79c0b8a)
  • Filter existing containers on setter instead of every launch (#fa99e06)
  • Container creation view title improvements (#acf27f9)
  • ContentUnavailableView when no containers exist (#78623e3)
  • Safer container initialization with knownURL (#28631bc, #6f5fab)
  • Separated Wine extensions from container logic (#c98ee2)

🎯 Operations & Progress Tracking

  • Unified operation status system with OperationStatusViewModifier (#62fae5d)
  • Menu bar operation progress display (#d979747)
  • Dock badge progress for file-modifying operations (#4ce8ad4, #6bdae2)
  • User notifications on operation completion (success only!) (#72d2474, #b70c789)
  • Observable Progress with custom KVO bridge (#7a4732, #2c32738)
  • Operation cancellation support conforming to Operation protocol (#84c916a)
  • Concurrent operations of certain types (#d70c50)
  • Fixed critical modifiesFiles enum value bug (#6c160bb)
  • Check task cancellation before execution (#c271e0e)
  • Disabled buttons if operation already exists for that action (#586e449)

🎨 UI/UX Improvements

  • Tabbed settings interface - fine SwiftUI you win (#891ba90)
  • Auto-refresh library from storefronts when empty (#76710ef)
  • Reimplemented search functionality in library (#050ca68)
  • Reimplemented filter button with full GameListViewModel refactor (#2d57f84)
  • Disable filter views when library is empty (#d283bb1)
  • Better onboarding with formatted completion percentages (#f61af67, #c2f78ad)
  • Skip greeting stage if not signed into storefronts (#bd7156b)
  • Fixed greeting stage logic error (#66094b5)
  • Unified game uninstallation views (#5a8e04, #1e7e5ae, #bbbe3b)
  • Label usage in form groups (#02ed753, #e245c6)
  • Easier-to-understand container configuration strings (#f2aa03a)
  • Replace nonfunctional disclaimers with informative messages (#2e879f5)
  • Updated colorful view colors (#107301e)

🐛 Critical Fixes

  • Fixed hanging on startup (#efc708d)
  • Fixed game properties not persisting between sessions (#c6e29c, #6156971)
  • Fixed infinite recursion in GameDataStore (#bb76a7b)
  • Fixed process output loss with buffered readability handlers (#c6c620d)
  • Fixed readability stream exceptions on cancellation (#0d7b68d)
  • Fixed 'Bad file descriptor' errors in .runStreamed (#f40faf0, #595e506)
  • Fixed local games not being removed from library after uninstall (#0166b10)
  • Fixed bad library merge logic (#89e4bff)
  • Fixed game sorting (#9beb957)
  • Fixed merge failures due to bad keypath inference (#8efd5db)
  • Removed dangerous shell command from shader cache purging (#784aa63)
  • Fixed button sheet presentation firing twice (#0706fea)
  • Fixed game install size not appearing (#57e6772, #2c9fa28)
  • Fixed subscripted text spanning multiple lines (#c9b277f)

📦 Process & Migration

  • Refactored Process stream handling with readability handlers (#2a50e55, #70d8715)
  • Rosetta installation uses Process.stream (#6b5e962)
  • Prevent Rosetta installation on Intel Macs (#f4025f4, #7febca7)
  • Full migration implementation for 0.5.0 game structures (#36387aa)
  • Removed old migration methods (#064744f)
  • Migrator only refreshes from storefronts when necessary (#6fceea5)

🧹 Code Quality & Refactors

  • Unified StagedFlow view models (#54d658a)
  • Separated Wine container settings codable conformance (#94e647)
  • Relocated process extensions with better organization (#22f049)
  • Prefer MainActor.run over creating tasks (#bcd003)
  • Remove redundant 'Evo' naming (#1de986)
  • Cleaned up ContentView and project structure (#ae66bd, #e4c3d8, #7ec388)
  • Updated deprecated URL initializer syntax (#94a3e8d)
  • Removed unreferenced files (#ff7eec, #6ab160)
  • SwiftLint compliance throughout (#c51b13, #fbd31d, #c77f7b, #bd6909, #eb0396, #269370)
  • Reduced Firebase log verbosity - shut up firebase (#1eb624)
  • Network monitor uses async, reduced overhead (#6f9f98)
  • Better game launch flow with reduced boilerplate (#5e2a4d)

🎨 Sparkle Updater

  • Refactored all updater views (#424004, #2bac69, #7ec388)
  • Multiline strings in download view (#2bac69)
  • Better adherence to contributing guidelines (#424004)

🌐 Localization & Strings

  • Localization-friendly game verification alerts (#9fb4a53)
  • Localization improvements throughout (#fcbd3d9, #c98ee2, #acf27f9)
  • Multiple strings updates (#7c9cfa, #719cc2, #31990c, #b70c789, #62fae5d, #6bdae2, #78623e3)
  • Removed stale strings (#063458)
  • Removed "What's New in Mythic" menu button (#6271d83)

📝 Documentation

  • Updated contributing guidelines multiple times (#917dc2, #a98b2c, #51a2c1, #aa3887)
  • Added explanatory comments to Legendary codebase (#3c573b)
  • Better file header comments (#b9e001d, #dad94e)
  • DocC for GameOperation.function (#1183773)

🔧 Miscellaneous

  • Mythic now supports game mode!!!
  • Updated donation links (#d26acb5)
  • Game ID display in debug builds (#ee4ade, #6dfcf8b)
  • 'Update available' notification on game cards (#5ee6689)
  • Better UserDefaults storage for launch args and container URLs (#171c2b6)
  • CodableAppStorage improvements (#ed44bf2, #6759540)
  • Prevented wrapping sets in arrays in encodeAndSet (#081909)
  • Streamlined game launch flow (#5e2a4d)
  • Deprecated VariableManager with concurrency safety (#3d052c4, #1b8129)

🐛 The Emotional Journey

  • jhyperfixation doesnt want me to stop (#599b2f)
  • sigh (#2e727c)
  • im so done with this (#137397)
  • chore: remove unnecessary marks why are there so many gulp my coding skills have greatly improved and i am glad
    (#c39706)

🎭 Performance

  • Improved image card blur performance (#bbc8b73)
  • Lower render scale for fallback image glow (#b1f8fd1)
  • Migrator optimization for storefront refreshes (#6fceea5)
  • performance is implicit, i literally refactored everything

Early stages
If you hit bugs or need support [create an issue](https://github.com/MythicApp/Mythic/issues/new/choose).
Mythic is still alpha; expect chaos.

Full Changelog: v0.5.0...v0.6.0


The World - DIO's ultimate Stand"The World's true power, as its name suggests, is to reign supreme over the entire world!"

ZAAAAAAAA WARUDOOOOOOOOOOOOO

i'm so goated