Contribute to Open Source. Search issue labels to find the right project for you!

subscribers: Remove fetching subscribers from server.

zulip/zulip

Now that we have awesome new hotkeys for navigating the streams overlay (see #4255), we should fix the fact that we do a fairly large unnecessary data fetch (to get the subscribers data) every time you navigate to a new subscription row.

I believe we actually have all the data necessary to rewrite show_subscription_settings to just not do that fetch at all, and instead just render off of sub.subscribers.

Updated 26/03/2017 01:45 1 Comments

stream creation: Small bugs in stream name and description.

zulip/zulip

In the subscriptions modal, after clicking + to create a new stream. * Up and down arrow are not correctly captured by the text boxes on the right hand panel (e.g. stream name, stream description, filter). Probably a stopPropagation() is all that’s needed. * If you partially fill out a name and description, leave the page, and come back (e.g. by clicking on a stream on the left), it restores the stream description but not the stream name.

Updated 26/03/2017 01:00 1 Comments

stream creation: Don't mark stream as inactive after creation.

zulip/zulip

We currently mark streams as inactive if they have no loaded messages. If you create a stream (e.g. through the subscriptions modal), it will be marked as inactive, since it has no messages.

This is slightly confusing for people on small realms (it marks the newly created stream as light grey, which is a different color than the rest of the streams), but really confusing if you have 40+ streams, since then the new stream is automatically sorted to the bottom, with the rest of the inactive streams.

The solution is to mark streams as active if the user just created it.

Notes: * The is_active function is in static/js/stream_data.js. * A lot of relevant code is in stream_list.js, including e.g. the functions that build the sidebar.

Updated 26/03/2017 00:47 1 Comments

streams list: Add vertical space or an <hr> to separate streams from inactive streams.

zulip/zulip

A stream is considered inactive (namely, has the CSS class inactive_stream), if it has no messages among the messages currently loaded in the browser. See exports.is_active in static/js/stream_data.js.

If you’re subscribed to more than 40 streams, we push inactive streams to the bottom of the list, in build_stream_list of stream_list.js. This is somewhat confusing as a user, and would be less confusing if there were a visual demarkation between the “regular streams” and inactive streams. An <hr /> or a bit of vertical whitespace should be enough.

Updated 25/03/2017 23:48 1 Comments

font: Ligatures like ff have strange behavior

zulip/zulip

Copying conversation from https://chat.zulip.org/#narrow/stream/issues/topic/ligatures

– If you type something with two f’s and then left arrow back over it, you get somewhat strange behavior, since the ff is turned into a ligature. I managed to get stranger behavior as well by using backspace instead of left arrow, though I don’t have a repro at the moment. If we turn off ligatures, would that break accented characters? (fwiw, slack and gchat seem to handle the ff case fine)

– I have been able to reproduce the left arrow thing (or any other attempt of moving the cursor between both f’s). The cursor stays after the last f, but if you type the text appears between them. Something curious also happens if you click between both f’s. The cursor should appear between the f’s, but it doesn’t. Actually, if you type new text, it appears after the ligature.

– This happens in the compose box, search boxes, edit box, etc. @brockwhittaker in case you want to take a look.

(Marking as a bug, but feel free to remove if this feels more like an enhancement than a bug.)

Updated 23/03/2017 03:09 1 Comments

hotkeys: Left arrow in compose should not open last sent message if uneditable.

zulip/zulip

Currently the left arrow opens the last message for editing, even if it is in topic editing only mode, and many messages in the past. I think in these cases hitting left arrow was probably an accident, and should just do nothing. In particular, I think the left arrow should only open the message if get_editability(message) is editability_types.FULL (these are at the top of message_edit.js).

Updated 23/03/2017 05:07 3 Comments

tooling: Improve handling of duplicate migration numbers after rebase.

zulip/zulip

Currently, if you have a branch with a new migration, and you rebase onto master past someone else’s migration, you have to manually renumber your migration.

It would be great to improve this in a couple of ways. 1. Write a script that automatically renumbers the migrations. 2. Update http://zulip.readthedocs.io/en/latest/schema-migrations.html (the section “Numbering conflicts across branches”). 3. Update the advice given by tools/test-migrations in this case. (The advice should be to run the script you created above, plus a link to the documentation.)

Updated 23/03/2017 02:51

stream list: Once a stream is marked as inactive, it never re-activates.

zulip/zulip

A stream is considered inactive (namely, has the CSS class inactive_stream), if it has no messages among the messages currently loaded in the browser. See exports.is_active in static/js/stream_data.js.

We label streams as inactive (or not) when initially loading the webapp (see build_stream_sidebar_row in stream_list.js). However, we don’t update this designation if an inactive stream gets a new message after load. (An active stream can never become inactive, since we don’t garbage collect old messages from the browser, I believe.)

A good solution might be to just removeClass('inactive_stream') every time a new message comes in to a stream.

Updated 23/03/2017 02:34 2 Comments

compose: Change compose box to use a handlebars template.

zulip/zulip

Currently, the message edit box and the compose box have completely different styling. We’d like to make the message edit box look more like the compose box. The first step for this is to render the compose box via a handlebars template, so that we can then reuse that template for the message editing box.

Much of the relevant compose box code is in static/js/compose.js.

Updated 23/03/2017 02:24 4 Comments

markdown: Backend isn't rendering second level markdown.

zulip/zulip

The local echo seems to get this right, but the backend is not: * top level item 1 * second level item a * second level item b This should result in the lines with items a and b being indented relative to the top line, which they currently are not.

http://zulip.readthedocs.io/en/latest/markdown.html has some information about Zulip’s markdown processor.

Updated 24/03/2017 17:32 4 Comments

Prioritize recent message senders / PM recipients in typeahead

zulip/zulip

Thanks to @tommyip’s work in #2806, we now prioritize PM recipient and @-mention typeahead by users who are subscribers to a stream.

A second level of prioritization that should probably be above that one is prioritizing recent message senders and users you’ve been in a PM thread with (first in the current narrow and then in the organization overally); this would massively decrease the impact of having large numbers of inactive users (like on chat.zulip.org or other open source projects) on the efficiently of naming other users via typeahead.

This will take some care to avoid having this feature slow down the typeahead, but I think with a bit of data structures work (we probably already cache all the needed data for in pm_list.js for the recent PM threads piece; and recent senders should be pretty easy to add as a data structure), this should be very doable.

Updated 22/03/2017 22:59 1 Comments

message edit: Improve experience for copy to clipboard

zulip/zulip

A few quick things for the new copy to clipboard: * The button styling should match the button styling of the buttons in the compose box: image (note that they also darken on hover)

(In particular, we should also remove the border of the current button; the main reason for the surrounding whitespace is for when the button will be on top of the message text)

  • The button should only be there for “View Source” or “Topic editing only”; not in Message Edit mode
  • The text should say “Copy and close” rather than “Copy to clipboard”, so that it is less surprising when the edit box closes
  • There should be a “Successfully copied” message after closing, maybe to the left of the three icons that appear on message hover?

@jajodiaraghav, this may be a good one for you!

Updated 22/03/2017 20:25 5 Comments

tutorial: Change initial messages to be sent in a PM.

zulip/zulip

Currently, for new organizations, we send a bunch of tutorial-y messages into #announce when the first person from the organization logs in. Search for send_delayed_stream_message in static/js/tutorial.js to see what we send.

A better model would be to send those messages to a PM with the user instead, and drop the user into the PM view when they first log in to the realm. Some reasons: * We can send different messages to first_in_realm and later users * The initial messages in #announce will be quickly lost in a heavily used realm * It gives a place for users to send a few test messages * The messages can (eventually) be customized to be realm specific (e.g. include a link to a code of conduct)

The messages can be sent as a part of do_create_user or similar in actions.py.

Updated 22/03/2017 00:31 1 Comments

Reactions addition feature broken with /me messages

zulip/zulip

Reproducer:

  • Send a message using /me, e.g. /me message
  • React to it.
  • Hover over the reactions area.
  • The smiley button that’s usually to the right of the existing reactions will only appear when your cursor is over a smaller corner of it; usually it’ll look like this:

image

This is probably an issue with the HTML layering or something inside the /me messages markup.

Updated 21/03/2017 21:37 1 Comments

Make the arrow keys work for navigating the emoji reactions popover

zulip/zulip

Now you can use : to open the emoji reactions popover, which is awesome. Some good follow-ups are: * Making the arrow keys navigate. This is a bit interesting since there is a text box that you’re in, but I think basically we want the behavior to be that do is the down arrow moves to the grid of emoji, as down the right arrow if you’re at the right end of the text box. And I think similar behavior can work for moving back to the text box from the grid. * Making escape close the emoji reactions popover, even if the text box is focused (currently you need to hit it twice).

Updated 24/03/2017 03:59 6 Comments

emoji: Use spaces instead of underscore when possible.

zulip/zulip

Many emoji shortcodes have underscores, like :baby_bottle:. We display the emoji shortcodes with underscores everywhere in the app, but it would be nicer just to show spaces, like baby bottle.

A few places this should be changed: * Emoji autocomplete should show baby bottle instead of baby_bottle * Typing either :baby b or :baby_b should show baby bottle in the autocomplete, but it should still complete to :baby_bottle: when you hit enter * The alt text in the emoji should stay as :baby_bottle:, but the title should change to baby bottle (see `zerver.lib.bugdown.make_emoji)

Updated 26/03/2017 02:12 4 Comments

Change consider_bankruptcy to use UserPresence instead of pointer.

zulip/zulip

Currently, the following piece of code in static/js/unread_ui.js puts up the bankruptcy modal if you have more than 500 unread messages and your pointer is more than 2 days in the past:

    var now = new XDate(true).getTime() / 1000;
    if ((page_params.unread_count > 500) &&
        (now - page_params.furthest_read_time > 60 * 60 * 24 * 2)) { // 2 days.
        var unread_info = templates.render('bankruptcy_modal',
                                           {unread_count: page_params.unread_count});
        $('#bankruptcy-unread-count').html(unread_info);
        $('#bankruptcy').modal('show');

It would be better to use the information in UserPresence to calculate this, since page_params.furthest_read_time can be very far back for those that use the left sidebar to read Zulip rather than the Home view.

It would also be better to change 2 days to 4 days, so that it doesn’t include just being gone for the weekend.

Updated 19/03/2017 12:30 4 Comments

Audit our webhook integrations for ping messages that should be handled

zulip/zulip

As a follow-up to #3994, it’d be super awesome to audit our other integrations for whether they have “ping” type messages that are being silently accepted and should instead send out a similar notice. Probably the best way to check is to read the webhook docs for the integration, but we could also check our code in most cases.

I’d sorta do this in a few stages that all feel fairly quick (and log findings in this issue). E.g. start by checking out the 5 other Git integrations and opening issues for any that need work, and going from there.

Updated 24/03/2017 07:17 1 Comments

Add typeahead for supported languages for syntax highlighting

zulip/zulip

in the message formatting pop over there could be a tool tip that lists the supported language for syntax highlighting and what code you need to tip to activate them. Currently only .py is there and that’s why I thought for a long time that this was the only language.

add tooltip there

Was there not also another formatting that makes inline code red? It’s not in the msg formatting description only grey is there

Updated 21/03/2017 06:05 4 Comments

bugdown: Buggy local echo when ending with at-mention.

zulip/zulip

Not sure what the underlying issue is, but a reproducer is stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff stuff <@mention someone>

The local echo should have 15 copies of the @mention replacing all the stuff.

Updated 20/03/2017 23:18 5 Comments

i18n: Traceback running `makemessages.py` with emacs backup files of JS

zulip/zulip

Just create the file named static/js/.#echo.js run manage.py makemessages. processing locale pl Traceback (most recent call last): File "./manage.py", line 29, in <module> execute_from_command_line(sys.argv) File "/srv/zulip-venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line utility.execute() File "/srv/zulip-venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 359, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/srv/zulip-venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 294, in run_from_argv self.execute(*args, **cmd_options) File "/srv/zulip-venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 345, in execute output = self.handle(*args, **options) File "/home/tabbott/zulip/zerver/management/commands/makemessages.py", line 90, in handle self.handle_frontend_locales(*args, **options) File "/home/tabbott/zulip/zerver/management/commands/makemessages.py", line 101, in handle_frontend_locales translation_strings = self.get_translation_strings() File "/home/tabbott/zulip/zerver/management/commands/makemessages.py", line 173, in get_translation_strings with open(os.path.join(dirname, filename)) as reader: IOError: [Errno 2] No such file or directory: '/home/tabbott/zulip/zproject/../static/js/.#echo.js'

Updated 24/03/2017 07:20

Add test coverage for session deletion methods in zerver/lib/sessions.py

zulip/zulip

We just extracted zerver/lib/sessions.py out of zerver/lib/actions.py. We should get it to 100% test coverage and then add it to the fully covered list in tools/test-backend.

This should I think be a fairly quick project – for each function, test that it logs out the user(s) that should be targeted, and doesn’t log out some other user.

Updated 25/03/2017 18:15 8 Comments

integrations: Improve github (and other version control) messages.

zulip/zulip

Github (and other version control) messages currently look like this: image

A few improvements could be made: * We currently show 10 commits before doing the “and N more commits”. The limit should be 20 instead of 10, since 10+ commits is not uncommon. * The commit links should move to the end. So “integrations: Add foo to bar. (1234567)” * The timabbott pushed to branch master should change to the following. * If all the commits are from timabbott, then “timabbott pushed 15 commits to branch master:” * else if there are at most 3 authors, then “timabbott pushed 8 commits to branch master. Commits by rishig (5), octocat (2), and timabbott (1):” * else “timabbott pushed 13 commits to branch master. Commits by rishig (4), octocat (2), and others (7):”

Authors can be in decreasing order by number of commits, breaking ties alphabetically.

Adding a picture of what it would look like: image

@TomaszKolek, since this is possibly a fast change for you.

Updated 23/03/2017 19:10 8 Comments

Attempting to start a reply to a message you're editing doesn't work

zulip/zulip

This is a somewhat tricky issue that we need to think about carefully. Right now, the behavior is weird, in that your mouse moves to a pointer “something will happen if you click” when you move it over any of the yellow areas of the message body:

image

Yep clicking does nothing; I imagine users expect that it would open the compose box (as happens if you click on other messages).

Updated 06/03/2017 08:23 2 Comments

Show a banner with link to a custom url when user joins for the first time

zulip/zulip

There are two parts for this project.

Part 1 - Banner

When a user joins an organization for the first time a banner would be shown with link to an external webpage. The banner would ask user to check out the link to know more details about the organization (Or something similar).

eg: In case of https://chat.zulip.org the link can point to http://zulip.readthedocs.io/en/latest/chat-zulip-org.html

The administrator should be able to customize the link and enable/disable the banner.

Part 2 - Link in Gear menu

The external URL should be also linked from the gear menu as the banner is shown only when the user joins an organization. Perhaps the link can be called “Organization guidelines” or something, and only appear if an administrator has set that feature?

Discussion regarding this feature can be accessed here.

Check out the New feature tutorial to see how you should go on to implement a new feature in zulip.

Updated 03/03/2017 22:23 2 Comments

left sidebar: Clicking on a topic should not open compose box.

zulip/zulip

To reproduce, make sure the compose box is closed, and then click on any topic in the left sidebar. The correct behavior is for the compose box to stay closed.

Not sure when this regression happened, but it has been there for a while. It is particularly unfortunate since it means the page up and page down keys don’t work (they get taken by the compose box).

Updated 16/03/2017 06:42 6 Comments

search: Add ability to search by huddle.

zulip/zulip

We’ll want to add a new search keyword, like huddle-with:<email>.

On the backend, the main change that needs to be made is in NarrowBuilder in zerver/views/messages.py.

The frontend is a bit messier, but I would git grep for pm-with which should have a superset of the changes that are needed.

This is something that will also need a careful test suite.

This would be a great medium size project for someone who has done several smaller projects, and is looking for something bigger.

Updated 21/03/2017 07:45 9 Comments

Error message sending to a stream you're not subscribed to is broken

zulip/zulip

If you narrow to a stream you’re not subscribed to (this is easy to do via the search bar, and will become more common when we add a preview feature in /#subscriptions), and send a message, Zulip will give you an error message like this:

image

Currently, it kinda sucks, because the link takes you to the wrong part of the /#subscriptions page (where you browse your existing streams and need to click “All streams” to see things you’re not on).

But rather than fixing that link, I think maybe we should just provide a “subscribe” button in that error message.

Updated 17/03/2017 13:58 4 Comments

analytics: Improve new realm experience on /stats.

zulip/zulip

One of the first things someone might do when trying out zulip is to click on the links in the gear menu, one of which is (or will soon be) a link to the /stats page. Currently this page is completely broken for new realms.

A good solution would be to just show fixture data until the realm has a bit of traffic.

Some steps: * Remove the min_length argument from get_chart_data and the functions it calls (git grep for min_length from the analytics/ directory), and also from the $.get calls in stats.js. * For the charts in stats.js, if data.end_times.length is small: * show some fixture data instead * make the opacity of the graph 40% or something * disable all the buttons * overlay a message on top, like “Not enough data; please check back in a couple of days.”

Notes: Also check that e.g. the weekly view on Messages Sent Over Time looks okay with < 1wk of data, and that the Number of Users graph looks okay with 1-2 days of data. If it doesn’t we can open further issues to fix it.

Some notes on the analytics frontend is available at http://zulip.readthedocs.io/en/latest/analytics.html#analytics-ui-development-and-testing.

You can delete all the analytics data with ./manage.py clear_analytics_tables --force, and you can modify e.g. DAYS_OF_DATA in populate_analytics_db.py (and then run ./manage.py populate_analytics_db.py) to mimic a young realm. You can also modify clear_analytics_tables (via do_drop_all_analytics_tables) to only delete things after a certain end_time, with UserCount.objects.filter(end_time__gt=myendtime).delete().

Updated 25/03/2017 13:45 10 Comments

Cannot tab from a locked content field to "Close" button in view source/message editing

zulip/zulip
  1. Take a message that is not written by you or a message that you can’t edit.

  2. View the source of the message. The “Close” button should be automatically highlighted.

  3. Either double-click in the locked content field to highlight the field or shift+tab to the locked content field.

  4. Now try to press tab to get back to the “Close” button. It doesn’t allow you to. If you were able to edit your message, you could go between the content field and “Close” button with no problems.

@zulipbot label “area: message-editing” “bite size” “help wanted”

Updated 27/02/2017 08:35 2 Comments

View Source misbehaves for message sources already being viewed.

zulip/zulip

WTR:

  1. Choose to view source of a message having 4-5 messages after itself.
  2. Again choose view source when the source is already visible.

After following above steps, the narrowed message automatically gets changed to the next message. I believe View Source option should not be available if source is already visible.

Supporting GIF:

optimised

Updated 22/03/2017 16:06 5 Comments

Improve API test coverage

zulip/zulip

We recently added tools/test-api, which performs basic tests of our API against a local development copy of our server. It gets run as part of our continuous integration.

A good project is to find any endpoints that aren’t covered and add tests for them. Also, for the mostly heavily used endpoints (stuff related to sending messages), we may want deeper tests.

Updated 24/03/2017 06:47 2 Comments

Add a complete test suite for our HTML differ algorithm

zulip/zulip

This is zerver/lib/html_diff.py, which is used in the message edit history feature.

It is currently usually called on rendered, aka HTML, content, not the original markdown, though in theory it could be useful to use it with both.

Basically, we should just call the relevant function with various inputs and verify the output looks correct; we should try to include corner cases in the testing process (e.g. changing *test* to **test**, where just an HTML tag changes).

Success for this looks like a test suite that we feel covers a nice range of cases and gives the file ~100% test coverage.

Updated 20/02/2017 01:55

Improve visual formatting of message edit history

zulip/zulip

Now, after a message has been edited, it’s possible to see the history versions of the message (see #268). The new UI is functional, but could look a lot nicer. The big structural things are these: * We should optimize the timestamp display to not repeat the date every time, while still providing precise dates for each transition in the message’s content. * We should start displaying topic edits (maybe just show the topic part of a recipient bar to show changes in the topic?) * Improve the colors. The current colors were chosen for a use case where the diff would be shown on every message, not only in this off-to-the-side edit history view. * Potentially add some sort of (optional?) display of what was removed from the previous version. That is tracked in #1406, so it’s fine to close this issue even if that isn’t resolved.

This is a meta-issue for now; we may end up splitting it into several sub-issues once someone is actually working on it.

Updated 22/03/2017 15:53 4 Comments

Add back stats page anchor links (basically navigation for the graphs)

zulip/zulip

Note: Title has been updated since we temporarily removed the links; see discussion below.

The anchor links in the stats page (https://localhost:9991/stats) do not respond by scrolling to the appropriate section when clicked.

This is most likely due to an error in lines 486-499 in stats.js: .js // handle links with @href started with '#' only $(document).on('click', 'a[href^="#"]', function (e) { // target element id var id = $(this).attr('href'); // target element var $id = $(id); if ($id.length === 0) { return; } // prevent standard hash navigation (avoid blinking in IE) e.preventDefault(); var pos = $id.offset().top+$('.page-content')[0].scrollTop-50; $('.page-content').animate({scrollTop: pos + "px"}, 500); });

Updated 23/03/2017 02:14 3 Comments

Improve "Uploaded files" / attachment UI behavior

zulip/zulip

We merged https://github.com/zulip/zulip/pull/2961, which means there’s now a UI for deleting attachments that you didn’t intend to upload. But it seems like we probably want to enhance that in a few ways:

(1) It doesn’t live-update to show attachments you’ve uploaded during the current browser session. (2) Since users are probably unlikely to update their attachments, it might make sense to not bother including the data in page_params; for a user who has sent thousands of screenshots in their time using Zulip, the page is probably pretty slow.

I think (1) + (2) probably have a joint solution of only fetching + rendering this particular settings page when a user actually clicks on the “Uploaded files” button.

(3) After an attachment is deleted, it’d be nice to somehow update how the relevant messages are rendered to display an “attachment deleted” image of some sort. I don’t have a great solution for how to do this that isn’t messy, but the approximate idea would be to (1) move the Attachment object into a “deleted” state rather than removing it and (2) if one tries to access a deleted Attachment image, return the URL to a fixed “File deleted” image rather than the (now nonexistent) original file’s URL.

(4) Finally, I think we should provide some clarity that deleting an attachment will (maybe just in the documentation paragraph).

Updated 17/02/2017 07:51

Make /privacy and /terms return something reasonable if TERMS_OF_SERVICE is not configured

zulip/zulip

There are 2 pieces here:

(1) Do this for terms of service. I think it can just be a short page that says “This Zulip server does not have a configured terms of service. Contact {{ admin email }} for information.”, or something. (2) Do the same thing we have for settings.TERMS_OF_SERVICE for the privacy policy, where basically the sysadmin can configure via settings a path to their privacy policy. (3) We should probably briefly document the TERMS_OF_SERVICE and PRIVACY_POLICY somewhere; maybe in docs/prod-customize.md

This would be great to get done soon.

Updated 15/02/2017 16:11 2 Comments

Improve password authentication and reset forms javascript issues

zulip/zulip

While logging Into the Zulip, when they ask for the password. I tried to give a password and deleted everything again. During this course of time whole of the text moved toward left and right which did not look good. This happens because of the different text that was shown as the error message. We can resolve the issue if we can show the error text on a new line.

Updated 07/03/2017 06:25 24 Comments

Add test to assert every child of ScrollView has 'overflow: hidden' set

zulip/zulip-mobile

ScrollView has an important performance optimization called removeClippedSubviews which removes subviews outside of the visible bounds from the view hierarchy. This is a big win for memory consumption.

The optimization only kicks in however, when every subview of the ScrollView has the ‘overflow: hidden’ property set.

We should add a test to make sure no subviews are contained in the main MessageList ScrollView without ‘overflow: hidden’ set.

Updated 26/03/2017 02:24 4 Comments

Document the new /stats page

zulip/zulip

We may end up changing the exact set of graphs over time so I wouldn’t focus on an exhaustive list, but it seems worth adding a user documentation article about the fact that we have nice graphs of data about usage of one’s Zulip organization as well as one’s own personal usage. We can maybe also add an entry in templates/zerver/features.html.

Updated 19/03/2017 06:31 11 Comments

stats: Add a everyone/me option for messages_sent_over_time

zulip/zulip

This is what the messages sent over time graph currently looks like: image

It would be great to also add the number of messages sent by the user. We already pass this data to the frontend; it’s just a matter of adding it to the graph.

Design: I think a reasonable way to do this would be to add a “Me” and “Everyone” button in the upper right, in line with the Hourly/Daily etc buttons, and push down the Humans/Bots legend entries to be below it. “Everyone” should be the default, and then clicking “Me” should replace Humans/Bots with a Me legend entry.

Implementation: This should not require a lot of additional code. Most of the change will be in static/js/stats/stats.js (see populate_messages_sent_over_time), static/styles/stats.css, and templates/analytics/stats.html. The user data is in data.user.human in populate_messages_sent_over_time.

General stats page notes: To get to the /stats page: * Run ./manage.py populate_analytics_db. * Restart the dev server (tools/run-dev.py) * Log in as Shylock from localhost:9991/login * Go to localhost:9991/stats

Updated 20/03/2017 14:52 9 Comments

Add support for integration with the 1password extension

zulip/zulip-mobile

I got feedback from a user that they’d like to be able to use the 1password extension with Zulip:

https://support.1password.com/ios-extension/#use-the-1password-extension

It looks like this just requires integrating https://github.com/AgileBits/onepassword-app-extension.

Putting this in the backlog since Google auth is probably higher priority, but this might be easy, so I’d certainly encourage anyone looking for a task to give this a try.

Updated 16/03/2017 06:42 9 Comments

docs: Adjust keyboard shortcuts for macOS users.

zulip/zulip

Some shortcuts on macOS are different than Windows/Linux ones, specifically: * PgUp -> Fn + Up Arrow * PgDn -> Fn + Down Arrow * End -> Fn + Right Arrow * Enter -> Return

Those shortcuts are present both in the ? hotkeys docs and the user docs.

A possible feature would be to tweak the docs and add info for macOS users, if the user agent suggests they’re on a Mac.

Updated 04/03/2017 20:08 7 Comments

user docs: Write user docs for *What to do if the server returns an error*

zulip/zulip

Write user guide documentation for What to do if the server returns an error, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 31/01/2017 23:59

user docs: Write user docs for the *Add a link preview* feature

zulip/zulip

Write user guide documentation for the Add a link preview feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 31/01/2017 23:50

message editing: Add a local echo.

zulip/zulip

We currently don’t have message editing hooked up to the local echo process, which can cause message editing to feel sluggish on slow connections.

To work on this issue, I would first try to understand how the compose box echo works (e.g. follow compose.send_message, as it calls echo.try_deliver_locally), and then mimic that for message_edit.save.

Notes: * We treat locally echoed messages differently from backend-acknowledged messages (e.g. editing them works differently). Most of the existing code for the compose box case will hopefully just work as is, as long as local_id is set. * This is a somewhat non-trivial issue, so probably good for someone with a bit of experience or familiarity with Zulip.

Updated 06/02/2017 07:43 4 Comments

emoji: robot_face (🤖) unicode code point not working

zulip/zulip

To reproduce, copy and paste 🤖 into a zulip message. (For comparison, 😀 should “work”). The unicode code point is 1f916. It does appear in unicode_emoji_names in static/js/emoji.js, and static/generated/emoji/images/emoji/unicode/1f916.png exists and is the right thing. This emoji also goes by :robot_face:.

The only pattern I’ve noticed is that according to http://unicode.org/emoji/charts/full-emoji-list.html#1f916, it was introduced in 2015, and trying http://unicode.org/emoji/charts/full-emoji-list.html#1f913 (🤓), also introduced in 2015, has the same problem. Something I tried from 2014 did not.

Updated 22/03/2017 22:28 10 Comments

Sort streams in "manage streams"

zulip/zulip

Hi all-

Feature request: it can be difficult to know which streams to subscribe to. One thing that might help would be providing more controls over how the list of streams is displayed in “manage streams.” Possible places to start are letting the user sort by number of subscribers or by number of messages sent in the past 30 days. All credit to @lkuper for the original idea on RC Zulip. Thanks for continuing to make Zulip better!

Updated 28/01/2017 00:07 4 Comments

realm alias: Add user's domain on realm creation if not a gmail/etc address.

zulip/zulip

When REALMS_HAVE_SUBDOMAINS, add a RealmAlias for the domain of the person signing up for the realm, if the domain is not a free email address (e.g. gmail, etc).

  • https://github.com/willwhite/freemail/blob/master/data/free.txt has a good list of ~4000 free email provider domains.

  • We will need to put the https://github.com/willwhite/freemail/blob/master/LICENSE somewhere (it’s basically ``` Copyright © 2015, Will White will@mapbox.com

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES … ```

  • The names can go at the bottom of zerver/lib/name_restrictions.py, even though it’s not technically a restriction.

@HarshitOnGitHub, if you’re interested!

Updated 23/01/2017 23:11 1 Comments

@-mention autocomplete should display more than 5 results

zulip/zulip

In case of several matches, the @-mention autocomplete should display either all of them or there should be an upper limit which can be configured by users. The list of results can be scrollable.

This is needed because there is a possibility that more than 5 users have same initial name, hence the desired person’s name can be left out of the results which can be annoying.

Updated 20/01/2017 19:06 2 Comments

user docs: Write user docs for the *Zulip in a terminal* feature

zulip/zulip

Write user guide documentation for the Zulip in a terminal feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 17/03/2017 21:20 14 Comments

user docs: Write user docs for the *Zulip on iOS* feature

zulip/zulip

Write user guide documentation for the Zulip on iOS feature, following Zulip’s guidelines on writing user guide documentation.

Note: Keep issue #3267 in mind while writing this doc!

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 21/01/2017 04:09

user docs: Write user docs for the *Zulip on Linux* feature

zulip/zulip

Write user guide documentation for the Zulip on Linux feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 18/01/2017 04:37

user docs: Write user docs for the *Zulip on Mac OS* feature

zulip/zulip

Write user guide documentation for the Zulip on Mac OS feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 18/01/2017 04:37

user docs: Write user docs for the *Configure authentication methods* feature

zulip/zulip

Write user guide documentation for the Configure authentication methods feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 18/01/2017 04:37

user docs: Write user docs for the *Automatically link to an external issue tracker* feature

zulip/zulip

Write user guide documentation for the Automatically link to an external issue tracker feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 18/01/2017 04:37

user docs: Write user docs for the *Find your Zulip organization* feature

zulip/zulip

Write user guide documentation for the Find your Zulip organization feature, following Zulip’s guidelines on writing user guide documentation.

  • Write an outline for documentation for this feature and post it to the Zulip #documentation stream to get feedback from other contributors.
  • Add your documentation to a new file to the templates/zerver/help/ directory. The name of the file should be a lowercase, hyphenated version of this feature like view-the-markdown-source-of-a-message for the feature “View the Markdown source of a message”.
  • Add a link to your guide under the appropriate section in templates/zerver/help/index.md. The end result should be a nice and clear user guide for the feature, written in Markdown.
  • Verify your documentation looks as you intended and all links work; it’s common to make small mistakes in the markdown that cause your documentation to not look right.
  • Add a commit and submit a pull request. The title of both the commit and the pull request should be docs: Add user guide for *feature*.
Updated 18/01/2017 19:50 5 Comments

Narrowing to a topic with compose open should prefill the topic input box

zulip/zulip

I find that frequently I’ll be looking at a stream where all the most recent messages are from one topic, so I think I’m just narrowed to that topic. I open the compose box and find that the topic isn’t prefilled (because I’m only narrowed to a stream), so I click on the topic’s name to fix the narrowing for the topic to autofill, but this closes the compose box.

It’d be a nice usability enhancement if the compose box remained open in such a case and the topic was filled out to match the new narrowing parameters.

Updated 17/01/2017 22:53 1 Comments

Referencing localhost leads to refused connection when running Zulip on remote development environment.

zulip/zulip

I found a Frontend bug. Referencing localhost leads to refused connection when running Zulip on development environment.

Screenshot-2017-01-13-at-3.11.30-AM.png

My test server was a Digital Ocean droplet. Go to the http://username.zulipdev.org:9991/login/ and try several categories that reference localhost instead of username.zulipdev.org, when trying to access this sites it gives a localhost refused to connect error. To be more specific, the About, Legal, Privacy and Create a New Organization hrefs should be changed with the working url of the Log in and Register sections.

screenshot 2017-01-13 at 3 01 07 am

Updated 17/01/2017 23:41 2 Comments

Make user notifications settings take effect immediately

zulip/zulip

From https://chat.zulip.org/#narrow/stream/frontend/topic/notification.20settings :

Steve: When I tried to change my notifications settings recently, I unclicked a few things and assumed they took effect immediately, similar to how subscribe/unsubscribe checkmarks work. Unbeknownst to me, the “submit” button was below the fold, and I was able to exit the settings without page without any warning.

Tim: Arguably we should just make notification settings work like the other settings checkboxes

Steve: I’d be happy with that. I think they’re all basically independent enough that you don’t need an “atomic” submit.

Updated 15/01/2017 18:48 3 Comments

Add support for message shortcuts.

zulip/zulip

Idea:

It would be a useful feature for Zulip to include a system for message shortcuts, that is, shortenings for longer phrases and established wordings.

Examples:

  • Imagine a development help stream, where new users often ask redundant questions. Instead of typing answers over and over, one could simply type :<shortening-for-answer>. Zulip would then replace the shortening with the saved phrase for it.

  • #1684 proposed a similar feature for the quick composition of polite standard phrases. Instead of being lazy and typing “afk” when you’re not available, one could add the shortening :afk, which would then get replaced by I will be away for a bit.

Implementation proposals:

  • This feature could be implemented similar to @-mentions: After entering : in the compose box, a drop-down list of all possible shortening would pop up. The user could then continue typing to narrow down his search. After pressing enter/tab, the respective phrase would get inserted.

  • In the settings menu, we could add a list where users can enter new shortenings. A few standard shortening (for established wordings) would be already included.

Discussion

Please share your thoughts on this in the comments or on in the Zulip discussion on this.

Updated 11/01/2017 00:03 1 Comments

Fork me on GitHub