Skip to content

Kick K5: commands answered by the bot, subscription diagnostics, service.log (1.1.0, relay 0.2.0) - #5

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

facusantillo merged 2 commits into
mainfrom
kick-k5

Conversation

@facusantillo

@facusantillo facusantillo commented Oct 18, 2026 •

Copy link
Copy Markdown
Owner

What this is

Stage K5 of docs/PRD-kick.md: the commands the relay forwards are now answered in chat by the bot, without Streamer.bot. Plus the diagnostics the first real connection showed were missing, and a log file for the hidden service. Still build 1.1.0 (that release is not published yet, so the number does not move), relay 0.2.0.

Host (DustPlanner.Kick / Host / Panel)

  • KickChatBridge: every chat.command goes through the same ChatResponder as GET /api/chat/… — same texts, prefix, language and cooldown clocks — and leaves as chat.send with reply_to_message_id, so the bot's line is a reply to the viewer's. The shared clocks mean a Streamer.bot still polling cannot double an answer inside the cooldown.
  • The card shows what happened to the last command: answered / in cooldown / turned off / could not be sent; the same goes to the log as Kick: !deck → answered.
  • Two notices on the card for the "Connected but nothing happens" cases:
    • red: the relay reports no chat.message.sent subscription (Kick refused the webhooks — the app's switch was off, exactly what we hit at 12:53);
    • yellow: something on this PC asked /api/chat in the last 15 min while connected (Streamer.bot) → turn the duplicated commands off there.
  • service.log in %LocalAppData%\DustPlanner (2 MB, one rotation): the service the plugin starts runs hidden, and until now its Kick: lines went nowhere.

Relay 0.2.0 (cloud/kick-worker)

  • hello carries subscriptions[]; ensureSubscriptions on each connection sends a subscriptions frame when the set changes (so the red notice clears itself once webhooks are on).
  • One log line per webhook (relay: webhook <type> <action>, never the body) and per refused subscription (Kick's short reason) → the Cloudflare Logs tab answers "is Kick talking to us?".

Tests

198 .NET (+9) and 34 vitest (+1): bridge (answer as reply, shared cooldown, disabled command, missing-data line, subscriptions in hello / announced / absent on old relays, local-request throttling), host flow with the native answer and the duplicate-bot flag over SSE, file logger (write + rotate), worker hello/announcement. The connector tests now give a second pairing its own folder: reusing the first one from disk restarted the session and could swallow a frame the test pushed (the occasional A_relay_error_frame… timeout).

After merging

  1. Tag worker-v0.2.0 on main → /health says "version":"0.2.0".
  2. I build DustPlanner-v1.1.0.zip again from main for VERIFICACION K6: !deck answered by the bot with Streamer.bot closed, note which account the answer shows under, cooldown and the yellow notice with Streamer.bot on.
  3. Tag v1.1.0 when you want the release; the next functional PR after it is 1.2.0.

Docs: kick.md (commands in chat, troubleshooting), kick-streamerbot.md, exporter-install.md (logs), VERIFICACION K5 ✔ + K6, PROGRESO, PRD protocol table, relay README (webhooks switch).

https://claude.ai/code/session_01RaFitGHCUzwkHrFTjz8qJb


Generated by Claude Code

…ice.log (1.2.0, relay 0.2.0)

Host: KickChatBridge routes every chat.command through the same
ChatResponder as /api/chat (same texts and cooldown clocks) and sends
the text as chat.send replying to the viewer's message; the outcome
(answered / cooldown / ignored / send_failed) is published on the Kick
card. /api/chat marks local requests while connected so the card warns
about a second bot (Streamer.bot). The hello's `subscriptions` and the
new `subscriptions` frame land in the state: an empty list while
connected shows a red notice instead of a silent "Connected" (what the
first real connection ran into with the app's webhooks off). A rotating
service.log under the data folder, since the service the plugin starts
runs hidden.

Relay 0.2.0: hello carries `subscriptions`, ensureSubscriptions on
connection announces changes, one log line per webhook (type + action,
never the body) and per refused subscription.

Tests: KickChatBridgeTests (7), host flow extended with the native
answer and the duplicate-bot flag, FileLoggerTests (2), worker hello /
announcement (34 vitest). Connector tests isolate a second pairing in
its own folder (reusing the first pairing from disk restarted the
session and could swallow a pushed frame).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RaFitGHCUzwkHrFTjz8qJb
The version belongs to the published GitHub release, not to the PR:
v1.1.0 has not been tagged yet, so K5 ships under it too and the minor
moves with the first functional delivery after that release. Rule
recorded in PRD §11 and PROGRESO.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RaFitGHCUzwkHrFTjz8qJb
@facusantillo facusantillo changed the title Kick K5: commands answered by the bot, subscription diagnostics, service.log (1.2.0, relay 0.2.0) Kick K5: commands answered by the bot, subscription diagnostics, service.log (1.1.0, relay 0.2.0) Oct 18, 2026
@facusantillo
facusantillo merged commit 4a4f063 into main Oct 18, 2026
3 checks passed
@facusantillo
facusantillo deleted the kick-k5 branch October 18, 2026 11:27
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