This commit ensures the `message_edit_history_visibility_raw`
parameter is validated using the policy names defined in the
`MessageEditHistoryVisibilityPolicyEnum`, used in the
`update_realm()` function in the `zerver/views/realm.py` file.
Follow up of #32840.
The cron jobs are potentially wrapped by Sentry, which logs "cron
failures" and sends emails. We would like those failures to only be
when the cron job itself failed to run successfully -- not when the
underlying metric is outside of its normal range. We would like to
differentiate a failure of the monitoring infrastructure from a
failure of what it is monitoring.
Swap to return 0 on everything except "unknown" results.
Left sidebar can contain links empty topics. If user clicks on them,
we add `with` operator to the narrow if the topic is empty.
Reproducer:
* Click on a topic in left sidebar.
* Delete all the messages in the topic.
* Click on the topic again.
This was introduced in 5d293c82cd but shortly after
60aa58dfb9 renamed the use of zulip-icon-more-vertical
to zulip-icon-more-vertical-spread, so the CSS classname is
no longer being used there.
See also, the TODO from 60aa58d.
There are no other CSS rules with this id name and also no grep
results for "subscriptions" that have it as an html id, so it seems
pretty safe to say this id is no longer being used.
This is a pre-commit to add the function
"format_array_output_based_on_and_preference()" which will take
two parameters- string array and a boolean whether we want and
based output or not. This function return a string formatted
using Intl.ListFormat.
`deliver_scheduled_emails` tries to deliver the email synchronously,
and if it fails, it retries after 10 seconds. Since it does not track
retries, and always tries the earliest-scheduled-but-due message
first, the worker will not make forward progress if there is a
persistent failure with that message, and will retry indefinitely.
This can result in excessive network or email delivery charges from
the remote SMTP server.
Switch to delivering emails via a new queue worker. The
`deliver_scheduled_emails` job now serves only to pull deferred jobs
out of the table once they are due, insert them into RabbitMQ, and
then delete them. This limits the potential for head-of-queue
failures to failures inserting into RabbitMQ, which is more reasonable
than failures speaking to a complex external system we do not control.
Retries and any connections to the SMTP server are left to the
RabbitMQ consumer.
We build a new RabbitMQ queue, rather than use the existing
`email_senders` queue, because that queue is expected to be reasonably
low-latency, for things like missed message notifications. The
`send_future_email` codepath which inserts into ScheduledEmails is
also (ab)used to digest emails, which are extremely bursty in their
frequency -- and a large burst could significantly delay emails behind
it in the queue.
The new queue is explicitly only for messages which were not initiated
by user actions (e.g., invitation reminders, digests, new account
follow-ups) which are thus not latency-sensitive.
Fixes: #32463.
Fixes#33719
If the user is not subscribed to the new stream but is a subsriber
of the old stream, we were not sending any update events to the user.
This results in unexpected behaviour related to the message.
Earlier, outline for stream cursor in user list and tab navigation
were inconsistent.
This commit makes the outline consistent for both of them.
Fixes: zulip#32880.
Earlier, outline for stream cursor arrow navigation and tab navigation
in stream list were inconsistent.
This commit makes the outline consistent for both stream cursor and
tab navigation.
Fixes part of zulip#32880.
When copying a message from message actions
popover in Safari, the text wouldn't be copied
and neither would the popover close, because
document.execCommand("copy") would fail
and the copy callback wouldn't trigger.
Safari requires some DOM element to be selected
before it can successfully execute the copy
command. This commit fixes the bug by doing
just that.
Note: The mime type `text/x-gfm` is still not
copied in Safari.
Fixes#32877.
Co-authored-by: Sanchit Sharma <ssharmas10662@gmail.com>
Thanks to @sanchi-t, I've yanked a lot of code and approach
from his concurrent PR in 32475, especially the method of
toggling parent css class to hide/show relevant children.
The refactoring in 4e28e1d3ff incorrectly switched a check for
`if args.from_git` into `if NEW_ZULIP_MERGE_BASE`, which is
incorrect -- the merge-base is always defined, it may just match the
version. This led to errors when installing from tarball, without a
git repo.
Since the run_hooks command was already set up to take a `--from-git`
argument, but was ignoring it, pass down that flag from
upgrade-zulip-stage-3 when necessary, and swap the run_hooks logic
back to basing the version-resolution logic on that flag.