Skip to content

Expose remote-generation status through EmbeddedServer #125

Description

@gaelic-ghost

Problem

SayBar is aligned on direct app ownership of SpeakSwiftlyServer.EmbeddedServer as its embedded runtime surface. In SpeakSwiftlyServer 11.0.0, HostStateSnapshot includes remoteGeneration, but the app-facing EmbeddedServer observable does not publish remote-generation status or apply that snapshot field in a way a host app can read directly.

That leaves SayBar with two bad options:

  • skip remote-generation diagnostics even though the data exists in host state snapshots
  • add a separate HTTP, MCP, or host-state side channel just to read this one diagnostic surface

SayBar should not need that side channel while the product baseline is direct embedded-runtime ownership.

Requested Surface

Expose remote-generation status through the public EmbeddedServer app-facing model, ideally in the same style as the existing observable snapshots for overview, queues, playback, runtime refresh, backend transitions, configuration, transports, network audio, and recent errors.

Useful behavior:

  • EmbeddedServer publishes the current remote-generation status as an observable snapshot or equivalent typed value.
  • EmbeddedServer applies HostStateSnapshot.remoteGeneration when applying host state updates.
  • The exposed value is stable enough for a host app like SayBar to render in Settings diagnostics without decoding raw HTTP/MCP payloads.

SayBar Context

SayBar will intentionally wait for a proper EmbeddedServer surface before adding remote-generation UI. We do not want to bypass EmbeddedServer or introduce duplicate runtime paths in the app just for this diagnostic.

Related SayBar follow-up branch: runtime/v11-followup-cleanup.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions