| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
submitted CI: Gitslice checks for BotParley (typecheck, unit, build, local e2e)
- .gitslice/checks.yaml: four checks (typecheck, unit, build, e2e) on patchsets touching app/** or .gitslice/**,
run by the slice CI daemon grok-bot-ci (gs agent start --ci) or `gs ci`.
- app/scripts/ci.sh: Node 24, per-package-lock hard-linked node_modules cache, generates .void types on a fresh
tree, unsets Cloudflare credentials; e2e boots a throwaway dev server on a free port (fresh local D1, generated
dev key), warms it up, then runs MCP smoke, SSE, unread, owner links, banner, account menu, password UI.
- UI scripts write screenshots to $BP_SHOTS (default unchanged) so CI never overwrites the shared shots folder.
- sse.mjs: cap check tolerates not-yet-noticed closed streams; prints any Vite error overlay.
- DESIGN.md / README: how CI works.34e40aa93710 files changed | submitted | sunny | 0 | None |
draft CI: Gitslice checks for BotParley (typecheck, unit, build, local e2e)
- .gitslice/checks.yaml: four checks (typecheck, unit, build, e2e) on patchsets touching app/** or .gitslice/**,
run by the slice CI daemon grok-bot-ci (gs agent start --ci) or `gs ci`.
- app/scripts/ci.sh: Node 24, per-package-lock hard-linked node_modules cache, generates .void types on a fresh
tree, unsets Cloudflare credentials; e2e boots a throwaway dev server on a free port (fresh local D1, generated
dev key), warms it up, then runs MCP smoke, SSE, unread, owner links, banner, account menu, password UI.
- UI scripts write screenshots to $BP_SHOTS (default unchanged) so CI never overwrites the shared shots folder.
- sse.mjs: cap check tolerates not-yet-noticed closed streams; prints any Vite error overlay.
- DESIGN.md / README: how CI works.315fc65747 | draft | sunny | 0 | None |
submitted Web app: live updates over Server-Sent Events instead of 5 s polling
- GET /v1/events[?parley=<name>][&after=<seq>]: session-cookie SSE for signed-in humans (GET only, Origin /
Sec-Fetch-Site same-origin, signed bots refused, same ACL as reads, max 6 streams per human → 429).
- Served by the existing botparley-stream DO (instance h:<human>); events message (id = seq), unread, held,
members, parleys, sync, closed; 25 s ping comments, retry 3000, 10 min lifetime; Last-Event-ID / ?after resume
replays missed visible messages then sync. Dead streams dropped by flush probe / backpressure cap.
- Emits after commit (waitUntil) from send, approve/reject, join, member decide/remove, human role/remove,
invite accept, read. live_streams presence table (migration round_tusk) so idle humans' DOs aren't woken.
- Client: src/ui/live.ts EventSource with jittered 1 s→60 s backoff, 45 s fallback poll only while SSE is down,
closes after 30 s hidden and resyncs on return. Parley chat appends messages, unread bold/badges, banner and
tabs update live; dashboard unread pills update live. 5 s poll removed.
- Tests: test/sse.test.ts (13), scripts/sse.mjs e2e (npm run test:sse); DESIGN.md + llms.txt.68c14ab93927 files changed | submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
submitted SEO: prerendered landing HTML at / (no-JS content), title/description/canonical, Open Graph + Twitter card with 1200x630 OG image, favicon PNGs + apple-touch-icon + web manifest, JSON-LD (Organization, WebSite, WebApplication), robots.txt + sitemap.xml, api host noindex (+ own robots.txt, llms.txt canonical), workers.dev 301 to botparley.com, cache headers, inlined CSS + non-blocking fonts, underlined in-text linksa29504459220 files changed | submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
submitted Material 3 redesign (Muted Violet, seed #6D4DFF): M3 tokens light/dark, tonal surfaces, M3 shape/type, filled/tonal buttons, segmented tabs, FAB, chips, dialogs, toasts, filled inputs, success/warning harmonized roles, harmonized avatar set, solid tonal logo + favicon, no gradients; hero tint seam fix; WCAG AA contrast audit (test:contrast)f4339dcd5b9 files changed | submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| draft | sunny | 0 | path base conflict, refresh or rebase the changeset |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| draft | sunny | 0 | path base conflict, refresh or rebase the changeset |
submitted Mobile: no horizontal overflow on any view (grid/flex min-width:0, wrapping for long names/URLs/code, responsive modals/tables, compact top bar, toasts moved above content); conversation-first chat (list default, All messages kept), composer removed, New message FAB/button with mandatory-recipient compose sheet (search, multi-select, reply prefill); scripts/overflow.mjs audit (npm run test:ui), richer seed data55f6cef1e07 files changed | submitted | sunny | 0 | None |
submitted Deletion: human accounts (Account page danger zone, type-to-confirm, preview, sole-owner 409/delete_parleys, owned bots deleted, sessions revoked, handle tombstone), bots (owner UI + signed DELETE /v1/bots/{name} or /v1/me; key revoked, stream closed, webhook/memberships removed, name tombstone), parleys (owner, confirm name); deleted-bot/@deleted-user rendering; system message_rejected notice to sender bot; examples/poll-once.mjs; web URLs use parley names (id URLs rewritten); docs, tests, smoke0f3556a83a29 files changed | submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |
| submitted | sunny | 0 | None |