Skip to content

Kick K7 + K8: stream sessions, reminders, redemptions, MCP tool; privacy page and docs (1.1.0) - #8

Merged
facusantillo merged 2 commits into
mainfrom
kick-k7
Oct 18, 2026
Merged

facusantillo merged 2 commits into
mainfrom
kick-k7

Conversation

@facusantillo

Copy link
Copy Markdown
Owner

What this is

The last two stages of docs/PRD-kick.md in one PR: K7 (around the stream) and K8 (beta and publication). Still build 1.1.0; the relay stays at 0.3.0 (nothing changed there — K7's relay side shipped with K3).

K7 — Around the stream

  • Stream record: stream_session (migration 003) + StreamSessionRepository. A session opens on stream.status live (rank of the moment copied in) and closes on the next not-live. Its record and decks are the games started inside its window, computed on read, so games imported later count. Panel → Games → Streams; GET /api/stream-sessions; MCP get_stream_sessions.
  • End-of-stream line (off by default): Directo terminado: 12-7 (63 %) · de Diamante 5 a Diamante 2 / Stream over: …; once per session, only with games; "se queda en" when the rank did not move.
  • Prediction reminder (default: panel): a game ending while live → toast in the panel and on /status (optional beep there); panel+chat also posts Terminó: victoria — ¡resolvé la predicción!. The game already finished when the service started never reminds.
  • Redemptions in the overlay (off by default): a 6 s card with reward and viewer, queued, scaled with the bar; once per redemption id (pending → accepted shows once), reward-id filter honoured.
  • Plumbing: KickStreamService, KickNotices → /events emits kick.reminder / kick.redemption.

K8 — Beta and publication

  • site/privacy.html + site/es/privacidad.html: what you authorise, what is stored where and until when, the public page, who answers, how to remove everything. Linked from both home pages.
  • README: a Kick section + the Kick projects in the layout table. kick.md covers the whole connection; panel.md / overlay.md updated.
  • The beta stays private (ALLOWED_SLUGS = "tsukuru-tv"); VERIFICACION K9 says how to invite a streamer (add a slug, tag worker-v0.3.x) or open it (empty the value).

Tests

210 .NET (+12: repository, the whole K7 chain over the fake relay and a Power.log, stream texts, MCP tool, schema 3) and 67 vitest.

After merging

  1. I rebuild DustPlanner-v1.1.0.zip from main for VERIFICACION K8 — a short real stream: row live, reminder on game end, redemption card, summary in chat at the end.
  2. When that passes: tag v1.1.0 (K9). The Pages deploy publishes the privacy pages with it.

Generated by Claude Code

…demptions, MCP tool

Store: stream_session (migration 003) and StreamSessionRepository in
LogTracker: a session opens on stream.status live (rank of the moment
copied in) and closes on the next not-live; its record and decks are the
games started inside its window, computed on read, so games imported
later count too.

Host: KickStreamService reacts to the connector's live state (sessions,
and the summary "Stream over: 12-7 (63%) · from Diamond 5 to Diamond 2"
to chat when the streamer turned it on, once per session, only with
games), to a game ending while live (kick.reminder notice on /events,
optional chat line) and to redemptions (kick.redemption notice, once per
id, filtered as configured). KickNotices fans notices out to /events.
GET /api/stream-sessions.

UI: overlay shows a 6 s channel-points card (queued, scaled with the
bar); the /status page shows the reminder as a toast with an optional
beep; the panel toasts it too and lists the streams under the games
page; Settings → Kick labels drop "later update". MCP: get_stream_sessions.

Tests: StreamSessionRepository (2), KickStreamTests end to end over the
fake relay and a Power.log (session open with rank → redemption once →
game ends → reminder + chat line → stream ends → session closed with
the game, summary posted once), stream texts (2), MCP tool listed and
callable, schema version 3.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RaFitGHCUzwkHrFTjz8qJb
…stays private

site/privacy.html and site/es/privacidad.html (what you authorise, what
is stored where and until when, the public page, who answers in chat,
how to remove everything), linked from both home pages. README gains a
Kick section and the Kick projects in the layout table; kick.md now
covers the whole connection (K7 "around the stream"); panel.md and
overlay.md list the new endpoints and the redemption card. VERIFICACION
K7 ticked, K8 (a short real stream) and K9 (release + beta handling)
added; PROGRESO K7/K8 sections; PRD §11 notes 8 and 9. ALLOWED_SLUGS
stays "tsukuru-tv" until the maintainer decides the go-live.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RaFitGHCUzwkHrFTjz8qJb
@facusantillo
facusantillo merged commit 1204f26 into main Oct 18, 2026
1 check passed
@facusantillo
facusantillo deleted the kick-k7 branch October 18, 2026 17:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants