> ## Documentation Index
> Fetch the complete documentation index at: https://glua.bluejutzu.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Notable changes to GLua for Garry's Mod, release by release.

Each GitHub release lists every commit. This page covers what actually
changed for you — see the [full history on GitHub](https://github.com/Bluejutzu/glua-lsp/releases).

<Update label="0.3.0 (latest)" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.3.0">View release on GitHub ↗</a>}>
  **Fixed**

  * Iterating a method that returns a list gave no completions at all —
    `for _, w in ipairs(ply:GetWeapons())` left `w` untyped, as did
    `Entity:GetChildren`, `Entity:GetMaterials` and `Panel:GetChildren`. The
    library forms like `player.GetAll()` were unaffected.
  * `glua --version` reported `0.1.0` whatever version it was. Both the CLI and
    the language server now take their version from the manifest at build time.
</Update>

<Update label="0.2.4" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.2.4">View release on GitHub ↗</a>}>
  **Changed**

  * `glua-cli` is now published on npm, with the formatter and linter available
    directly in the terminal.
</Update>

<Update label="0.2.3" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.2.3">View release on GitHub ↗</a>}>
  **Added**

  * **Entity and weapon class awareness.** `ents.Create("my_turret")` is typed as
    that class, so its own `ENT` methods and generated accessors complete on the
    result instead of only on `self`. Class names complete inside the string, and
    go-to-definition on one opens the class. Also covers `ents.FindByClass`,
    `ents.CreateClientside`, `weapons.Get` and `Player:Give`. Engine classes like
    `prop_physics` stay a plain `Entity`.

  **Changed**

  * The extension is listed as **GLua for Garry's Mod**. The old name was too
    close to other language servers already on the Marketplace. The extension id
    is unchanged, so existing installs and settings keep working.
  * A failed Marketplace publish no longer fails the release workflow. The
    GitHub release is already out by the time that step runs, so the job summary
    reports the failure instead of leaving a half-finished release behind.
</Update>

<Update label="0.2.2" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.2.2">View release on GitHub ↗</a>}>
  **Changed**

  * `pnpm run release` now rolls the `Unreleased` section into the new version
    and opens a fresh one, so a shipped release is never still described as
    unreleased.
</Update>

<Update label="0.2.1" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.2.1">View release on GitHub ↗</a>}>
  **Fixed**

  * CI ran the tests before the build, so the CLI's tests failed on a clean
    checkout. Both workflows now build first.
  * The light-mode code block theme was set to a dark Catppuccin variant.

  **Changed**

  * Release notes list each change as `subject by @author in #PR`, and open with
    an install command for every supported editor.
</Update>

<Update label="0.2.0" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.2.0">View release on GitHub ↗</a>}>
  **Added**

  * **Formatter.** Reprints from the syntax tree. Refuses to touch a file that
    does not parse, never drops a comment, and leaves idiomatic one-liners like
    `if not IsValid(ent) then return end` alone. Set it with
    `"[glua]": { "editor.defaultFormatter": "bluejutzu.glua-lsp" }`.
  * **Config files.** `.glua.json` for rules and declared globals,
    `.gluafmtrc.json` for formatting, both with JSON schemas so they get
    completion and validation while you edit them. `.editorconfig` and
    `.prettierrc` are read too.
  * **Inline suppressions.** `-- glua-ignore <rule>`, `-- glua-disable` /
    `-- glua-enable`, `-- glua-disable-file`.
  * **Generated accessors.** `self:NetworkVar("Int", 0, "Ammo")` and
    `AccessorFunc` now produce working `GetAmmo`/`SetAmmo` completions, carried
    across an entity's directory.
  * **Duplicate registrations.** Two `hook.Add` calls sharing an event and
    identifier, or two `timer.Create` calls sharing a name, are reported. Realms
    are taken into account, so a client and a server hook never clash.
  * **Code lens.** Sender and handler counts above net messages, call sites above
    custom hooks, reference counts above globals.
  * **Workspace-wide diagnostics.** `glua.diagnostics.scope: workspace` reports
    every indexed file, not only the ones you have open.
  * **Annotations.** `---@param`, `---@return`, `---@type`, `---@class`,
    `---@field`, `---@deprecated`, in the Lua Language Server dialect. Parameters
    without annotations are typed from the methods called on them.
  * **A command line interface**, published separately as `glua-cli`, for running
    the same linter and formatter in CI.

  **Fixed**

  * Parentheses are recorded rather than discarded, so reprinting cannot change
    `(a + b) * c` into `a + b * c`.
  * Operator precedence for left-associative operators.
  * A UTF-8 BOM no longer produces a syntax error.
  * Vector and Angle arithmetic infers as the class, not `number`.
  * Function overloads (`surface.SetDrawColor(r, g, b, a)` and
    `surface.SetDrawColor(color)`) are both recognised.
  * Argument checks are skipped for the Lua standard library, whose documented
    signatures are not precise enough to check against.
</Update>

<Update label="0.1.0" description={<a href="https://github.com/Bluejutzu/glua-lsp/releases/tag/v0.1.0">View release on GitHub ↗</a>}>
  First release.

  * IntelliSense driven by an error-tolerant parser and a type model, so
    completion keeps working mid-keystroke
  * 5,586 API entries scraped from the Garry's Mod wiki
  * Realm awareness from file paths and `if SERVER then` blocks
  * Net message analysis across files, including payload mismatches
  * Hook name completion, typo detection, and typed callback parameters
  * Cross-file go-to-definition, find references and rename
</Update>


## Related topics

- [Publishing](/contributing/publishing.md)
