Before this fix, if you used the "Narrow to stream foo bar" suggestion,
it would search for "bar" within stream foo. Now it goes to the "foo bar"
stream.
(imported from commit 0be5f259842c119936d678a292a1a79af58defa2)
If you have smartSpaceBar turned on and hit space, the code
now calls lookup(), so that the app code can reload new
suggestions.
(imported from commit 6776babba0a2c9b8a954a4640aa7b81a970ed88e)
This fixes the bug where the pointer jumps to the top if it reloads
before finishing loading.
(imported from commit 6b2d80acab4d4232f6eb87695193592a83c4466a)
This adds two new functions for parsing out the domain and username
from an email address, and switches our backend to use them and
django.core.validators.valid_email() rather than custom parsing and
raw email.split("@").
(imported from commit 3d6e997d66908811eccb5f82f2f7fe349b40f238)
This should make it a bit easier to figure out exactly what was
running on the backend when an error happens.
(imported from commit d1002a92c24870b8d98d7133dff865eecf1cfffe)
* Redo table borders as inset shadows to make them sharper
* Make the selection highlight a blue border with blue glow
(imported from commit 758884cc7e17952ba68e4aab6215f3e026dc8fe8)
If you set the option, then hitting space will select the current
suggestion and allow you to keep typing. If you don't set it,
then it's the old behavior where space allows you to continue
typing without acknowledging your selection.
(imported from commit 8125a322e5a748ac7716361d66fca18c56d5766e)
The old name was very confusing, and this fits the convention of "the
processor for the signups" queue a la "process_user_activity".
This requires doing a
supervisorctl stop humbug-workers:humbug-events-subscribe-new-users
puppet apply
to deploy the supervisord configuration changes and properly restart
the signups queue.
(imported from commit 0ee2dad837142afa64025446e22956709771a192)
(This facilitates using prefix_sort for a list that doesn't require
a function call to get to the object of interest.)
(imported from commit 5a0e550c313b9c57f0434c7246fcea451219d1b8)
`process_condensing` before updating the scroll position, because it can
change the height of messages.
(imported from commit ca500351447fcabc3b03bb01a55a8e25bf8e9578)
The server only saves the maximum position the pointer has ever had. So
on reload, it often jumped to the end instead of where the user was.
(imported from commit 418ccb1144286c67503578020e88ae7b3869acd6)
* Fixed highlighting of @-mention autocompletes in the new msg content box
* Fixed emojis activating not after a space (10:30, happy:smile)
* You can now autocomplete multiple names i.e. "@Jessica F"
for Jessica Foo (this resolves Trac #1418)
* You can no longer autocomplete a full email address, e.g.
"@lfaraone@h", the second @ stops the autocomplete. We may want to
change this later, but for now it matches the server-side behavior
which only completes `short_name`s.
(imported from commit 71fd195c3094484ea940a243102917cca61880d9)
* line-height of 18px, same as messages you're not editing
* width of 100%, so word wrapping is more similar
* smaller margins
(imported from commit 81fc4628e0485f66615df90504462465e5805e91)
This also normalizes the casing of operators, which makes
Sender:wdaher@humbughq.com work when it would previously give an
"unknown operator" error.
(imported from commit fb3f748a474e1c9c710547ae3c05a4ace86c3230)
Previously, if you toggled the in_home_view checkbox either in a
different browser or via the button in the sidebar menus, it didn't
actually update the visible checkbox state in the streams page,
resulting in some potentially very confusing interactions.
(imported from commit 3424430231f89a23e970a2f1bfec82c6eb0d6735)
Previously, narrowing to a stream also narrowed to
/^(un)*stream-name(.d)*$/, but not the other way around.
(imported from commit 6643f8d8306a737f4e96d473dd1fdbfdcd56e2a8)
On the next line, it checks and returns immediately if the source returns
false, but it should first hide the existing box or else it's just left
there until the next typeahead refresh.
This fixes the issue with the typeahead not closing properly when a space
is typed that was introduced in 7aa3f762.
(imported from commit cbe77e2152d889fe53d874e97f41cfc725166929)
* Do the string processing to extract the current token once
when autocomplete is started in `source` rather than repeating
it once per potential completion in `match`.
* Store a property for whether we're completing emoji or mention
instead of performing different tests on each step.
This reduces the lag on emoji autocomplete.
(imported from commit 7aa3f762eaf4286608809a09a3cddbbe3dfcabf9)
Fixes issues with e.g. foo@hamlet.com (where hamlet is a user)
The \b was ineffective because @ made it always on a word boundary.
Instead, use the negative lookbehind trick from the URL regex.
(imported from commit fdca9bd686e4f8747e67b412cba1fa7c5c9391aa)
This allows us to e.g. match "#1329" in "Bug #1329", even though the
place between a space and a # is not a word boundary.
Also this commit factors out some repeated code used for both in-message
and subject filters.
(imported from commit 5f7d80a58e76e51ea07fed050c88c5251faaaacd)
Since f8fbf70c8502 had troubles in FF and people did not like the
message-info-on-hover, this commit hopefully will work better. Tables
are likely the culprit with using dropdowns in FF, so when we stop having
the messagelist be at table, we can switch back to dropdowns which are relatively
positioned rather than absolutely on the page.
(imported from commit c49a5cd45f3439d089146771e2aa0cee6431125a)
This didn't /seem/ to be hurting anything before, but we really
shouldn't be doing it more than once.
(imported from commit 8d4ad7f8376227db723259ec9293262233b0a69a)
This way if you refer to "trac #253" in the subject, it's super
convenient to get from your recipient bar to the ticket.
A note on performance: this part of rendering for 1000 messages takes
about 3.5ms for messages with 1 match; this is small compared to the
overall time for to_dict_uncached for that many message objects, so I
think this is OK for now.
(imported from commit 5bdc2b8415d7599d59eb554739f545c485b78d5a)
Renamed show, hide and clear to show_box, hide_box, and clear_box,
to make it a little more obvious what each one does and make them
greppable.
Also, hide and clear weren't being used by any other modules, so
these functions are no longer exported.
This resolves Trac ticket #1503.
(imported from commit 904d596ef5b8dc2154dc01ed7c9c99a54dc9b31e)
From Trac ticket #1503:
All of the calls to compose.set_mode() should be calling compose.start()
instead. Nearly all are impossible to trigger while already composing,
and by calling compose.set_mode() they just do the stuff in set_mode()
twice. The only case where this would change behavior, that I can see,
is if you press C, Shift-Tab to unfocus the compose box without
dismissing it and then press c (or vice versa). I think it's okay if we
clear the input fields in that unlikely case.
(imported from commit ba7f181ec9d1df90a443b0a754462a3a201dcabb)
Previously we were checking for webkit before checking for
$('<audio>') support, but that cuts out non-webkit browsers that support
the basics of the HTML5 audio api.
Now we actually run the feature test in order to enable it, and only
check for webkit when enabling webkit-specific desktop notifications
(imported from commit 851eed86af167d0530f7e1793e2ca1f9b4cdd71d)
For completions, since we have no representation of categories, users
might expect lexical ordering.
(imported from commit d2e27dd4d8452df6ac48d44551802d7e65519115)
This is a big change affecting lots of areas:
* Pipeline no longer deals with JS (though it still minifies CSS)
* A new script, tools/minify-js (called from update-prod-static),
minifies JavaScripts
* A command-line argument --prev-deploy, if passed to minify-js or
update-prod-static, is used to copy minified JS from a previous
deploy (i.e., a previous git checkout), if the source files have
not changed
* update-deployment passes --prev-deploy
* Scripts are now included with the minified_js template tag, rather
than Pipeline's compressed_js
Also, as a side benefit of this commit, our Handlebars templates will
no longer be copied into prod-static/ and accessible in production.
Unminification is probably broken, but, per Zev and Trac ticket #1377,
it wasn't working perfectly before this change either.
(Based on code review, this commit has been revised to:
* Warn if git returns an error in minify-js
* Add missing output redirects in update-prod-static
* Use DEPLOY_ROOT instead of manually constructing that directory
* Use old style formatting)
(imported from commit e67722ea252756db8519d5c0bd6a421d59374185)
Until now, page_params.staging has been dependent on whether DEBUG =
True. On your local server, page_params.staging is true unless you set
DEBUG to False to test minification, in which case, it's false. This
situation still counts as staging IMHO, and the new behavior will be
more useful for testing as well as consistent.
Quick reference chart:
Is page_params.staging true... without this commit? with this commit?
-------------------- -----------------
On a local server, DEBUG=True Yes Yes
On a local server, DEBUG=False No Yes
On staging Yes Yes
On production No No
(imported from commit 6ea960e7945844dde0fbedbe901062508312b051)
I don't fully understand the need for this, but I have seen some
tracebacks on app that complain:
File "/home/humbug/humbug-deployments/2013-07-11-19-28-10/zephyr/lib/actions.py", line 1289, in handle_missedmessage_emails
timestamp - user_profile.last_reminder < waitperiod):
TypeError: can't subtract offset-naive and offset-aware datetimes
Since timestamp in this case comes from timestamp_to_datetime
that explicitly sets the tzinfo, we know it's tz-aware. The only
other possibility is that user_profile.last_reminder is **not**
tz-aware, though I am not sure why that would be the case.
(imported from commit 67e33f4510e91fa9de504f0c610515581312c98b)
It would show the recipient bar unfaded over a faded message when
narrowed to a stream.
(imported from commit 576e7bd7bdf1fbb3f241f1ba8cd1548c4546257d)
Previous code iteratively called set_user_status() once for each user;
which in turn was rerendering the user sidebar, also once for each user.
I changed the API a bit by replacing activity.set_user_status() with
activity.set_user_statuses(), plural, that takes an object and updates
all the user statuses in one go before rendering.
(imported from commit 1111c9029264f892f25e76d2e5e5ff996dcbc7ca)
This will hopefully fix some lagginess when logging in on the Hacker
School realm, especially on Firefox, as the user presence rows are
populated (previously requiring hundreds of template renders).
(imported from commit 67e2d7f91ad62d8d7a2e212ee7c7121bd73f010b)
Having a margin of 20px on both sides is rather overkill, especially
when the screen isn't super-wide. (And when it is super-wide, we can
control the width with max-width anyway.)
This actually doesn't really free up that much space -- the main
constraint actually seems to be the width of the column itself -- but
psychologically I feel like it feels a bit better.
(imported from commit 6122f0bd3042ee2faf154921c946c0bd65c956ef)
Fix a minor bug where if you return to the home view with a recipient
filled out, it would be unfaded.
(imported from commit d81d974dcb054c63d8a5dd5afec7b072c99d4e3f)
* Allow email addresses surrounded by <>
* Reject things that look like email addresses that have a path after them
This requires adding a new branch to the regex specifically for email addresses.
* Fix comment whitespace
(imported from commit 0383cd4067ae9ee31f3802e6777a200ba1cbccd6)
Be more restrictive on what characters can be part of a URL and what
characters can precede a URL to prevent linkifying other strings that
come just before a valid URL. Allow : and , before a URL.
(imported from commit f072980b39ff652edf20de0585f256f072d04e88)
Previously we had fancy logic to determine where to focus, but immediately
clobbered any focus choice we made and forced the stream selection to be in focus.
We also incorrectly determined what to focus in the case of clicking the new PM
button when in a stream narrow.
(imported from commit 01e2cec8eca068ee1d45d3cfb21607b981d5034e)
It seems that even though we set the From to be <noreply@humbughq.com>
it's possible that when sending mail via Google it automatically sets
the From: field to be humbug@humbughq.com. Here we set Reply-To to noreply@
in all cases explicitly in order to avoid having replies sent to our
inboxes.
(imported from commit 5fa643be2b78fd632e310836bf1be862d6f1d333)
Unlike the other cases where we do this sort of offset calculation,
we're working with a message which is not msg_list.selected_id() --
which means that this message might not actually be rendered at all.
Correct for this by just letting then_select_offset stay undefined in
that case.
(imported from commit ebb8a23bf34c52f9495aa88ceca8eb4458d50be1)
This works down to about 330px height, and is probably about the
best you can do with current browsers in pure CSS.
See also: http://caniuse.com/#feat=viewport-units
Trac #786, Trac #1416
(imported from commit eeb931bb34aa6414fdf1b61db68c6aede1808a58)
When it's not offering any other suggestions, suggesting what
you've typed is unnecessary and confusing and it should just
hide completely instead.
Trac #1476
(imported from commit ff69bb53c661e0a3a193dbddde6e7a4ff8b10031)