- jslint-ecma - Add ES2018-feature Asynchronous Iteration.
- jslint-ecma - Add ES2015-feature iterators.
- jslint - Audit token-property '.free'.
- jslint-ecma - Expand ES2015-feature-support for es-module-export-statement.
- jslint - Relax warning expected_line_break_a_b for ternary-operator inside template-literal.
- jslint - Add ability to auto-fix whitespace.
- jslint - Add html and css linting back into jslint.
- jslint - Add new warning requiring paren around plus-separated concatenations.
- jslint - Try to improve parser to be able to parse jquery.js without stopping.
- jslint-ci - Update ci-shell-function shGitLsTree() to include sha256 hash of files.
- jslint-editor - Update codemirror-editor to v5.65.21.
- jslint-ecma - Add ES2015-feature for..of.
- jslint - Disable directive-option /jslint for/, replacing it with for-loop specific warnings.
- jslint - Update scope-related warnings for variables, depending on whether they are let/const (scope_block) or var (scope_function).
- jslint - Change warning 'out_of_scope_a' to 'temporal_dead_zone_a'.
- jslint - Change warning 'uninitialized_a' to 'unassigned_var_a'.
- jslint - Change scope from scope_function to scope_block:
- const-declaration
- let-declaration
- function-declaration
- jslint - Add implicit scope_block for:
- do-while
- for-loop
- if-else
- while-loop
- jslint - Add hidden scope_block for:
- catch-variable
- for-variable
- function-parameter
- label-name
- jslint - Restrict scope from scope_function to its own function-body:
- named-function-expression
- jslint - Rename internal scope-variables to imporove readability of scope-logic:
- 'blockage' to 'scope_block'
- 'functionage' to 'scope_function'
- jslint - Add block-scope to internal-function jslint_phase3_parse().
- jslint - Expand built-in-globals for browser, ecma, and node - auto-generated from online-sources.
- jslint-ci - Add automated ci for shellcheck to lint shell-scripts.
- jslint-regression - Cleanup indent for multiline-method-chaining.
- jslint-regression - Fix jslint crashing before warning about dangling ')' or ']'.
- jslint-parse - Fix jslint unable to continue parsing 'async aa => 0'.
- jslint-parse - Fix jslint unable to continue parsing 'function aa(){}0'.
- jslint-regression - Fix long-running regression where 'let x = x;' doesn't warn about temporal-dead-zone.
- jslint-warning - Tighten warning of unused variables to be always on, regardless of module / nodejs mode.
- jslint - Wrap all property-updates 'name.init = true/false' with calls to: name_declare() - 'let aa=0' post_a_assignment() - 'aa=0'
- jslint-ecma - Update README.md, documenting supported ES2015+ features.
- jslint-ecma - Unify ES2015-destructure-logic into function prefix_destructure().
- jslint-ci - Add shell-function shGithubPrUpdatePrxxx() to auto-update 'PR-xxx' placeholder to next sequential github issue/pull number.
- jslint-ci - Rename shell-functions shGitPullrequestXxx() to shGithubPrXxx().
- jslint - Update warning infix_in to recommend Object.hasOwn() over hasOwnProperty().
- jslint-ecma - Add ES2025-feature RegExp Modifiers.
- jslint-ecma - Add ES2022-feature RegExp Match Indices.
- jslint-ecma - Add ES2021-feature Logical Assignment Operators.
- jslint-ecma - Add ES2027-feature Temporal.
- jslint-ecma - Expand ES2015-feature-support for destructuring.
- jslint-ecma - Add ES2018-feature Rest/Spread Properties.
- jslint-ecma - Add ES2018-feature s (dotall) flag for regular expressions.
- jslint-ecma - Expand ES2015-feature-support for es-module-import-statement.
- jslint-ecma - Add ES2023-feature ShadowRealm to global-scope.
- jslint-ecma - Add ES2024-feature .isWellFormed(), .toWellFormed() for literal string.
- jslint-ecma - Add ES2022-feature .at() for literal string/array.
- jslint-ecma - Add ES2025-feature Float16Array to global-scope.
- jslint-ecma - Relax warning for ES2025-feature RegExp.escape().
- jslint-ecma - Add ES2021-feature WeakRef to global-scope.
- jslint-ecma - Update ES2015-feature arrow, to continue parsing unwrapped-form with warning, instead of stopping.
- jslint - Relax warning on multiline-method-chaining.
- jslint - Replace all non-return 'stop(...);' with 'return stop(...)'.
- jslint - Unify ES2018-syntax-spread-operator with function prefix_ellipsis().
- jslint - Add ES2018-syntax for object-literal-spread-operator.
- jslint - Add ES2025-syntax 'import ... with {...}'.
- jslint - Allow more methods to be called on literal strings and arrays; make allowed methods for . and ?. consistent.
- github-ci - Pin various github-runner-os to stable/lts version.
- jslint-ci - Update file jslint_ci.sh, replacing deprecated url.parse(...).pathname with new URL(...).pathname.
- jslint-ci - Update shell-function shGitPullrequestCleanup() to allow squash-and-merge pull-request.
- ci - Update file .github/workflows/ci.yml with hook to run on pull-request.
- jslint-ci - Update shell-function shLintPython().
- jslint - Update warning to suggest Boolean(...) instead of !! for ternary-expression.
- ci - Update shell-function shCiBase() to check npm-version-support, before running npm-pkg-fix.
- ci - Update file publish.yml to use trusted-publishing for npm packages.
- jslint - regression-fix - Warn about variable usage before initialization.
- jslint - Allow parenthesis after ellipsis inside a function call.
- ci - Upgrade nodejs used in ci to v24.
- coverage - Add coverage-directives '/coverage-disable/', '/coverage-enable/'. '//coverage-ignore-line'.
- ci - Upgrade nodejs used in ci to v22.
- ubuntu-ci - bugfix - Fix out-of-date apt-list when installing graphicsmagick.
- jslint - Cleanup ci-shell-function shRollupFetch().
- jslint - Update ci-shell-function shDirHttplinkValidate() with pragma <!!--novalidate-->.
- ci - Upgrade python used in ci to v3.12.
- ci - Auto-create asset_image_logo_256.png from asset_image_logo_256.html.
- ci - Fix shell-function shRollupFetch() from making excessive github-api-request.
- ci - Fix improperly-cropped jslint-logo, auto-generated by headless-chrome.
- ci - Fix failed-ci from missing graphicsmagick library in latest Ubuntu image.
- jslint - bugfix - Fix optional dynamic-property/function-call not recognized.
- quickstart - bugfix - Fix broken quickstart-jslint-in-codemirror demo.
- ci - Update shell-function shHttpFileServer() to auto-serve /index.html, when url-path is root /.
- coverage - Fix coverage-function v8CoverageReportCreate() throwing error EINVAL in latest nodejs-security-patch, when running win32-coverage with npm.cmd.
- jslint - Remove unnecessary shell-function shCurlExe().
- ci - Add shell-functions shGitPullrequestCleanup(), shGitPullrequest() to automatically cleanup or create-and-push github-pull-commit to origin/alpha.
- jslint - Allow destructuring-assignment after function-definition.
- ci - Replace npm-package used to auto-build vscode-plugin, vsce to @vscode/vsce.
- test - Update test-function jstestDescribe() to wait awhile for imports to initialize before running tests.
- ci - Fix tmpdir in shell-function shBrowserScreenshot().
- vim - Allow installing vim-plugin to any directory, instead of hardcoded to ~/.vim/.
- ci - Update github-ci for actions/cache, actions/setup-python from nodejs v16 to nodejs v20.
- ci - Update shell-function shRollupFetch() to fix blank date-committed.
- ci - bugfix - Fix google-chrome unable to create screenshot because user-data-dir is /dev/null.
- jslint - bugfix - Update file jslint_wrapper_vim.vim to fix broken vim-link when linting shell-files.
- ci - add custom-shell-ci hooks to script jslint_ci.sh: shCiPublishNpmCustom() shCiPublishPypiCustom()
- ci - Remove ci for nodejs-v19, and add ci for nodejs-v20.
- ci - Remove broken-links to unlicense.org, failing http-link-check.
- doc - Update docs in README.md.
- jslint - Check exported properties are ordered.
- jslint - Add grammar for "export async function ...".
- python - Add shell-function shLintPython().
- jslint - Add grammar for regexp-named-capture-group and regexp-named-backreference.
- jslint - Add grammar for side-effect import-statement.
- ci - Rename shell-function shRawLibFetch() to shRollupFetch().
- doc - document devop procedures to maintain jslint-repo
- vscode - Add manual lint-on-save command to vscode-jslint extension.
- ci - add custom-shell-ci hooks to script jslint_ci.sh: shCiArtifactUploadCustom() shCiBaseCustom() shCiBaseCustom2() shCiLintCustom() shCiLintCustom2() shCiNpmPublishCustom() shCiPreCustom() shCiPreCustom2()
- ci - housekeeping of ci-file jslint_ci.sh
- ci - update shell-function shGitCommitPushOrSquash() to be able to save to specified filename
- ci - remove little-used shell-function shCiBranchPromote()
- ci - in windows-ci-env, alias node=node.exe instead of using winpty for pipes
- ci - bugfix - fix ci-shell-function shGithubFileUpload unable to upload new asset
- ci - auto-create asset_image_logo_512.png from asset_image_logo_512.html
- bugfix - fix shell-function shGithubCheckoutRemote not able to checkout trusted-files in non-alpha branches
- jslint-ci - revamp auto-updating and add shell-function shGithubCheckoutRemote
- test - print time-finished after test-run
- jslint - hide warning about unordered case-statements behind beta-flag
- ci - bugfix - update shell-function shCiBase() to handle undefined fileMain
- ci - auto-update version-number in main mjs-module
- ci - update shell-function shDirHttplinkValidate() to ignore insecure-links http://127.0.0.1, http://localhost
- ci - update ci from node-v16 to node-v18
- cli - remove deprecated cli-option
--mode-vim-plugin - node - after node-v14 is deprecated, remove shell-code
export "NODE_OPTIONS=--unhandled-rejections=strict". - editor - update codemirror-editor to v5.65.10
- remove obsolete help.html
- directive - add new directive
fartto allow complex fat-arrow
- bugfix - warnings that should be ignored sometimes suppress legitimate warnings
- doc - document jslint directives
- vscode - add extra contextmenu commands "JSLint - Do Not Lint Selected Region", "JSLint - Ignore Current Line"
- directive - add new directive
subscriptfor linting of scripts targeting Google Closure Compiler - bugfix - fix expression after "await" mis-identified as statement
- warning - relax warning about missing
catchintry...finallystatement - jslint - allow aliases
evil, nomenfor jslint-directiveseval, name, respectively for backwards-compat - bugfix - fix broken codemirror example
- bugfix - fix jslint not-recognizing option-chaining when comparing operands of binary operator
- allow array-literals to directly call [...].flat() and [...].flatMap()
- coverage-report - disable default-coverage of directory
node_modules, but allow override with cli-option--include-node-modules=1 - coverage-report - add function globExclude() to revamp coverage-report to exclude files using glob-pattern-matching
- add codemirror-example-file jslint_wrapper_codemirror.html
- update codemirror-editor to v5.65.3
- wrapper - add jslint-addon for codemirror
- allow jslint.mjs to auto-export itself to globalThis when given search-param
?window_jslint=1 - wrapper - add jslint-extension for vscode
- bugfix - fix jslint falsely believing megastring literals
0and1are similar - bugfix - fix function jstestOnExit() from exiting prematurely and suppressing additional error-messages
- website - use localStorage to persist jslint-options selected in ui
- website - add optional debug-mode to use sessionStorage to persist jslint-globals and jslint-source from ui
- jslint - add numeric-separator support
- jslint - move regexp-literals to module-level so they are explicitly cached, to improve performance
- ci - add check for package.json.fileCount
- test - migrate all tests to use jstestDescribe(), jstestIt()
- fs - rename jslint-wrapper-files to jslint_wrapper_xxx.xxx
- bugfix - fix issue #382 - make fart-related warnings more readable
- bugfix - fix issue #382 - fix warnings against destructured fart
- bugfix - fix issue #379 - warn against naked-statement in fart.
- update commonjs-wrapper jslint.cjs to load jslint in strict-mode.
- npm - add file jslint.cjs so package @jslint-org/jslint can be published as dual-module
- jslint - relax warning "function_in_loop"
- update function assertJsonEqual to JSON.stringify 3rd param if its an object
- jslint - add top-level-await support
- ci - deprecate/remove jslint.cjs from ci
- coverage - add cli-options
--exclude=aa,bb,--exclude-node-modules=false,--include=aa,bb - coverage - dedupe coverage-logic now applied when only one script passed
- npm - add file .npmignore
- website - add clickable-links to editor-code in report-warnings and report-functions
- ci - add release-trigger to publish to
@jslint-org/jslint - bugfix - fix coverage-report having incorrect http-link to index.html
- bugfix - fix false warning
uninitialized 'bb'in code/*jslint node*/\nlet {aa:bb} = {}; bb(); - bugfix - fix issue #358 - switch-statement crashes jslint
- ci - cache coverage-example node-sqlite3 to speed up ci
- ci - rename dir .build/ to .artifact/
- ci - update shell-function shRunWithCoverage() to reduce size of string/argument passed to nodejs by using 2-space-indent
- cli - add cli-command jslint_plugin_vim
- cli - add cli-command v8_coverage_report
- cli - change cli-option
--mode-reportto cli-commandjslint_report=<filename> - coverage - relax requirement for coverageDir to be in cwd
- deprecated - cli - add cli-option
--mode-report - doc - add api-documentation
- fs - merge file asset_codemirror_rollup.css into index.html
- fs - merge file browser.mjs into index.html
- fs - merge file function.html into help.html
- fs - remove little-used font asset_font_programma_bold.woff2
- fs - rename files with dashes to files with underscore
- jslint - disable linting of embedded javascript in markdown-files
- jslint - relax regexp-warning against using 'space'
- npm - add file package.json and command
npm test - style - change naming-convention for non-jslint-core code from underscore to camelCase
- test - add mocha-like test-functions jstestDescribe, jstestIt
- jslint - add bigint support.
- vim - add vim-plugin and file jslint.vim.
- doc - auto-generate toc for README.md
- jslint - rename little-used directive
debugtotraceto avoid confusion with non-related directivedevel.
- warning - disable un-ergonomic warnings restricting directive-global (missing_browser and unexpected_directive_a).
- fs - rename file ci.sh to jslint_ci.sh.
- license - add codemirror license to rollup-assets.
- website - display number of warnings, properties, functions in report.
- website - fix uiLoader getting hidden behind highlighted text.
- bugfix - fix jslint not warning about function-redefinition when function is defined inside a call.
- bugfix - fix website crashing when linting pure json-object.
- ci - fix race-condition when inlining css.
- doc - update README.md with links to archived web-demos.
- jslint - add new beta-warning against redefining global-variables.
- jslint - add new beta-warning if functions are unordered.
- jslint - add new warning disallowing string-literal as property-name, e.g. {
aa:0}. - jslint - comment out shebang in jslint.mjs so older ios devices can use website.
- jslint - deprecate directive
/*jslint eval*/- use//jslint-quietinstead. - jslint-revamp - rearrange functions in jslint.mjs to comply with ordered-functions beta-warning.
- jslint-revamp - revamp cause-based testing with more robust instrumentation.
- tests - test artifact and column-position in warnings are correct.
- breaking-change - rename files *.js to *.mjs for better integration with nodejs.
- ci - auto-screenshot example-shell-commands in README.md.
- ci - include explicit commonjs (jslint.cjs) and es-module (jslint.mjs) variants of jslint.
- jslint - disable out-of-scope warning for functions.
- jslint - reintroduce directive
/*jslint indent2*/- allow 2-space indent. - license - change license to public-domain/unlicense.
- website - create codemirror-plugin to highlight jslint-warnings in editor.
- bugfix - fix global_list being ignored by jslint.
- bugfix - fix no-warning when exception in catch-block is unused.
- ci - migrate ci-scripts from cjs to esm.
- cli - add env-variable $JSLINT_BETA.
- jslint - add new directive
/*jslint beta*/- enable features currently in beta. - jslint - add new directive
/*jslint variable*/- allow unordered variable-declarations that are not at top of function-scope. - jslint - add new warning if const/let/var statements are not declared at top of function-scope.
- jslint - add new warning if const/let/var statements are unordered.
- website - invalidate url-cache with each deployment.
- website - replace .png logo with .svg logo.
- website - replace current-editor with CodeMirror-editor and change programming-font-family from
Programmatoconsolas, menlo, monospace.
- bugfix - fix await expression/statement inside catch-statement not registered by functionage.await.
- bugfix - fix cli appending slash "/" to normalized filename.
- bugfix - fix issue #316, #317 - jslint complains about dynamic-import.
- bugfix - fix misleading warning describing alphabetical-order instead of ascii-order.
- bugfix - fix off-by-one-column bug in missing-semicolon-warning.
- bugfix - fix try-catch-block complaining about "Unexpected await" inside async-function.
- directive - re-introduce
/*jslint name*/to ignore "Bad property name" warning. - doc - add install-screenshots.
- jslint - add new warning if case-statements are not sorted.
- jslint - add warning for unexpected ? in example
aa=/.{0}?/. - jslint - add warning for unexpected-expr in example
async function aa(){await 0;}. - jslint-refactor-1 - make "stateful" variables scoped outside of jslint() "stateless" by moving them into jslint().
- jslint-refactor-2 - inline constants anticondition, bitwiseop, escapeable, and opener directly into code.
- jslint-refactor-3 - inline regexp-functions quantifier(), ranges(), klass(), choice(), directly into code.
- jslint-refactor-4 - document jslint process and each recursion-loop converted to while-loop.
- remove unnecessary variables nr.
- rename artifact-related variables a, b to let artifact_now, artifact_nxt.
- rename functions make() to token_create().
- reorganize/rename "global" variables by topical-prefixes: artifact_xxx, export_xxx, from_xxx, import_xxx, line_xxx, mode_xxx, token_xxx
- jslint-refactor-5 - split jslint-core-logic into 5-phases.
- move phase-sub-functions out of function-jslint().
- move global-vars into state-object, that can be passed between functions.
- migrate recursive-loops to while-loops in sub-function phase2_lex().
- move remaining global-vars into sub-functions or hardcode.
- update functions artifact(), stop(), warn() with fallback-code
the_token = the_token || state.token_nxt;.
- website - add ui-loader-animation.
- breaking-change - hardcode
const fudge = 1 - breaking-change - remove little-used-feature allowing jslint to accept array-of-strings as source b/c internal lines-object has been changed from array-of-strings to array-of-objects.
- doc - add svg changelog.
- doc - add svg package-listing.
- doc - document cli-feature to jslint entire directory.
- jslint - add eslint-like ignore-directives
/*jslint-disable*/,/*jslint-enable*/,//jslint-quiet. - jslint - add new warning
Directive /*jslint-disable*/ was not closed with /*jslint-enable*/.. - jslint - add new warning
Directive /*jslint-enable*/ was not opened with /*jslint-disable*/.. - jslint - remove obsolete ie-era warning about duplicate names for caught-errors.
- website - move options-ui to top of page after editor-ui
- bugfix - fix issue #282 - fail to warn trailing semicolon in
export default Object.freeze({}). - ci - 100% code-coverage!
- ci - auto-update changelog in README.md from CHANGELOG.md.
- ci - auto-update version numbers in README.md and jslint.js from CHANGELOG.md.
- deadcode - replace with assertion-check in function choice() -
if (char === "|") { warn... }. - deadcode - replace with assertion-check in function do_function() -
if (mega_mode) { warn... }. - deadcode - replace with assertion-check in function no_space() -
const at = (free ? ...). - deadcode - replace with assertion-check in function no_space() -
if (open) {...}. - deadcode - replace with assertion-check in function parse_directive() -
} else if (value === "false") {...}. - deadcode - replace with assertion-check in function supplant() -
return ( replacement !== undefined ?...). - jslint - cleanup regexp code using switch-case-statements.
- jslint - inline function
activateinto functionaction_var. - jslint - inline-document each deadcode-removal/assertion-check.
- jslint - inline-document each warning with cause that can reproduce it - part 2.
- tests - inline remaining causal-regressions from test.js into jslint.js
- tests - validate inline-multi-causes are sorted.
- website - replace links
branch.xxxwithbranch-xxx.
- ci - fix expectedWarningCode not being validated.
- ci - in windows, disable git-autocrlf.
- deadcode - replace with assertion-check in function are_similar() - "if (a === b) { return true }".
- deadcode - replace with assertion-check in function are_similar() superseded by id-check - "if (Array.isArray(b)) { return false; }".
- deadcode - replace with assertion-check in function are_similar() superseded by is_weird() check - "if (a.arity === "function" && a.arity ===...c".
- jslint - add directive
test_internal_error. - jslint - add directive
unorderedto tolerate unordered properties and params. - jslint - inline-document each warning with cause that can reproduce it - part 1.
- style - refactor code moving infix-operators from post-position to pre-position in multiline statements.
- website - add hotkey ctrl-enter to run jslint.
- ci - fix ci silently failing in node-v12 and node-v14.
- cli - add env var JSLINT_CLI to force-trigger cli in jslint.js (used for code-coverage of cli).
- jslint - add "globalThis" to default globals.
- jslint - add new rules unordered_param_a, unordered_property_a, that warn if parameters and properties are listed in nonascii-order.
- jslint - fix bug where (global) functionage missing properties finally and try.
- jslint - fix bug failing to parse unicode "\u{12345}".
- jslint - fix bug falsely warning against conditional-chaining-operator "?.".
- jslint - remove deadcode for preaction-binary-".".
- jslint - remove deadcode warning bad_option_a.
- website - add fork-me ribbon.
- website - load index.html with example code.
- website - merge file report.js into browser.js.
- doc - add section Changelog.
- doc - update README.md with installation instructions.
- cli - merge shell-function shJslintCli into jslint.js.
- jslint - update default globals with support for "import".
- jslint - sort warnings with higher priority for early_stop.
- jslint - add async/await support.
- ci - make branch-beta the default branch.
- ci - validate non-http/file links in *.md files.
- ci - add shell-functions shCiBranchPromote.
- this ci-release does not change any core-functionality of file jslint.js.
- doc - add file CHANGELOG.md.
- ci - begin addng regression tests and improve code-coverage.
- ci - allow pull-requests to run restricted-ci (cannot upload artifacts).
- gh-pages - fix missing assets and insecure http-links.
- gh-pages - merge file jslint.css into index.html.
- gh-pages - add files image-jslint-xxx.png.
- gh-pages - cleanup asset naming-convention.
- fix missing fonts in function.html and help.html.
- add files .gitconfig, Daley-Bold.woff2, Programma-Bold.woff2, icon-folder-open-solid.svg, icon-window-maximize-regular.svg.
- ci - fix http-links after moving to jslint-org.
- doc - migrate file README to README.md with embedded ci links and screenshots.
- ci - add macos and windows to ci-matrix.
- ci - ci now fails if jslint-check fails for any of the files in branches.
- ci - add github-workflows to generate code-coverage for jslint.js.
- last jslint version before jslint-org migration.
- last jslint version written in commonjs.
- last jslint version written in es5.
- last jslint version before 2 year hiatus.
- last jslint version that can lint .html and .css files.