Releases: Idrinth/papyrus-lint
Release list
v1.20.0
Changes
- #393 Add lint for Int/Int division widened into a Float
- #392 Add lint for a static function called through an instance
- #391 Add non-static function call lint
- #390 Add thank you section for contributors
Full Changelog: v1.19.0...v1.20.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.6% | 18257/18906 |
| ↳ papyrus-parser | 98.3% | 1828/1860 |
| ↳ papyrus-lints | 95.8% | 11941/12469 |
| ↳ papyrus-lint-core | 98.1% | 2679/2731 |
| ↳ papyrus-lint-cli | 98.0% | 1809/1846 |
| App (src-tauri) | 98.1% | 1457/1485 |
| UI (frontend) | 98.7% | 936/948 |
| Editor plugins | 99.6% | 507/509 |
| ↳ vscode-extension | 99.4% | 320/322 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 187/187 |
| Total | 96.8% | 21157/21848 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.19.0
Changes
- #388 Add frontend tests for lint result actions (View / Apply fixes / Compile)
- #389 Add CLI binary option integration tests
- #387 Test config gates for all papyrus-lints fixers
- #386 vscode-extension: add edge-case tests for CLI download, quick-fixes, and lifecycle
- #385 Add public API edge-case tests for papyrus-lints
- #384 Add lint flagging a property/variable named identical to its script
- #383 Add invariant-loop-condition lint for provably non-terminating While loops
- #382 Surface lint rule tags in the desktop app for filtering findings
- #381 Add --tag to run a single lint/fix class from the CLI
- #380 Distinguish multiple Auto state severity: local error vs inherited warning
- #379 Add test for short-circuited None check in While condition
- #375 Harden autocomplete against stale/in-flight lookup races
- #376 Add rule tags for kind, importance, and auto-fixability
- #374 Bundle LICENSE into the vsix during the release build
- #373 Add stylelint job to CI for frontend CSS
Full Changelog: v1.18.1...v1.19.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.8% | 17420/17990 |
| ↳ papyrus-parser | 98.3% | 1828/1860 |
| ↳ papyrus-lints | 96.1% | 11122/11575 |
| ↳ papyrus-lint-core | 98.2% | 2679/2727 |
| ↳ papyrus-lint-cli | 98.0% | 1791/1828 |
| App (src-tauri) | 98.1% | 1457/1485 |
| UI (frontend) | 98.7% | 936/948 |
| Editor plugins | 99.6% | 507/509 |
| ↳ vscode-extension | 99.4% | 320/322 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 187/187 |
| Total | 97.1% | 20320/20932 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.18.1
Changes
- #372 Add unit tests for unused-getter and division-by-zero lints
- #371 Treat any-branch assignment as sufficient in variable-used-before-assignment
- #370 Add test ensuring trailing-whitespace repair preserves identifier/type casing
- #367 Treat default-value comparisons as gates in variable-used-before-assignment
- #369 Preserve a script's original encoding when fixing it
- #368 Fix strict_achlist_scope being ignored when --config is used
- #366 Add unit tests for coverage-summary and Nexus page rendering scripts and run them in CI
- #365 Move default config to docs/, link from README instead of dumping it
- #364 Add public API test for dispatching opt-in lint rules
- #360 Test: ignore stale single-PSC drop results (frontend)
- #359 Use a Skyrim-esque font for the header and version
- #358 Fix function-override lint reporting events as functions
- #357 Add public API edge-case tests to papyrus-lints
Full Changelog: v1.18.0...v1.18.1
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.7% | 16945/17518 |
| ↳ papyrus-parser | 98.3% | 1828/1860 |
| ↳ papyrus-lints | 95.9% | 10769/11229 |
| ↳ papyrus-lint-core | 98.2% | 2679/2727 |
| ↳ papyrus-lint-cli | 98.1% | 1669/1702 |
| App (src-tauri) | 98.1% | 1428/1456 |
| UI (frontend) | 98.5% | 864/877 |
| Editor plugins | 99.4% | 506/509 |
| ↳ vscode-extension | 99.1% | 319/322 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 187/187 |
| Total | 97.0% | 19743/20360 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.18.0
Changes
- #356 Fix code viewer edit-mode overlay desyncing on blank lines
- #354 Audit rules/native-methods.yaml against vanilla Skyrim SE natives
- #355 Add public API tests for opt-in global-variable-setvalue lint
- #350 Add lint for repeated GlobalVariable.GetValue() calls in If/ElseIf chains
- #353 Add CLI binary integration coverage
- #352 Fix code viewer edit-mode textarea leaking raw text on selection
- #349 Add GlobalVariable no-op SetValue lint
- #348 Add edge-case public API tests to papyrus-lints
- #347 Move lint report schema into docs
- #351 Normalize whitespace in Nexus page documentation
Full Changelog: v1.17.0...v1.18.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.5% | 16573/17179 |
| ↳ papyrus-parser | 98.3% | 1828/1860 |
| ↳ papyrus-lints | 95.7% | 10562/11040 |
| ↳ papyrus-lint-core | 97.6% | 2562/2625 |
| ↳ papyrus-lint-cli | 98.0% | 1621/1654 |
| App (src-tauri) | 98.0% | 1407/1435 |
| UI (frontend) | 98.4% | 863/877 |
| Editor plugins | 99.4% | 506/509 |
| ↳ vscode-extension | 99.1% | 319/322 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 187/187 |
| Total | 96.7% | 19349/20000 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.17.0
Changes
- #346 Add colored plain-text output to the CLI
- #345 Add --short-paths flag to the CLI
- #344 Add CLI example image to README
- #343 Update README with Papyrus Lint Viewer image
- #342 Add non-base-game native function usage lint
- #341 Revise README with updated images and descriptions
- #340 Add unwired
rules/native-methods.yamlwith Skyrim base-game native methods - #339 test: expand slow function repair coverage
- #338 Add automatic fixes for slow function calls
- #337 test: expand papyrus-lints edge-case coverage
- #334 tests: add public_api tests for line-restricted repair behavior
- #336 Add custom funding link to FUNDING.yml
- #335 Move Nexus Mods BBCode template into docs/ and update references
- #333 Update FUNDING.yml with GitHub funding info
- #331 tests: add public-api contract tests for fixable/known rule lists and filtered repairs
- #330 Sync Nexus page: add CLI fix filters and update default config docs
- #329 Add a per-finding "Fix this issue" button to the file overview
- #328 Reuse script index for cross-script resolution
- #321 test: expand papyrus-lints coverage
- #327 docs: add 'How to help' section to README and Nexus page
- #326 Add "Fix This Issue" button to the SublimeLinter plugin
- #325 Add a "Fix this issue" quick fix to the VS Code extension
- #324 test(core): add edge-case tests for achlist parsing and source encoding
- #323 Build an in-memory script index once for conflicting-script-versions in the CLI
- #322 Add --type/--line filters to the fix subcommand
- #320 Add nexus-page release job to attach versioned nexuspage.bbcode with coverage values
- #318 Scope achlist cross-script resolution to its own listed entries (#311)
- #319 Fix name of issue and PR messages in workflow
- #313 Bump actions/github-script from 8 to 9
- #314 Bump DavidAnson/markdownlint-cli2-action from 20 to 24
- #316 Bump actions/download-artifact from 7 to 8
- #317 test(lints): add public tests for unused @disable behavior
- #315 Bump Nexus-Mods/upload-action from 1.0.0.pre.beta.9 to 1.0.0.pre.beta.10
- #312 Bump actions/first-interaction from 1 to 3
- #310 Guard incremental lint rendering against overlapping drops
- #309 Memoize papyrus-parser's parse()/tokenize() against the most recent source
- #308 Stream lint results into the lint tab as each file finishes
- #307 Refactor workflow dependencies in release.yml
- #306 test(vscode-extension): expand test harness and add coverage for CLI download, activation, and lifecycle behaviors
Full Changelog: v1.16.0...v1.17.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.6% | 16231/16808 |
| ↳ papyrus-parser | 98.3% | 1828/1860 |
| ↳ papyrus-lints | 95.8% | 10220/10669 |
| ↳ papyrus-lint-core | 97.6% | 2562/2625 |
| ↳ papyrus-lint-cli | 98.0% | 1621/1654 |
| App (src-tauri) | 98.0% | 1407/1435 |
| UI (frontend) | 98.4% | 863/877 |
| Editor plugins | 99.4% | 506/509 |
| ↳ vscode-extension | 99.1% | 319/322 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 187/187 |
| Total | 96.8% | 19007/19629 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.16.0
Changes
- #305 Improve VS Code extension CLI download tests and enforce 90% coverage
- #304 test(lints): cover composed repair behavior in public API tests
- #303 test(core): cover AST cache and script-conflict edge cases
- #302 CI: add yamllint job to validate rules/*.yaml and add config
- #301 test(sublime): add unit tests for CLI cache/platform edge cases
- #300 Add comprehensive VS Code extension tests and harness
- #299 test(sublime): cover automatic CLI download, caching and error handling
- #298 Move ScriptName/Else position info into the AST to avoid re-lexing
- #297 test(parser): cover additional parser edge cases
- #296 Track integer literal notation (decimal/hex) in the AST
- #294 Add magic numbers lint, disabled by default
- #295 Allow 1/0 as bool-like for the strict boolean check
- #293 Add FormID hex notation lint
- #292 Add "Local variable used before assignment" lint
- #291 Add parameter reassignment lint
- #290 test: expand papyrus-lints public API test coverage
- #289 Editor plugins: auto-download matching CLI release and cache it
- #288 Expand unused-disable lint test coverage
- #287 Update automation description for clarity
Full Changelog: v1.15.0...v1.16.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.4% | 14829/15381 |
| ↳ papyrus-parser | 98.3% | 1720/1749 |
| ↳ papyrus-lints | 95.6% | 9837/10285 |
| ↳ papyrus-lint-core | 97.4% | 2172/2229 |
| ↳ papyrus-lint-cli | 98.4% | 1100/1118 |
| App (src-tauri) | 98.0% | 1323/1350 |
| UI (frontend) | 98.4% | 822/835 |
| Editor plugins | 94.5% | 376/398 |
| ↳ vscode-extension | 92.1% | 258/280 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 118/118 |
| Total | 96.6% | 17350/17964 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.15.0
Changes
- #286 Update version extraction in release workflow
- #285 Enhance release workflow for NexusMods uploads
- #283 Revise test coverage details in nexuspage.bbcode
- #284 Add automation section to nexuspage.bbcode
- #282 Add Nexus Mods BBCode linter and CI job
- #281 Publish releases to Nexus Mods via the Nexus Mods API
- #280 Report unused
@disabledirectives (opt-inunused-disablelint) - #279 test: expand papyrus-lints public API test coverage
- #278 Honor configured SublimeLinter executable (support PapyrusLinter desktop app)
- #277 Improve generated release notes
- #276 Include default papyrus-lint.yaml in release artifacts
- #275 Modify test coverage section with placeholders
- #274 Clarify Nexus lint documentation sync
Full Changelog: v1.14.1...v1.15.0
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.4% | 13790/14307 |
| ↳ papyrus-parser | 98.1% | 1695/1727 |
| ↳ papyrus-lints | 95.6% | 8897/9305 |
| ↳ papyrus-lint-core | 97.3% | 2098/2157 |
| ↳ papyrus-lint-cli | 98.4% | 1100/1118 |
| App (src-tauri) | 98.0% | 1323/1350 |
| UI (frontend) | 98.4% | 814/827 |
| Editor plugins | 100.0% | 93/93 |
| ↳ vscode-extension | 100.0% | 21/21 |
| ↳ SublimeLinter-contrib-papyrus-lint | 100.0% | 72/72 |
| Total | 96.6% | 16020/16577 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
v1.14.1
Changes
- Sync README and Nexus lint documentation
- docs: require nexuspage.bbcode updates when README.md changes
- Add
conflicting-script-versionslint to warn about same-name files with different contents - Document Papyrus Lint features and usage
- Skip nonexistent script lookup directories
- Search paired Papyrus source directories
- test(cli): expand PapyrusLinterCLI binary integration coverage
- Add regression tests for strict-boolean lint
- test(parser): expand type inference coverage
- test(core): cover path and encoding edge cases
- Warn when parent scripts or declared types cannot be resolved
- Add regression test: goto-state resolves parent-declared states (#259)
- Treat achlist directories as script roots
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.4% | 13647/14162 |
| App (src-tauri) | 98.0% | 1323/1350 |
| UI (frontend) | 98.4% | 814/827 |
| Editor plugins | 100.0% | 92/92 |
Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli)
| Component | Coverage | Lines covered |
|---|---|---|
| papyrus-parser | 98.1% | 1695/1727 |
| papyrus-lints | 95.6% | 8754/9160 |
| papyrus-lint-core | 97.3% | 2098/2157 |
| papyrus-lint-cli | 98.4% | 1100/1118 |
Editor plugins
| Component | Coverage | Lines covered |
|---|---|---|
| vscode-extension | 100.0% | 21/21 |
| SublimeLinter-contrib-papyrus-lint | 100.0% | 71/71 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
Full Changelog: v1.14.0...v1.14.1
v1.14.0
Changes
- Add core error and cache tests; tighten cache version parsing
- Add AST regression tests for papyrus-parser
- tests: add end-to-end CLI integration tests for PapyrusLinterCLI
- Add public API integration tests to papyrus-lints crate
- Add "Useless downcast" lint for casts that can't narrow anything
- Show lint findings in code editor
- Add compile-check: surface PapyrusCompiler.exe errors as lint diagnostics
- Fix PapyrusCompiler.exe invocation and working directory
- Preserve underscores in identifier-casing repairs
- Add project information to Settings: Detected Script Roots & Used Configuration File
- Improve desktop app test coverage
- Improve papyrus-lints static condition coverage
- test: improve frontend coverage for editor interactions
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.4% | 13209/13697 |
| App (src-tauri) | 98.0% | 1312/1339 |
| UI (frontend) | 98.4% | 809/822 |
| Editor plugins | 100.0% | 92/92 |
Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli)
| Component | Coverage | Lines covered |
|---|---|---|
| papyrus-parser | 97.9% | 1690/1727 |
| papyrus-lints | 95.6% | 8562/8956 |
| papyrus-lint-core | 98.0% | 1918/1958 |
| papyrus-lint-cli | 98.4% | 1039/1056 |
Editor plugins
| Component | Coverage | Lines covered |
|---|---|---|
| vscode-extension | 100.0% | 21/21 |
| SublimeLinter-contrib-papyrus-lint | 100.0% | 71/71 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
Full Changelog: v1.13.0...v1.14.0
v1.13.0
Changes
- Fix quiet diagnostic level comparisons
- Add --quiet-warnings and --quiet-info flags to the CLI
- Ensure every lint diagnostic has a severity level
- Add
initsubcommand to PapyrusLinterCLI to create a default papyrus-lint.yaml - Bump AST cache compatibility version to 1.13.0
- Add lint pair for total named state count and multiple Auto states
- Add auto-fix for ScriptName type casing and integrate into repair pipeline
- Add automatic repair for identifier casing and integrate into repair pipeline
- Add State function signature mismatch lint
- Add GoToState state reference lint
- Publish JSON Schema for CLI --json report
- Test slow-function qualifier handling and make rules table injectable
- Track a function's declaring State through the parser and function table
- Add CLI project-root unit tests
Coverage by module
| Module | Coverage | Lines covered |
|---|---|---|
| Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli) | 96.1% | 12793/13314 |
| App (src-tauri) | 96.5% | 836/866 |
| UI (frontend) | 96.5% | 754/781 |
| Editor plugins | 100.0% | 92/92 |
Crates (papyrus-parser, papyrus-lints, papyrus-lint-core, papyrus-lint-cli)
| Component | Coverage | Lines covered |
|---|---|---|
| papyrus-parser | 97.1% | 1677/1727 |
| papyrus-lints | 95.3% | 8280/8687 |
| papyrus-lint-core | 97.7% | 1802/1844 |
| papyrus-lint-cli | 97.9% | 1034/1056 |
Editor plugins
| Component | Coverage | Lines covered |
|---|---|---|
| vscode-extension | 100.0% | 21/21 |
| SublimeLinter-contrib-papyrus-lint | 100.0% | 71/71 |
Line coverage, aggregated from each job's lcov report. Missing reports mean that job didn't run or didn't upload one.
Full Changelog: v1.12.0...v1.13.0