inboxer/docs/CHANGELOG.md
cclohmar 8bb9ff067b Phase 2: IMAP Client & Background Worker (Version: 2026-04.2)
- IMAP client package with TLS/STARTTLS connection management, unseen fetching, batch fetching by UID range, message move/copy operations, folder management
- Background worker with steady-state (unseen polling) and catch-up (UID range backlog) modes, per-user IMAP connections, test mode support, placeholder AI classifier
- Database: GetUsersWithAutoStart() for worker user discovery
- Wired worker into main.go with graceful shutdown
2026-04-23 11:02:02 +00:00

3.2 KiB

Changelog

All notable changes to inBOXER will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[2026-04.2] - 2026-04-23

Added

  • IMAP client package (src/internal/imap/):
    • Secure connection management (TLS & STARTTLS) with auto-reconnect
    • Fetch unseen messages with envelope and body snippet extraction
    • Batch fetching by UID range for catch-up processing
    • Message move/copy operations (RFC 6851 UID MOVE)
    • Ensure folder existence before operations
    • Unit tests covering error paths (connection failures, not-connected scenarios)
  • Background worker package (src/internal/worker/):
    • Steady-state mode: polls unseen emails at configurable interval
    • Catch-up mode: processes backlog in batches with cooldown
    • Per-user processing with isolated IMAP connections
    • Test mode support (logs without moving emails)
    • AI classifier interface (placeholder routes everything to "Other")
    • Graceful shutdown with signal handling
    • Unit tests for classifier and lifecycle
  • Database: GetUsersWithAutoStart() method for worker user discovery

Changed

  • Replaced placeholder background worker with full IMAP-driven implementation
  • Worker now creates target folders automatically on connect
  • Email processing respects per-user poll interval and batch size

Fixed

  • N/A (initial release)

Added

  • Initial repository structure per PROJECT_PLAN.md
  • Go module initialization with core dependencies (go-imap, gorm, sqlite, slog, gorilla)
  • Git repository setup with remote configuration using .env credentials
  • Basic documentation files (README, CHANGELOG, LICENSE, AGENTS.md)
  • Directory hierarchy for modular packages:
    • src/cmd/ - Main orchestrator
    • src/internal/auth/ - OTP authentication package
    • src/internal/imap/ - IMAP client (placeholder)
    • src/internal/ai/ - DeepSeek AI integration (placeholder)
    • src/internal/db/ - SQLite database with GORM models and encryption
    • src/internal/worker/ - Background worker (placeholder)
    • src/web/ - Web interface (templates + static)
    • src/pkg/ - Shared utilities (config loader)
    • bin/ - Compiled binary and configuration
  • Modular authentication package:
    • OTP generation & hashing (bcrypt)
    • SMTP sender with .env credentials
    • Session cookie management (gorilla/sessions)
    • Database-backed OTP store
  • Mobile-first frontend:
    • Responsive CSS with modern design system
    • Go HTML templates (login, verify, dashboard, settings)
    • Authentication flow (email + OTP)
  • Database schema:
    • User model with OTP storage
    • Mailbox settings with encrypted passwords
    • Processed email tracking
  • Configuration system:
    • YAML configuration file (bin/config.yaml)
    • Environment variable loading (.env)
    • Secret management for session encryption
  • Web server with routing:
    • Gorilla mux router with middleware
    • Authentication middleware for protected routes
    • Static file serving
  • Makefile with build, run, test targets
  • Unit tests for authentication package

Changed

  • N/A (initial release)

Fixed

  • N/A (initial release)