Wait-groups 🔃
-
Wait-groups
Fan-out to fan-in with wait groups. You can use wait groups to dispatch multiple tasks in parallel, and then send an event to a topic when they're done.
await client.wait("review-completed", [ { topic: "security-review", body: { pull_request_id: 123 }, }, { topic: "style-review", body: { pull_request_id: 123 }, }, { topic: "test-review", body: { pull_request_id: 123 }, }, ]);
-
Scrolling topic event list
There was a bug that, on certain screensizes, the topic event list was not scrollable - meaning you could only see the 10 most recent events.
-
Inconsistency in cron time zone
Fixed an issue where the cron preview times were incorrect due to the time zone not being respected in the API.
Admin API 🏗️
-
Admin API
You can now easily manage resources like subscriptions from code, with idempotent API endpoints.
const res = await sailhouse.admin.registerPushSubscription( "user-created", "send-welcome-email", "https://api.acme.dev/webhooks/send-welcome-email", );
-
Richer event details view
You can now easily inspect event JSON data, with an interactive JSON viewer for collapsing and searching through your events.
-
Surfacing scheduled events
Previously, it was a bit confusing to see scheduled events in the events list with no distinction. We've added a clear indicator to distinguish between scheduled and immediate events.
-
Acked dead letter events
Fixed a bug where some dead letter events were showing up as acked.
Papercuts & Mobile language support 📲
February was a month of incremental improvements, and broadening our native language support to Kotlin & Swift, two pillars of the mobile ecosystem.
-
Kotlin & Swift SDKs
BetaSend events from more places thanks to native Kotlin/Swift SDKs
-
Acknowledging events from the dashboard
You can now acknowledge individual events from the dashboard, for both pull and push subscriptions.
-
Click-to-copy slug titles
You can now quickly copy app, topic, and subscription slugs throughout the application.
-
Clearer messages for duplicate app names
We weren't showing a clear error description when creating an app with a name that already existed.
-
Scheduled events are now more visible in the dashboard
We've made it easier to identify events which are due to be sent through a topic or subscription when looking at the events list.
-
Topics wouldn't always create when sending the first event
In certain circumstances, we failed to create the topic when an event was sent to a non-existant topic. All of these events stayed in our buffer, and were eventually processed!
-
Some cron jobs would still run when paused
Fixed an issue where paused cron jobs would still run in a particular edge case.
Python SDK 🐍
Trigger regular scheduled work with ease thanks to our new cron jobs
-
Python SDK
BetaStart sending and receiving events in the snake-named language dominating the AI toolchain.
await client.publish( topic="quick-test", data={"message": "Hello, World!", "number": 42} )
-
Improved speed of event processing
The time from an event being ingested -> it being propogated to subscriptions is now as much as 10x faster.
-
Made it easier to collaborate with your team
It's now easier to invite users to your team on Sailhouse, just needing an email address to get them up and running.
-
Subscription usage wouldn't show
If a subscription had only recieved 1 event in the previous 24 hours, it wouldn't show any activity
Cron jobs in beta 🎉
Trigger regular scheduled work with ease thanks to our new cron jobs
-
Cron jobs
BetaWe're rolling this out with a select few partners to get things perfectly right, but you'll be able to trigger events on a schedule with native cron jobs.
-
More real-time analytics
We've reduced the latency
-
Better motion animations on graphs
Motion is now smoother on usage graphs across the dashboard
-
Empty events could not be processed
Events without a body would briefly fail to be processed due to a bug in our internal pipeline. Events could be ingested without issue.
Scheduled events ⏰
-
Include a signature for events delivered by push subscription
Allows you to verify that the event came from Sailhouse
-
Scheduled events
BetaWe now support scheduling an event for a future date, up to the end of time! Available in the Go & TypeScript SDK. UI coming next week.
err := client.Publish( ctx, "user-order-review", data, // 7 days from now sailhouse.WithScheduledTime(time.Now().Add(time.Hour * 24 * 7)), )
-
Some events wouldn't stop being delivered
Fixed a bug that meant some (0.0001% of volume last week) events did not have a maximum number of attempted deliveries
Rust SDK 🦀
-
Team-wide analytics for events
Added team-wide analytics for events.
-
Rust SDK
BetaNot advised for production, but feedback and PRs appreciated!
use std::{collections::HashMap, env}; use sailhouse::SailhouseClient; fn main() { let token = match env::var("SAILHOUSE_TOKEN") { Ok(value) => value, Err(error) => { eprintln!("Failed to read SAILHOUSE_TOKEN: {}", error); return; } }; let client = SailhouseClient::new(token); let mut data = HashMap::new(); data.insert("message", "Hello world!"); let publish_future = client.publish("example-topic", data); let _ = tokio::runtime::Runtime::new().unwrap().block_on(publish_future); }
-
Performance improvements at the edge
Improved performance at the edge for receiving events
-
Fixed edge node distribution issue
Fixed an issue where the Sailhouse's edge nodes weren't distributing events properly, resulting in longer processing times