### New features

* [#15492](https://github.com/rubocop/rubocop/pull/15492): Add AllCops/ProjectIndexIncludesGems for bundle-wide indexing. ([@bbatsov][])
* [#15498](https://github.com/rubocop/rubocop/pull/15498): Add `DelegatingMethods` option to `Lint/DuplicateMethods` to register custom `delegate`-shaped methods. ([@bbatsov][])
* [#15042](https://github.com/rubocop/rubocop/issues/15042): Add `DisallowedCops` configuration option to `Style/DisableCopsWithinSourceCodeDirective`. ([@hammadxcm][])
* [#15441](https://github.com/rubocop/rubocop/issues/15441): Add new `AllowYARDCommentBlockSeparator` option to `Layout/LeadingCommentSpace`. ([@koic][])
* [#15466](https://github.com/rubocop/rubocop/pull/15466): Add new `Lint/DeprecatedReference` cop to detect references to methods and constants documented as `@deprecated`, powered by the project index. ([@bbatsov][])
* [#15491](https://github.com/rubocop/rubocop/pull/15491): Add new `Lint/NameTypo` cop. ([@bbatsov][])
* [#15468](https://github.com/rubocop/rubocop/pull/15468): Add new `Lint/UnusedPrivateMethod` cop for project-wide dead-code detection via the project index (disabled by default). ([@bbatsov][])
* [#14598](https://github.com/rubocop/rubocop/issues/14598): Make `Style/DisableCopsWithinSourceCodeDirective` impossible to disable via directive comments when explicitly enabled with `Enabled: true`. ([@rafaelfranca][])
* [#15511](https://github.com/rubocop/rubocop/pull/15511): Support `textDocument/codeAction` requests in the built-in language server, so LSP clients that request code actions (Eglot, Helix, Flycheck, ...) can apply RuboCop's autocorrects, not only clients that read them off the published diagnostic. ([@bbatsov][])
* [#8565](https://github.com/rubocop/rubocop/pull/8565): Support `NewCops` in department configuration to enable pending cops per department, including cops added up to a specific version (e.g. `Style: NewCops: '1.19'`). ([@koic][])
* [#9373](https://github.com/rubocop/rubocop/issues/9373): Support autocorrection for tab indentation in `Layout/IndentationWidth` and `Style/ClassAndModuleChildren`. ([@ioquatix][], [@koic][])

### Bug fixes

* [#15257](https://github.com/rubocop/rubocop/issues/15257): Fix a false negative for `Lint/ToEnumArguments` when explicit extra keyword arguments are passed (e.g. `def m(x:); to_enum(:m, x: x, y: 1); end`), which raises `ArgumentError` when the enumerator is used. ([@RedZapdos123][])
* [#15452](https://github.com/rubocop/rubocop/pull/15452): Fix a false positive for `Layout/HashAlignment` when using `EnforcedHashRocketStyle: table` and a hash key spans multiple lines. ([@dduugg][])
* [#12269](https://github.com/rubocop/rubocop/issues/12269): Fix a false positive for `Lint/UselessAssignment` with modifier conditions. ([@bbatsov][])
* [#13786](https://github.com/rubocop/rubocop/issues/13786): Fix a false positive for `Lint/Void` with setter methods. ([@bbatsov][])
* [#15507](https://github.com/rubocop/rubocop/issues/15507): Fix a false positive for `Naming/VariableNumber` when using an empty symbol hash key. ([@koic][])
* [#15284](https://github.com/rubocop/rubocop/issues/15284): Fix a false positive for `Style/MutableConstant` with `Data.define`. ([@bbatsov][])
* [#15483](https://github.com/rubocop/rubocop/pull/15483): Fix a false positive for `Style/MissingRespondToMissing` when `respond_to_missing?` is defined in a reopening of the class and `UseProjectIndex` is enabled. ([@bbatsov][])
* [#15500](https://github.com/rubocop/rubocop/issues/15500): Fix an error for `Lint/LiteralAsCondition` when a literal condition has an empty branch. ([@koic][])
* [#15499](https://github.com/rubocop/rubocop/issues/15499): Fix an error for `Lint/UselessRuby2Keywords` when `ruby2_keywords` is used with a symbol but no method definition is found. ([@koic][])
* [#15453](https://github.com/rubocop/rubocop/issues/15453): Fix an error for `Metrics/MethodLength` when a method contains a heredoc and `__ENCODING__`. ([@koic][])
* [#15442](https://github.com/rubocop/rubocop/pull/15442): Fix an error for `Style/ArrayIntersect` cop when the block-based check calls `member?`/`include?` without an explicit receiver. ([@dduugg][])
* [#15434](https://github.com/rubocop/rubocop/pull/15434): Fix an error for `Style/NegativeArrayIndex` cop. ([@viralpraxis][])
* [#15469](https://github.com/rubocop/rubocop/pull/15469): Fix an error for `Style/RedundantFormat` when a format string uses a positional argument number beyond the 64-bit range. ([@koic][])
* [#15454](https://github.com/rubocop/rubocop/issues/15454): Fix an error for `Style/RedundantFormat` when the argument for a positional variable width is missing. ([@koic][])
* [#15298](https://github.com/rubocop/rubocop/issues/15298): Fix an incorrect autocorrect for `Lint/LiteralInInterpolation`. ([@bbatsov][])
* [#15515](https://github.com/rubocop/rubocop/pull/15515): Fix an incorrect autocorrect for `Style/ArrayIntersect` when using safe navigation `none?` with a block. ([@koic][])
* [#15364](https://github.com/rubocop/rubocop/pull/15364): Fix an incorrect autocorrect for `Style/MultipleComparison` that dropped an allowed method comparison appearing between the compared values. ([@bbatsov][])
* [#15367](https://github.com/rubocop/rubocop/pull/15367): Fix an incorrect autocorrect for `Style/RedundantFileExtensionInRequire` that produced invalid Ruby when a backslash preceded the `.rb` extension. ([@bbatsov][])
* [#12017](https://github.com/rubocop/rubocop/issues/12017): Fix `Lint/Void` to no longer autocorrect a constant used in a void context, since removing it can change behavior through constant autoloading side effects. ([@bbatsov][])
* [#14797](https://github.com/rubocop/rubocop/issues/14797): Avoid cache writes during server checks. ([@sjh9714][])
* [#15484](https://github.com/rubocop/rubocop/pull/15484): Fix false negatives for `Lint/InheritException` when `Exception` is inherited indirectly through a project class (`UseProjectIndex`). ([@bbatsov][])
* [#15357](https://github.com/rubocop/rubocop/pull/15357): Fix a false negative for `Lint/AmbiguousAssignment` when using attribute or index assignment. ([@sngsmz][])
* [#9571](https://github.com/rubocop/rubocop/issues/9571): Fix false negatives in `Layout/ClassStructure` when class body elements are wrapped in `begin` blocks. ([@koic][])
* [#9570](https://github.com/rubocop/rubocop/issues/9570): Fix false negatives in `Layout/ClassStructure` when using `private_class_method` or `public_class_method` def modifiers. ([@koic][])
* [#15438](https://github.com/rubocop/rubocop/issues/15438): Fix false positives in `Style/ArrayIntersect` when the receiver of `include?` in a block is not an array literal. ([@koic][])
* [#15445](https://github.com/rubocop/rubocop/issues/15445): Fix false positives in `Style/MultilineIfThen` when using the Prism parser engine and an `elsif` without `then` follows a branch using `then` with a body on the same line. ([@koic][])
* [#15058](https://github.com/rubocop/rubocop/issues/15058): Fix false positives in `Lint/DuplicateMethods` for anonymous classes (`Class.new`) passed as arguments to the same named-receiver method call (e.g. `T.cast`). Each `Class.new` block is an independent class, so methods defined in different blocks should not be treated as duplicates. ([@rafaelfranca][])
* [#15486](https://github.com/rubocop/rubocop/pull/15486): Fix false negatives for `Style/RedundantConstantBase` inside namespaces when the constant provably resolves identically without `::` (`UseProjectIndex`). ([@bbatsov][])
* [#15505](https://github.com/rubocop/rubocop/pull/15505): Fix incompatible autocorrect between `Style/Lambda` and `Style/SymbolProc` producing a syntax error like `->(x)(&:method)` when both cops run on `lambda { |x| x.method }`. ([@koic][])
* [#15481](https://github.com/rubocop/rubocop/pull/15481): Fix cross-file offenses depending on which files are inspected: the project index now always covers the whole project (`UseProjectIndex`). ([@bbatsov][])
* [#13794](https://github.com/rubocop/rubocop/issues/13794): Fix `Layout/LineLength` autocorrection for endless methods with block bodies. ([@hervetatche][])
* [#15462](https://github.com/rubocop/rubocop/pull/15462): Fix an error for `Lint/ConstantReassignment` when a built-in constant name is assigned and `UseProjectIndex` is enabled. ([@bbatsov][])
* [#15321](https://github.com/rubocop/rubocop/issues/15321): Fix `Style/ClassAndModuleChildren` ignoring `EnforcedStyleForClasses` and `EnforcedStyleForModules`, and skip autocorrection when mixed per-type styles make the result ambiguous. ([@bbatsov][])
* [#15122](https://github.com/rubocop/rubocop/issues/15122): Fix false positive in `Layout/MultilineMethodCallIndentation` when a line has multiple chained calls before a single-line block. ([@hammadxcm][])
* [#15471](https://github.com/rubocop/rubocop/pull/15471): Fix false negatives for `Style/RedundantLineContinuation` by verifying backslash removal against a reparse of the source instead of hand-written grammar rules. ([@bbatsov][])
* [#15522](https://github.com/rubocop/rubocop/pull/15522): Fix Ruby version detection from mise.toml with single quotes. ([@joklek-vinted][])
* [#15488](https://github.com/rubocop/rubocop/pull/15488): Fix false positives for `Naming/PredicatePrefix` and `Naming/AccessorMethodName` when the method overrides an ancestor method defined in the project (`UseProjectIndex`). ([@bbatsov][])
* [#15485](https://github.com/rubocop/rubocop/pull/15485): Fix a false positive for `Style/StaticClass` when the class is subclassed elsewhere in the project (`UseProjectIndex`). ([@bbatsov][])
* [#15477](https://github.com/rubocop/rubocop/pull/15477): Fix false positives for `Style/MethodCallWithArgsParentheses` `omit_parentheses` style by verifying each omission by reparsing before registering an offense. ([@bbatsov][])

### Changes

* [#15482](https://github.com/rubocop/rubocop/pull/15482): Change `Style/Documentation` to accept a reopened class or module documented at another definition site when `UseProjectIndex` is enabled. ([@bbatsov][])
* [#15355](https://github.com/rubocop/rubocop/pull/15355): Add `rubocop-i18n` to suggested extensions. ([@tejasbubane][])
* [#15521](https://github.com/rubocop/rubocop/pull/15521): Advertise `executeCommandProvider` and the supported code action kinds in the language server's capabilities, so clients can discover the `rubocop.formatAutocorrects` and `rubocop.formatAutocorrectsAll` commands. ([@bbatsov][])
* [#15521](https://github.com/rubocop/rubocop/pull/15521): Improve language server performance by caching the project index across requests instead of rebuilding it on every keystroke when `AllCops/UseProjectIndex` is enabled. ([@bbatsov][])
* [#14835](https://github.com/rubocop/rubocop/issues/14835): Extend `Lint/AmbiguousBlockAssociation` to detect `do...end` blocks likely intended for enumerable methods in arguments. ([@hammadxcm][])
* [#15458](https://github.com/rubocop/rubocop/issues/15458): Improve `Layout/LineLength` performance on files with large collection literals. ([@koic][])
* [#15497](https://github.com/rubocop/rubocop/pull/15497): Make `Style/ConditionalAssignment` skip cases it cannot safely rewrite instead of emitting invalid code or erroring on unusual branch shapes. ([@bbatsov][])
* [#15261](https://github.com/rubocop/rubocop/issues/15261): Mention the required parentheses in the `Style/IfUnlessModifier` offense message when the condition is part of a larger expression. ([@rafa-el-souza][])
* [#15513](https://github.com/rubocop/rubocop/pull/15513): Improve `Style/DisableCopsWithinSourceCodeDirective` performance on large `AllowedCops` and `DisallowedCops` lists by matching directives against memoized sets instead of rebuilding an array lookup per comment. ([@corsonknowles][])
* [#15501](https://github.com/rubocop/rubocop/issues/15501): Improve performance for large literal files. ([@koic][])
* [#15519](https://github.com/rubocop/rubocop/pull/15519): Improve `Style/RedundantLineContinuation` performance on files with many adjacent string literals joined by line continuations. ([@koic][])
* [#15462](https://github.com/rubocop/rubocop/pull/15462): Change `Lint/DuplicateMethods` to detect duplicates across files when `UseProjectIndex` is enabled. ([@bbatsov][])
* [#14983](https://github.com/rubocop/rubocop/issues/14983): Load cops lazily to speed up loading RuboCop; only the cops needed for a run are loaded. ([@lovro-bikic][], [@koic][])
* [#15493](https://github.com/rubocop/rubocop/pull/15493): Make `Style/IfUnlessModifier`, `Style/WhileUntilModifier`, `Style/GuardClause`, and other modifier cops respect `Layout/LineLength` exemptions (allowed patterns, cop directives, allowed URIs) when checking whether the modifier form fits on one line. ([@bbatsov][])
* [#15433](https://github.com/rubocop/rubocop/issues/15433): Mark `Lint/SafeNavigationChain` autocorrection as unsafe. ([@koic][])
* [#15487](https://github.com/rubocop/rubocop/pull/15487): Change `Lint/ConstantResolution` to report only genuinely ambiguous constants when `UseProjectIndex` is enabled. ([@bbatsov][])
* [#14809](https://github.com/rubocop/rubocop/pull/14809): Do not autocorrect `Style/RedundantAssignment` offenses when there are comments between assignment and reference. ([@lovro-bikic][])
* [#15463](https://github.com/rubocop/rubocop/pull/15463): Change `Style/ClassAndModuleChildren` autocorrection to consult the project index for the namespace kind and definition sites when `UseProjectIndex` is enabled. ([@bbatsov][])
* [#15464](https://github.com/rubocop/rubocop/pull/15464): Change `Lint/MissingSuper` to skip the constructor offense when the project index shows no ancestor defines `initialize` (`UseProjectIndex`). ([@bbatsov][])
* [#15490](https://github.com/rubocop/rubocop/pull/15490): Change `Style/Copyright` to validate `AutocorrectNotice` only when autocorrection is requested (`-a`/`-A`), so plain inspection no longer raises a warning. ([@koic][])
* [#15476](https://github.com/rubocop/rubocop/pull/15476): Change `Layout/RedundantLineBreak` to verify each correction by reparsing before registering an offense. ([@bbatsov][])
* [#15472](https://github.com/rubocop/rubocop/pull/15472): Change `Style/RedundantParentheses` to verify each correction by reparsing before registering an offense. ([@bbatsov][])
* [#15478](https://github.com/rubocop/rubocop/pull/15478): Change `Style/SoleNestedConditional` to only register an offense when its correction is verified to parse. ([@bbatsov][])

[@bbatsov]: https://github.com/bbatsov
[@hammadxcm]: https://github.com/hammadxcm
[@koic]: https://github.com/koic
[@rafaelfranca]: https://github.com/rafaelfranca
[@ioquatix]: https://github.com/ioquatix
[@RedZapdos123]: https://github.com/RedZapdos123
[@dduugg]: https://github.com/dduugg
[@viralpraxis]: https://github.com/viralpraxis
[@sjh9714]: https://github.com/sjh9714
[@sngsmz]: https://github.com/sngsmz
[@hervetatche]: https://github.com/hervetatche
[@joklek-vinted]: https://github.com/joklek-vinted
[@tejasbubane]: https://github.com/tejasbubane
[@rafa-el-souza]: https://github.com/rafa-el-souza
[@corsonknowles]: https://github.com/corsonknowles
[@lovro-bikic]: https://github.com/lovro-bikic
