Otherwise the text will get out of date. For example, a new notification
will say "Less than a minute ago", which is not true for very long if
the page isn't refreshed.
* main: (27 commits)
Leave some space for the tray
Let's not assume it's a due date
Avoid overlap
Let's try without the big drag button, extend beyond the column a touch
Tighten labels
Match notification dot
Spacing
Add more context
Avoid leaving the tray open
This shouldn't be here
Paginate the read notifications
Add a test case
Split up a big view
Allow filtering by stage
Send beacon request on disconnect as well
Wire up notifications "Mark all as read" button
Add unread dot
Set state for when there are no new notifications
Move to right side, smooth transition
Open tray on click, stub mark-as-read button
...
Since we're rendering according to the local timezone, we'll need to
include events that fall before or after the specific date on the
server, as they might get be inside the current day in the client's
timezone. So let's just grab a window of events either side of today,
and then hide anything that falls outside the client's day.
* main:
Don't round up in time distance expression
Tidy Gemfile
Banner for draft state
Drafts should always use the dashed outline wherever they're displayed
Unnecessary parens
Use distance to nearest edge
Simplify overlap logic
Fix divider drag jankiness
Use cache-friendly "time ago"
positionedClass -> installedClass
Pull out moveDividerTo
Before comes before After
DividerElement -> Divider
Clean up divider-controller
Drag bubble divider
This is so we can dismiss any notifications that arrived for a bubble
while we were viewing that bubble. Otherwise, they'll stick around until
we leave the page and come back.