What's Changed
New Features
- Starred / Save List: Permanent save list with dedicated API and UI - articles can now be starred and revisited any time from the new Starred page.
- Semantic Deduplication: Embedding-based dedup during pipeline runs drops near-duplicate same-story articles before they reach your digest.
- Timezone Support: Scheduled digest runs now respect a configurable timezone setting so your digest arrives at the right local time.
- Per-Source Keyword Filtering: Hide and highlight keyword rules are loaded and applied per source during collection, giving fine-grained control over what surfaces in each digest.
- Require-Keywords Allowlist: New
require_keywordsfield lets you define an allowlist so a source only passes articles that match at least one required term. The Sources admin page includes a full filter rules UI. - Category Combobox: The category field on Sources now uses an autocomplete combobox instead of a plain text input, making it easier to reuse existing categories.
Deploy and Operations
- Multi-Instance Support: Deploy script now shows an interactive instance picker when multiple CondenseIt instances are configured on the same VPS.
- Explicit Migration Step: Deploy script runs database migrations as a separate, visible step so schema changes are applied before the app restarts.
Docs
- Added iOS and Android home-screen install guide (
docs/add-to-home-screen.md). - Updated configuration reference with new keyword filter and timezone options.
Commits Since 2.0.0
- b105124 feat(sources): replace category text input with combobox autocomplete
- ac40380 feat(deploy): add multi-instance support with interactive picker
- 7bcc294 docs: add ios and android home screen install guide
- 282ba20 feat(sources): add require_keywords allowlist and filter rules ui
- 9131ffa feat(deploy): add explicit migration step to deploy script
- 756eb25 feat(sources): apply hide and highlight keyword rules during collection
- 61eaaf4 feat(sources): load per-source hide and highlight keywords
- 63afef6 feat(starred): add permanent save list, api, and ui
- c21784e feat(pipeline): add semantic embedding dedup for same-story articles
- f67fb70 feat(schedule): add timezone setting for scheduled digest runs
- 01eb170 chore: add root yarn.lock