- 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
79 lines
No EOL
3.2 KiB
Markdown
79 lines
No EOL
3.2 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to inBOXER will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [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) |