The upgrade from %0 to %1 was calling into +on-init, which issues a
scry. In some cases, that might not be able to complete successfully,
aborting the whole event that triggered the load.
Here, we move this "set flag based on settings" logic into a %default
poke command, and change the +on-load logic to set a timer that calls
that instead, defering the scry to the next event.
The json serialization logic hadn't been updated correctly. We leave a
better comment for easier reference. And we want more details to look at
in the case something errors out.
Previous logic for reading %settings-event facts was a little to eager
in declaring explicit non-consent. It would also set the flag to false
in cases where we received updates not matching what we were looking
for.
Now, it's not entirely certain that this was a problem, but we did
observe "disabled growl" on ships that had the setting toggle on the
frontend set to true, and this seemed like the only viable cause of
that.
We also update +on-load to re-set the flag from the current settings
value, to correct any lingering mismatching states.
Instead, give a %no-mail response message. It's not entirely unexpected
to encounter ships that don't have a hosting account email address
associated with them, so it shouldn't be a reason to crash.
The crash is particularly problematic because as of the previous
commits, we now actually show the trace of thread crashes.
We weren't accounting for the different wire used for this, causing us
to spill our spaghetti and redirect processing to +on-fail, which wasn't
very graceful.
Now, we can actually properly notify on failed thread runs.
There is a (somewhat poorly understood) case where the group associated
with a chat may not actually contain that chat in its channels listing.
Here, instead of assuming the channel is always present, we ask for it
more gently, and simply skip to the next-most-active channel if it turns
out to be missing.
We also remove a stray debug printf, and add a trace print in case
anything else goes wrong here.
The "save summary" thread still had hark flagged as one of its dependencies,
but doesn't actually use that for anything anymore.
Here we simply remove the import.
Includes the bark/growl system for sharing activity summaries. The growl
agent respects the "activity logging" consent flag used by groups,
defaults to not sharing if that flag is not set, and only shares with
the "bark host" when prompted. (The bark host, in turn, currently only
stores responses for hosted ships.)
Also includes all the groups-side dependencies this has, which it needs
for the chats & groups types. Hard-including those files will save us
some run-around during deploy.
Co-authored-by: midsum-salrux <nathan@tlon.io>
Sending on-demand emails requires a Mandrill API key, not a Mailchimp
one. (They're part of the same company/suite now, but still use
different keys and endpoints. Mandrill and Mailchimp keys are also
called "mailchimp" and "marketing" keys respectively. Yes, in that
order.)
- Adds a mutation to create a yarn from the frontend.
- Adds a new zustand state for tracking actions that could take a while (WatcherStore).
- Switches docket over to react-query (added a new scry endpoint as part of this).