inboxer/docs/CHANGELOG.md
cclohmar 283faddb05 Phase 3: AI Classification via DeepSeek (Version: 2026-04.3)
- DeepSeek API client with configurable model, temperature, max tokens
- Prompt template engine: loads bin/prompt.txt at runtime, substitutes {sender}/{subject}/{body}
- Response parser validates folder names (Important/eCommerce/Spam/Other) and confidence scores (1-100)
- Graceful fallback to placeholder classifier if prompt file/API key missing
- Email body text limit increased to 4000 chars for AI context
- Replaced EmailSummary.Snippet with EmailSummary.Body
- Wired real AI classifier into main.go init
2026-04-23 11:13:10 +00:00

4.1 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.3] - 2026-04-23

Added

  • AI classification package (src/internal/ai/):
    • DeepSeek API client with chat completion requests (chat.deepseek.com API)
    • Configurable model, temperature, max tokens via config.yaml
    • Prompt template engine: loads bin/prompt.txt at runtime, substitutes {sender}, {subject}, {body} placeholders
    • Response parser validates folder names (Important/eCommerce/Spam/Other) and confidence scores (1-100)
    • Graceful fallback to placeholder classifier if prompt file is missing or API key unset
    • Unit tests for JSON parsing, prompt loading, and API client creation
  • Email body text now fetched up to 4000 chars (from 200) for AI classification context

Changed

  • Replaced EmailSummary.Snippet with EmailSummary.Body (4000 char limit)
  • Main orchestrator now initializes DeepSeek classifier and passes to worker
  • Worker uses real AI classifier when available; falls back to placeholder on init failure

Fixed

  • N/A

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)