Skip to content

Releases: open-policy-agent/regal

v0.42.0

Choose a tag to compare

@github-actions github-actions released this 16 Jul 14:20
Immutable release. Only release title and notes can be modified.
bcdaa1d

Regal v0.42.0 is here! Bringing a number of improvements to both the linter, language server and debug adapter.

42 is the magic constant of the smallest non-trivial magic cube, a 3×3×3 cube with entries of 1 through 27, where every row, column, corridor, and diagonal passing through the center sums to forty-two.

Wikipedia

Language Server

Find References and Rename

This release brings initial support for finding references and renaming symbols in the workspace. This first version
is limited to function arguments and some bindings, but we plan to expand this in future releases.

rename.mov

References are checked across the whole workspace, and renames work even when for example, a function is incrementally defined in several different files.

Thanks @SeanLedford for your work on this!

New future.keywords completion provider

The language server will now suggest future.keywords in completions for import lines — notably the new import future.keywords.not for now, with a few more to follow soon in OPA.

Debug Adapter

Evaluate

Regal's debug adapter protocol (DAP) implementation now supports evaluating variables and expressions inside of stack frames in debugging sessions! This also allows setting up watch expressions in clients like VS Code.

eval

Make sure to download the latest version of the OPA VS Code extension to try it out. More clients hopefully supported soon!

Various Improvements

  • Add --aggregate flag to regal new rule command to create aggregate rules. Thanks @mvanhorn!
  • Allocate less memory while linting with this one simple trick
  • Make common rule name provider provide suggestions for default rules
  • Make input.json completion provider provide suggestion for imports
  • Have boolean value completion provider provide suggestions in many more locations
  • Add inline docs to import provider
  • Add label details to built-in function completion provider
  • Bump OPA dependency to v1.18.2

Bugs Fixed

  • Override return type of object.subset while waiting for the next OPA release to fix this. Thanks @mvanhorn!
  • Fix wrong end location of reported for unresolved functions
  • Fix wrong end location reported by rule-shadows-builtin

Documentation

  • Update defunct styra.com links to point to archived copies until we find a better home for them
  • Documentation added for how GitHub Copilot breaks autocomplete in VS Code and a recommendation not to use it.

Changelog

v0.41.1

Choose a tag to compare

@github-actions github-actions released this 02 Jun 18:10
Immutable release. Only release title and notes can be modified.
118f8d3

We've been getting a new version of Regal for an exciting summer of high performance Rego development.

This release brings automatic Rego test generation, as well as squashing a bunch of issues under the hood with sweeping enhancements to the core language server code.

NOTE this is the same code as that of v0.41.0 — just that the combination of a release deployment issue and immutable releases just had that one end up without any downloadable artifacts. That is now corrected!

New Feature: Automatic Test Generation

A first pass at automatic test generation has landed in the language server (#1982), thanks to @SeanLedford! With a new code action available when working in a policy file, Regal can generate a test stub based on the current state of the workspace. This uses the values found in input.json to populate the with statements in the generated test.

Language Server Improvements

This release includes significant internal improvements to the language server.

Completion performance has seen a major improvement: for clients like VS Code that support a default replacement range, the completion payload is now roughly half the size it was before, and clients generally do no longer need to send continuous requests to the server for more suggestions once you start typing (#1992).

The folding range provider has been rewritten in Rego (#1979), and now additionally honours client capabilities like lineFoldingOnly and rangeLimit.

The handling of input.json and input.yaml files has been overhauled (#2002). These files are now tracked as first-class workspace state: they are parsed and cached when saved, and the server now requests update notifications for them from the client, rather than re-parsing the file on each evaluation, or debug sessions started.

OPA v1.17.0

Regal has been updated to OPA v1.17.0 (#2014). This OPA release notably introduces future.keywords.not, which improves the semantics of the not keyword by wrapping composite-expression negation in an implicit body. Thanks @johanfylling for making sure this also works in Regal now!

Regal's RoAST representation (and docs) have been updated to support the new ast.Not form introduced alongside this feature (#1985).

RoAST module.comments Representation

The RoAST representation of module.comments has changed (#1987). Comments are now represented as plain locations rather than base64-encoded text, allowing Regal to retrieve the original text from the source file directly with less bytes to transfer and parse. Note: this is a breaking change for custom rules that reference input.comments directly. Users should instead prefer to reference data.regal.ast.comments_decoded, which provides comment locations in the usual form and which will remain stable even through future format changes.

Bug Fixes

  • Addressed a panic in regal fix caused by fixes being applied in non-deterministic order; opa-fmt could reduce line count such that use-assignment-operator would then access out-of-bounds row numbers (#2003) as reported by @erazemk
  • The unassigned-return-value rule now correctly flags namespaced builtins like json.match_schema(...) in addition to flat builtins like lower(...) (#2005) — thanks @mvanhorn for the fix and @anderseknert for the report
  • Nicer formatting of with sequences (#1969)
  • regal/ast: metadata labels field is now recognized as a valid metadata key, aligned with OPA v1.17.0 (#1983, #1988) — thanks @srenatus
  • Regal fix now works regardless of local git state (#2011). Thanks @seiyab for the report in #2006

New Contributors

  • @mvanhorn added pre-commit hooks for regal fix in #1976
  • @sspaink added support for recursive JSON schemas in OPA, and later applied that fix in our schemas #1967

All changes

Full Changelog: v0.40.0...v0.41.0

v0.41.0

Choose a tag to compare

@anderseknert anderseknert released this 02 Jun 17:46
Immutable release. Only release title and notes can be modified.
118f8d3

We've been getting a new version of Regal for an exciting summer of high performance Rego development.

This release brings automatic Rego test generation, as well as squashing a bunch of issues under the hood with sweeping enhancements to the core language server code.

NOTE the combination of a release deployment issue and immutable releases had this release end up without any downloadable artifacts. This has been corrected in v0.41.1.

New Feature: Automatic Test Generation

A first pass at automatic test generation has landed in the language server (#1982), thanks to @SeanLedford! With a new code action available when working in a policy file, Regal can generate a test stub based on the current state of the workspace. This uses the values found in input.json to populate the with statements in the generated test.

Language Server Improvements

This release includes significant internal improvements to the language server.

Completion performance has seen a major improvement: for clients like VS Code that support a default replacement range, the completion payload is now roughly half the size it was before, and clients generally do no longer need to send continuous requests to the server for more suggestions once you start typing (#1992).

The folding range provider has been rewritten in Rego (#1979), and now additionally honours client capabilities like lineFoldingOnly and rangeLimit.

The handling of input.json and input.yaml files has been overhauled (#2002). These files are now tracked as first-class workspace state: they are parsed and cached when saved, and the server now requests update notifications for them from the client, rather than re-parsing the file on each evaluation, or debug sessions started.

OPA v1.17.0

Regal has been updated to OPA v1.17.0 (#2014). This OPA release notably introduces future.keywords.not, which improves the semantics of the not keyword by wrapping composite-expression negation in an implicit body. Thanks @johanfylling for making sure this also works in Regal now!

Regal's RoAST representation (and docs) have been updated to support the new ast.Not form introduced alongside this feature (#1985).

RoAST module.comments Representation

The RoAST representation of module.comments has changed (#1987). Comments are now represented as plain locations rather than base64-encoded text, allowing Regal to retrieve the original text from the source file directly with less bytes to transfer and parse. Note: this is a breaking change for custom rules that reference input.comments directly. Users should instead prefer to reference data.regal.ast.comments_decoded, which provides comment locations in the usual form and which will remain stable even through future format changes.

Bug Fixes

  • Addressed a panic in regal fix caused by fixes being applied in non-deterministic order; opa-fmt could reduce line count such that use-assignment-operator would then access out-of-bounds row numbers (#2003) as reported by @erazemk
  • The unassigned-return-value rule now correctly flags namespaced builtins like json.match_schema(...) in addition to flat builtins like lower(...) (#2005) — thanks @mvanhorn for the fix and @anderseknert for the report
  • Nicer formatting of with sequences (#1969)
  • regal/ast: metadata labels field is now recognized as a valid metadata key, aligned with OPA v1.17.0 (#1983, #1988) — thanks @srenatus
  • Regal fix now works regardless of local git state (#2011). Thanks @seiyab for the report in #2006

New Contributors

  • @mvanhorn added pre-commit hooks for regal fix in #1976
  • @sspaink added support for recursive JSON schemas in OPA, and later applied that fix in our schemas #1967

All changes

Full Changelog: v0.40.0...v0.41.0

v0.40.0

Choose a tag to compare

@github-actions github-actions released this 21 Apr 13:56
Immutable release. Only release title and notes can be modified.
0ddd70f

Today we celebrate Regal who turns v0.40.0 just in time for the GitHub download tracker to report 1 million total downloads. Quite the milestone! Thank you all for the encouragement, support and contributions during these past 3 years. Together we're redefining the policy development experience, and we have a lot more of that planned for the future. Stay tuned!

This release includes 2 new linter rules, and many new features and improvements to both the linter and language server.

Linter

New Rule: invalid-regexp

Category: bugs

The new invalid-regexp rule scans regular expressions found in policies and reports invalid patterns that would otherwise fail at runtime.

Avoid

package policy

invalid if regexp.match("[a-z", "test")

Prefer

package policy

valid if regexp.match("[a-z]", "test")

New Rule: superfluous-object-get

Category: idiomatic

The superfluous-object-get rule flags calls to object.get where using the built-in function provides no benefit compared to using a reference directly, and without the call.

Avoid

package policy

superfluous if {
    # the default value (`""`) isn't used in the expression,
    # so object.get provides no benefit here
    object.get(input, ["user", "department"], "") == "engineering"
}

Prefer

package policy

much_better if {
    input.user.department == "engineering"
}

More cases of superfluous object.get will be added to this rule as we encounter them.

Improvements

  • The naming-convention rule now accepts a list of allowed names in addition to regex patterns
  • The non-loop-expression rule now identifies more types of expressions that could be moved out of iteration
  • All rules now contain a related_resources item in their metadata pointing to the docs for the rule
  • The regal new rule command now generates a Related Resources section in the new rule's documentation template
    (thanks @mvanhorn!)

Bugs Fixed

  • Fixed two false positives reported in the non-loop-expression rule
  • The server now exits with an error if the --profile flag is used without --format json (thanks @mvanhorn!)

Language Server

Evaluate and Debug Actions

Any input.json or input.yaml file found in the workspace will be used for input during evaluation and debugging sessions, but this wasn't obvious without reading the docs. The Evaluate and Debug code lenses / commands will now present a dialog option asking to create an input.json file in the project workspace in case one isn't found. This file is populated with dummy JSON data based on references to input found in the policy, and should be edited by the user to provide more relevant data.

Many thanks to @SeanLedford for this great work!

Hover Provider Improvements

The hover provider showing tooltips for built-in functions and keywords has been rewritten in Rego, and additionally saw a few improvements land as part of that process:

  • Links to examples for built-in functions now point to the correct location in the OPA docs
  • The print function now shows up in hover results as well
  • Hover provider now less resource intensive, and all information rendered just in time for display

Inlay Hints Improvements

The inlay hint provider (that provides names of function arguments to be displayed at call sites) has also been rewritten in Rego, and the server now implements also the inlayHint/resolve handler, which improves performance by only calculating inlay hint details when the client requests them for display.

Additionally, the inlay hint provider now properly takes the range of the active editor view into account, and will only spend resources calculating hints for code that the user can actually can see.

Semantic Tokens in Comprehensions and every Expressions

The language server's semantic token provider (providing context-based syntax highlighting) now provides semantic tokens inside of comprehensions and every expressions in addition to previously supported contexts. Additionally, most of the semantic token logic is now implemented entirely in Rego.

Improved Language Server Initialization

This release contains a number of fixes and improvements related to the language server's initialization routine, which should now be both more robust and faster.

Bugs Fixed

  • Two potential nil dereferences identified and fixed
  • Fix a potential out of bounds panic in slice access
  • The bundled web server now shows a link to Regal's editor integration documentation on its index page

Finally

Extra thanks goes out to @charlieegan3 this release, who worked tirelessly to fix some really complex race conditions and concurrency issues in the language server. A thankless job, but extremely important, and he pulled it off like a true Viking!

Changelog

Read more

v0.39.0

Choose a tag to compare

@anderseknert anderseknert released this 26 Feb 19:02
23614cc

We're happy to announce Regal v0.39.0, featuring 3 new linter rules, many language server improvements, and much faster linting!

New Rule: use-array-flatten

Category: idiomatic

The use-array-flatten rule recommends using array.flatten instead of nested array.concatenation (#1873).

Avoid

package policy

flat1 := array.concat(arr1, array.concat(arr2, arr3))

flat2 := array.concat(arr1, array.concat(arr2, array.concat(arr3, arr4)))

Prefer

package policy

flat1 := array.flatten([arr1, arr2, arr3])

flat2 := array.flatten([arr1, arr2, arr3, arr4])

New Rule: use-object-union-n

Category: idiomatic

The use-object-union-n rule recommends using object.union_n over nested calls to object.union (#1873).

Avoid

package policy

obj := object.union(obj1, object.union(obj2, obj3))

Prefer

package policy

obj := object.union_n([obj1, obj2, obj3])

New Rule: equals-over-count

Category: performance

The new optional equals-over-count rule suggests using direct equality comparisons rather than count when checking collection membership or emptiness (#1878). This is a micro-optimization and not a general recommendation. Must be manually enabled.

Performance

This release brings an approximate 25% reduction in linting time through aggregate remodeling and Rego prepare stage optimizations (#1838). Additional performance work includes Rego refactoring (#1857, #1884), AST transform improvements (#1892), and various micro-optimizations (#1866, #1879).

Language Server Improvements

The language server now includes a semantic token framework for improved syntax highlighting (#1845, #1865, #1870),
code actions for the constant-condition and redundant-existence-check fixers (#1830).
and an opaTestProvider feature for test discovery (#1888, #1889, #1898),

Completion performance is improved with a completionItem/resolve handler (#1831),
and server capabilities are now properly exposed and consistent with the clients (#1867, #1880).

Note: Semantic token support is feature flagged and will be available in the next release.

Compiler Explorer

Regal now supports the VSCode-based OPA Explorer extension, providing a rich GUI to compare compiler stages directly in VS Code (#1862) - thanks @srenatus! A new "Format stages" option has also been added to the compiler explorer (#1854) - thanks @johanfylling!

Experimental: rq Engine Support

Initial support for the rq engine has been added (#1872) - thanks @charlesdaniels!

Various Improvements

  • Improved redundant-existence-check rule (#1897, fixes #1805)
  • Disabled zero-arity-function rule as opa-fmt now covers that (#1885)

Bug Fixes

  • Fix nil dereference on compiler errors in explorer (#1837)
  • Fix broken links to fixer page (#1852)
  • Fix false positive in use-some-for-output-vars (#1886)
  • Fix broken input.json completion provider (#1891)

Dependency Updates

Regal has been upgraded to use OPA v1.14.0 and Go 1.26.

Documentation

  • Added mise as an alternative installation method (#1849) - thanks @jylenhof!
  • Updated installation documentation (#1861)
  • Updated note about eval and debug roots (#1894)
  • Show release badge when using pre-release versions (#1899)

New Contributors

v0.38.1

Choose a tag to compare

@github-actions github-actions released this 13 Jan 15:39
fd6dd4d

This patch release fixes several bugs including some found in the recent v0.38.0 release, as well some other improvements.

Bug Fixes

  • Fix for prefer-equals-comparison fixer failing to parse policies with multiple "=" in expressions (#1824, fixes #1818 reported by @gusega)
  • Fix for incorrect fixable violation count display in lint output (#1825, fixes #1813 reported by @gusega)
  • Fix for false positive in prefer-equals-comparison rule with comprehension term vars (#1828, fixes #1826 reported by @SeanLedford)
  • bundle: Surface configured rule notices as messages in lint output (#1827, fixes #1795 reported by @ghmer)

Improvements

  • Code action for prefer-equals-comparison fixer now available in the language server (#1810)
  • New option for prefer-value-in-head rule to count interpolated strings as scalars (#1817)
  • Minor performance improvement for any_set_item, used for selecting items from sets (#1815)

Changelog

v0.38.0

Choose a tag to compare

@github-actions github-actions released this 08 Jan 18:40
a9843ab

Happy New Year from the Regal maintainers!

Feature: String Interpolation Support

v0.38.0 of your favorite Rego linter, debugger and language server brings full support for OPA's new string interpolation feature. This means not only that Regal lints code found inside interpolated strings, but that you'll have access to all your favorite language server features within them too — like code completions, tooltips on hover, or document highlighting. You can even use the debugger to step through interpolated expressions! If you haven't yet tried it out, grab OPA v1.12.2, Regal v0.38.0 and enjoy an absolutely awesome addition to the Rego language!

In addition to this, we have a number of fun new features and performance improvements.

New Rule: disallow-rego-v1

Category: custom

This optional new rule flags the use of import rego.v1 in Rego policies (#1778). Since OPA v1.0 (December 2024), this import is a no-op and no longer needed. The rule helps users maintain clean code by preventing this outdated import from appearing in new policies. Teams standardizing on OPA 1.0+ can enable this rule to enforce modern Rego standards.

package example

import rego.v1 # <-- Happy 2026! Time to stop doing this!

Authored by @SeanLedford.

New Fixers

@SeanLedford has also done some great work to help expand Regal's auto-fixing capabilities by having regal fixers added for three more rules.

See (#1790) and (#1794) for more details.

Performance

The fixer saw a 12% performance improvement by reusing the linter, reducing allocations from 2.3M to 2.0M operations (#1783). Additional optimizations include:

  • faster file filtering by avoiding recompiled ignore patterns (#1758),
  • better built-in function handling by registering Regal's functions globally only once (#1788),
  • and more efficient AST location serialization (#1758)

To track ongoing performance work, a new post-merge benchmark-recording workflow was added (#1793).

LSP: New Ignore Code Action

The language server now supports a code action to quickly add regal ignore configuration for specific rules directly from the editor (#1777).

Changelog

v0.37.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 17:53
216341a

Regal v0.37.0

This release features a new linter rule, several new language server features, and many improvements and fixes. The two major OPA versions bumped since the last release additionally contains several performance improvements that were contributed as part of developing Regal!

New Rule: prefer-equals-comparison

The prefer-equals-comparison linter rule recommends using the == operator for equality comparison over the unification operator =. The rule helps improve code clarity by using operators for their intended purposes: := for assignment, == for equality comparison, and = for unification. The linter identifies when = is used for comparison by checking if both sides of the operator are "unassignable".

Avoid

input.request.method = "GET"

Prefer

input.request.method == "GET"

There are some certainly valid use cases for the unification operator! But simple equality comparison is not one. For more information, see the documentation for the rule. As an amusing aside, this fixes one of the first issues created in the project!

Language server: Document highlighting to help show where function args are referenced

Document highlighting is one of the more subtle features of the LSP specification, but a really helpful one when implemented well. The experimental first implementation that shipped with Regal v0.36.0 is no longer experimental, and has also been extended to highlight usage of function argument variables inside of a function head or body.

documenthighlighting

Language server: Selection ranges

Selection ranges provide smart selection of code that can expand and shrink based on knowledge of the code rather than simple text properties, like hyphens or whitespace. This makes moving code around extremely fast, and without leaving the keyboard. Consult the language server docs for how to enable this in your editor

selectionranges

Improvements

  • The pointless-reassignment rule would previously only flag reassignment at the top level of a rule body. Now it flags pointless reassignments also in nested bodies, like comprehensions, every statements, and so on.
  • All completion providers are now implemented purely in Rego
  • Remove the go-semver dependency in favor of a custom, much faster implementation
  • Build: Reduce permissions granted in update-caps top-level workflow, by @timothyklee
  • Docs: Update language server page to demonstrate recently added features
  • Docs: Add kakoune LSP configuration example

Windows compatibility improvements

In this release we have fixed various Windows bugs (Language Server Init, Goto Definition, Error Popups) in #1740, #1737, #1736, following #1633, and #1642 last release. Reported and verified by geirs73.

These fixes have also made it possible to run our test suites on Windows runners to catch issues sooner in future. A huge thanks to @charlieegan3 for his tireless work on this!

Bugs fixed

Dependency Updates:

Go modules:

  • github.com/open-policy-agent/opa: v1.8.0v1.10.1
  • github.com/arl/statsviz: v0.7.1v0.7.2
  • github.com/go-git/go-git/v5: v5.16.2v5.16.3
  • github.com/olekukonko/tablewriter: v0.0.5v1.1.0
  • github.com/spf13/cobra: v1.9.1v1.10.1
  • github.com/spf13/pflag: v1.0.7v1.0.10
  • Removed: github.com/coreos/go-semver: v0.3.1

GitHub Actions:

  • open-policy-agent/setup-opa: v2.2.0v2.3.0
  • actions/cache: v4.2.4v4.3.0
  • actions/upload-artifact: v4.6.2v5.0.0
  • golangci/golangci-lint-action: v2.4.0v2.5.0
  • actions/setup-go: v5.5.0v6.0.0

Support

If you encounter any issues with this release, please either file an issue, or let us know in the #opa-regal channel in the OPA Slack!

Changelog

Read more

v0.36.1

Choose a tag to compare

@github-actions github-actions released this 10 Sep 14:09
1f1044f

This is Regal v0.36! The first Regal release since becoming a part of the OPA project last month. This release mostly delivers a number of new language server features as well as wider improvements under the hood and to the developer experience.

A note for users getting Regal via Homebrew

Since Regal was made an official formula, our recommendation has been to use that as your source for Regal. This is the first release distributed only via that formula, so if you still rely on the old styrainc/regal one, make sure to have that removed and brew install regal instead.

A note about Regal's documentation

Our documentation is now displayed as part of the main OPA website!

https://www.openpolicyagent.org/projects/regal

From this release, links generated from Regal in output to rules will point to this location. You might find links to the old location as we get things updated. Please feel free to open any issues for link problems you find just so we don't miss anything.

Get contextual documentation when calling built-in functions

Following PR #1654, the Regal language server will now offer signatureHelp to compatible clients. This shows the current argument type and description in the help text for built-in functions. This is in addition to the other general function documentation displayed here.

ScreenRecording2025-09-09at14 06 54-ezgif com-video-to-gif-converter

Quickly see related fields in when editing METADATA

PR #1657 implements support for the documentHighlight request from clients. This is currently only used to show signal other related METADATA keys when working with Rego metadata.

ScreenRecording2025-09-09at11 12 34-ezgif com-video-to-gif-converter

In future, this same functionality could be used to highlight other related items currently in the viewport.

Jump directly from ignore directives to documentation

documentLink is another request from clients which allow the server to respond with link ranges. We have used this to make regal ignore directives clickable, helping users quickly learn what they mean when encountered in policies PR #1657.

ScreenRecording2025-09-09at14 03 06-ezgif com-video-to-gif-converter

Get live diagnostics from custom rules as you type

PR #1631 ensures that users of custom linter rules are also able to access these for live diagnostics in language server clients. Previously these were not evaluated in the server, only in the Regal CLI.

ScreenRecording2025-09-09at11 34 01-ezgif com-video-to-gif-converter

Notable Refactors & Development Changes

  • Rego Language Server Routing: PR #1675 makes some notable changes to how Rego is used within the Regal’s language server. The Language Server Protocol (LSP), which Regal implements to support LSP clients, is based on JSON message passing. This lends itself to Rego evaluation which is JSON in, JSON out. This PR updates the handling of different LSP messages sent from clients to route them in Rego, handling Rego backed rules first, and falling back to Golang implementations that still remain otherwise. This sets the direction for more Rego LSP functionality in the language server in future.
  • Development bundle loading from disk: PR #1646 gives those working on Regal in development the option of using the current source for the Regal bundle without rebuilding the binary. This improves the experience when working on Rego based language server functionality by reducing the time of a feedback loop. Set REGAL_BUNDLE_PATH to use this feature.

Changelog

Read more

v0.35.1

Choose a tag to compare

@github-actions github-actions released this 30 Jun 17:40
92d1ba9

We're happy to release v0.35.1, the mid-summer release of Regal for the 🏖️ ! This release updates to OPA v1.6.0 bringing a number of performance improvements as well as other improvements and bug fixes.

Improved Schema Loading

This PR replaces Regal's custom schema loader with one that matches OPA's behavior, enabling the same schemas to work across opa check, opa eval, and other OPA commands. PR #1605

Performance Improvements

  • Thanks to a PR in OPA, Regal's memory use is now much reduced due to a change conditionally supplying built-in contexts only when needed.
  • This PR optimizes Rego evaluation by directly mapping source data to ast.Value objects instead of going through intermediate map[string]any or JSON representations, eliminating ~2.9 million allocations in benchmarks. PR #1606
  • Regal contributors will be happy with open-policy-agent/opa#7442 which makes running Regal's tests around 2.5x as fast!

Code Actions Rewrite

Code actions are LSP features that provide automated fixes or refactoring suggestions (like "quick fix" options), and this PR implements them for Regal with server-side filtering to reduce data transfer and ensure consistent editor behavior. This is also now implemented in Rego! PR #1604

Docs

  • PR #1584 refactors a number of Regal's pages including breaking down the previously large README into separate files. Browse the new structure on the Regal Website.
  • The Code Lens documentation has been updated to better explain supported configurations. Thanks @Shinzu for the report here. #1596

Changelog