Slack Idea Board
repo: ~/Projects/slack-idea-board · 27 commits · 0 in last 24h, 0 in last 7d ·
Skills used
- /sweep-22
- /open1
- /data1
- /claude1
- /code1
- /copies1
- /sweep-31
- /index1
- /gen1
- /apple-touch1
- /about1
Creative ideas + design notes
Commits with substantial prose (≥120 chars) — the rationale behind each move.
65a7c86 · 2026-09-16 · idea-board: harden post/open links with scheme allowlist + ship #claude-to-steve column refactor
safeUrl() blocks javascript:/data: hrefs (esc() only stopped attribute breakout,
not the scheme) on both the c1 post link and the c3 Open link — the board is
auth-gated and can POST /api/build, so a hostile feed URL must not be clickable script.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
b9fa503 · 2026-09-15 · slack-idea-board: fix stale aa_fit->good_build comment + serialize launchClaude to close the double-launch window race (captures in-flight good_build enrich refactor)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pnon7dut9MfPekhhm9YY4Q
48fce21 · 2026-08-25 · creds-safe fetch guard: resolve relative fetch vs credential-free location (creds-in-URL trap)
Fleet inoculation — opening this basic-auth app with credentials in the URL
poisoned document.baseURI and made relative fetch('/api/…') throw. Guard resolves
non-absolute request URLs against location instead. Ref: creds-in-url-fetch-guard-fleet-pattern.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c788fcd · 2026-07-25 · gate ideas.agentabrams.com by default (admin/DW2024!), was public since 07-23
Flip BASIC_AUTH default from '' (public) to the unified admin credential so the
Slack idea board matches every other internal DW app. Public path is Cloudflare
tunnel -> :9820, so gating the app itself gates the public URL. Set BASIC_AUTH=''
to make it public again.
1ad54c9 · 2026-07-23 · Harden /api/build against terminal-spawn storms
Root cause: a /5x verification run (click-every-control pass over 3 sweeps ×
real browsers) clicked every 'Build new project ▶' / 'Add new skill ▶' button,
each of which POSTs /api/build and spawns a real iTerm2 tab — opening hundreds
of terminals. The endpoint had zero guards.
Three independent guards now stand between a click and a spawn:
- server requires explicit confirm:true (no-confirm = preview only) so any
automated click-through no longer spawns anything
- per-(id|step) cooldown dedupe drops rapid repeats
- global rolling-window cap (default 5/30s) is a hard circuit breaker
- frontend adds a native confirm() dialog (defeats automated click-through) and
a durable in-flight lock that survives re-render (DOM disabled did not)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
189d8c3 · 2026-07-23 · Pin autonomous Claude CLI invocation to Opus (--model opus)
Bare 'claude' spawn inherited the CLI's drifting default model; pin to Opus
so this build/gen loop always runs on the intended model.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
File tree
8 files tracked. Click any to browse the source at HEAD.
rendered in 2ms