Tags

Tags give the ability to mark specific points in history as being important
  • v3.17.0

    v3.17.0 - Enhanced Resilience & Fresh Start
    
    Fixes critical issue where daemon could appear healthy while notification
    stream silently died, causing hours of missed messages.
    
    - Track all notifications (including receipts)
    - Restart if no notifications for 30 minutes (even if pings succeed)
    - Detects "healthy daemon, dead notification stream" scenario
    
    - Skip messages older than 5 minutes at startup
    - Ensures fresh, responsive start after recovery
    - No more churning through hours of backlog
    
    - Fixed 8-hour message outage caused by silent notification stream death
    - Daemon was responding to pings but not delivering messages
    
    1. TCP Keepalive (10s) → dead connections
    2. Heartbeat (30s) → unresponsive daemon
    3. Notification monitoring (30 min) → silent stream death [NEW]
    4. Skip old messages (5 min) → fresh start [NEW]
    5. RPC reconnect (5 attempts with backoff)
    6. Watchdog ping (2 min)
    7. Circuit breaker (5 restarts in 5 min)
  • v3.16.0

    v3.16.0 - Daemon Resilience & Auto-Recovery
    
    Major stability improvements to prevent and recover from signal-cli daemon failures.
    
    - TCP keepalive (10s) for faster dead connection detection
    - 30-second heartbeat to detect unresponsive daemon
    - Proactive reconnect on socket errors (EPIPE, ECONNRESET)
    - Connection stats tracking for monitoring
    
    - Circuit breaker prevents restart loops (max 5 in 5 min)
    - Exponential backoff between restarts (2s to 60s)
    - Auto-restart on daemon exit/error events
    - Auto-restart on RPC disconnect
    - Critical alerts when circuit breaker trips
    
    1. TCP Keepalive (10s) → detects dead TCP connections
    2. Heartbeat (30s) → detects unresponsive daemon
    3. RPC Reconnect (5 attempts with backoff)
    4. Daemon Watchdog (2 min) → backup health check
    5. Circuit Breaker → prevents restart loops
    
    - New VERIFICATION_CHECKLIST.md for operational verification
    - Updated LESSONS_LEARNED.md with daemon failure patterns
  • v3.15.2

    v3.15.2: Fix !sngtg verification timeout bug, add database docs
  • v3.15.1

    v3.15.1: Fix JSON-RPC removeMember handling
  • v3.15.0

    v3.15.0: Command extraction progress
    
    - Extract info commands (wiki, forum, faq, docs, zeroeth)
    - Extract utility commands (cleaner)
    - Daemon watchdog for auto-restart
    - Total extracted commands: 17
  • v3.14.0

    v3.14.0 - Refactoring & Reliability Improvements
    
    Major Changes:
    - Extract types to bot.types.ts for better code organization
    - Create modular command system with command-registry.ts
    - Move 10+ commands to src/bot/commands/ directory
    - Add math utilities (csv-analyzer, graph-engine, math-engine)
    - Add unit tests for text-formatting
    
    Bug Fixes:
    - Increase daemon startup timeout from 30s to 60s for cold starts
    - Add progress logging during daemon startup
    - Fix auto-start reliability on container restart
    
    Cleanup:
    - Delete unused signal-bot.ts (replaced by signal-bot-v2.ts)
    - Add CHORE_ROADMAP.md for technical debt tracking
    - Add scripts for dice game cleanup
  • v3.13.0

    v3.13.0 - Identity Management & Wiki Consolidation
    
    - New script: `find-unregistered-users.js` - Detect abandoned Signal accounts
      - Uses `UNREGISTERED_FAILURE` response to find accounts trust command misses
      - Caches results for fast subsequent operations
      - `--scan` to detect, `--remove` to clean up, `--list` to view cached results
    - Supporting scripts: `trust-all-users.js`, `remove-failed-users.js`, `list-failed-users.js`
    - Key discovery: `sendReceipt` reveals true registration status vs `trust` command
    
    - Consolidated all wiki content to dedicated wiki repository
    - New wiki page: Safety Numbers & Identity - explains trust concepts and scripts
    - Expanded sidebar with Games, Storage, Development, and Administration sections
    
    - Removed `docs/wiki/` directory (content moved to wiki repo)
    - All documentation now lives in the wiki for easier community editing
    
    - `scripts/find-unregistered-users.js` - Main unregistered user detection
    - `scripts/trust-all-users.js` - Bulk trust identities
    - `scripts/remove-failed-users.js` - Remove trust failures from groups
    - `scripts/list-failed-users.js` - List failed users with group counts
    - `scripts/check-group-members.js` - Check specific group for failures
    - `scripts/list-group-signal.js` - List group members from signal-cli
  • v3.12.0

    v3.12.0 - Breakout Room Enhancements & DM Commands
    
    Major Features:
    - Enhanced breakout room summaries with SEO optimization and AI-generated tags
    - DM commands for verified members (personal productivity, Q&A, Outline)
    - Daily community rollups and sender key refresh scheduler
    - File attachment summarization in breakout reports
    - Smart duplicate prevention for question breakouts
    
    Breakout Room Improvements:
    - AI-enhanced Discourse posts with "What You'll Learn", keywords, and tags
    - File summaries with structured format (What This Is, Key Points, Who Should Read)
    - Technologies & Tools section for technical discoverability
    - !breakout -q <hash> now adds users to existing room (prevents duplicates)
    - --new flag to force create new breakout room for questions
    - 2-minute archive delay before member removal (configurable)
    - DISCOURSE_BREAKOUT_CATEGORY env var for separate category routing
    - Leverages existing IrregularChat file archive for document context
    
    DM Commands:
    - Verified members can now use commands in DMs
    - Q&A commands (!ask, !answer) work in DM
    - Outline/forum commands available in DM
    - DM access restricted to verified community members only
    
    UX Improvements:
    - Bold formatting in help menu and auto-summaries
    - Markdown enabled in AI prompts (Signal parser compatible)
    - Text-formatting utilities for truncation and timestamps
    - Standardized DM notifications and error messages
    - Eliminated dead-end success messages
    - Help meme sent separately to avoid text width issues
    - !tils command: -a (all groups) and -m (mine) flags
    
    Bug Fixes:
    - !sn command auto-trusts user identity first
    - !request @user standardized (prevents self-vouching)
    - Fixed formatForSignal to preserve markdown styles
    - Removed duplicate title from news link responses
    - PeerTube file size limit to prevent OOM crashes
    - Updated command count to 70+ in help menu
    
    Database:
    - Migration file numbering fixed (001-017 sequential)
    - Migrations for intro forum tracking and scheduled rollups
    
    Documentation:
    - Comprehensive breakout room documentation
    - !sngtg command documented
    - TIL section added to wiki
    - Branch naming conventions documented
    - Phase 2 roadmap updates
    
    Environment Variables:
    - DISCOURSE_BREAKOUT_CATEGORY - Category ID for breakout summaries
    - BREAKOUT_ARCHIVE_DELAY_SECONDS - Delay before archiving (default: 120)
    
    Full Changelog: https://git.irregularchat.com/irregulars/Community-Signal-Moderation-Bot/compare/v3.11.0...v3.12.0
  • v3.11.0

    v3.11.0 - Mentions, Markdown Styling & UX Polish
    
    Major Features:
    - Full Markdown styling support for Signal messages (bold, italic, strikethrough, spoiler, monospace)
    - Proper Signal @mentions throughout verification flow
    - Multi-source display name resolution (DB → Cache → Signal API)
    - !inquire command for Q&A follow-up questions
    - Research Tools integration for enhanced news analysis
    
    @Mentions Now Work In:
    - !request @NewUser - New user gets notified
    - Verification "Do you vouch?" - Voucher gets notified
    - Group welcome messages - Voucher mentioned
    - Breakout room joins - New member mentioned
    - Entry/INDOC welcome - New member + voucher mentioned
    
    Improvements:
    - deploy.sh now syncs compose.yml and verifies env vars
    - Fixed textStyles parameter (was textStyle) for signal-cli
    - Display name extraction from mention text (not just DB)
    - Breakout room DMs with catch-up summaries
    
    Database:
    - 013_add_qa_inquiries.sql - Q&A inquiry tracking
    
    Documentation:
    - Wiki: Text Formatting page added
    - Phase 2 Roadmap created (ROADMAP_PHASE_2.md)
    - UX Guide compliance tracking
    
    Bug Fixes:
    - Question hash FK instead of question_id
    - Various build fixes for attachments/sendMessage
  • v3.10.0

    v3.10.0 - Per-group Auto-Scan Toggle
    
    Features:
    - Add auto_scan_enabled setting to toggle virus scanning per group
    - New command: !room autoscan on/off for group admins
    - Auto-scan defaults to ON for all groups
    
    Fixes:
    - Fix auto-archive to always save files to database for !rollup tracking
    - Files now tracked even if MinIO upload fails
    
    Database Migrations:
    - 010_breakout_summary_columns.sql - Breakout room summary fields
    - 011_auto_scan_setting.sql - auto_scan_enabled column
  • v3.9.0

    v3.9.0 - Q&A Enhancements & Breakout Outline Integration
    
    - `!question <hash>` - Expanded question view with full context
    - `!clarify <hash> <text>` - Add clarifications/elaborations to questions
    - `!accept <hash> <answer_id>` - Accept answer as solution (DMs answerer)
    - `!reject <hash> <answer_id> <reason>` - Reject with reason (DMs answerer)
    - Full question text in `!questions` list (no truncation)
    - Cross-group question lookup for expanded view
    
    - Outline document auto-created when breakout starts
    - Public share link in welcome message
    - Outline link in late joiner catch-up DM
    - Document updated with full summary when session ends
    
    - New tables: q_and_a_clarifications, q_and_a_answer_responses
    - New columns on q_and_a_answers: status, rejection_reason, answerer_uuid
    - New columns on breakout_rooms: outline_document_id, outline_url
  • v1.1.0

    Release v1.1.0: Rollup enhancements and security hardening
  • v3.8.0

    v3.8.0 - Uncensored AI command
  • v3.7.0

    v3.7.0 - Discourse Events Integration
  • v3.6.1

    feat: Q&A broadcast support
    
    Features:
    - !ask --broadcast: Share questions to all groups when asking
    - !shareq: Share existing questions with keyword targeting
      - !shareq <id> suas counter - Groups matching keywords
      - !shareq <id> all - All groups
      - Reply to question with !shareq
    
    Changes:
    - Added handleShareQuestion method
    - Updated help menu with Q&A broadcast commands
    - Updated wiki documentation
  • v3.6.0

    feat: Keyword-based breakout broadcast targeting
    
    Features:
    - !broadcast command now accepts keywords to match groups by name
    - !broadcast suas counter fpv broadcasts to groups matching those keywords
    - !broadcast all broadcasts to all groups
    - Improved breakout announcement tracking with fallback lookups
    
    Changes:
    - Track initial breakout announcements in parent group
    - Add timestamp range matching (within 5 seconds) for announcements
    - Add parent group fallback when timestamp matching fails
    - Update help menu and wiki documentation
  • v3.5.1

    v3.5.1 - Fix MinIO presigned URL signature validation
    
    - Fix presigned URL generation to preserve all AWS SDK v3 parameters
    - Use separate presignClient with PUBLIC endpoint for correct signatures
    - Update documentation to reflect MinIO as primary storage
    - Add RustFS documentation for historical reference
    
    - Fixed 403 Forbidden errors on presigned URLs (signature validation)
    - Fixed NoSuchKey errors by syncing Topics directory to MinIO bucket