discourse/lib
Joffrey JAFFEUX 7ecb945ec4
FEATURE: Add full-text search for chat messages (#34704)
## Overview

This PR introduces comprehensive search functionality for chat messages,
enabling users to search through their chat history both globally across
all accessible channels and within specific channels.

### Search Capabilities

**All-Channel Search**: When no channel is specified, users can search
across all channels they have access to. The search respects channel
permissions through `ChannelFetcher.all_secured_channel_ids`, ensuring
users only see results from channels they can view.

**Per-Channel Search**: Users can scope their search to a specific
channel by providing a `channel_id` parameter, useful for finding
messages within a particular conversation context.

**Search Features**:
- Full-text search using PostgreSQL's tsvector/tsquery
- Advanced filters: `@username` to filter by author, `#channel` to
filter by channel slug
- Sort options: relevance (default) or latest
- Pagination support
- Search data weighted by relevance

## Site Setting: `chat_search_enabled`

This feature is gated behind the `chat_search_enabled` site setting,
which is currently:
- **Default**: `false`
- **Hidden**: `true`
- **Client-accessible**: `true`

### Deployment Strategy

Due to the need for chat messages to be indexed before search becomes
useful, we're implementing a two-phase deployment:

**Phase 1 (Initial Merge)**:
- `chat_search_enabled` remains `false` and hidden
- The `register_search_index` uses default (true) instead of `chat_search_enabled` value
- This allows the reindexing infrastructure to begin indexing existing
chat messages even if we don't show the UI yet

**Wait Period**:
- Wait at least one week after Phase 1 deployment
- `Jobs::ReindexSearch` runs every 2 hours and will progressively index
all chat messages
- This ensures most sites have a significant part of their chat history indexed

**Phase 2 (Follow-up Merge)**:
- Set `chat_search_enabled` default to `true` and unhide it
- Update the `register_search_index` enabled proc uses the default
(true) instead of using the `chat_search_enabled` setting
- Users can now access search with pre-indexed data

**Rationale**: Without this phased approach, users would see the search
UI immediately but receive no results until the reindexing job runs,
creating a confusing experience. By pre-indexing while the UI is hidden,
we ensure search works immediately when enabled.

## New Plugin API: `register_search_index`

This PR introduces a new plugin API that allows plugins to register
custom search indexes that integrate seamlessly with Discourse's search
infrastructure.

### API Signature

```ruby
register_search_index(
  model_class:,              # The ActiveRecord model to index
  search_data_class:,        # The model for storing search data
  index_version:,            # Version number for re-indexing
  search_data:,              # Proc that returns weighted search data
  load_unindexed_record_ids:,# Proc that finds records needing indexing
  enabled:                   # Optional proc to enable/disable (default: -> { true })
)
```

### How It Works

**Integration with SearchIndexer**: When `SearchIndexer.index(obj)` is
called, it checks registered search handlers for the object's type. If a
handler matches, it:
1. Calls the `search_data` proc with the object and an `IndexerHelper`
instance
2. Receives weighted search data (`:a_weight`, `:b_weight`, `:c_weight`,
`:d_weight`)
3. Updates the corresponding search data table with PostgreSQL's
tsvector

**Integration with Jobs::ReindexSearch**: The scheduled job (runs every
2 hours) calls `rebuild_registered_search_handlers`, which:
1. Iterates through all registered search handlers
2. Skips handlers where `enabled` proc returns `false`
3. Calls `load_unindexed_record_ids` to find records needing indexing
4. Indexes up to `limit` records per handler (default: 10,000)

### Chat Implementation Example

```ruby
register_search_index(
  model_class: Chat::Message,
  search_data_class: Chat::MessageSearchData,
  index_version: 1,
  search_data: proc { |message, indexer_helper|
    {
      a_weight: message.message,
      d_weight: indexer_helper.scrub_html(message.cooked)[0..600_000]
    }
  },
  load_unindexed_record_ids: proc { |limit:, index_version:|
    Chat::Message
      .joins("LEFT JOIN chat_message_search_data ON chat_message_id = chat_messages.id")
      .where(
        "chat_message_search_data.locale IS NULL OR 
         chat_message_search_data.locale != ? OR 
         chat_message_search_data.version != ?",
        SiteSetting.default_locale,
        index_version
      )
      .order("chat_messages.id ASC")
      .limit(limit)
      .pluck(:id)
  }
)
```

Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
Co-authored-by: Loïc Guitaut <5648+Flink@users.noreply.github.com>
2025-10-22 11:30:35 +02:00
..
action_dispatch/session Revert "DEV: Debug cookie overflows" (#35120) 2025-10-02 09:55:47 +02:00
active_support_type_extensions DEV: Add a compact_blank option to the ActiveModel array type (#35476) 2025-10-20 11:33:36 +02:00
auth FIX: Twitter health check broken on Faraday update (#35407) 2025-10-15 15:27:36 +08:00
autospec DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
backup_restore DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
common_passwords DEV: Upgrade to Rails 7 2022-04-28 11:51:03 +02:00
compression FIX: Use theme screenshot names in theme fields (#31852) 2025-03-17 15:56:19 +10:00
content_security_policy FIX: invalid CSP directive sources should allow site to boot with valid CSP directives (#31256) 2025-02-10 20:38:36 +08:00
demon DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
discourse_dev DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
discourse_webauthn DEV: Rename SecureSession to ServerSession 2025-09-18 16:31:03 +02:00
email FIX: Make system user fallback optional for category email (#35536) 2025-10-22 15:01:36 +08:00
email_controller_helper DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
faker DEV: Don't run dev-only code in specs (#23427) 2023-09-06 02:14:57 +02:00
file_store DEV: Have media convert service set s3 output permissions (#35392) 2025-10-15 12:38:25 -06:00
final_destination SECURITY: Add FastImage SSRF safe freedom patch 2024-07-03 20:49:15 +08:00
freedom_patches DEV: Serialize cookies using MessagePack (#35082) 2025-10-03 11:40:49 +02:00
generators FEATURE: Create rake for db migration in plugins (#29163) 2024-10-18 11:43:45 -03:00
guardian FEATURE: Split setting for allowing mods to manage categories and groups (#35174) 2025-10-06 10:43:42 +03:00
i18n DEV: Enable Rails 7.1 defaults 2024-08-12 10:41:13 +02:00
imap DEV: Don't allow context-free system post destruction (#32523) 2025-05-05 09:58:29 +08:00
import DEV: lint against Layout/EmptyLineBetweenDefs (#24914) 2023-12-15 23:46:04 +08:00
import_export DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
middleware DEV: Check for setting prior to applying transformation on crawler view (#34478) 2025-08-22 14:17:45 +08:00
migration DEV: Allow DROP DEFAULT in pre-deploy migrations (#34838) 2025-09-17 16:15:02 +08:00
onebox DEV: Clean up requires (#34946) 2025-09-24 12:00:22 +02:00
plugin FEATURE: Add full-text search for chat messages (#34704) 2025-10-22 11:30:35 +02:00
pretty_text DEV: Enable ember/no-classic-components (#33978) 2025-07-30 14:54:24 +02:00
rate_limiter DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
request_tracker/rate_limiters DEV: API to register custom request rate limiting conditions (#30239) 2024-12-23 09:57:18 +08:00
reviewable DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
scheduler FIX: handle more thread pool edge cases (#30392) 2024-12-20 11:50:00 +11:00
search FIX: Handle nil post_search_data for search result (#26179) 2024-03-14 14:40:46 -03:00
second_factor FIX: URL encode usernames in grant admin redirect (#34664) 2025-10-13 09:49:23 +08:00
seed_data FEATURE: add emojis to seeded categories (#33248) 2025-06-18 17:25:12 +04:00
service DEV: Add only_if step to DRSF (#35247) 2025-10-08 17:20:22 +02:00
sidekiq DEV: Add :sidekiq_job_error DiscourseEvent (#32307) 2025-04-17 15:41:58 +08:00
site_settings PERF: Improve performance of SiteSetting.humanize_name + all_settings (#34404) 2025-08-20 15:16:24 +10:00
stylesheet DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
tasks DEV: Update admin path in javascript:update_constants task (#35542) 2025-10-22 11:06:51 +02:00
theme_settings_manager FEATURE: porting type object to site settings (#32706) 2025-05-13 14:30:24 -03:00
theme_store DEV: Allow stylesheet entrypoints to use @use (#31905) 2025-03-26 09:15:32 +00:00
topic_query DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
turbo_tests DEV: Improve turbo_rspec and flaky-test output (#35059) 2025-09-30 10:01:58 +01:00
validators DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
wizard FEATURE: Localize language names (#33790) 2025-07-29 11:48:45 +08:00
admin_confirmation.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
admin_constraint.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
admin_user_index_query.rb DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
age_words.rb DEV: Move distance_of_time_in_words/time_ago_in_words (#21745) 2023-05-25 14:53:59 +02:00
application_layout_preloader.rb FEATURE: Themeable site settings (#32233) 2025-07-16 11:00:21 +10:00
archetype.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
asset_processor.rb DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
auth.rb DEV: Add Discourse ID authenticator (#33186) 2025-06-17 09:47:00 -04:00
backup_restore.rb Revert "FIX: backup_restore.rb wants db user from user, not username (#28229)" (#28245) 2024-08-06 14:11:48 +01:00
badge_posts_view_manager.rb
badge_queries.rb FEATURE: custom flag can require additional message (#27908) 2024-07-18 10:10:22 +10:00
base62.rb DEV: Bump rubocop_discourse (#29608) 2024-11-06 06:27:49 +08:00
bookmark_manager.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
bookmark_query.rb FIX: Show deleted bookmark reminders in user bookmarks menu (#25905) 2024-02-29 09:03:49 +10:00
bookmark_reminder_notification_handler.rb FIX: Bookmark reminder was clearing incorrectly (#28506) 2024-08-26 09:17:39 +10:00
bookmarks_bulk_action.rb FIX: Bookmark reminder was clearing incorrectly (#28506) 2024-08-26 09:17:39 +10:00
browser_detection.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
cache.rb FIX: race condition in Discourse.cache.fetch (#28124) 2024-07-30 09:08:12 +02:00
canonical_url.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
category_badge.rb UX: fix category badges on 404 page and oneboxes (#34071) 2025-08-04 14:02:51 -04:00
chrome_installed_checker.rb DEV: correctly detect chromium on macos (#35441) 2025-10-16 14:54:58 +02:00
color_math.rb UX: Calculate missing hover/selected colors from existing colors (#20105) 2023-02-01 09:55:21 +00:00
comment_migration.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
common_passwords.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
composer_messages_finder.rb FIX: composer educational limit should use post count (#33650) 2025-07-17 18:15:18 +04:00
configurable_urls.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
content_buffer.rb DEV: Enable unless cops 2023-02-21 10:30:48 +01:00
content_localization.rb DEV: Move locale check to unified concern (#35207) 2025-10-06 20:11:52 +08:00
content_security_policy.rb DEV: Remove unsafe_eval from test/theme-test CSP (#28774) 2024-09-06 13:28:33 +02:00
cooked_post_processor.rb DEV: Have converted videos use the cdn url (#35480) 2025-10-21 12:44:11 -06:00
cooked_processor_mixin.rb FEATURE: Experimental Photoswipe Lightbox (#35109) 2025-10-16 12:24:11 +04:00
crawler_detection.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
csrf_token_verifier.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
current_user.rb DEV: Allow impersonation without session swapping (#34213) 2025-08-21 14:18:15 +08:00
custom_renderer.rb
db_helper.rb SECURITY: Preload data only when rendering application layout 2025-02-04 13:32:30 -03:00
directory_helper.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
discourse.rb DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
discourse_connect_base.rb FEATURE: Increase default DiscourseConnect session length (#26261) 2024-03-20 14:02:12 +00:00
discourse_connect_provider.rb DEV: lint against Layout/EmptyLineBetweenDefs (#24914) 2023-12-15 23:46:04 +08:00
discourse_dev.rb
discourse_diff.rb DEV: Update nokogiri to 1.18.1 (#30554) 2025-01-07 12:05:39 +01:00
discourse_event.rb DEV: Add :push_notification event and deprecate :post_notification_alert (#22917) 2023-08-02 18:44:19 -03:00
discourse_hub.rb DEV: include more data in Discourse Discover enrollment payload. (#25846) 2024-02-25 10:42:50 +05:30
discourse_ip_info.rb FIX: Rescue and warn when error is encountered in DiscourseIpInfo.mmdb_download (#28134) 2024-07-30 11:33:20 +08:00
discourse_logstash_logger.rb DEV: Fix lograg logger and log_level not following rails log_level (#33218) 2025-06-17 09:59:58 +08:00
discourse_plugin_registry.rb FEATURE: Add full-text search for chat messages (#34704) 2025-10-22 11:30:35 +02:00
discourse_redis.rb DEV: Upgrade the Redis gem to v5.4 2025-03-19 14:34:00 +01:00
discourse_tagging.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
discourse_updates.rb DEV: Allow specifying a new feature by a commit hash (#34607) 2025-08-28 16:43:40 +08:00
discourse_webauthn.rb DEV: Allow ServerSession to store arbitrary data (#34919) 2025-09-26 10:35:28 +02:00
disk_space.rb PERF: Faster disk space calculation on upload heavy instances (#28307) 2024-10-24 12:11:40 +02:00
distributed_cache.rb DEV: Reduce duplication with DistributedMutex#clear_regex (#25795) 2024-02-21 14:19:04 -06:00
distributed_memoizer.rb DEV: Make DistributedMemoizer use DistributedMutex (#16229) 2022-04-05 19:29:58 +02:00
distributed_mutex.rb DEV: Upgrade the Redis gem to v5.4 2025-03-19 14:34:00 +01:00
edit_rate_limiter.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
email.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
email_backup_token.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
email_cook.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
email_templates_finder.rb FIX: Add new/missing email templates to the email templates editor (#28075) 2024-07-30 00:27:41 +03:00
email_updater.rb DEV: remove email updater debugging (#32664) 2025-05-09 15:11:11 +04:00
ember_cli.rb FIX: Ensure ember version in cache key is coupled to compiler (#34694) 2025-09-02 22:29:02 +01:00
encodings.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
enum.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
enum_site_setting.rb
excerpt_parser.rb DEV: Unify image handling modes in ExcerptParser (#35417) 2025-10-21 15:11:11 +02:00
external_upload_helpers.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
feed_element_installer.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
feed_item_accessor.rb FIX: Select best link from Atom feed (#15663) 2022-01-21 17:54:18 +02:00
file_helper.rb FIX: Use theme screenshot names in theme fields (#31852) 2025-03-17 15:56:19 +10:00
filter_best_posts.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
final_destination.rb FIX: update final destination to use more recent user agent (#34207) 2025-08-11 13:58:56 +10:00
flag_query.rb
flag_settings.rb FEATURE: custom flag can require additional message (#27908) 2024-07-18 10:10:22 +10:00
gaps.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
gc_stat_instrumenter.rb DEV: Seperate concerns of tracking GC stat from MethodProfiler (#22921) 2023-08-02 10:46:37 +08:00
git_repo.rb FEATURE: display commit hash for each plugin on /admin/plugins page. (#22176) 2023-06-26 10:09:57 +05:30
git_url.rb SECURITY: Prevent ReDOS by making the SSH url regex unambiguous (#20000) 2023-01-25 18:55:01 +02:00
git_utils.rb FIX: New features git hash version tweaks (#34671) 2025-09-02 10:40:24 +08:00
global_path.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
group_lookup.rb FEATURE: display PM participant group names in the topics list. (#21677) 2023-05-31 19:32:06 +05:30
guardian.rb PERF: N+1 when checking for category moderators when loading channels (#35466) 2025-10-17 14:29:28 +02:00
has_errors.rb FIX: prevents PM to large groups (#28681) 2024-09-03 12:08:14 +02:00
highlight_js.rb DEV: Bump rubocop_discourse (#29608) 2024-11-06 06:27:49 +08:00
hijack.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
homepage_constraint.rb FIX: Regression in custom homepage modifier used in theme components (#27569) 2024-06-21 11:24:11 -04:00
homepage_helper.rb DEV: Show login-required splash in root route (take 2) (#32629) 2025-05-14 11:25:43 -04:00
html_prettify.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
html_to_markdown.rb DEV: Bump rubocop_discourse (#29608) 2024-11-06 06:27:49 +08:00
http_language_parser.rb FIX: Language parser matches with dashes or underscores (#31381) 2025-02-19 11:55:14 +08:00
http_user_agent_encoder.rb DEV: Apply suggested changes 2024-06-11 14:02:46 +02:00
image_sizer.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
impersonator_constraint.rb DEV: Allow impersonation without session swapping (#34213) 2025-08-21 14:18:15 +08:00
import_export.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
inline_oneboxer.rb SECURITY: Limit /inline-onebox to 10 URLs at a time 2025-02-04 13:32:53 -03:00
job_time_spacer.rb FEATURE: Auto-remove users without permission from channel (#20344) 2023-03-22 10:19:59 +10:00
js_locale_helper.rb DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
json_error.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
letter_avatar.rb DEV: replace imagemagick convert commands with magick (#27767) 2024-07-08 16:55:59 +08:00
localization_attributes_replacer.rb FIX: Deleted topic causes an issue when replacing attributes (#34286) 2025-08-13 17:58:45 +08:00
localized_cooked_post_processor.rb FEATURE: Also process manually updated translations (#35276) 2025-10-09 00:33:36 +08:00
markdown_linker.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
mem_info.rb DEV: Move non scheduled problem checks to classes (#26122) 2024-03-14 10:55:01 +08:00
message_bus_diags.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
method_profiler.rb DEV: Upgrade the Redis gem to v5.4 2025-03-19 14:34:00 +01:00
mini_scheduler_long_running_job_logger.rb DEV: Log a warning message when a MiniScheduler scheduled job is stuck (#28258) 2024-08-08 12:20:16 +08:00
mini_sql_multisite_connection.rb DEV: Track SQL queries from MiniSql (#28824) 2024-09-11 10:14:53 +03:00
mobile_detection.rb FIX: Update 'modern mobile' regex following iOS 15 support drop (#34792) 2025-09-12 11:33:30 -04:00
new_post_manager.rb FIX: Moderator notifications when new post auto-silences a user (#35403) 2025-10-15 16:07:56 +08:00
new_post_result.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
notification_levels.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
onebox.rb SECURITY: Prevent Onebox cache overflow by limiting downloads and URL lengths 2023-11-09 13:39:18 +11:00
oneboxer.rb SECURITY: Only public subcategories in onebox (#33705) 2025-07-18 11:41:10 -03:00
onpdiff.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
password_hasher.rb FEATURE: Persist password hashing algorithm/params in database (#20980) 2023-04-11 10:16:28 +01:00
pbkdf2.rb PERF: Use OpenSSL::KDF for Pbkdf2 implementation (#20982) 2023-04-05 17:00:05 +01:00
permalink_constraint.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
pinned_check.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
plain_text_to_markdown.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
plugin.rb DEV: Fixup plugin initialization guard (#24628) 2023-11-29 11:44:09 +00:00
plugin_gem.rb DEV: Search for -gnu gem variants (#27347) 2024-06-05 14:58:02 +02:00
post_action_creator.rb FIX: Use default locale for temporarily_closed_due_to_flags (#34718) 2025-10-13 15:34:43 +08:00
post_action_destroyer.rb FIX: serialize Flags instead of PostActionType (#28362) 2024-08-14 12:13:46 +10:00
post_action_result.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
post_action_type_view.rb FIX: serialize Flags instead of PostActionType (#28362) 2024-08-14 12:13:46 +10:00
post_creator.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
post_destroyer.rb FEATURE: Reset bump date when deleting a post (#33747) 2025-07-24 14:03:33 +08:00
post_jobs_enqueuer.rb DEV: Add import_embed_unlisted site setting (#26222) 2024-03-27 08:57:43 -04:00
post_localization_creator.rb FEATURE: Also process manually updated translations (#35276) 2025-10-09 00:33:36 +08:00
post_localization_destroyer.rb FEATURE: Also process manually updated translations (#35276) 2025-10-09 00:33:36 +08:00
post_localization_updater.rb FEATURE: Also process manually updated translations (#35276) 2025-10-09 00:33:36 +08:00
post_locker.rb
post_merger.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
post_revisor.rb FEATURE: Bump wiki topics when OP is edited (#35137) 2025-10-06 12:46:28 +10:00
presence_channel.rb DEV: Upgrade the Redis gem to v5.4 2025-03-19 14:34:00 +01:00
pretty_text.rb DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
promotion.rb FIX: Remove groups when promotion is recalculated. (#31058) 2025-01-30 14:24:18 +11:00
quote_comparer.rb DEV: Correct Style/RedundantReturn rubocop issues (#23052) 2023-08-10 02:03:38 +02:00
quote_rewriter.rb SECURITY: escape display names 2023-11-09 13:39:06 +11:00
rake_helpers.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
rate_limiter.rb DEV: Upgrade the Redis gem to v5.4 2025-03-19 14:34:00 +01:00
read_only_mixin.rb FIX: improve "read only" modes (#33521) 2025-07-10 09:08:00 +02:00
require_dependency_backward_compatibility.rb DEV: Prefer \A and \z over ^ and $ in regexes (#19936) 2023-01-20 12:52:49 -06:00
retrieve_title.rb FIX: Inline oneboxes should obey the locale. (#30664) 2025-01-09 17:22:22 +11:00
route_format.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
route_matcher.rb DEV: Remove logical OR assignment of constants (#29201) 2024-10-16 10:09:07 +08:00
rtl.rb DEV: Remove duplicate definition of RTL locales and add Uyghur to the list (#27387) 2024-06-08 21:24:39 +02:00
s3_cors_rulesets.rb FIX: Update DIRECT_UPLOAD CORS ruleset to include new Amazon signing headers (#23379) 2023-09-04 16:09:52 +10:00
s3_helper.rb FIX: Incorrect key being used in S3Helper#upsert_tag (#33245) 2025-06-18 14:08:56 +08:00
s3_inventory.rb DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
schema_settings_object_validator.rb FEATURE: porting type object to site settings (#32706) 2025-05-13 14:30:24 -03:00
score_calculator.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
screening_model.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
search.rb DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
secure_upload_endpoint_helpers.rb DEV: Add SecureUploadEndpointHelpers for controllers (#25758) 2024-02-20 11:19:22 +10:00
server_session.rb DEV: Allow ServerSession to store arbitrary data (#34919) 2025-09-26 10:35:28 +02:00
service.rb DEV: Replace params by the contract object in services 2024-10-25 14:48:34 +02:00
shrink_uploaded_image.rb FIX: Ignore invalid images when shrinking uploads (#25346) 2024-01-22 12:10:29 +01:00
sidekiq_logster_reporter.rb DEV: Upgrade Sidekiq to v7.3.9 2025-03-10 15:02:48 +01:00
sidekiq_long_running_job_logger.rb DEV: Upgrade Sidekiq to v7.3.9 2025-03-10 15:02:48 +01:00
sidekiq_migration.rb DEV: Upgrade Rails to version 8.0.2 2025-07-22 09:59:44 +02:00
signal_trap_logger.rb DEV: Log Unicorn worker timeout backtraces to Rails.logger (#27257) 2024-06-03 12:51:12 +08:00
site_icon_manager.rb FIX: Make dark mobile logo fallback to dark desktop logo (#31953) 2025-03-21 18:49:12 +03:00
site_setting_extension.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
slug.rb FIX: 'destination_url' cookie handling (#33072) 2025-08-06 10:09:01 +02:00
smtp_provider_overrides.rb FIX: Add Azure communication service endpoint to SMTP authentication override (#33226) 2025-10-21 09:39:25 +02:00
socket_server.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
spam_handler.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
staff_constraint.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
staff_message_format.rb
statistics.rb FIX: participating users statistics... (#29293) 2024-10-21 18:18:42 +02:00
suggested_topics_builder.rb DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
svg_sprite.rb UX: Add "works with" explanation for Discourse ID logins (#35088) 2025-10-01 09:21:36 -04:00
system_message.rb FIX: Send TL2 promotion message to correct user (#21978) 2023-06-07 22:51:24 +03:00
system_themes_manager.rb DEV: Improve system theme loading (#34954) 2025-09-24 17:56:41 +01:00
temporary_db.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
temporary_redis.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
text_cleaner.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
text_sentinel.rb DEV: Fix random typos (#33839) 2025-07-24 22:04:13 +02:00
theme_javascript_compiler.rb DEV: Rename theme-transpiler to asset-processor (#35498) 2025-10-20 14:16:46 +01:00
theme_metadata.rb DEV: Remove deprecated/archived theme from CI (#32747) 2025-05-15 13:04:43 +01:00
theme_modifier_helper.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
theme_resolver.rb FEATURE: system themes (#32681) 2025-06-13 10:36:31 +08:00
theme_screenshots_handler.rb FIX: ignore SiteSetting.max_image_size_kb for theme screenshots (#33215) 2025-06-17 08:58:37 +08:00
theme_settings_manager.rb FIX: Pass values of objects typed settings to theme migrations (#26751) 2024-04-25 16:39:22 +03:00
theme_settings_parser.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
theme_settings_validator.rb FEATURE: porting type object to site settings (#32706) 2025-05-13 14:30:24 -03:00
theme_site_setting_resolver.rb FEATURE: Themeable site settings (#32233) 2025-07-16 11:00:21 +10:00
theme_translation_manager.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
theme_translation_parser.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
timeline_lookup.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
tiny_japanese_segmenter.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
topic_creator.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
topic_list_responder.rb FEATURE: Localize topic view in crawler view (#34253) 2025-08-13 16:38:07 +08:00
topic_localization_creator.rb DEV: Create topic and post localization resources (#32440) 2025-04-28 12:16:14 +08:00
topic_localization_destroyer.rb DEV: Create topic and post localization resources (#32440) 2025-04-28 12:16:14 +08:00
topic_localization_updater.rb DEV: Create topic and post localization resources (#32440) 2025-04-28 12:16:14 +08:00
topic_publisher.rb DEV: Add topic_published event (#31239) 2025-02-10 14:58:58 -05:00
topic_query.rb FIX: watching_first_post topic filter & query (#35353) 2025-10-14 11:12:24 +02:00
topic_query_params.rb FIX: Return 400 response codes when topic list query params are invalid (#27930) 2024-07-16 10:30:04 +08:00
topic_retriever.rb FIX: #present -> #presence typo in TopicRetriever (#20509) 2023-03-02 13:05:45 -03:00
topic_subtype.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
topic_upload_security_manager.rb DEV: Introduce post_should_secure_uploads? plugin modifier (#26508) 2024-04-10 12:02:44 +10:00
topic_view.rb DEV: Hand-pick Rails/WhereNot autofixes (#35117) 2025-10-03 13:29:22 +02:00
topics_bulk_action.rb FEATURE: Allow users to bulk recategorize silently (#33490) 2025-07-15 11:42:30 +08:00
topics_filter.rb FIX: watching_first_post topic filter & query (#35353) 2025-10-14 11:12:24 +02:00
truncate_logs_formatter.rb SECURITY: Add a default limit as to when logs should be truncated 2023-10-16 10:34:38 -04:00
trust_level.rb FIX: recalculate respects default invitee trust level (#32393) 2025-04-23 09:49:44 +08:00
turbo_tests.rb DEV: Repair RSpec full_cause_backtrace under bin/turbo_rspec (#26087) 2024-03-07 18:35:46 +00:00
twitter_api.rb Revert "DEV: Replace Rinku native gem with PrettyText" (#31692) 2025-03-07 12:01:22 +10:00
unicorn_logstash_patch.rb
unread.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
upload_creator.rb DEV: Refactor image compression for iOS (#32652) 2025-05-09 09:51:30 -04:00
upload_markdown.rb DEV: Uploads import script can download files (#26816) 2024-05-04 22:48:16 +02:00
upload_recovery.rb DEV: Add setting to tag s3 objects enabling tag based access control policies (#32988) 2025-06-16 13:26:18 +08:00
upload_security.rb FIX: Don't secure the about banner image (#29889) 2024-11-25 11:12:00 +03:00
url_helper.rb DEV: Fix random typos (#33839) 2025-07-24 22:04:13 +02:00
user_comm_screener.rb DEV: Update rubocop-discourse to 3.13 and autofix issues (#35073) 2025-10-06 16:11:01 +02:00
user_lookup.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
user_name_suggester.rb FEATURE: Improve use_email_for_username_and_name_suggestions (#30845) 2025-01-21 13:04:48 +00:00
vary_header.rb DEV: Apply syntax_tree formatting to lib/* 2023-01-09 12:10:19 +00:00
version.rb Bump version to v3.6.0.beta2-latest 2025-09-30 10:39:08 +08:00
wizard.rb DEV: Update to lastest rubocop-discourse 2024-05-27 18:06:14 +02:00
work_queue.rb PERF: Don't allow a single user to monopolize the defer queue (#25593) 2024-02-07 13:47:50 -06:00
xml_cleaner.rb FIX: Remove invalid chars from feed XMLs (#24001) 2023-10-19 14:37:37 -03:00