Commit Graph

1619 Commits

Author SHA1 Message Date
Shubham Padia
a78be563fb api: Increment API feature level to 505. 2026-05-25 20:21:51 +05:30
Prakhar Pratyush
3f0ee3d70c api: Increment API feature level to 504.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:resolute, false, false, Ubuntu 26.04 (Python 3.14, backend), resolute) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:resolute, , Ubuntu 26.04 production install, resolute) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:resolute-12.0, 12.0 Version Upgrade, resolute) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
2026-05-25 13:25:05 +05:30
Alex Vandiver
577b6de43c dependencies: Add re2js. 2026-05-19 21:50:56 -07:00
Anders Kaseorg
7e254d670d dependencies: Upgrade pnpm from 11.1.1 to 11.1.2.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-14 05:54:50 -07:00
Anders Kaseorg
e7d517915d dependencies: Upgrade JavaScript dependencies.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-13 14:20:32 -07:00
Anders Kaseorg
202b6735ee provision: Install Java ≥ 17.
This is required by vnu-jar now.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-13 14:20:32 -07:00
Anders Kaseorg
4fa38e93f5 requirements: Upgrade Python requirements.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-12 16:38:09 -07:00
Anders Kaseorg
00967fecb9 install-uv: Upgrade uv from 0.11.7 to 0.11.14.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-12 16:21:37 -07:00
Anders Kaseorg
d4d503f39b requirements: Remove dateutil.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:resolute, false, false, Ubuntu 26.04 (Python 3.14, backend), resolute) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:resolute, , Ubuntu 26.04 production install, resolute) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
This removes

- an unclear fuzzy syntax that had been incorrectly accepted by our
`<time:…>` Markdown extension and could not be reproducibly parsed
without a specific Python library (even the UNIX timestamp part did
not work reliably: some UNIX timestamps were instead parsed as
YYYYMMDD);

- a fundamentally ambiguous ad-hoc list of three-letter timezone
abbreviations that we had needed to manually disambiguate by some kind
of subjective popularity;

- an unpleasant dependency of the `pg_backup_and_purge` script that we
had needed to install system-wide because there might not be a
virtualenv set up.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-10 00:21:37 -07:00
Anders Kaseorg
a2fb7b672a message_summary: Replace litellm with the OpenAI Python SDK.
Switch the topic summarization integration from the litellm wrapper
library to the OpenAI Python SDK directly. The SDK can be pointed at
any OpenAI-compatible endpoint via a new TOPIC_SUMMARIZATION_API_BASE
setting, so provider/model strings like "groq/llama-3.3-70b-versatile"
become a plain model name plus a base URL.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-05-07 16:18:53 -07:00
Alex Vandiver
9ff17c9e0c email_validation: Reject domains that can't be IDNA-encoded.
Django's EmailValidator permits anything in U+00A1..U+FFFF as a
domain-label character, which lets bidirectional format characters
like U+202C and U+200F slip through.  Addresses with those trailing
characters then reach the send_email worker, where Django's SMTP
path IDNA-encodes the domain and crashes with UnicodeError.

Validate against IDNA 2008 up front.  This also rejects RFC 5321
address-literal domains like user@[192.168.0.1], which we don't
want to attempt delivery to.
2026-05-06 15:58:04 -07:00
Tim Abbott
3b6643dc94 version: Start 13.0 development branch.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:resolute, false, false, Ubuntu 26.04 (Python 3.14, backend), resolute) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:resolute, , Ubuntu 26.04 production install, resolute) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
2026-04-27 17:37:21 -07:00
Tim Abbott
a37e628b24 Release Zulip Server 12.0. 2026-04-27 15:54:02 -07:00
Tim Abbott
a7a98b746c version: Update version after 12.0-beta2 release. 2026-04-26 00:36:22 -07:00
Tim Abbott
1064f17140 Release Zulip Server 12.0-beta2. 2026-04-26 00:17:44 -07:00
Tim Abbott
a78abf7a96 presence: Restore legacy fields on single-user presence endpoint.
4c3aa4c007 migrated the GET
/users/{user_id_or_email}/presence endpoint to return only the modern
format (active_timestamp and idle_timestamp). The assumption that the
endpoint had no significant consumers turned out to be wrong: the
Zulip web app itself was a consumer (in user_card_popover, where it
caused a "Failed to parse presence API response" error for any
currently active user), and there are likely third-party integrations
relying on the legacy format as well.

Restore the legacy website and aggregated dictionaries alongside the
new modern fields, so existing clients keep working. Clients should
migrate to the modern fields, which is now phrased as a recommendation
rather than a breaking change in the API and self-hosted upgrade
notes.

Additionally, add a top-level server_timestamp field to the response,
matching the behavior of other presence endpoints. This lets clients
compute presence-status age against the server's clock rather than
guessing with the local clock.

Refactor the view to query UserPresence once and format both the
modern and legacy presence dicts from the same row, rather than
issuing two queries that fetch the same data.
2026-04-24 16:49:56 -07:00
Tim Abbott
c6d1907ad9 user_groups: Allow bots to access all user_groups API endpoints.
The user_groups read and write endpoints were unintentionally blocked
to bot users by the @require_member_or_admin decorator (renamed to
@require_human_non_guest_user in #37927).  This prevented bot
integrations from using groups as an ACL mechanism, and from
managing groups they had created.

Switch the seven @require_human_non_guest_user-decorated endpoints in
zerver/views/user_groups.py and the inner decorator in
require_user_group_create_permission (which gates POST
/user_groups/create) to @require_non_guest_user.  Guest users remain
blocked.

This also permits a leaked bot API key to create groups and manage
the ones the bot owns.  Per discussion on chat.zulip.org, that does
not escalate to any security-sensitive operation; a follow-up may
revisit the default value of can_create_user_groups for new
organizations, which is orthogonal.

Discussed on chat.zulip.org:
https://chat.zulip.org/#narrow/channel/378-api-design/topic/GET.20.2Fuser_groups.2F.3Cid.3E.2Fmembers.2F.3Cuser_id.3E.20not.20accessible.20to.20bo

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 14:23:37 -07:00
Alex Vandiver
af9f08d5f7 markdown: Add inline preview support for .mov video files.
Add video/quicktime as a supported MIME type for inline video previews,
enabling .mov (QuickTime) files to render with the existing
message_inline_video HTML.

QuickTime is a container format, and whether a given .mov file actually
plays depends on which codec combinations the browser supports inside
it. Chrome, Safari, and Edge accept most common combinations; Firefox
plays .mov files whose codecs match those it already supports for MP4
(primarily H.264 / AAC) and rejects the rest. For the files a browser
can't decode, attach an error handler that hides the preview element
while leaving the download link in the surrounding <a> tag available
as a fallback.

Fixes #29728.

Co-Authored-By: Henrik Holst <6200749+hholst80@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-24 09:50:03 -07:00
Agnish Bauri
49903cf310 bots: Restrict bot_storage endpoints to bot accounts.
Non-bot accounts have no reason to use these endpoints, or the
BotStorageData model, so we now enforce that restriction explicitly
with new require_bot_user decorator on the view functions.

Co-authored-by: Lauryn Menard <lauryn@zulip.com>
2026-04-22 22:59:16 -07:00
Anders Kaseorg
d82614f54a requirements: Upgrade django-bitfield from Git for Python 3.14 support.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-22 22:00:04 -07:00
Anders Kaseorg
8c55fa38e1 email_backends: Switch from unmaintained backoff to tenacity.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-22 22:00:04 -07:00
Anders Kaseorg
5e66f8a6ee types: Use @types/postcss-import.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-22 10:46:28 -07:00
Anders Kaseorg
f58649b9bf install-shfmt: Upgrade shfmt from 3.13.0 to 3.13.1.
Some checks failed
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-21 16:46:02 -07:00
apoorvapendse
d9631d763d integrations: Add backend for Webex video call integration.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
Co-authored-by: Lauryn Menard <lauryn@zulip.com>
2026-04-18 16:11:00 -07:00
Prakhar Pratyush
52a80268c8 push_notifications: Delete E2EE device records on API key regeneration.
Regenerating a user's API key didn't delete the Device records
for the user which resulted in server keep sending E2EE push
notifications to those devices whose session had just been revoked.

This commit fixes the bug.

Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
2026-04-17 15:52:29 -07:00
Anders Kaseorg
a23a3e7847 dependencies: Upgrade JavaScript dependencies.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-17 15:39:27 -07:00
Anders Kaseorg
9e51a06a4a install-node: Upgrade Node.js from 2.14.0 to 2.15.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-17 15:39:27 -07:00
Anders Kaseorg
d6df5337ff requirements: Upgrade Python requirements.
Also enable a 24-hour dependency cooldown:
https://docs.astral.sh/uv/concepts/resolution/#dependency-cooldowns

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-17 15:04:02 -07:00
Anders Kaseorg
a946a66825 install-uv: Upgrade uv from 0.10.9 to 0.11.7.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-17 15:04:02 -07:00
Alex Vandiver
559c0cad28 realm_emoji: Add a capability for emoji /add and /update_one.
Using these prevents the contents of the realm_emoji/update event from
generating quadratic total size events as emoji are added.
2026-04-16 20:44:57 -07:00
Agnish Bauri
54011fdeec users: Add is_deleted field to UserProfile and expose in API.
When a user is deleted via `manage.py delete_user`, the replacement
dummy user profile now has `is_deleted=True`. This field is exposed
in the API user objects (only present when `true`) so that clients
can distinguish permanently deleted users from deactivated ones.
2026-04-15 14:47:06 -07:00
Sairam Bisoyi
11b90c66bf search: Add channels:archived filter.
Updates the empty narrow banner for all of the "channels" narrows
to not suggest "starting a conversation" since new conversations
cannot be started in archived channels and, if public or web-public
channels don't exist, then the user cannot start a conversation in
one.

Fixes #32506.

Co-authored-by: Kumar Aniket <sachinaniket2004@gmail.com>
Co-authored-by: whilstsomebody <whilstsomebody@gmail.com>
Co-authored-by: Lauryn Menard <lauryn@zulip.com>
2026-04-14 13:15:08 -07:00
Alex Vandiver
dabf3ab71d requirements: Add streaming bson parser. 2026-04-14 12:41:54 -07:00
Prakhar Pratyush
2f1326a742 user_agent: Parse User-Agent string using ua_parser library.
This commit replaces the manual substring matching in
`get_device_browser` and `get_device_os` with `ua_parser`
library.

This gives more accurate results and eliminates the need
to manually maintain parsing heuristics.

Profiling:
1 Million iterations on 28 unique User Agents:
* To extract only browser data `ua_parser.parse_user_agent`
  takes around "0.70 µs"
* To extract OS information `ua_parser.parse_os` takes
  around "0.72 µs`

Fixes #13098.

Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
2026-04-14 10:51:30 -07:00
PieterCK
1aa5338c28 social_auth: Add Discord as an authentication option.
Fixes part of #38149.

Co-authored-by: Kevin Chang <13548854+sf302@users.noreply.github.com>
2026-04-13 09:34:19 -07:00
Agnish Bauri
4c3aa4c007 presence: Always return modern format from single-user presence API.
The GET /users/{user_id_or_email}/presence endpoint now always returns
presence data in the modern format, with active_timestamp and
idle_timestamp fields.

Previously, the legacy format was returned by default (with website
and aggregated keys), and a slim_presence parameter was needed to
opt in to the modern format. Since the legacy format is slated for
full removal, there is no reason to support it from this endpoint.

Fixes #36710.
2026-04-13 09:17:24 -07:00
apoorvapendse
5c7adf65d1 gifs: Introduce KLIPY as a GIF provider.
Signed-off-by: apoorvapendse <apoorvavpendse@gmail.com>
2026-04-11 22:51:27 -05:00
Niloth P
ae1fbd239d integrations: Rename WebhookUrlOption's validator to input_type.
And convert its type from `Callable` to `str`.

It's type was previously set to a string in the frontend, and validator
functions in the backend, which were never called.
2026-04-11 22:36:08 -05:00
Sanket Srivastava
b14dca0bbf reaction: Remove user object from reaction events.
The `user` object was temporarily restored to reaction
events in zulip#33009 to maintain compatibility with mobile
clients.

As the Zulip mobile app has fully migrated to using the
`user_id` field, this commit permanently removes the `user`
object from reaction events.
2026-04-11 22:26:41 -05:00
Prakhar Pratyush
eddaedacb9 push_registration: Clean up legacy token on E2EE registration.
When a client successfully registers for E2EE push notifications,
automatically remove any matching legacy PushDeviceToken and
RemotePushDeviceToken registration with the same token for the user.

Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
2026-04-05 14:39:12 -07:00
Alex Vandiver
9a32968e45 api_docs: Document recipient_id changes. 2026-04-05 10:54:59 -07:00
Anders Kaseorg
a098e7fcbb requirements: Switch from circuitbreaker to pybreaker.
pybreaker is more actively maintained, more popular, and type
annotated.

Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-04-05 10:43:07 -07:00
Alex Vandiver
63110e486a version: Update version for Zulip Server 11.6 release.
Some checks failed
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
Code scanning / CodeQL (push) Has been cancelled
Zulip production suite / Ubuntu 22.04 production build (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (amanagr2/ci:noble, false, false, Ubuntu 24.04 (Python 3.12, backend), noble) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:bookworm, true, false, Debian 12 (Python 3.11, backend + documentation), bookworm) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:jammy, false, true, Ubuntu 22.04 (Python 3.10, backend + frontend), jammy) (push) Has been cancelled
Zulip CI / ${{ matrix.name }} (zulip/ci:trixie, false, false, Debian 13 (Python 3.13, backend), trixie) (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (amanagr2/ci:noble, , Ubuntu 24.04 production install, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm, --test-custom-db, Debian 12 production install with custom db name and user, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy, , Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie, , Debian 13 production install, trixie) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-7.0, 7.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:bookworm-8.0, 8.0 Version Upgrade, bookworm) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:jammy-6.0, 6.0 Version Upgrade, jammy) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-10.0, 10.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:noble-9.0, 9.0 Version Upgrade, noble) (push) Has been cancelled
Zulip production suite / ${{ matrix.name }} (zulip/ci:trixie-11.0, 11.0 Version Upgrade, trixie) (push) Has been cancelled
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
2026-03-31 20:00:46 +00:00
Anders Kaseorg
045e832242 dependencies: Upgrade json-schema-ref-parser to fix DeprecationWarning.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-03-27 10:56:06 -07:00
Prakhar Pratyush
cce75cdb10 register: Improve idle_queue_timeout and document.
Replace the undocumented integer-only idle_queue_timeout parameter
on `POST /register` with a documented parameter that accepts
either a positive integer (seconds) or the string "mobile" to use
the server's recommended timeout for mobile clients (currently
12 hours).

The parameter resolution (None → default 10 min, "mobile" → 12h,
capped at 7 days) happens in ClientDescriptor.__init__, and the
resolved value is sent back through the Tornado response as
idle_queue_timeout_secs, which is included in the `POST /register`
response so clients know the effective timeout.

Signed-off-by: Prakhar Pratyush <prakhar@zulip.com>
2026-03-26 15:55:44 -07:00
Anders Kaseorg
a68a815414 install-shfmt: Upgrade shfmt from 3.12.0 to 3.13.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2026-03-25 04:06:09 -07:00
Sahil Batra
a06723a763 streams: Allow read access for archived channels.
This commit updates code to allow fetching details, subscribers
and topics of archived channels.
2026-03-23 12:21:03 -07:00
Tim Abbott
28482a0e58 version: Update version after 12.0-beta1 release. 2026-03-12 17:13:28 -07:00
santhoshkumarCodes
c8d722e4df thumbnail: Add thumbnail status polling endpoint.
Previously, if the user toggles the preview mode in the compose box before
an image/GIF in the drafted message has been uploaded and thumbnailed,
then the loading indicator shown in the preview of the message will never update.

To address this issue, this commit adds a new cheap endpoint to return the
status of the thumbnail generation. This endpoint will be polled by the compose
box to update the loading indicator.

fixes part of #32961.
2026-03-12 15:54:29 -07:00
Tim Abbott
ad0912208a Release Zulip Server 12.0-beta1. 2026-03-12 11:38:32 -07:00