- Breaking: Weekday numbering switched from Ruby
wday(0=Sunday..6=Saturday) to ISOcwday(1=Monday..7=Sunday) - Simplified
PeriodStartCalculator: removedunitparameter, unifiedwindow_bounds, and inlined single-use helpers
:yearschedules withmonth:andday:conditions
- Schedule periods are now symbolic (
:hour,:day,:week,:month,:year) instead of arbitraryActiveSupport::Durationvalues - Schedule matching, naming, validation, and period boundary calculations were refactored into focused modules
- Deduplication uses schedule boundaries (
period_start_at) rather than sliding time windows week:condition now supports ISO week parity only (:odd/:even)
- Handle DST transitions when calculating
period_start_at(skip ambiguous/non-existent local ticks) - Documentation clarifications around weekday integers (
wday), multi-tick schedules (ranges/arrays), and when deduplication applies
- Base
Feedkit::Generatorclass with auto-registration via Ruby'sinheritedhook - Schedule DSL with support for
hour,day,weekday,week, andmonthconditions - Arbitrary
ActiveSupport::Durationperiods (1.hour,1.day,1.week,1.month,1.year, etc.) - Schedule precedence with
superseded_byto prevent overlapping feeds - Automatic deduplication within schedule periods
Feedkit::Registryfor tracking and querying registered generatorsFeedkit::Feedmodel withfor_owner,by_type,latest, andrecentquery scopesFeedkit::FeedsOwnerconcern for adding feeds association to owner modelsFeedkit::DispatchJobfor scheduled feed generation via ActiveJobFeedkit::GenerateFeedJobfor per-owner feed generation with error handling- Ad-hoc generator support (ownerless and unscheduled generators)
- Generator
optionsaccessor for passing arbitrary context - Configurable table name, association name, generator paths, owner ID type, and logger
- Rails generator for installation (
rails generate feedkit:install) - Rails generator for scaffolding generators (
rails generate feedkit:generator NAME) - UUID primary key support via
--owner_id_type=uuidoption - PostgreSQL
jsonbstorage for feed data