Releases: quirrel-dev/quirrel
v1.0.4
v1.0.3
v1.0.2
v1.0.0
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:
This is implemented using filesystem watchers,
similarly to howtsc --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:
- Nuxt.js (
quirrel/nuxt
) - Redwood (
quirrel/redwood
) - Vercel Serverless Functions (
quirrel/vercel
) - Express.js (
quirrel/express
) - Connect (
quirrel/connect
)
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
becomesquirrel/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:
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
v0.10.0
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
v0.8.0
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
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
andrepeat.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
- Add Integration tests for @quirrel/client
- Integrate Coveralls: https://coveralls.io/github/quirrel-dev/quirrel
- Fix crash during development: JSON.parse-ing twice