Skip to content

Releases: sailantis/phpthunder

v2026.2.1

Choose a tag to compare

@lumielis lumielis released this 23 Oct 16:23

Marketplace version: 2026.2.90100

Features and Improvements

  • Added PHP 8.6 support. The engine now knows PHP 8.6 as the newest language level: the version picker and the phpThunder.phpVersion setting offer 8.6 — opt-in, since projects keep defaulting to PHP 8.5 until 8.6 is GA. The parser understands partial function application placeholders (f(?), f(name: ?), f(1, ...)), clone $obj with [...] and the (void) cast, and the compatibility checks now cover the missing PHP 8.5 features and the new PHP 8.6 set.
  • Added PHP 8.6 diagnostics: readonly properties may declare defaults from 8.6, #[\Override] is validated on class constants and enum cases, an enum that declares a magic method is rejected, and the PHP 8.6 deprecations (return in finally, returning from a constructor or destructor, a third argument to define(), and others) are reported through a dedicated diagnostic.
  • Updated the bundled PHP stubs to the PHP 8.6 set, adding Time\Duration, Uri\WhatWg\url_percent_encode(), the new GMP and Intl functions, ReflectionParameter::getDocComment() and the deprecations PHP 8.6 introduces. The PHP 8.6 SNMP surface is included as well and was contributed upstream in JetBrains/phpstorm-stubs#1944.

Bug Fixes

  • Fixed every dependency in a project that ships a plain vendor/ tree without Composer metadata being reported as an undefined symbol.
  • Fixed the bogus Add import for 'Exception' (multiple matches — pick one) quick fix offering an import for a symbol that already resolves in the global namespace.
  • Fixed built-in functions such as mb_strtoupper() inferring as mixed because a vendor/ directory next to the stubs' tests/ directory shadowed the bundled stubs.
  • Fixed function readonly() being reported as a reserved name; it is legal through PHP 8.5 and only deprecated in 8.6.

v2026.1.28

Choose a tag to compare

@lumielis lumielis released this 08 Oct 23:43

Marketplace version: 2026.1.92800

Bug Fixes

  • Fixed false TypeMismatch errors when a method returns a property documented with a class-constant PHPDoc type whose constants share a single primitive type such as int.
  • Fixed method calls and class-constant lookups resolving to the wrong member when the two names differ only by case, which caused false NonStaticCallStatic diagnostics and incorrect hover results.
  • Fixed a full project re-index being triggered by composer.json and composer.lock file-watcher events that did not change any dependency, such as when the window regains focus.

v2026.1.27

Choose a tag to compare

@lumielis lumielis released this 05 Oct 22:22

Marketplace version: 2026.1.92700

Bug Fixes

  • Fixed missing hover documentation for PHP 8 constructor-promoted properties, using inline property comments or the constructor's @param documentation.
  • Fixed CodeLens reference lists displaying file names in lowercase on Windows.
  • Fixed unreachable-code detection after if/else, try/catch/finally, and switch statements when every possible path terminates.
  • Fixed the formatter dropping comments in function and method parameter lists, constructor-promoted properties, and call argument lists.
  • Fixed class and function brace-position settings overriding one another.
  • Fixed switch formatting of empty fall-through labels, preserving comments and blank lines, including comments on case and default labels.

v2026.1.26

Choose a tag to compare

@lumielis lumielis released this 02 Oct 01:30

Marketplace version: 2026.1.92600

Features and Improvements

  • Clarity templates now support the engine's newer access syntax and Twig-style variable tests, PHP code blocks with PHP-aware language features, and raw/verbatim blocks treated as text across diagnostics, indexing, highlighting and formatting.

Bug Fixes

  • Fixed the language server becoming very slow because a single edit re-indexed every open document many times.
  • Fixed typing becoming slow on workspaces with a large vendor layer.
  • Fixed CodeLens warming adding overhead to every keystroke on Windows vendor workspaces.
  • Fixed background indexing work continuing after the server shuts down and holding onto the whole project index in memory.

v2026.1.25

Choose a tag to compare

@lumielis lumielis released this 30 Sep 00:15

Marketplace version: 2026.1.92500

Features and Improvements

  • Empty method, function and closure bodies are now compacted to {} on the declaration line by default. The phpThunder.formatting.emptyBodyPosition setting now defaults to same-line.

Bug Fixes

  • Fixed false UnusedPrivateMember diagnostics and 0 usages CodeLens badges for trait members whose only call sites live in a sibling trait.
  • Fixed inherited members showing 0 usages when they are only ever reached through self:: from a subclass.
  • Fixed usages badges on trait members being inflated by a case-different property declaration in a consuming class.
  • Fixed inlay hints and semantic tokens being placed on the wrong column when a multi-byte character appears earlier on the same line.

v2026.1.24

Choose a tag to compare

@lumielis lumielis released this 28 Sep 16:44

Marketplace version: 2026.1.92400

Bug Fixes

  • Fixed PhpThunder writing a "php.validate.enable": false entry into every opened project folder. The built-in PHP validator is now disabled in the user settings; legacy leftovers are cleaned up on activation.
  • Fixed empty autocomplete after a dangling -> on a fresh line inside an open argument list.
  • Fixed the Clarity formatter rewriting the short array-access operator as a ternary.
  • Fixed a false PropertyTypeMismatch that appeared only after editing a file, when a shaped array literal was inferred in the reduced-cost typing mode.
  • Fixed a false TypeMismatch for a callable signature or array shape written in an inline @var docblock.

v2026.1.23

Choose a tag to compare

@lumielis lumielis released this 24 Sep 23:45

Marketplace version: 2026.1.92300

Features and Improvements

  • Added the ConstExprInvalid diagnostic for expressions PHP cannot compile in a constant-expression context.
  • Added the UnhandledMatch diagnostic for a match expression that omits a default arm and cannot cover its subject.

Bug Fixes

  • Fixed false PHPDocParamTypeMismatch and UndefinedClass diagnostics for callable signatures written without a parameter list or with a leading backslash.
  • Fixed false UndefinedMethod on a chained call after a method whose return type is a PHPStan/Psalm conditional type.
  • Fixed a @template bound containing a space being truncated at that space, losing the class named in the bound.
  • Fixed no diagnostic for an undefined static property or class constant accessed through self::, static:: or parent::, and a false Undefined static property for a property name computed at runtime.
  • Fixed hover and go-to-definition returning nothing for a static property, constant or method accessed through an absolute class name.
  • Fixed hover on an unresolved member access returning nothing when a diagnostic covers the cursor.
  • Fixed false PropertyTypeMismatch diagnostics for a conditional return type over an array subject.
  • Fixed false TypeMismatch diagnostics for a return value whose conditional return type tests a union subject, and for any conditional type whose subject is a union whose members disagree.
  • Fixed variadic parameters inferring the element type instead of the array PHP binds inside the body.
  • Fixed the usage counter reporting zero usages for calls through use function … as imports.
  • Fixed the formatter wrapping a < comparison inside a template directive onto its own line, and corrupting HTML numeric character references.

v2026.1.22

Choose a tag to compare

@lumielis lumielis released this 21 Sep 09:39

Marketplace version: 2026.1.92200

Features and Improvements

  • Added the InvalidStringOffset diagnostic for string offsets PHP 8 rejects at runtime.

Bug Fixes

  • Fixed reading an element of a PHPDoc collection or of a class-based ArrayAccess/collection receiver inferring mixed.
  • Fixed reading a character from a string inferring mixed, and an offset write widening a non-array receiver — a string, an int, or an ArrayAccess object — into an array.
  • Fixed @implements/@extends/@use losing every type argument when the argument list was written with a space after the comma.
  • Fixed a value-of<...> docblock being discarded on a property with a native array declaration.
  • Fixed false PropertyTypeMismatch diagnostics for an associative array literal whose field value the engine cannot type, and for an assigned type that is a supertype of the property's declared type.
  • Fixed false UndefinedClass diagnostics for a use-site variance projection on a generic type argument.
  • Fixed the formatter collapsing the alternative conditions of a multi-line match arm onto the => line.
  • Fixed double-clicking a PHP variable selecting only the name, without the leading $.

v2026.1.21

Choose a tag to compare

@lumielis lumielis released this 17 Sep 23:24

Marketplace version: 2026.1.92100

Features and Improvements

  • Added a Statistics page to the settings panel showing what PhpThunder currently holds in memory for the open workspace.
  • Added the PropertyTypeMismatch diagnostic for assignments whose inferred value type cannot satisfy the target property's declared type.

Bug Fixes

  • Fixed false PropertyTypeMismatch diagnostics for associative array literals assigned to properties declaring sealed array shapes, and for declared types mentioning self/static/parent inside a composite type.
  • Fixed false GenericBounds diagnostics when a class forwards one of its own template parameters into a generic parent that declares the same bound.
  • Fixed false UndefinedVariableMay diagnostics for variables assigned unconditionally inside a do-while loop body.
  • Fixed formatting being permanently disabled with "file appears to be in an incomplete PHP state" for a valid PHP file when the cached parse diverged from the live buffer.

v2026.1.20

Choose a tag to compare

@lumielis lumielis released this 09 Sep 22:22

Marketplace version: 2026.1.92000

Features and Improvements

  • Added NewInInitializer diagnostic for new expressions in contexts PHP does not allow them.

Bug Fixes

  • Fixed a 100%-CPU / unresponsive-LSP spiral when a batch of edits deletes vendor files: vendor delete events now remove stale index entries, and the expensive open-documents refresh is coalesced per project root through a debounce.
  • Fixed an LSP server panic when the class body contained a broken member from a mid-edit state.
  • Fixed false UnusedImport diagnostics for imports referenced only as property type hints or closure/arrow-function return types.
  • Fixed false UnusedParameter diagnostics for parameters and local variables whose only use is as the receiver of a property write.