Skip to content

10.0.0-rc.3

Pre-release
Pre-release

Choose a tag to compare

@sorccu sorccu released this 16 Oct 15:21
· 29 commits to main since this release
b39d123

This is the third release candidate for Checkly CLI 10. It is published on the next dist-tag, so checkly@latest stays on 9.x. To try it:

npm install --save-dev checkly@next

In this release, a deploy sets every remaining property from your code, checkly account usage moves to new reports, and users with several accounts can pick one per command. TypeScript files are now parsed by a faster native parser, which also supports TypeScript 7. If you are upgrading from 9.x, read the 10.0.0-rc.1 release notes first: its Breaking changes and Upgrade notes still apply.

Breaking changes since 10.0.0-rc.2

A deploy sets every property from your code

A few properties were left alone by a deploy when your code did not set them, so a value set in the Checkly web app survived every deploy. A deploy now sends a value for all of them, and a value that only exists in the web app is reset on your next deploy unless your code sets it:

Resource Property Value when your code does not set it
Checks and CheckGroupV1 retryStrategy API, browser and multistep checks and CheckGroupV1: one immediate retry in another location, the same retry they got before. Monitors: no retries. PlaywrightCheck: none, because Playwright handles retries.
Checks description, intent, aiAutoRepairEnabled No description and no intent; automatic repair follows the account setting.
Alert channels sendRecovery, sendFailure, sendDegraded, sslExpiry, sslExpiryThreshold true, true, false, false, 30
PrivateLocation proxyUrl No proxy.
Dashboard customUrl, customDomain, logo, favicon, link, header, description Empty.

A PlaywrightCheck that you remove from its group in code is now also removed from the group in Checkly. Before, it stayed in the group.

The deploy plan shows each value it would reset before you apply it. In a terminal, it offers to write a value set in Checkly back into your code first; write-back now also covers intent. Because of this, the first plan after upgrading may list many alert channels, private locations, dashboards and checks as updates, with the note payload format changed (CLI upgrade).

checkly account usage uses the new usage reports

This also changes account usage for anyone upgrading from 9.x.

  • The JSON output has changed:
    • The summary reports totals.creditsUsed instead of totals.credits.used, and no longer includes percentOfBudget, meters or projections.
    • The summary and series report usageTermsIds (a list) instead of usageTermsId.
    • Series rows report creditsUsed and list their accountId and checkType under dimensions. Run counts are included only with --include runs. interval and groupBy (now a list) move to the top level, and warnings is replaced by coverage.gaps.
    • terms prints a list in { data, pagination }, instead of a single term.
  • --from and --to now select an inclusive UTC date range. On terms, they select every term that overlaps the range, instead of the one term that covers --to.
  • --check-type is removed. Use the new --pricing-rule flag to select charges, or series --group-by checkType to break usage down by check type. --group-by now accepts several values, such as account,checkType.
  • account usage terms now prints a table by default. The new account usage term <id> shows one term in detail.
  • The new account usage projections <id> projects a term's credit consumption, replacing the projections that were in the summary.

New features

Working with several accounts

  • Pick an account per command: setting CHECKLY_ACCOUNT_ID while you are logged in, in your shell or a project's .env file, runs commands in that account without changing your default. This is now fully supported: checkly login no longer refuses to run while it is set, login, switch and whoami say when it overrides your default, and an id your login has no access to fails with a list of the accounts it does have.
  • checkly whoami shows your default account, your other accounts, and where the current account comes from. The new --output json flag prints the same information.
  • "Not found" errors name the account that was searched when you are logged in with checkly login, and say how to look in another one.
  • checkly switch without a terminal (AI agents, CI) no longer shows a menu that nobody can answer. Agents get the list of accounts to choose from, and other runs get an error that lists them.
  • checkly login --wait lets an AI agent wait for you to approve the login code it showed you, so you no longer have to tell it you are done.

Faster TypeScript parsing, and TypeScript 7 support

The CLI now reads TypeScript files with oxc-parser, a native parser. This makes deploy, test and pw-test faster, and they no longer load the TypeScript compiler from your project. Projects that use TypeScript 7 now work, and the deploy plan and write-back no longer need TypeScript installed.

  • Stricter syntax checks: a few mistakes that only tsc used to report now fail when deploy, test or pw-test bundles the check, for example const x without a value or await used as a variable name. Code like this would also fail when the check runs.
  • Reinstall if the parser cannot load: if your node_modules lacks the parser's native package (for example after npm install --omit=optional, or when node_modules was copied from another operating system), TypeScript checks now fail with an error that says to reinstall your dependencies.
  • Malformed tsconfig.json files are ignored, for example one with a missing comma, as if the file did not exist.

Fixes

  • The deploy confirmation only says that resources removed from code will be deleted when the deploy actually deletes some.
  • The deploy plan now explains updates to Playwright checks whose only change is the code bundle, Playwright version or snapshots, instead of counting them as updates without showing anything.
  • Checks no longer fail to bundle when a TypeScript file uses an accessor class field.
  • A logicalId longer than 255 characters is now reported by validation, naming the construct, instead of failing the whole deploy with a database error.
  • checkly test, trigger and pw-test now retry a failed connection for check results, as intended.
  • A successful deploy no longer crashes when the ping URL of a heartbeat monitor cannot be retrieved. It prints a warning instead.
  • Pressing Ctrl+C during checkly test, trigger or pw-test no longer crashes the CLI when cancelling the test session fails.
  • In agent mode, the CLI now tells Checkly that its requests come from an AI agent. Checkly uses this to clean up import plans that an agent started and never committed.

All pull requests

Show the 20 pull requests in this release
  • fix(cli): only say a deploy deletes removed resources when it does [RED-1156] [ship] by @sorccu in #1539
  • fix(cli): print the notice of an update the plan reports by cause alone [RED-1143] [ship] by @sorccu in #1540
  • fix(cli): parse dependencies of TypeScript accessor class fields [RED-1158] [ship] by @sorccu in #1541
  • perf(cli): parse TypeScript dependencies with oxc-parser [RED-1160] [ship] by @danielpaulus in #1533
  • feat(cli): let multi-account users act on another account per command [RED-1122] [ship] by @hlenke in #1528
  • fix(cli): remove a PlaywrightCheck from its group when deploy drops it [RED-1173] [ship] by @sorccu in #1544
  • fix(cli): send a default retry strategy and always turn doubleCheck off [RED-1174] [ship] by @sorccu in #1545
  • feat(cli)!: migrate account usage commands to v2 by @sbezludny in #1542
  • test(e2e): speed up device-flow login e2e on Windows by setting SHELL [RED-1187] [ship] by @sorccu in #1546
  • fix(cli): await mqtt.connectAsync so connection retries actually run [ship] by @hlenke in #1548
  • fix(cli): send the default of an alert channel flag, a proxy URL and dashboard text when unset [RED-1190] [ship] by @sorccu in #1551
  • fix(cli): reject construct logicalIds longer than Checkly stores [RED-1161] [ship] by @sorccu in #1547
  • feat(constructs)!: a deploy owns a check's intent and automatic repair setting [RED-1193] [ship] by @sorccu in #1553
  • feat(constructs): a maintenance window's timezone defaults to UTC [RED-1195] [ship] by @sorccu in #1554
  • fix(cli): await heartbeat ping URLs and catch failed session cancels [ship] by @hlenke in #1552
  • feat(cli): parse write-back and deploy preview sources with oxc-parser [RED-1162] [ship] by @sorccu in #1543
  • feat(cli): declare agent runs via x-checkly-source: AGENT [ship] by @martzoukos in #1412
  • test: keep tests from re-initialising the repository through a leaked GIT_DIR [RED-1200] [ship] by @sorccu in #1555
  • test(e2e): give the checks get suite room for a slow API response [RED-1202] [ship] by @sorccu in #1556
  • test(e2e): kill the login CLI directly instead of its process tree [RED-1142] [ship] by @sorccu in #1538

Full Changelog: 10.0.0-rc.2...10.0.0-rc.3