QwenVoice is the merged Apple-platform codebase that currently ships publicly as QwenVoice v1.2.3 on macOS and will ship its next macOS release under the forward Vocello brand. The repo carries a shared engine core, a macOS XPC-isolated runtime path, and an iPhone engine-extension path without reintroducing a secondary Python backend or standalone CLI surface.
The current milestone is operating on a macOS-first release track: macOS is the only public release target for the next ship, while iPhone remains a maintained compile-safe and deferred release surface.
As of main commit 63a5e02 (Guard macOS UI observation boundaries), the repo is back on a green rescue baseline:
- local
mainandorigin/mainare aligned at the same commit - GitHub
Project Inputspassed for63a5e02in run24973916220 - GitHub
Apple Platform QA Gatepassed for63a5e02in run24973916195, including contract, Swift, native runtime, hosted UI smoke, macOS build, iPhone build, and unsigned macOS release-artifact verification - local pre-push proof for
63a5e02passed./scripts/check_project_inputs.sh,./scripts/qa.sh validate,git diff --check,./scripts/qa.sh test --layer swift, and./scripts/build_foundation_targets.sh macos - prior local full release proof passed from
c6beacdwith./scripts/release.sh,./scripts/verify_release_bundle.sh build/Vocello.app, and./scripts/verify_packaged_dmg.sh build/Vocello-macos26.dmg build/release-metadata.txt; the hosted QA gate re-proved the unsigned release-artifact lane for63a5e02 - controlled local macOS acceptance on April 26, 2026 launched
build/Vocello.app, switched Custom Voice / Voice Design / Voice Cloning, typed a Custom Voice script, generated a 2-second preview, played it through the sidebar player, and persisted the output under~/Library/Application Support/QwenVoice/outputs/CustomVoice/
The next recovery work should keep this baseline stable: native SwiftUI only, no broad visual redesign, no speculative model work from screen mount, and no overlapping heavy build/test commands on the 8 GB local development machine. Manual app acceptance does not replace Instruments or signed-release proof, but it confirms the rescued app can complete the primary Custom Voice path locally.
- One shared Apple-platform codebase with explicit separation between UI orchestration and isolated engine execution
QwenVoiceCorenow owns the repo’s shared engine semantics for requests, results, events, load state, clone state, lifecycle state, and capability negotiation- Shared manifest-driven contract for model, speaker, and platform-variant metadata
- Shared app-layer playback and generation-persistence ownership now lives in
Sources/SharedSupport/instead of drifting across separate platform copies - Process isolation preserved on both platforms during generation and prewarm work
- Shared host lifecycle/capability primitives now live in
QwenVoiceCore, with both macOS XPC and iPhone extension paths negotiating through the same lifecycle vocabulary - The active macOS XPC helper now hosts
MLXTTSEnginefromQwenVoiceCore, so the repo no longer relies on a separate live macOS-native policy stack for load, prewarm, generation, and clone behavior - The iPhone host/runtime contract now runs through a monitor-backed extension manager that selects a preferred identity, replaces stale transports, and invalidates on teardown instead of leaving that lifecycle implicit in the UI shell
- Explicit low-RAM policy surfaces for the iPhone path, including guarded and critical memory bands
- The shared frontend-safe engine state surface now exists as
TTSEngineFrontendState, with matching macOS and iPhone store adapters - Restored repo workflows for project inputs, the Apple-platform QA gate, macOS release packaging/notarization, and iPhone TestFlight packaging
- Rebuilt
scripts/qa.shas the repo-owned QA orchestrator for validation, contract/source/native/iOS/UI test layers, diagnostics, and opt-in benchmarks - Maintained release scripts for signed/notarized macOS DMGs and iPhone archive/export flows
- Deterministic local foundation paths now separate package resolution, build, archive, and export work into explicit roots with
.xcresultevidence Apple Platform QA Gatenow treats.xcresultbundles as first-class artifacts for maintained build and archive/release lanes instead of depending on rawxcodebuildlog tails alone- An explicit public-homepage posture that keeps GitHub landing-page messaging aligned with the currently shipped
QwenVoice v1.2.3build, withVocelloframed as the forward rebrand that lands with the next macOS release
- The iPhone target is Vocello-branded, but the macOS target graph still keeps several internal
QwenVoicenames and bundle paths for continuity. - The supported macOS minimum-hardware path is the 4-bit
Speedlane onMac mini M1, 8 GB RAM;Qualityis selectable per generation mode when installed, but floor hardware defaults to Speed and Quality is not guaranteed there. - The repo compiles the iPhone app and engine extension, but official minimum-device proof still depends on real
iPhone 15 Provalidation under load. - Owned-device iPhone validation currently centers on
iPhone 17 Pro; that does not replace the separateiPhone 15 Proproof obligation. - The restored iPhone TestFlight workflow still depends on real Apple signing materials, provisioning, and App Store Connect credentials when run outside local source-only validation.
- The iPhone release/TestFlight path remains maintained, but it is intentionally deferred from signoff for the current macOS-first public release milestone.
- The macOS and iPhone release verifiers now rely on the checked-in capability and entitlement matrix, but floor-device proof and live signed distribution proof are still separate evidence obligations.
- The iPhone App Group remains intentionally narrow and file-based, but it is still a real cross-process dependency because model, output, voice, and cache state must be shared between the host app and the engine extension.
- The legacy
QwenVoiceNativeRuntimemodule has been retired (Session 6, May 2026). The active macOS helper path isQwenVoiceCoreend-to-end, with regression coverage migrated toQwenVoiceTests/MLXTTSEngineMockBackedTests.swiftandQwenVoiceTests/NativeStreamingSynthesisSessionTests.swift. - A plain signed
xcodebuild -scheme QwenVoice buildon shared local DerivedData can still be polluted by stale build output; the maintained deterministic compile-proof path is the isolated./scripts/build_foundation_targets.shflow. - Hosted UI smoke can still soft-skip macOS Accessibility/TCC or foreground-window issues; controlled release signoff must use
QWENVOICE_E2E_STRICT=1. - Manual local app launches and Computer Use remain useful after the qa.sh and build gates, especially for visual polish, real model-load checks, and visible UI benchmark validation. UI benchmark scripts still capture deterministic macOS Accessibility/AppleScript probes, timing, traces, process/memory snapshots, screenshots, and audio-QC artifacts.
- The public README is intentionally conservative during the refactor period, so public GitHub messaging is narrower than the internal repo architecture docs by design.
- Preview, debug, and manual-verification helper surfaces still need a keep/refactor/delete pass so the cleanup tracker can close with explicit ownership.
When documentation and code drift, trust:
Sources/project.ymlscripts/plus.github/workflows/docs/reference/current-state.md,docs/reference/engineering-status.md, anddocs/reference/release-readiness.md- other prose docs