{"slug":"slack-to-steve","total":10,"limit":100,"offset":0,"since":null,"commits":[{"hash":"e1aa598","date":"2026-07-13 14:40:19 -0700","author":"Steve Abrams","subject":"slack-to-steve: Socket Mode client (socket.mjs) — Slack pushes messages over websocket, real-time, no polling/rate-limits; replaces the poller","body":""},{"hash":"9aae89c","date":"2026-07-13 10:24:22 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-13T10:24:15 (1 files) — socket.mjs","body":""},{"hash":"8c5a8be","date":"2026-07-13 09:55:14 -0700","author":"Steve Abrams","subject":"ingest: adaptive polling — 3s while a convo is active, 12s idle; 429 backoff w/ Retry-After","body":""},{"hash":"641bc93","date":"2026-07-13 09:52:39 -0700","author":"Steve Abrams","subject":"ingest: re-entrancy guard on tick() — prevents overlapping armed claude -p runs double-executing the same message","body":""},{"hash":"b51b813","date":"2026-07-13 01:33:33 -0700","author":"Steve Abrams","subject":"dashboard: pipe status + inbox + transcripts viewer on :9897 (pm2 slack-to-steve-dash)","body":""},{"hash":"bef02c4","date":"2026-07-13 01:17:16 -0700","author":"Steve Abrams","subject":"arm.sh: arm BOTH channels (Steve's call)","body":""},{"hash":"0116c5c","date":"2026-07-13 01:15:19 -0700","author":"Steve Abrams","subject":"slack-to-steve: armed claude -p path (rails-gated, per-channel scope) + watch loop + arm.sh (Steve-run)","body":""},{"hash":"27adc1d","date":"2026-07-13 00:51:47 -0700","author":"Steve Abrams","subject":"auto-save: 2026-07-13T00:51:43 (1 files) — exports/","body":""},{"hash":"0bd337e","date":"2026-07-13 00:30:11 -0700","author":"Steve Abrams","subject":"slack-to-steve: multi-channel poller — watch both #claude-chat and #claude-to-steve","body":""},{"hash":"de634c1","date":"2026-07-12 23:01:45 -0700","author":"Steve Abrams","subject":"slack-to-steve: pre-build two-way #claude-to-steve poller (DTD verdict A), un-armed pending read scope","body":""}]}