Skip to content

[HT-68]: Replay viewer — step-through reconstruction on the real table #116

Description

@Maiz27

Parent

PRD-05: Game History & Replay — #111

What to build

Let the player open a saved match from history and replay it step by step on the real table. Build a reusable replay driver that wraps the existing transcript replay engine to expose each intermediate snapshot — step forward/back, seek, and per-round/turn markers — since the engine today returns only the final reconstructed snapshot. This driver is the shared foundation reused later by the branch sandbox, so build it once here.

The viewer renders each reconstructed snapshot on the actual table UI and lets the player navigate per applied action with round and turn markers. This slice is neutral — no coach overlay yet. A replay record that cannot be reconstructed (e.g. a version-gated transcript from an incompatible build) is caught and surfaced as "replay unavailable," never a crash.

Acceptance criteria

  • A reusable replay driver yields each intermediate snapshot and supports stepping forward/back and seeking to an arbitrary action, including across round boundaries.
  • Opening a replayable match from history shows the match on the real table and lets the player step through it per action.
  • Round and turn markers allow jumping between rounds.
  • A record that fails to reconstruct surfaces a graceful "replay unavailable" state instead of crashing.
  • The driver is domain-layer and Flutter-free; the viewer screen is a thin consumer.
  • Unit tests assert the driver's stepwise reconstruction matches the engine's result, including round-crossing and arbitrary seeks; a thin widget scenario covers viewer navigation and the unavailable state.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Labels

    ✅ readyWell-scoped, unblocked, and ready for implementation or review work to begin.🎨 designVisual design, interaction design, product tone, layout, animation, or design review work.📏 rulesClassic Hareeg rule-engine behavior, validation, turn state, scoring, or rule presets.🔹 p2Normal-priority work that matters but does not block the immediate critical path.🖥️ uiFlutter screens, navigation, table layout, controls, feedback states, or responsive UI.🧩 featureA vertical slice that delivers user-visible behavior or playable product capability.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions