Zulip 服务器和 Web 应用程序。开源团队聊天可帮助团队保持高效和专注。
Go to file
Wesley Aptekar-Cassels d644562b40
composebox_typeahead: Increase max typeahead box size.
On realms with large numbers of custom emoji, the typeahead emoji picker
often isn't useful. This is exacerbated by the fact the picker prefers
longer matches, so if there are five emoji that share a prefix, and an
emoji that is just the prefix, the only-prefix emoji will never show in
the typeahead emoji picker. This means that if someone thinks that there
is an emoji that shares a prefix with many other emoji, but they don't
remember for sure, they cannot use the typeahead emoji picker to check
that the emoji that they are entering exists.

There are two "real" fixes to this, neither of which this commit
addresses:

First, we should adjust the emoji ranking code such that exact string
matches for existing emojis are always shown in the picker. This would
be an improvement overall (the current behaviour is surprising and
frustrating), but it doesn't fundamentally solve the problem - if there
are many matching emoji, some of them will be pushed off the list.

Second, we should allow scrolling through the entire list of matching
entries in a typeahead, instead of only looping through the top N
matches. This will completely fix the problem (although there is some
UI/UX consideration in how to make it clear that the box is scrollable),
but seems like significantly more work to implement.

However, increasing the typeahead box size should improve the user
experience here independently of either of those changes.

I've chosen 8 as the max size for no particularly principled reason -
the fact that it's larger than 5 makes it more useful, but it's not so
large that it covers an obnoxious amount of the screen. Possibly it
would make sense to make it a bit bigger, but 8 seems like a good place
to start.

I've tested this on my laptop, which has a Intel i5-7200U CPU (~4.5 years
old, middle of the line when it was released) on a test instance with
5000 users, as well as on chat.zulip.org, and didn't see any noticeable
performance regression in completing @-mentions or emoji on either.
2021-02-24 08:29:54 -08:00
.circleci ci: Port xenial-legacy check to GitHub Actions. 2021-02-08 18:01:29 -08:00
.github ci: Port xenial-legacy check to GitHub Actions. 2021-02-08 18:01:29 -08:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
confirmation python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
corporate actions: Remove realm argument to internal_send_private_message. 2021-02-23 15:26:47 -08:00
docs docs: Correct typos in GSoC ideas doc. 2021-02-23 20:51:59 -08:00
frontend_tests js: Convert static/js/message_list_data.js to ES6 module. 2021-02-23 20:36:01 -08:00
locale i18n: Update translation data from Transifex. 2021-01-19 17:45:13 -08:00
pgroonga python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
puppet puppet: Only execute setup-apt-repo if necessary. 2021-02-23 18:16:02 -08:00
requirements lint: Rely on core gitlint skipping of revert commits. 2021-02-23 14:28:09 -08:00
scripts puppet: Only prompt to apply if there are changes to apply. 2021-02-23 18:16:02 -08:00
static composebox_typeahead: Increase max typeahead box size. 2021-02-24 08:29:54 -08:00
stubs requirements: Upgrade mypy to 0.790. 2020-11-12 15:44:30 -08:00
templates desktop-app-install-guide: Update for APT repository move. 2021-02-17 10:24:04 -08:00
tools lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
var/puppeteer puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
zerver tests: Test internal_send_private_message can send to cross-realm bots. 2021-02-23 15:26:47 -08:00
zilencer actions: Remove realm argument to internal_send_stream_message. 2021-02-23 15:26:47 -08:00
zproject api: Add REST API endpoint for looking up a user by email address. 2021-02-15 17:38:33 -08:00
zthumbor python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
.browserslistrc browserslist: Drop 0.2% usage threshold to 0.15%. 2020-09-28 10:57:49 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig lint: Add shfmt as a linter. 2020-10-15 15:16:00 -07:00
.eslintignore puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
.eslintrc.json js: Convert static/js/message_list_data.js to ES6 module. 2021-02-23 20:36:01 -08:00
.gitattributes Revert "gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs." 2019-05-20 19:31:14 -07:00
.gitignore puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
.gitlint lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
.isort.cfg isort: Enable black profile. 2020-09-02 11:00:07 -07:00
.mailmap mailmap: Give priority to Vishnu KS's zulip email. 2020-07-31 10:37:49 -07:00
.npmignore Add proxy notes to new README.dev.md troubleshooting section. 2016-03-29 21:54:05 -07:00
.prettierignore lint: Use Prettier for JSON files. 2020-07-24 09:42:56 -07:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
babel.config.js babel: Specify core-js minor version. 2020-10-05 14:51:03 -07:00
CODE_OF_CONDUCT.md docs: Fix various capitalization errors. 2020-08-11 10:25:52 -07:00
CONTRIBUTING.md docs: Move GSoC ideas to contributing/, and index. 2021-02-18 16:01:16 -08:00
Dockerfile-postgresql docs: Standardize on PostgreSQL, not Postgres. 2020-10-28 11:55:16 -07:00
LICENSE license: Move copyright notice from LICENSE to NOTICE. 2021-02-05 09:28:12 -08:00
manage.py python: Normalize quotes with Black. 2021-02-12 13:11:19 -08:00
mypy.ini mypy: Exclude broken typeshed stubs for markdown. 2020-11-12 15:44:30 -08:00
NOTICE docs: Bump copyright year. 2021-02-05 09:28:15 -08:00
package.json dependencies: Upgrade Source Sans Pro font to Source Sans 3. 2021-02-23 14:55:33 -08:00
postcss.config.js styles: Use range context queries to eliminate *_max variables. 2021-02-05 09:23:59 -08:00
prettier.config.js casper: Remove few traces of casper. 2020-08-30 17:16:02 -07:00
pyproject.toml pyproject: Configure Black. 2021-02-12 08:34:43 -08:00
README.md docs: Update contributor and developer documentation counts. 2021-02-15 17:45:34 -08:00
SECURITY.md docs: Fix more capitalization issues. 2020-10-23 11:46:55 -07:00
setup.cfg pycodestyle: Improve comments documenting excludes. 2021-02-12 13:11:25 -08:00
stylelint.config.js dependencies: Upgrade JavaScript dependencies. 2020-09-02 19:34:37 -07:00
tsconfig.json dependencies: Add ts-node. 2021-02-22 16:03:10 -08:00
Vagrantfile Revert "Make sure Vagrant works with SELinux enabled" 2021-01-26 13:14:06 -08:00
version.py dependencies: Upgrade Source Sans Pro font to Source Sans 3. 2021-02-23 14:55:33 -08:00
webpack.config.ts run-dev: Suppress the notices made by third-party tools. 2021-01-22 18:00:30 -08:00
yarn.lock dependencies: Upgrade Source Sans Pro font to Source Sans 3. 2021-02-23 14:55:33 -08:00

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 700 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

CircleCI branch coverage status Mypy coverage code style: black code style: prettier GitHub release docs Zulip chat Twitter

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.