Mago 1.25.1
This release is a bug-fix pass focused on the linter and analyzer, plus a full rewrite of the documentation site. Several false positives reported against 1.25.1 are fixed (no-redundant-variable, no-dead-store, array_map conditional returns, bitwise ops, @psalm-param overrides).
✨ Features
Documentation
- In-house static site: replaces VitePress with a Rust generator, multi-version, en/fr/zh. (3aa5e8c)
Names
use-item names inResolvedNames: records imported FQNs so the LSP can resolve hover/go-to-definition on use items. (2cc57ee)
🐛 Bug Fixes
Analyzer
array_mapconditional returns: resolves the callback's conditional return per element instead of collapsing it. (#1748, fcb81b7)- Bitwise ops on strings/
bool true/floats: matches PHP semantics (string XOR/AND/OR, true→1, float→int). (#1755, a8cf8bb)
Codex
@psalm-parampriority: applies@psalm-param/@phpstan-paramafter@paramso the more specific docblock wins. (#1756, 51c255e)
Linter
no-dead-storeonforeachtargets: exempts conditional overwrites of the loop-variable binding. (#1749, 259f871)no-redundant-variableby-ref closure captures: drops the synthetic write that masked legitimate uses. (#1751, f713125)no-redundant-variableloop bodies: re-walks the condition after the body so writes inside the loop are observed. (#1752, 6d519a3)no-redundant-useonuseitems: excludes use-item spans from the used-FQN set so the import isn't counted. (2d476c3)
Language Server
- Completion after lone
$,->,::: triggers properly, plus hover/goto resolves throughuseitems. (c839254)
🏗️ Internal
CI
- Signed sponsor updates: commits the auto-refreshed sponsor files via the GitHub API so they pass branch protection. (597c7a3, edf6a5e)
🙏 Thank You
Issue Reporters
Thank you to everyone who reported issues that shaped this release:
Full Changelog: 1.25.1...1.25.2