Repository navigation
v0.6.0
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=valueparsing - 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 /simport.
Per-launch dynamic arguments
- Cyder.app does not keep public command-line options. Arguments received via Finder /
open --argsor 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=1redacts 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=valuepairs 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=existingso 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-Ominosis 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 ascrossover-26.2.0-wine-11.0are 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.shsupport Developer ID + secure timestamps; useSIGN_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.shand shipstools/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_CTYPEalongsideLANG/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 taphomebrew/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/sharedand re-runswinebootfor the current engine, then installs mono / gecko / libarchive plus baseline settings. - It no longer clones stale
templates/pristine/templates/goldenbottles; upgrades also remove oldtemplates/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/Cyderis always a thin wrapper: ≥12 exec’sCyderSwift; older hosts exec the osascript progress UI (cyder-legacy-ui.applescript).
Upgrading
- Quit Cyder and all games launched through Cyder.
- Replace the previous Cyder.app with Cyder 0.6.0.
- 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 - Launch Cyder once and wait for its environment check to complete (engine upgrades rebuild shared).
- 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.