all repos — llm_aggregator @ 9193c5f19131e5fc0d91414c8aa23d036bfb0aa0

A CLI tool to aggregate RSS feeds and summarise them with LLMs

CHANGELOG.md (view raw)

  1# Changelog
  2
  3All notable changes to this project will be documented in this file.
  4
  5The format is based on [Keep a
  6Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to
  7[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
  8
  9## [0.4.0] - 2026-04-21
 10
 11### Changed 
 12
 13- **TUI is now fully functional and production-ready**: Replaced the
 14work-in-progress TUI implementation with a robust Bubble Tea command pattern:
 15  - Runtime execution now uses native `tea.Cmd` instead of manual goroutine
 16  orchestration.
 17  - Added real-time progress updates via `progress.Progress` interface with
 18  stage, substage, and article count messages.
 19  - TUI displays a spinner, elapsed time, and final summary inline.
 20  - Removed signal handling and channel synchronisation in favour of Bubble
 21  Tea's built-in lifecycle.
 22  - `TUIProgress` now only sends messages to an existing program, simplifying
 23  integration.
 24  - Both verbose mode (`SimpleLogger`) and TUI mode share the same
 25  `progress.Progress` interface.
 26
 27## [0.3.0] - 2026-04-21
 28
 29### Added
 30
 31- **Configuration file support via TOML** (XDG-compliant and cross-platform)
 32  - Load settings from `~/.config/llm_aggregator/config.toml`
 33  - Supports all aggregation, API, and output options
 34  - Example configuration file at `configs/config.example.toml`
 35- **Environment variable support with `LLM_AGGREGATOR_` prefix**
 36  - All configuration options can be set via environment variables
 37  - Precedence order: CLI arguments > environment variables > config file >
 38  built‑in defaults
 39- New `internal/config` package with Viper integration
 40  - `Load()` and `Save()` methods for configuration management
 41  - `GetConfigPath()` for XDG‑compliant config file location
 42  - `ConfigExists()` to check for existing configuration
 43- Comprehensive unit tests for configuration loading, saving, and environment
 44  variable precedence (`internal/config/config_test.go`)
 45
 46### Changed
 47
 48- **Environment variable renamed:** `DEEPSEEK_API_KEY` 49  `LLM_AGGREGATOR_API_KEY`
 50- **CLI help text** now reflects the new API key environment variable and
 51  general configuration options
 52- **Command‑line argument precedence** implemented in `cmd/llm_aggregator.go`
 53via `applyConfiguration()`
 54- Updated all help text, documentation, and code references
 55- `README.md` completely revised with a new "Configuration" section
 56
 57### Removed
 58
 59- Global `QuietMode` and `VerboseMode` variables from
 60`internal/config/config.go`. Replaced by runtime‑specific configuration in
 61`runtime.Runtime` and CLI arguments
 62- Hardcoded system prompt in `runtime.NewRuntime()`. Now left empty, allowing
 63configuration or client default to be used
 64- CLI flags now correctly override config file and environment variables
 65
 66## [0.2.0] - 2026-04-21
 67
 68### Changed
 69
 70- Moved all progress and status messages behind `-v/--verbose` flag
 71- Default CLI mode is now silent except for final output and errors
 72- Components (aggregator, processor, LLM client) use logger interface
 73controlled by verbose flag
 74
 75## [0.1.0] - 2026-04-21
 76
 77### Added
 78
 79- Complete translation from Python prototype to Go implementation
 80- RSS/Atom feed parsing using `gofeed` library
 81- DeepSeek API integration via `openai-go` client, configured for `/chat/completions` endpoint
 82- Content filtering and processing with keyword‑based include/exclude, date filtering, and sorting
 83- Command‑line interface using `go‑arg` with automatic help and version flags
 84- Multiple output formats: plain text, GitHub‑flavoured markdown, and JSON
 85- Terminal user interface (TUI) built with `bubbletea` featuring:
 86  - Animated progress bar with gradient colours (`#FF7CCB` to `#FDFF8C`)
 87  - Live article counters (aggregated/processed)
 88  - Elapsed time display
 89  - Coloured status indicators using `lipgloss` styling
 90  - Keyboard controls (q/Ctrl+C to quit)
 91- Web content extraction fallback using `goquery` when feed descriptions are minimal
 92- Configurable limits: articles per feed, maximum age, total articles
 93- Token estimation and API usage logging
 94- Environment variable support (`LLM_AGGREGATOR_API_KEY`) for authentication
 95- Example feeds file with technology, programming, and free software sources
 96
 97### Changed
 98
 99- Program structure organised into standard Go layout: `cmd/`, `internal/`, `pkg/`
100- English spelling conventions maintained throughout (colour, initialise, summarise)
101- Error handling improved with specific messages for common API failures (invalid key, rate limits, etc.)
102- Progress reporting unified through a `ProgressContext` interface for both TUI and CLI modes
103
104### Fixed
105
106- Initial API endpoint mismatch (using `/responses` instead of `/chat/completions`)
107- Nil pointer dereferences when handling optional feed metadata (author, dates)
108- String repetition syntax errors in Go (replaced `"="*80` with `strings.Repeat`)
109- CLI help/version flag handling to show information without requiring other arguments
110- Type compatibility issues with `openai-go` v3 API (message parameters, token usage fields)