Skip to content

FEAT-012 T167: push-based live updates — needs app.events.subscribe streaming (FEAT-011 v1.x) #36

@brettheap

Description

@brettheap

FEAT-012 deferred task — tracking issue (filed per constitution Development Workflow / CLAUDE.md; closes analyze Round 11 F2).

What

Push-based live updates (FR-064): live surfaces (Events, Queue, attention queue, notifications, master-summary "last activity") should reflect a new daemon-side event within the 2-second budget via a real subscription instead of polling.

Why deferred / blocked

True push needs the daemon to expose a streaming subscription method — app.events.subscribe(params: { since_cursor?, classes? }) returning SSE-style frames { ok, app_contract_version, stream: { class, payload } } inside the existing Unix-socket framing. That method does not exist in FEAT-011 (0 matches in main).

Upstream status — not yet created

Pre-specced in specs/012-flutter-control-panel/upstream-feat011-extension-draft.md §(c); to be built in the proposed FEAT-015 daemon feature (alongside app.handoff.draft).

Unblock steps

  1. From root on main, /speckit.specify FEAT-015 adding app.events.subscribe (seed from draft §c); plan → tasks → implement (must preserve FEAT-011 FR-003a/b framing + caps).
  2. FEAT-012 client side: replace the ref.invalidate(...) polling Provider with the streaming subscription across the Phase 4-8 list providers; flip T154(c) to measure push propagation.

Ships today (interim, conformant)

Per-surface polling at research-R-32 cadence (1 s foreground / 5 s background / paused when minimized) — already meets the FR-064 2 s budget at foreground cadence.

Refs: FEAT-012 task T167, FR-064, swarm-review M-11, analyze C3.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions