Split output when running with --llm: addressed messages from owners go to stdout, everything else (chatter, logs, plugin loads) goes to info.log. Adds owner privilege level (superset of admin) for gating LLM access. Status lines (connect, ping, disconnect, reconnect) and bot replies also appear on stdout for session awareness. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.2 KiB
6.2 KiB
derp - Tasks
Current Sprint -- v1.2.9 LLM Mode (2026-02-19)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | --llm CLI flag: route logging to info.log, stdout for addressed messages |
| P0 | [x] | _is_addressed() method: DMs + nick-prefixed |
| P1 | [x] | Stdout routing: PRIVMSG in/out, PING, 001, disconnect, reconnect |
| P2 | [x] | Documentation update (USAGE.md CLI flags + LLM mode section) |
Previous Sprint -- v1.2.8 ASN Backend Replacement (2026-02-19)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | Replace MaxMind ASN with iptoasn.com TSV backend (no license key) |
| P0 | [x] | Bisect-based lookup in plugins/asn.py (pure stdlib) |
| P1 | [x] | update_asn() in scripts/update-data.sh (SOCKS5 download) |
| P2 | [x] | Tests: load, lookup, command handler (30 cases, 906 total) |
| P2 | [x] | Documentation update (USAGE.md data directory layout) |
Previous Sprint -- v1.2.7 Subscription Plugin Enrichment (2026-02-19)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | Twitch: viewer count in live announcements (` |
| P0 | [x] | YouTube: views, likes, published date in announcements (` |
| P0 | [x] | RSS: published date in announcements (` |
| P1 | [x] | Twitch check/list show viewer count |
| P1 | [x] | RSS _parse_date helper (ISO + RFC 2822) |
| P2 | [x] | Tests: twitch/youtube/rss enrichment (263 sub-plugin tests, 868 total) |
| P2 | [x] | Documentation update (USAGE.md announcement formats) |
Previous Sprint -- v1.2.6 Alert Backend Metadata Enrichment (2026-02-18)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | _compact_num helper (1k/1.2M formatting) |
| P0 | [x] | DB migration: extra column in results table |
| P0 | [x] | Backend metadata: 15 backends populate extra field |
| P1 | [x] | Move engagement metrics from titles to extra (HN, GH, GL, SE, DH, HF, KK) |
| P1 | [x] | Display: announcements, history, info show ` |
| P2 | [x] | Tests: TestCompactNum, extra in poll/history/info (91 total) |
| P2 | [x] | Documentation update (USAGE.md metadata table) |
Previous Sprint -- v1.2.5 Paste Site Keyword Monitor (2026-02-18)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | Pastemoni plugin (plugins/pastemoni.py) |
| P0 | [x] | Pastebin archive scraping + raw content matching |
| P0 | [x] | GitHub Gists API keyword filtering |
| P1 | [x] | Polling/subscription architecture (rss.py pattern) |
| P1 | [x] | State persistence + restore on connect |
| P1 | [x] | Command handler: add/del/list/check |
| P2 | [x] | Tests for pastemoni (15 test classes, ~45 cases) |
| P2 | [x] | Documentation update (USAGE.md) |
Previous Sprint -- v1.2.4 URL Title Preview (2026-02-17)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | URL title preview plugin (plugins/urltitle.py) |
| P0 | [x] | HEAD-then-GET fetch via SOCKS5 connection pool |
| P1 | [x] | _TitleParser: og:title/description + <title> fallback |
| P1 | [x] | URL extraction with !-suppression and balanced parens |
| P1 | [x] | Dedup/cooldown (5 min, 500 entry cache) |
| P1 | [x] | Skip non-HTML, binary extensions, FlaskPaste host |
| P2 | [x] | Tests for urltitle (11 test classes, ~40 cases) |
| P2 | [x] | Documentation update (USAGE.md) |
Previous Sprint -- v1.2.3 Paste Overflow (2026-02-17)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | Bot.long_reply() method with FlaskPaste overflow |
| P0 | [x] | Configurable paste_threshold (default: 4) |
| P1 | [x] | Refactor alert history to use long_reply() |
| P1 | [x] | Refactor exploitdb search/cve to use long_reply() |
| P1 | [x] | Refactor subdomain, crtsh, abuseipdb, dork to use long_reply() |
| P2 | [x] | Tests for paste overflow (10 cases) |
Previous Sprint -- v1.2.2 Connection Pooling + Batch OG (2026-02-17)
| Pri | Status | Task |
|---|---|---|
| P0 | [x] | Batch _fetch_og calls via ThreadPoolExecutor (alert.py) |
| P0 | [x] | Connection pooling via urllib3[socks] SOCKSProxyManager (http.py) |
| P1 | [x] | Cache FlaskPaste _ssl_context() at module level |
| P1 | [x] | Backward-compat urllib.error.HTTPError for 4xx/5xx in pooled path |
| P1 | [x] | Legacy opener fallback for context= callers (username.py) |
| P2 | [x] | Containerfile uses requirements.txt for deps |
Previous Sprint -- v1.2.1 Performance + Polish (2026-02-17)
| Pri | Status | Task |
|---|---|---|
| P1 | [x] | Cache default HTTP opener at module level |
| P1 | [x] | --tracemalloc CLI flag for memory profiling |
| P1 | [x] | Background seeding on !alert add (instant reply) |
| P1 | [x] | Per-backend error tracking with exponential backoff |
| P1 | [x] | Concurrent fetches for multi-instance backends (PeerTube, Mastodon, Lemmy, SearXNG) |
| P1 | [x] | retries parameter for derp.http.urlopen |
| P2 | [x] | Full alert titles (ACTION metadata + PRIVMSG content) |
| P2 | [x] | Remove title truncation from backend builders |
Completed
| Date | Task |
|---|---|
| 2026-02-17 | v1.2.3 (paste overflow with FlaskPaste integration) |
| 2026-02-17 | v1.2.1 (HTTP opener cache, alert perf, concurrent multi-instance, tracemalloc) |
| 2026-02-16 | v1.2.0 (subscriptions, alerts, proxy, reminders) |
| 2026-02-15 | Calendar-based reminders (at/yearly) with persistence |
| 2026-02-15 | v1.1.0 (channel filter, JSON logging, dork, wayback, tests) |
| 2026-02-15 | v1.0.0 (IRCv3, chanmgmt, state persistence) |
| 2026-02-15 | Wave 4 (opslog, note, subdomain, headers, exploitdb, payload) |
| 2026-02-15 | Wave 3 plugins (geoip, asn, torcheck, iprep, cve) + update script |
| 2026-02-15 | Admin/owner permission system (hostmask + IRCOP) |
| 2026-02-15 | SASL PLAIN, rate limiting, CTCP responses |
| 2026-02-15 | Wave 2 plugins (whois, portcheck, httpcheck, tlscheck, blacklist, rand, timer) |
| 2026-02-15 | CLI --cprofile flag |
| 2026-02-15 | Wave 1 plugins (dns, encode, hash, defang, revshell, cidr) |
| 2026-02-15 | Hot-reload, shorthand, plugin help |
| 2026-02-15 | Container deployment (Containerfile, compose, Makefile targets) |
| 2026-02-15 | crt.sh CT lookup plugin |
| 2026-02-15 | TLS verify option for self-signed certs |
| 2026-02-15 | Initial implementation (IRC, plugins, config, CLI) |