Merged
Conversation
…letter items Sync new/updated gems from RubyGems.org API (just_updated + latest endpoints) via scheduled job every 4h. Add full admin CRUD for gems with search, filtering, and sidebar navigation. Refactor NewsletterItem to use polymorphic `linkable` association so items can reference either an Article or a RubyGem, with virtual article_id/ruby_gem_id accessors for form compatibility. Add gem search combobox to newsletter item fields with autofill support.
- Add GithubRepo model with GitHub Search API sync (Faraday)
- Add RedditPost model with RSS feed sync (Feedjira) for r/ruby and r/rails
- Add sync jobs with sidekiq-scheduler (6h/4h intervals)
- Add full admin CRUD with search, filters, and pagination for both
- Add linkable selector UI with type dropdown and dynamic combobox
- Consolidate 4 autofill controllers into generic linkable-autofill
- Use linkable_type/linkable_id directly in newsletter item form
- Normalize search controller responses to {id, title, url, description}
- Add nav links, dashboard stats, and lui.button icons throughout
- Add linkable_type inclusion validation on NewsletterItem (security) - Fix GitHub sync merge order so daily data takes precedence over weekly - Fix RubyGem sync merge order so "updated" takes precedence over "new" - Remove score/num_comments from Reddit sync update_only to preserve admin values - Fix form selects not preserving value on re-render (reddit_posts, ruby_gems) - Remove memoized @http_client class variable for thread safety - Add RubyGem stats to admin dashboard - Add disconnect() cleanup to linkable_autofill_controller - Fix Ruby Gems show page buttons to match GitHub/Reddit pattern - Fix private/public ordering in NewsletterItem - Add controller tests for all 6 new admin controllers (62 tests) - Add NewsletterItem tests for GithubRepo/RedditPost accessors and validations
…tterItem Use linkable/linkable_type directly instead of per-type accessor methods. Extract article_blog_for helper for repeated blog access in mailer view.
- Extract shared concerns (NewsletterSource, HttpFetchable, PeriodFilterable) - Remove default_scope from all models, use explicit named scopes - Fix search controllers to use find_by with proper 404 responses - Fix N+1 query in newsletter mailer with preload_article_blogs - Fix merge order in RubyGem.sync_from_api! (new gems take precedence) - Add source attribution labels in newsletter email templates - Switch linkable autofill controller to @rails/request.js - Upgrade @hotwired/turbo-rails and @hotwired/turbo to 8.0.23 - Add accessibility attributes to drag handles - Add mailer tests and fixtures for all linkable types
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.