Skip to content

Add unified cross-platform build pipeline and GitHub Actions CI for b…#3

Merged
pc-style merged 1 commit intomainfrom
feature/cross-platform-build-and-ci
Nov 9, 2025
Merged

Add unified cross-platform build pipeline and GitHub Actions CI for b…#3
pc-style merged 1 commit intomainfrom
feature/cross-platform-build-and-ci

Conversation

@pc-style
Copy link
Collaborator

@pc-style pc-style commented Nov 9, 2025

…inaries


Note

Introduces a unified Python build orchestrator with PyInstaller + frontend packaging, new CLI/web entrypoints and paths module, OS wrapper scripts, Make targets, docs, and a GitHub Actions workflow to build and release binaries for Linux/macOS/Windows.

  • Build system:
    • Add scripts/build.py orchestrator to build Next.js frontend, PyInstaller cli/web binaries, and assemble OS-specific layouts under build/.
    • New entrypoints: lifeline/cli.py and lifeline/web_server.py; centralize paths/frontend detection in lifeline/paths.py.
    • Thin wrappers: scripts/build_macos.sh, scripts/build_linux.sh, scripts/build_windows.ps1.
    • Makefile: add build-* targets and PYTHON var; wire to orchestrator.
    • pyproject.toml: switch lifeline to lifeline.cli:main; add lifeline-web script.
  • CI:
    • Add .github/workflows/build-binaries.yml to build artifacts for Linux/macOS/Windows on tags and create a GitHub Release with uploaded artifacts.
  • Docs:
    • Add docs/BUILD.md documenting the pipeline and usage.
  • Tooling:
    • Add .kilocodemodes with a test-engineer mode.

Written by Cursor Bugbot for commit a9a1615. This will update automatically on new commits. Configure here.

@pc-style pc-style marked this pull request as ready for review November 9, 2025 12:27
@pc-style pc-style merged commit 62d69e9 into main Nov 9, 2025
5 checks passed
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

asyncio.run(_async_main())
except KeyboardInterrupt:
# Match existing behavior from main.py when interrupted.
sys.exit(0) No newline at end of file
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: NoReturn function returns unexpectedly.

The main() function declares return type NoReturn but doesn't exit when asyncio.run(_async_main()) completes successfully. Functions with NoReturn type must never return normally—they should always exit via sys.exit(), raise an exception, or enter an infinite loop. The function needs to call sys.exit(0) after the asyncio.run() call completes.

Fix in Cursor Fix in Web

try:
import tomllib # Python 3.11+
except ModuleNotFoundError: # pragma: no cover
import tomli as tomllib # type: ignore[assignment]
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Builds unexpectedly require development dependencies.

The build script imports tomli as a fallback for Python 3.10, but tomli isn't in the project's main dependencies—it's only available transitively through dev dependencies like black, mypy, and pytest. This causes the build to fail on Python 3.10 when dev dependencies aren't installed, breaking the CI/CD pipeline and standalone builds.

Fix in Cursor Fix in Web

Name=LifeLine
Comment={meta.description}
Exec={out_dir}/lifeline-web
Icon={out_dir}/lifeline.png
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Hardcoded Paths Invalidate Desktop Entries

The Linux .desktop file hardcodes absolute paths from the build directory in Exec and Icon fields (e.g., Exec={out_dir}/lifeline-web). These paths become invalid when the application is installed elsewhere, preventing the desktop entry from launching the application or displaying its icon correctly.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant