Releases: JohnnyMorganz/luau-lsp
Releases · JohnnyMorganz/luau-lsp
1.51.0
[1.51.0] - 2025-06-24
Added
- Go To Definition now follows to the location of a property on a table type if the property doesn't have a real
implementation (#1123) - Go To Definition now works on properties on the result of a function call (e.g.,
unwrapin
process.spawn(""):unwrap()) (#1123) - Go To Type Definition now follows through expressions (such as variables) better (e.g., cross module) to find the true
location of the original type
Changed
- Reimplemented internal file-system calls and removed references to
std::filesystem. There should be no external differences from this change, except that non-ASCII filepaths are handled correctly on Windows - Sync to upstream Luau 0.679
Fixed
- Fixed handling of non-ASCII file paths and directories on Windows (#746)
Full Changelog: 1.50.0...1.51.0
1.50.0
[1.50.0] - 2025-06-16
Added
- Added
ServerInfoto theLanguageServer::onInitializeresult. .robloxrcfiles are now processed alongside.luaurcfiles for backwards compatibility with old
configuration. It is recommended to still use.luaurcfor new code.FindFirstChildWhichIsAand friends now report an error if the class name provided was not found as a valid instance
type.
Changed
- Sync to upstream Luau 0.678
- Removed the restriction on maximum table size when displaying during Hover etc. This is done by setting the
LuauTableTypeMaximumStringifierLengthflag value to0. Overrides for this value are still respected.
Fixed
- Fixed stack overflow when looking up a property on self-referential intersection types
External Contributions
- Add FromValue and FromName Methods to Enum by @Barocena in #1107
- Improve Enum Type Returns by @Barocena in #1113
- feat: add server info to lsp initialize results by @AleksandrSl in #1110
- Redefine RaycastResult to have generic type (with BasePart default) by @MaximumADHD in #1106
New Contributors
- @AleksandrSl made their first contribution in #1110
Full Changelog: 1.49.1...1.50.0
1.49.1
[1.49.1] - 2025-06-09
Changed
- Sync to upstream Luau 0.677
Fixed
- Fixed requests failing when write a string require where the filename begins with disallowed names (e.g.
./con) on
Windows
1.49.0
[1.49.0] - 2025-06-01
Added
- Added
luau-lsp.require.useOriginalRequireByStringSemanticsto fall back to the old require-by-string semantics for
init.luaufiles to preserve backwards compatibility. This option is deprecated and may be removed at any time in the
future. Note that@self-based requires remain supported with this option, allowing gradual migration to the new
semantics (#1046)
Changed
- Sync to upstream Luau 0.676
- For DM types,
.Parentis now typed with a write type of "Instance" in the new solver, preventing false-positive type
errors (#1039) - Renamed command "Luau: Regenerate Rojo Sourcemap" to "Luau: Regenerate Sourcemap" as it can be configured to generate sourcemaps from non-Rojo tooling
- Workspaces are initialized lazily on-demand, improving startup time for set-ups with many workspace folders. We only
setup and index a workspace folder once we receive a request for that
folder. (#947) - It is no longer valid to pass
--flagand--no-flags-enabledbefore the subcommand name on the CLI: it should be
luau-lsp lsp --flag:NAME=VALUE/luau-lsp lsp --no-flags-enabled.
Fixed
- Fixed require-by-string failing for files named
luau(e.g,project/luau.luau) - Fixed crash during early startup where a text document update notification is already sent before the workspaces are
fully configured. - Fixed unnecessary type check when fragment autocomplete is enabled, leading to an autocomplete delay (#991)
- Fixed FFlag registration logic always enabling all
FFlags (#1090) - Fixed string require auto-imports in an
init.luaufile not resolving correctly with new require-by-string semantics.
Now,@selfis correctly added when necessary. (#1030) - When importing a directory containing an
init.luaufile with string require auto-imports, we now correctly resolve
to the directory name instead of to
directory/init(#1038 / #1041) init.luaufiles are no longer aware of.luaurcfiles that are its sibling on the file
system (#1037)
1.48.0
Added
- Internal caught but unhandled exceptions are now reported to Sentry if crash reporting is enabled
- Added progress indicator for watched files changes
- A Cloudflare page is now available to serve the type definition files and API documentations, due to GitHub ratelimiting (#1059)
https://luau-lsp.pages.dev/type-definitions/globalTypes.None.d.luauhttps://luau-lsp.pages.dev/type-definitions/globalTypes.PluginSecurity.d.luauhttps://luau-lsp.pages.dev/type-definitions/globalTypes.LocalUserSecurity.d.luauhttps://luau-lsp.pages.dev/type-definitions/globalTypes.RobloxScriptSecurity.d.luauhttps://luau-lsp.pages.dev/api-docs/en-us.json
Changed
- Sync to upstream Luau 0.675
- Significant performance improvements to initial workspace indexing time (~3m to ~20s on 30,000 files)
- ~1160x performance improvement to Uri parsing time at scale (7.77s to 0.0067s for ~30,000 URIs)
- ~10x performance improvement to require resolution for string requires and virtual (sourcemap) -> real file paths (
3.28s to 0.322s for ~30,000 files) - ~1.29x performance improvement to reading files (4.5s to 3.66s for ~30,000 files)
Fixed
- Fixed blowup of
linux-arm64release build size due to the inclusion of debug symbols - Fixed crash when auto imports is enabled and the file contains a require with no arguments (e.g.
local Value = require(), typically the case when in the middle of typing a require) - Fixed performance regression from previous release where type checking is being performed on document change even if
workspace diagnostics is disabled - Fixed crash where catch-all error handler attempts to send an error message with non-UTF 8 characters
- Fixed find references not showing types used as return types for
functions (#1060) - VSCode: if fetching API documentation / definitions fails, then we do not overwrite the existing file (#740)
Full Changelog: 1.47.0...1.48.0
1.47.0
[1.47.0] - 2025-05-17
Added
- Implemented opt-in crash reporting for the language server. This is enabled via
luau-lsp.server.crashReporting.enabled. This setting is not enabled by default, but you may receive a dismissible prompt to enable it if the server restarts unexpectedly. Note: crash reporting sends network requests to Sentry. Crash Reporting is only available on Windows and macOS, and is not enabled in Standalone mode (luau-lsp analyze).
Changed
- Sync to upstream Luau 0.674
1.46.0
[1.46.0] - 2025-05-13
Added
- Added progress indicator during indexing of initial startup. Currently does not provide much detail, but does provide
some feedback to indicate the server is doing work. - VSCode: server binary location setting (
luau-lsp.server.path) now supports relative paths (#1036)
Changed
- Sync to upstream Luau 0.673
- Luau FFlags are now synced from the Studio channel rather than the main channel on VSCode, which is typically updated
earlier ([#1040])
Fixed
- Fixed invalid variable names created for instance-based auto-imports
- Fixed diagnostics not getting updated for dependent files when a file is edited and workspace diagnostics is
enabled (#1042)
Full Changelog: 1.45.0...1.46.0
1.45.0
[1.45.0] - 2025-05-04
Breaking Changes
- The language server now follows the new require-by-string semantics for
init.luaufiles for file resolution and string require autocomplete (#1023)
This changes the string require behaviour for init.lua files. Now, requires are resolved relative to the parent directory, rather than the file itself. A new alias @self is available to allow resolving relative to the current file.
Added
- Autocomplete in string requires now respects
luau-lsp.completion.imports.ignoreGlobsfor filtering out files to skip (e.g., one can add*.server.luauor*.client.luau) (#1014) - End autocompletion now also autocompletes missing
thenordotokens in control flow statements (e.g., pressing enter after typing justif condition) (#999)
Changed
- Sync to upstream Luau 0.672
- Color picker will now strip redundant decimal digits (i.e.
0.0000->0) (#1022)
Fixed
1.44.1
[1.44.1] - 2025-04-24
Fixed
- Fixed incorrect serialization of maps that are keyed by a Uri, causing commands that apply edits such as Rename to fail
1.44.0
[1.44.0] - 2025-04-24
Removed
- The deprecated
luau-lsp.require.fileAliasesandluau-lsp.require.directoryAliasesno longer show up in autocomplete for string requires. Use aliases as part of.luaurcinstead
Added
- Auto-importing now supports string requires. In standard platform, string requires is the default when
luau-lsp.completion.imports.enabledandluau-lsp.completion.imports.suggestRequiresare enabled. For the Roblox platform, string require auto imports must be switched on usingluau-lsp.completion.imports.stringRequires.enabled(default:false) (#494).
Changed
- Reimplementation of string require autocomplete based off upstream Luau require work
- Updated implementation of Uris internally to handle case-insensitive file systems correctly