Go to file
Aman Agrawal 4efcc33dc2 echo: Remove checks on current message list.
Originally, we only wanted to do local echo in the current
view. However, now that we're looking at navigating the user to the
conversation that they send a new message to, it's going to be quite
common that we immediately visit a destination different from the
current view, where local echo in that different view would be
valuable.

The most interesting block was added in
af188205cb / #8989. But in
6637f2dbb7, the key logic for checking
`msg_list.data.fetch_status.has_found_newest` was duplicated in the
`add_new_messages` code path, which critically also updates
`update_expected_max_message_id` and thus may close a race with
fetching message history for a view we're being navigated to, where
the locally echoed message might fail to appear at all.

This change does come with a slight regression: If we are looking at a
search view where the filter is one that we cannot apply locally, a
newly sent message will now be locally echoed (returning the compose
box for drafting another) even though it cannot be displayed in the
current view, which means that the message will not appear in either
the compose box or the current view for the brief period before we get
a reply from the server in this scenario. This is a minor detail,
likely not worth troubling ourselves over.

Given our intent to experiment with navigating the user out of the
search view in this scenario, this is likely not important.

Co-authored-by: Tim Abbott <tabbott@zulip.com>
2024-05-05 00:23:58 -07:00
.github Remove support for Ubuntu 20.04 and Debian 11. 2024-04-01 13:27:39 -07:00
.tx
.vscode
analytics invites: Remove invites worker, make confirmation object in-process. 2024-05-02 14:23:04 -07:00
api_docs webhooks: Rename STREAM_NAME to CHANNEL_NAME in tests. 2024-05-04 19:01:51 -07:00
confirmation invites: Remove invites worker, make confirmation object in-process. 2024-05-02 14:23:04 -07:00
corporate support: Rate limit demo form requests. 2024-05-04 07:36:16 -07:00
docs contributor docs: Improve article on submitting a pull request. 2024-05-04 23:57:12 -07:00
help help-relative-links: Update relative help links for channel rename. 2024-05-03 13:05:57 -07:00
locale i18n: Update translation data from Transifex. 2024-05-02 10:50:24 -07:00
patches eslint: Enable no-jquery/no-append-html. 2024-04-04 10:11:57 -07:00
pgroonga migrations: Import BaseDatabaseSchemaEditor from its canonical module. 2023-03-05 14:46:28 -08:00
puppet push_notifications: Shard mobile push notifications. 2024-05-02 14:25:10 -07:00
requirements requirements: Add pyasyncore, to fix pyinotify on Python 3.12. 2024-04-29 13:13:20 -07:00
scripts push_notifications: Shard mobile push notifications. 2024-05-02 14:25:10 -07:00
static help-docs: Update wildcards for new channel wildcard. 2024-05-03 12:55:39 -07:00
stubs/taint
templates help: Rename and redirect set-default-streams-for-new-users for channel. 2024-05-03 13:02:20 -07:00
tools zulip_test: Convert module to TypeScript. 2024-05-04 18:55:17 -07:00
var/puppeteer
web echo: Remove checks on current message list. 2024-05-05 00:23:58 -07:00
zerver webhooks: Rename stream->channel in some remaining random places. 2024-05-04 19:01:51 -07:00
zilencer invoice_plans: Add a --date flag, rather than a commented line. 2024-04-24 14:40:28 -07:00
zproject push_notifications: Shard mobile push notifications. 2024-05-02 14:25:10 -07:00
.codecov.yml
.codespellignore pygments: Place Default (light) and Monokai (dark) schemes. 2023-12-04 13:03:34 -08:00
.editorconfig editorconfig: Use [[shell]] section for shfmt options. 2024-02-22 16:36:16 -05:00
.eslintignore web: Move web app to ‘web’ directory. 2023-02-23 16:04:17 -08:00
.eslintrc.json eslint: Enable no-jquery/no-append-html. 2024-04-04 10:11:57 -07:00
.gitattributes
.gitignore dev_settings: Allow user to override settings in a git-ignored file. 2023-12-04 09:50:14 -08:00
.gitlint lint: Update line-length for commit message to 72 in gitlint. 2023-05-01 10:35:52 -07:00
.mailmap mailmap: Add entry for Rohan Gudimetla. 2023-12-13 13:28:19 -08:00
.npmignore
.npmrc dependencies: Switch to pnpm. 2023-03-20 15:48:29 -07:00
.prettierignore integrations: Create incoming webhook for GitHub Sponsors. 2024-02-07 09:52:03 -08:00
.pyre_configuration
.readthedocs.yaml readthedocs: Add a configuration file. 2023-02-03 16:36:54 -08:00
.sonarcloud.properties
CODE_OF_CONDUCT.md docs: Rename "private message" -> "direct message". 2023-06-23 14:36:16 -07:00
CONTRIBUTING.md docs: Fix a server/web-specific segment in contributing guide. 2024-02-26 08:40:37 -08:00
Dockerfile-postgresql docs: Fix grammar errors found by mwic. 2023-10-09 13:24:09 -07:00
LICENSE
NOTICE
README.md docs: Update Ruff badge and links. 2023-10-26 15:51:46 -07:00
SECURITY.md docs: Update .html links pointing to "Upgrade Zulip" or "Modify Zulip". 2023-08-11 16:49:32 -07:00
Vagrantfile Upgrade development environment to Ubuntu 22.04. 2024-04-01 13:27:39 -07:00
dump.rdb stream-settings: Show indicator on notification settings. 2024-02-13 14:47:42 -08:00
manage.py mypy: Enable new error explicit-override. 2023-10-12 12:28:41 -07:00
package.json dependencies: Upgrade JavaScript dependencies. 2024-04-25 16:46:03 -07:00
pnpm-lock.yaml dependencies: Upgrade JavaScript dependencies. 2024-04-25 16:46:03 -07:00
prettier.config.js
pyproject.toml partial: Replace returns plugin with an annotation. 2024-04-29 17:14:41 -07:00
stylelint.config.js dependencies: Upgrade JavaScript dependencies. 2023-07-21 15:58:42 -07:00
tsconfig.json dependencies: Install `@types/jquery.validation for type annotation. 2023-08-14 16:00:20 -07:00
version.py message_delete: Update "first_message_id" on message deletion. 2024-04-30 14:15:22 -07:00

README.md

Zulip overview

Zulip is an open-source team collaboration tool with unique topic-based threading that combines the best of email and chat to make remote work productive and delightful. Fortune 500 companies, leading open source projects, and thousands of other organizations use Zulip every day. Zulip is the only modern team chat app that is designed for both live and asynchronous conversations.

Zulip is built by a distributed community of developers from all around the world, with 74+ people who have each contributed 100+ commits. With over 1000 contributors merging over 500 commits a month, Zulip is the largest and fastest growing open source team chat project.

Come find us on the development community chat!

GitHub Actions build status coverage status Mypy coverage Ruff code style: black code style: prettier GitHub release docs Zulip chat Twitter GitHub Sponsors

Getting started

You may also be interested in reading our blog, and following us on Twitter and LinkedIn.

Zulip is distributed under the Apache 2.0 license.