Skip to content

Add cross-platform single-file installer build, Windows compatibility, and CI workflow - #1

Closed
eimexdev wants to merge 1 commit into
mainfrom
codex/improve-install-flow-with-bundled-python
Closed

Add cross-platform single-file installer build, Windows compatibility, and CI workflow#1
eimexdev wants to merge 1 commit into
mainfrom
codex/improve-install-flow-with-bundled-python

Conversation

@eimexdev

@eimexdev eimexdev commented Apr 18, 2026

Copy link
Copy Markdown
Owner

Motivation

  • Provide single-file installers for macOS and Windows to simplify installation (no Python required).
  • Add CI automation to build and publish installer artifacts for releases and PRs.
  • Make the Resolve Lua scripts robust to Windows paths and runtime environments so the bundled CLI can be used from Resolve on both platforms.

Description

  • Add a GitHub Actions workflow build-installers.yml to build macOS and Windows installers and upload artifacts as OpenBeat-*-installer.
  • Add scripts/build_installers.py which bundles the Python CLI with PyInstaller, packages payload files, produces a macOS .dmg (with install.command) and a Windows single-file installer .exe (PyInstaller-wrapped installer script), and writes OpenBeatConfig.local.lua pointing to the bundled binary.
  • Update README.md with an installer-first install option, local build instructions, and artifact locations, and add build/ and dist/ to .gitignore.
  • Make cross-platform runtime fixes in resolve/Fusion/Modules/OpenBeat/OpenBeatCommon.lua: normalize path separators, detect Windows via package.config, provide path_sep(), improve dirname, join_path, and shell_quote for Windows, use appropriate temp directory (TMPDIR/TEMP/TMP with Windows fallback), resolve python_bin candidates for .venv/Scripts/python.exe, add command_prefix() to invoke the CLI entrypoint uniformly, and update logging paths to use %APPDATA% / AppData\Roaming on Windows.

Testing

  • No automated tests were executed as part of this change in the rollout; the new workflow is configured to run on push to main, on pull requests, and via workflow_dispatch so CI will build installers for subsequent runs.

Codex Task

Summary by CodeRabbit

Release Notes

  • New Features

    • Prebuilt installers now available for macOS (DMG) and Windows (EXE) with automated installation support.
  • Documentation

    • Updated installation guide with two options: prebuilt installers or developer build from source.
  • Improvements

    • Enhanced Windows platform compatibility with improved system path handling and environment-aware configuration detection.

@coderabbitai

coderabbitai Bot commented Apr 18, 2026

Copy link
Copy Markdown
ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 6ddc7d89-ea88-441b-9f41-d9abf047872d

📥 Commits

Reviewing files that changed from the base of the PR and between dd5fb86 and 6c8faa8.

📒 Files selected for processing (5)
  • .github/workflows/build-installers.yml
  • .gitignore
  • README.md
  • resolve/Fusion/Modules/OpenBeat/OpenBeatCommon.lua
  • scripts/build_installers.py

📝 Walkthrough

Walkthrough

This pull request introduces installer build infrastructure and Windows support for the OpenBeat project. It adds a GitHub Actions workflow for automating platform-specific installer creation, updates documentation with installation options, and implements Windows compatibility throughout the codebase alongside a new Python build script.

Changes

Cohort / File(s) Summary
CI/CD & Build Automation
.github/workflows/build-installers.yml, scripts/build_installers.py
New GitHub Actions workflow and Python build script for creating platform-specific installers (.dmg for macOS, .exe for Windows) using PyInstaller, with automated artifact uploads.
Configuration & Artifacts
.gitignore
Added build/ and dist/ directories to prevent build artifacts from being tracked.
Documentation
README.md
Expanded installation instructions with two paths: prebuilt installers (recommended) and developer from-source setup. Added local installer build documentation.
Windows Platform Support
resolve/Fusion/Modules/OpenBeat/OpenBeatCommon.lua
Implemented Windows OS detection, path separator normalization, shell quoting, OS-appropriate logging/temp paths, improved Python interpreter discovery for virtual environments, and centralized command-prefix generation for OpenBeat CLI invocation.

Sequence Diagram(s)

sequenceDiagram
    participant Script as build_installers.py
    participant Version as Version Parser
    participant PyInstaller as PyInstaller
    participant Payload as Payload Copier
    participant MacOS as macOS DMG Builder
    participant Windows as Windows EXE Builder
    
    Script->>Version: parse_version() from pyproject.toml
    Version-->>Script: version string
    Script->>PyInstaller: build_cli_binary()
    PyInstaller-->>Script: openbeat binary
    Script->>Payload: copy_payload(platform)
    Payload-->>Script: Fusion modules copied
    
    alt platform == macOS
        Script->>MacOS: create_macos_dmg(cli_binary, version)
        MacOS->>MacOS: stage payload + install.command
        MacOS->>MacOS: call hdiutil create .dmg
        MacOS-->>Script: versioned .dmg artifact
    else platform == Windows
        Script->>Windows: create_windows_exe(cli_binary, version)
        Windows->>Windows: embed payload in installer
        Windows->>Windows: write runtime entry script
        Windows-->>Script: versioned .exe artifact
    end
    
    Script->>Script: write to dist/installers/
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~50 minutes

Poem

🐰 Hooray for installers, no compilation fuss,
Windows and Mac in a single build pass,
From scripts to artifacts, bundled with care,
Automation hops forward, distributing everywhere!


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@eimexdev eimexdev closed this Apr 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant