Skip to content

Releases: Cykelero/tasklemon

0.6.0

05 Mar 14:27

Choose a tag to compare

Improvements

  • Update many internally-used packages to more recent versions

Breaking changes

Warning

Exceptionally, updating to this release may change the behavior of your existing scripts. Unlike Tasklemon's typical breaking releases, v0.6.0 contains breaking updates to the packages that Tasklemon itself relies on. As a result, any script you run using this release will be affected by the changes listed below.

  • Tasklemon now requires Node 18.
  • Safe delete (calling Item.delete() without passing true) isn't supported on macOS 10.11, Windows 7 anymore.
  • The jsdom package was updated from v19.0.0 to v25.0.1. Most of the breaking changes were bumps of the required Node version. You can review all the changes in the jsdom release log.

0.5.2

30 Apr 17:01

Choose a tag to compare

New

Improvements

  • Accept values for --inspect and --inspect-brk arguments, to set custom port
    • Needed for some IDE debuggers
  • Much better npm error handling
    • Print all importing and requiring errors that occur
    • Also print the path to preparePackageCacheBundle.errors.log, for install errors
    • Don't silence package-specific install errors
  • Improve package preparation speed in some circumstances

Fixes

  • Support lockfile v3 in --pin-pkg (needed when using npm v9 and up)

0.5.1

15 Nov 19:56

Choose a tag to compare

Fixes

  • Fix net.getText() and net.getDOM() sometimes failing

0.5.0: The ESM Update

29 Jun 18:34

Choose a tag to compare

Finally in Tasklemon: ESM package support!
More and more Node packages are not only adding support for ESM imports, but also removing their CommonJS support—this meant you couldn't use them with Tasklemon anymore.

With Tasklemon 0.5.0, you can now use ESM packages, exactly as you'd use CommonJS packages:

cli.tell(npm.chalk.yellow("lemons") + ", please!");

A package's default export is exposed directly (for instance, as npm.camelcase), and named exports are exposed as nested properties (for instance, npm.uuid.validate). And the same syntax falls back to CommonJS when appropriate.

In the majority of cases, this is all you need! For more in-depth info, see the npm documentation.

New

  • Add ESM support to npm
    • Access both default exports and named exports
    • Transparently fall back to CommonJS exports
    • Still no need to await module loading
  • Add --no-msg Tasklemon argument for muting info messages (loading indicators, deprecation warnings)

Improvements

  • Package preparation process now outputs some errors to preparePackageCacheBundle.errors.log, in the Tasklemon installation folder

Breaking changes

Simply updating Tasklemon through npm does not change the behavior of your scripts. When running a script, its runtime header determines the behavior of the Tasklemon runtime, to ensure consistency across Tasklemon versions.

  • When a package uses both ESM and CommonJS, Tasklemon now favors ESM exports. This can affect the behavior of existing scripts, if a package behaves differently depending on how you import its functionality.

0.4.2

01 Feb 16:47

Choose a tag to compare

Fixes

  • Fix broken import in Folder.js, which caused the whole module to fail

0.4.1

27 Jan 15:49

Choose a tag to compare

Fixes

  • Improve Folder.file()/Folder.folder() deprecation warnings
    • Only show once per run
    • Only show for scripts targeting 0.4 or higher

0.4.0: The Shipshape Update

19 Jan 15:34

Choose a tag to compare

This release is about smoothing off rough edges, and fixing a few long-standing inconveniences.

Script headers have been completely revamped: they're now much more compact, no longer raise syntax errors in some editors, and contain Tasklemon's full name, for better discoverability.

- #!/usr/bin/env lemon
- #version 0.2
- #require extract-iptc@0.1.3
- #require username@5.0.0

+ #!/usr/bin/env tasklemon-v0.2
+ // tl:require: extract-iptc@0.1.3, username@5.0.0

Command-line arguments can now be marked as required, or given a default value, and Tasklemon will produce a nice error message when appropriate. Also, the -- separator is now supported, along with using = for named argument values.

cli.accept({
    quality: ['-q --quality', Number],
    source: ['-s --source', Folder, required()],
    destination: ['-d --destination', Folder, required()]
});

// $ lemon demo.js --quality=90
// → Argument error: “--source” and “--destination” are required

Rough edges: smoothed off!

New

Improvements

  • Change default shebang to include runtime version
    • Version header is deprecated
  • Change require header format from #require to // tl:require:
    • Supports multiple packages per line
  • Improve command-line argument parsing
    • Named arguments can be specified with a = separator
    • Negative numbers and standalone dashes are fully supported
    • -- delimiter can be used to pass anything as a positional argument
  • cli.tell() now formats its output just like console.log() does

Fixes

  • Item.moveTo() can move items across volumes
  • runtime error messages are output to stderr instead of stdout

Documentation updates

  • Small improvements to the readme and the API docs
  • API reference has a dark mode
  • Update logo to be more yellow (yeah)
    • Readme logo now has a homely white outline, for readability when in dark color scheme

Dev environment updates

  • Tweak ESLint config
  • Tests: Test cli, ScriptParser

0.3.0

06 Jun 19:23

Choose a tag to compare

This release marks the very first time that code was contributed to Tasklemon. Exciting! Many thanks to divido for his quality additions :)

Improvements

  • Scoped npm packages are now supported (thank you divido!)
    • Use the complete package name, e.g. npm['@octokit/core']
    • Nested exports are now available using a colon separator, e.g. npm['uuid:v4']

Fixes

  • Support newer versions of Node when preparing cache bundles
  • Package preparation no longer fails on very fast connections

Dev environment updates

  • Many checks are now warnings instead of errors
  • Tests: Test npm support (thank you divido!)

0.2.3

03 Jul 19:04

Choose a tag to compare

New

Improvements

  • Don't accept absolute paths when getting an item from a non-root Folder
  • Make npm support more reliable still

Documentation updates

Dev environment updates

  • Add ESLint
  • Add .editorconfig
  • Add a header comment to all source files
  • Reorganize injected module files
  • Tests: Test module injection and error surfacing
  • Tests: Many fixes and improvements for Linux and Windows

0.2.2

27 Aug 09:51

Choose a tag to compare

Fixes

  • Don't specify runtime version in shebang, but in separate line instead
    • Few Linux distros support multiple shebang arguments
  • Properly create cache folder if it doesn't exist