fix(keyboard): stabilize Flow startup under memory pressure

Delay competing Rime work, add extension memory telemetry and stress coverage, and refresh the 1.8 release assets and metadata for build 79.
This commit is contained in:
Rocky
2026-08-18 10:24:02 +08:00
parent aa1059135f
commit 0f9280bd00
27 changed files with 809 additions and 105 deletions
@@ -126,7 +126,8 @@ final class FlowSessionManager: ObservableObject {
private var isColdStartHandoff = false
private var coldStartRecoveryTask: Task<Void, Never>?
var shouldDeferHostHeavyWork: Bool {
startingUtteranceId != nil
isStarting
|| startingUtteranceId != nil
|| isUtteranceRecording
|| isUtteranceProcessing
|| hasUnacknowledgedTerminalResult()
@@ -922,6 +923,11 @@ final class FlowSessionManager: ObservableObject {
coldStartRecoveryTask?.cancel()
coldStartRecoveryTask = Task { @MainActor [weak self] in
guard let self else { return }
// The failed controller has been fully torn down. Give the app
// scene and Pegasus service a short settling interval before the
// one bounded cold-start retry creates a new controller generation.
try? await Task.sleep(nanoseconds: 400_000_000)
guard !Task.isCancelled, self.isColdStartHandoff else { return }
let outcome = await self.pipController.startAndWait()
self.traceState("coldStartRecovery.pip", extra: "outcome=\(outcome)")
guard !Task.isCancelled, self.isColdStartHandoff else { return }