Skip to content

Releases: quirrel-dev/quirrel

v1.0.4

25 Jan 07:50
Compare
Choose a tag to compare
  • Fixed connection.socket.send is not a function #66

v1.0.3

20 Jan 14:10
Compare
Choose a tag to compare

v1.0.2

15 Jan 23:41
Compare
Choose a tag to compare

v1.0.0

04 Jan 07:38
Compare
Choose a tag to compare

Quirrel hits v1 🥳 Improved Cron Jobs, 5 new Frameworks, Production UI

A happy new year everyone! 🎉

I'm proud to announce: Quirrel goes to v1.
The release comes with improvements all over the board.
Let's go through it!

TL;DR: There's improved cron jobs, clients for 5 new frameworks and the Quirrel UI now also can be used for monitoring deployments. Migrating to v1

Improved Cron Jobs

Cron Jobs have been a huge PITA:

I don't understand how and where I can register "good old cron jobs"?
~ every Quirrel user, ever

With v1, they finally get a well-deserved make-over:

// pages/api/myCronJobRoute.ts
import { CronJob } from "quirrel/next";

export default CronJob(
  "api/myCronJobRoute",
  "5 4 * * *", // every day at 04:05
  async () => {
    // do something
  }
);

That's it, that's everything you need to do.
Your local Quirrel instance will automatically pick it up:

registered-a-cron-job

This is implemented using filesystem watchers,
similarly to how tsc --watch works.

For Deployments, running quirrel ci once during build will register all detected Cron Jobs with your production Quirrel instance.
It will also remove obsolete ones.

Support for new Frameworks

After seeing tremendous interest in Quirrel among Next.js and Blitz.js users,
I'm adding support for 5 new frameworks:

If you have another framework in mind that you'd like a Quirrel client for, let me know! :)

Pre-v1, you had to install both quirrel and @quirrel/next.
To ease maintenance, they were consolidated, so @quirrel/next becomes quirrel/next (notice the missing @).

Until now, Next.js users could omit the leading api/ in their Queue's routes.
Going forward, that won't be possible anymore, to match behaviour with the other framework client.

Quirrel UI for Production

You've asked for it, so here it is: The Quirrel UI now supports connecting to non-local environments.
The connection dialog can be opened using a new dropdown in the top left:

connect-to

It enables you to monitor & administrate any Quirrel deployment,
which has been a heavily requested feature.

I'm thinking about adding a "Open in UI" button to the Quirrel Dashboard.
Let me know if that'd be helpful for you.

Why this release was chosen for v1

The previous state of Cron Jobs really nagged on me.
Although they played an integral part to my initial vision for Quirrel,
I struggled to find an easy-to-use design for a long time.[^problems]
Over the course of mutliple brainstorming sessions with some of you (thank you ❤️), we managed to find a good solution.
With those improved Cron Jobs shipping in v1, I'm finally content with Quirrel's feature set.

Moving to v1 also means "going stable".
This is a big step, because we have to maintain that API for the foreseeable future.
Judging by the feedback I received, the current API is well-designed and fit for its task,
giving me the confidence to commit to it.

Thank you.

Since Quirrel's inception in Q3 last year, I've received amazing support from all of you. Thank you ❤️
If you've put in the time to brainstorm with me: Thank you x2 ❤️ Your input has been incredibly valuable for Quirrel.

As you know, I want to create the best developer experience possible.
If there's anything that detracts from it, please let me know! :D

To migrate your application to v1, follow this Guide: Migrating to v1

I'm looking forward to your feedback!

All the best for 2021,
Simon


v0.10.1

27 Nov 10:44
Compare
Choose a tag to compare

v0.10.0

16 Nov 14:49
Compare
Choose a tag to compare

Quirrel v0.10 comes with two new options for jobs:

exclusive Jobs

A job that's marked as exclusive is guaranteed to be executed
on its own, with no other jobs from the same queue running
at the same time.

This can be useful when need to execute jobs one by one, for example when implementing an order queue.

override: true

Until now, when creating a job with an ID that already existed, the new job was discarded.

With override, you can now mark the job to override potentially existing old ones.

v0.9.0

12 Nov 07:50
Compare
Choose a tag to compare
  • Show CRON jobs in dev UI
  • Add human-readable logging to Quirrel CLI

v0.8.0

03 Nov 14:19
Compare
Choose a tag to compare

This release transitions Quirrel to a new queueing library.
Quirrel now uses Owl, a high-performance queueing library tailor-made for Quirrel.

While most of the improvements are under-the-hood, this brings one big new feature to Quirrel:
A memory-only development mode.
This means you can replace your local Redis instance with the much simpler Quirrel CLI!
Delete your docker-compose.yml, run npm install quirrel to get the CLI and run quirrel to start the local version.
Easy!

This release also comes with one small breaking API change.
Job#invoke and Job#delete no longer return a job representation, but a boolean that shows if the action has been successfull.

Other Changes

  • Added support for DISABLE_TELEMETRY in the CLI
  • Embedded the feedback.fish in the Dev UI
  • Added SECURITY.md, CONTRIBUTING.md, and a LICENSE file
  • Rewrote the README
  • Renamed the default branch to main

v0.7.0

16 Oct 16:22
Compare
Choose a tag to compare

This is a big release!

CRON Jobs

You can now specify your jobs to run on a CRON schedule.

quirrel.enqueue({
  endpoint: ...,
  body: ...,
  id: "myCronJob",
  repeat: {
    cron: "* * * * 1 *",
  }
})

repeat.times is now optional, so jobs can repeat indefinitely.

repeat.every and repeat.cron are mutually exclusive.

Human-friendly duration syntax

Because millisecond durations are quite hard to understand mentally, the Quirrel client now also supports specifying durations as human-readable strings:

quirrel.enqueue({
  endpoint: ...,
  body: ...,
- delay: 60 * 60 * 1000,
+ delay: "1h"
})

This works both for delay and repeat.every.

Telemetry

Telemetry allows us to accurately gauge Quirrels feature usage and pain points across all users. This data will let us better tailor Quirrel to users, ensuring its best-in-class developer experience.

Quirrel now collects completely anonymous telemetry data about general usage, it also sends error reports to Sentry. Participation in this anonymous program is optional, and you may opt-out if you'd not like to share any information. To opt-out, set the DISABLE_TELEMETRY environment variable to 1.

Other Changes:

  • Setup Github CodeQL for security analytics

v0.6.3

14 Oct 18:26
Compare
Choose a tag to compare