Skip to content

feat(home): rooms in the device server — group devices by room + per-… #62

feat(home): rooms in the device server — group devices by room + per-…

feat(home): rooms in the device server — group devices by room + per-… #62

name: cross-platform-smoke
# Continuously proves the cross-platform claims as the repo evolves: a fresh install
# imports, the FastAPI server starts headless, and the OS-agnostic code paths load + pass
# their tests on Linux, macOS, AND Windows. Deliberately LIGHTWEIGHT — it installs the core
# + server (CPU), not the heavy GPU/image stack, so it stays fast and free.
on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:
jobs:
smoke:
name: ${{ matrix.os }} · py${{ matrix.python }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python: ["3.10", "3.12"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: Install (core + server, CPU — no GPU/image stack)
run: |
python -m pip install --upgrade pip
pip install -e ".[server]"
pip install llama-cpp-python --prefer-binary
pip install httpx pytest
- name: Import smoke — cross-platform modules load on this OS
run: |
python -c "import eli; from eli.utils.platform_compat import normalize_platform; print('platform:', normalize_platform())"
python -c "from eli.execution.executor_enhanced import open_browser; import eli.perception.os_controller; print('executor + os_controller OK')"
python -c "from api.server import app; print('server app OK')"
- name: Headless server smoke — /, /health, /v1/chat shape (no model needed)
run: |
python -c "from fastapi.testclient import TestClient; from api.server import app; c=TestClient(app); assert c.get('/health').status_code==200; assert c.get('/').status_code==200; print('server endpoints reachable (health + web UI)')"
- name: First-run DB autobuild (cross-platform paths)
run: |
python -c "from eli.core.paths import get_paths; get_paths(); import eli.memory as M; (M.get_memory() if hasattr(M,'get_memory') else None); print('data dirs + DB init OK')"
- name: Cross-platform unit tests (explicit self-contained files — no GGUF / display / generated artifacts)
run: >
pytest -q -p no:cacheprovider
tests/test_dual_gpu_settings.py
tests/test_user_model.py
tests/test_08_hardware.py
tests/test_smart_fit.py
tests/test_settings_extended.py
tests/test_shell_security_gate.py