Skip to content

v0.6.0

Choose a tag to compare

@dspp779 dspp779 released this 24 Jul 10:49
· 309 commits to main since this release

Download Cyder.app

TL;DR

Cyder 0.6.0 focuses on general-purpose install and launch quality:

  • Native Winetricks from Cyder settings
  • Leaner launch diagnostics, bootstrap progress, and faster golden baseline import
  • Per-launch dynamic command-line arguments without public Cyder CLI options
  • Wider launch-options UI with multiline env / argv fields and space-or-newline KEY=value parsing
  • CX26.3 engine (CX26.3.0-W11-Cyder004) with source-built runtime dylibs at macOS 10.15
  • App floor 10.15 with Swift UI on 12+ and bash/osascript fallback on 10.15–11
  • Engine version label/slug equality so extraction no longer leaves document launches stuck as “not ready”

This release intentionally does not include MapleStory OEM / CX26 special compatibility work.

Engine label: CX26.3.0-W11-Cyder004

Highlights

Native Winetricks

  • Install common Winetricks components from the settings UI without opening a separate terminal.
  • The app bundles the Winetricks script and license files alongside Cyder’s bottle support path.

Launch performance and health checks

  • Reduces noisy launch logs and health probes for everyday game starts.
  • Successful bottle rebuilds discard rollback copies so temporary space is not left behind.
  • Bootstrap / provision writes progress text for both the Swift UI and the pre-12 osascript path.
  • Golden baseline settings apply via a single regedit /s import.

Per-launch dynamic arguments

  • Cyder.app does not keep public command-line options. Arguments received via Finder / open --args or direct argv apply to that launch only.
  • When no dynamic arguments are provided (including opening only the EXE with an empty argv), Cyder still uses the arguments saved in the Game Library / settings and does not clear them.
  • Optional CYDER_REDACT_DYNAMIC_ARGS=1 redacts dynamic argument values in diagnostic logs.

Launch options UI

  • The per-game Launch Options window is wider and shorter (~520×450). Environment and command-line fields are wider/shorter and show placeholders.
  • Environment variables accept KEY=value pairs separated by spaces or newlines (newlines count as whitespace); quote values that contain spaces.
  • Command-line arguments use a multiline field; newlines count as whitespace. Quoted tokens still preserve internal spaces.

Engine (CX26.3) and packaging

  • Default engine artifact is CrossOver 26.3.0-based: CX26.3.0-W11-Cyder004.
  • Bundles a universal zstd CLI; strip-wine-install.sh, pack-engine-artifact.sh, and dylib bundling support leaner, reproducible runtimes.
  • Repacking defaults to VULKAN_MODE=with + VULKAN_SOURCE=existing so the tested MoltenVK is kept.
  • Bundled Homebrew / media dylibs (freetype, gnutls chain, glib/gstreamer, …) are built from source with MACOSX_DEPLOYMENT_TARGET=10.15. Packaging fails if any bundled dylib’s Mach-O minos is above 10.15. Current Homebrew bottles (macOS 14+) are not used for shipped runtime libs.

macOS system versions

Layer Minimum Notes
Cyder.app (LSMinimumSystemVersion) 10.15 Matches Wine engine / bundled dylibs
Swift settings / Game Library UI 12.0 CyderSwift
10.15–11.x bash + osascript Retina forced off; bootstrap progress shown
Apple Silicon 11.0 Rosetta 2 required

Engine version comparison fix

  • Display labels such as wine crossover 26.2.0 (wine 11.0) and filesystem slugs such as crossover-26.2.0-wine-11.0 are treated as the same engine version.
  • After a successful extraction, document launches no longer permanently report that the environment is not ready.

Launch diagnostics and font defaults

  • Game Library Test launches write Logs/last-launch.log (CrossOver-style preamble: command, MSync/ESync, environment, then Wine output).
  • If the Mac already provides a MingLiU family, that becomes the default font preset; otherwise Songti TC.

Signing (optional)

  • create-cyder-app.sh / sign-wine.sh support Developer ID + secure timestamps; use SIGN_IDENTITY=- for local ad-hoc builds.
  • See release-signing.zh-TW.md. Whether a given build is notarized depends on the release pipeline.

Implementation details

Winetricks and settings UI

  • Adds scripts/cyder-winetricks.sh and ships tools/winetricks/ inside App Resources.
  • The settings UI invokes installation through the existing launcher / support paths.

Dynamic argv contract

  • The native AppKit path and shell wrapper (create-cyder-app.sh → cyder_launcher.sh --launch-exe … --) share the same “per-launch arguments override saved arguments” semantics.
  • Wine locale exports now also set LC_CTYPE alongside LANG / LC_ALL.

Packaging toolchain

  • Adds build-universal-zstd.sh, build-media-stack.sh (minimal GStreamer media stack when needed), and related docs.
  • brew_x86_install_runtime (env-x86_64.sh) source-builds runtime formulae with a 10.15 compiler wrapper; gnutls uses vendored tap homebrew/ogom-local (avoids a GitLab older-clang patch 403).
  • MoltenVK can be taken from CrossOver.app (install-crossover-app-moltenvk.sh) or built from CX FOSS; SPIRV-Cross prefers the tarball-vendored tree.
  • Runtime builds default to --disable-tests. CrossOver-FOSS MoltenVK installs verify the version manifest and ignore unverified caches.

Engine upgrades and bottle rebuild

  • When the engine version changes, Cyder resets bottles/shared and re-runs wineboot for the current engine, then installs mono / gecko / libarchive plus baseline settings.
  • It no longer clones stale templates/pristine / templates/golden bottles; upgrades also remove old templates/ under Application Support.
  • Versioned template bottles are deferred to 1.0.0. Until then, shared and independent profile bottles are provisioned directly.

Legacy UI

  • MacOS/Cyder is always a thin wrapper: ≥12 exec’s CyderSwift; older hosts exec the osascript progress UI (cyder-legacy-ui.applescript).

Upgrading

  1. Quit Cyder and all games launched through Cyder.
  2. Replace the previous Cyder.app with Cyder 0.6.0.
  3. If a same-labeled but older engine tree is still installed (dylibs with minos 14/15), remove it so Cyder reinstalls from the new artifact:
    rm -rf ~/.cyder/runtime/Engines/wine-x86_64
  4. Launch Cyder once and wait for its environment check to complete (engine upgrades rebuild shared).
  5. Launch games from the Game Library or Finder as usual. For per-launch arguments, use open -n -a Cyder.app game.exe --args ….

Game Library data and per-game settings are preserved. bottles/shared is rebuilt when the engine version changes; independent profile bottles are not automatically removed by an engine upgrade.

Known limitations

  • Dynamic arguments affect only the current launch and are not written back to saved Game Library arguments.
  • MapleStory OEM / CX26 special compatibility and related patches are out of scope for this release.
  • Template bottles (pristine / golden) are not restored yet; independent environments use on-the-spot wineboot plus component installs.
  • macOS 10.15–11.x has no native Game Library / full settings UI—only legacy file picker and progress.
  • Notarization status depends on the release pipeline; see the signing doc.

Validation

  • Narrow tests passed for Winetricks, launcher, prefix rebuild, direct bootstrap, dynamic argv, force settings UI, open-files lifecycle, engine version, sign-wine, universal zstd, strip, bundle dylib source / minos gate, legacy UI, env-x86_64 runtime install, and app payload.