Skip to content

Ci/test install - #2701

Closed
djsofianeofficial wants to merge 2 commits into
debpalash:mainfrom
djsofianeofficial:ci/test-install
Closed

djsofianeofficial wants to merge 2 commits into
debpalash:mainfrom
djsofianeofficial:ci/test-install

Conversation

@djsofianeofficial

@djsofianeofficial djsofianeofficial commented Oct 10, 2026 •

Copy link
Copy Markdown

Summary

Changes

Type

  • 🐛 Bug fix
  • ✨ New feature
  • ♻️ Refactor
  • 📝 Documentation
  • 🧪 Tests
  • 🔧 CI / Build
  • 🚀 Release prep

Testing

Checklist

  • I've tested this locally
  • Every commit author has signed the CLA (the CLA check tells you how)
  • I've updated relevant documentation (if applicable)
  • No local machine paths, logs, or personal env details in this PR
  • Maintained version files are in sync (if an owner-requested bump): root package.json, pyproject.toml, backend/core/version.py, and lockfiles
  • If this PR changes runtime behavior, the regression fixture at tests/fixtures/omnivoice_data/ still loads green on the smoke-matrix CI job (macOS + Windows + Linux)

Release cadence

VoiceStudio ships continuous-to-main — no release candidates, no soak windows.
Every merged PR is immediately part of rolling source (main) and Docker
:latest. Electron artifact rehearsals validate desktop packages without publishing.
Version bumps require owner approval; validated releases are tagged from main
and published explicitly under the release checklist.
Users who want stability install an Electron release or pin Docker :stable.

mergetest and others added 2 commits July 2, 2026 14:06
…model smoke (no release)

New workflow (dispatch + push on ci/test-install only) that mirrors
release.yml's bundle steps (uv/ffmpeg sidecars, same tauri build targets)
but unsigned, read-only token, artifacts-only — no tag, no release, no
updater manifest, no version stamping. A parallel per-OS job replicates the
app's first launch headlessly (uv sync --frozen --no-dev), boots the
backend, waits for the required default model download, and runs one real
/generate synthesis.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…oken), graceful skip for Intel-mac torch gap

Two first-run smoke fixes from run 28576798706:
- macOS Apple Silicon: GH runners advertise torch MPS but the virtualized
  Metal shared pool cannot allocate (256-byte alloc OOMs). Hide MPS via a
  CI-only sitecustomize on PYTHONPATH so device auto-detect picks CPU.
- macOS Intel: uv sync --frozen fails because torch 2.8.0 ships no macOS
  x86_64 wheels (PyTorch dropped Intel macs after 2.2.x) — a real end-user
  first launch fails identically. Surface as a loud warning + skip instead
  of a permanently red leg; product-level dependency gap reported separately.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Thank you for contributing to VoiceStudio. Before this pull request can merge, everyone who contributed to it must sign the Contributor License Agreement 1.0 once. You keep your copyright; the agreement lets Yupcha Softwares Private Limited, the company that maintains VoiceStudio, ship your work in both the AGPL-3.0 app and commercial builds.

Still to sign: @djsofianeofficial, @claude

To sign, post this as a new comment on its own line:

I have read the VoiceStudio CLA 1.0 and I hereby sign it.

Commits we cannot link to a GitHub account:

  • mergetest <test@local>

Add that email to your GitHub account (Settings → Emails), or rewrite the commits with an email that is on it (git commit --amend --reset-author, or an interactive rebase), then push. Each push re-runs this check.

Comment recheck to run the check again.

@greptile-apps

greptile-apps Bot commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Retrigger

[High impact] Adds a new CI workflow that builds and tests the app.

Fix the readiness wait before merging so a skipped startup load does not cause a false first-run failure.

Fix All in Claude CodeFindings

  1. P1 Skipped loading makes smoke fail ▶

Summary

Adds an artifact-only installer rehearsal and a cross-platform backend synthesis smoke test.

  • Test builds create unsigned installers on four desktop platforms.
  • First launch gets a real backend and audio smoke test on four platforms.

Reviews (1) · Last reviewed commit: "ci(test-install): round 2 — CPU-force ma..." · Reviewed by Greptile

Comment on lines +520 to +525
while [ $ELAPSED -lt 1800 ]; do
LAST=$(curl -sf "$BASE/model/status" 2>/dev/null || echo '{}')
STATUS=$(printf '%s' "$LAST" | python -c "import sys,json; d=json.load(sys.stdin); print(d.get('status','?'))" 2>/dev/null || echo '?')
DETAIL=$(printf '%s' "$LAST" | python -c "import sys,json; d=json.load(sys.stdin); print(d.get('sub_stage',''), d.get('progress',''), d.get('error',''))" 2>/dev/null || echo '')
echo " [${ELAPSED}s] model status: $STATUS $DETAIL"
if [ "$STATUS" = "ready" ]; then READY=1; break; fi

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Skipped loading makes smoke fail

If the startup Hugging Face probe times out or briefly fails, preload_model() exits without loading anything, so this loop waits 30 minutes and fails before reaching /generate, even if the connection has recovered. /model/status only reports state; polling it cannot restart the skipped load. Trigger loading explicitly before waiting for ready, or let /generate start the load with a cold-start timeout.

Fix in Claude Code

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