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. |
||
|---|---|---|
| .circleci | ||
| .github | ||
| .tx | ||
| analytics | ||
| confirmation | ||
| corporate | ||
| docs | ||
| frontend_tests | ||
| locale | ||
| pgroonga | ||
| puppet | ||
| requirements | ||
| scripts | ||
| static | ||
| stubs | ||
| templates | ||
| tools | ||
| var/puppeteer | ||
| zerver | ||
| zilencer | ||
| zproject | ||
| zthumbor | ||
| .browserslistrc | ||
| .codecov.yml | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc.json | ||
| .gitattributes | ||
| .gitignore | ||
| .gitlint | ||
| .isort.cfg | ||
| .mailmap | ||
| .npmignore | ||
| .prettierignore | ||
| .pyre_configuration | ||
| .sonarcloud.properties | ||
| .yarnrc | ||
| babel.config.js | ||
| CODE_OF_CONDUCT.md | ||
| CONTRIBUTING.md | ||
| Dockerfile-postgresql | ||
| LICENSE | ||
| manage.py | ||
| mypy.ini | ||
| NOTICE | ||
| package.json | ||
| postcss.config.js | ||
| prettier.config.js | ||
| pyproject.toml | ||
| README.md | ||
| SECURITY.md | ||
| setup.cfg | ||
| stylelint.config.js | ||
| tsconfig.json | ||
| Vagrantfile | ||
| version.py | ||
| webpack.config.ts | ||
| yarn.lock | ||
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.
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:
-
Contributing code. Check out our guide for new contributors to get started. Zulip prides itself on maintaining a clean and well-tested codebase, and a stock of hundreds of beginner-friendly issues.
-
Contributing non-code. Report an issue, translate Zulip into your language, write for the Zulip blog, or give us feedback. We would love to hear from you, even if you're just trying the product out.
-
Supporting Zulip. Advocate for your organization to use Zulip, write a review in the mobile app stores, or upvote Zulip on product comparison sites.
-
Checking Zulip out. The best way to see Zulip in action is to drop by the Zulip community server. We also recommend reading Zulip for open source, Zulip for companies, or Zulip for working groups and part time communities.
-
Running a Zulip server. Use a preconfigured DigitalOcean droplet, install Zulip directly, or use Zulip's experimental Docker image. Commercial support is available; see https://zulip.com/plans for details.
-
Using Zulip without setting up a server. https://zulip.com offers free and commercial hosting, including providing our paid plan for free to fellow open source projects.
-
Participating in outreach programs like Google Summer of Code.
You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.