Kevin McConnell
16a80ff3a6
More dynamic activity scores
...
This introduces a more dynamic system of activity scoring, to improve
the way bubbles "bubble up" due to their activity. There are a few
different parts we can tune here, and it's likely we'll need to make
adjustments once we get a feel for how this works in practice.
The basic idea here is:
- We assign points for certain types of event that happen on a bubble. A
boost gets 1 point, a comment gets 10 points, and so on.
- These points decay over time, at a rate of 50% per day. So old
activity is worth much less than new activity. Bubbles should rise up
quickly when acted upon, bit will float back down if left idle.
- Some comments can score higher than others: the first comment from
each person on a bubble is worth more (20) because it signals that
more people are getting involved; and comments that follow a comment
by a different author are also worth more (15) because that signals
there's ongoing conversation between people, not just a series of
notes being left by one individual.
In terms of implementation, we persist the score on the bubble
whenever it changes, but we handle the decay on the client side. That
allows us to cache the bubble representation without having to
continually change it while its activity decays.
We also keep a separate `activity_score_order` attribute on the model.
This can be used to sort the bubbles in order of "most active", without
having to think about the decay.
2025-03-05 17:16:31 +00:00
Kevin McConnell
748d09a5f7
Cache comment partial
2025-03-03 17:04:16 +00:00
Kevin McConnell
49fa8b21a6
Move current user check to controller
...
This is necessary to a) ensure people can't edit/delete comments they
don't own, and b) make the comment partial cacheable.
2025-03-03 17:04:16 +00:00
Jason Zimdars
65ceb3c5f0
Tighten-up headings so they look good when they wrap to two lines (rare)
2025-03-03 09:04:37 -07:00
Jason Zimdars
72592ec3cc
Order events in the cluster so that the oldest is closest to the timestamp
2025-03-03 09:04:08 -07:00
Jason Zimdars
a87ffd6473
Avoid squishing the switch when the bucket name is very long
2025-03-03 08:55:49 -06:00
Kevin McConnell
e7da0d5327
Merge pull request #276 from basecamp/autosave-comments
...
Autosave comments
2025-02-28 15:30:21 +00:00
Kevin McConnell
5d1206e067
remote-auto-save -> outlet-auto-save
2025-02-28 15:15:09 +00:00
Kevin McConnell
4d13db0f8b
Rename to local-save-controller
2025-02-28 15:13:23 +00:00
Kevin McConnell
a7cde91a10
Don't save draft comment to local storage
...
Since we already save this to the database, along with the title.
2025-02-28 14:50:26 +00:00
Kevin McConnell
8bd207096b
Pass user in locals
2025-02-27 10:45:18 +00:00
Jason Zimdars
ed08b85c25
Fix that remote-auto-save loses markdown formatting by using local autosave
2025-02-26 17:48:02 -06:00
Jason Zimdars
a0ffbc807f
Auto save comments to local storage to prevent losing work
2025-02-26 17:37:49 -06:00
Jason Zimdars
cf5ddbbb78
Style watchers block
2025-02-26 16:47:48 -06:00
Jason Zimdars
8ddf8d1ad3
Use local_assigns
2025-02-26 15:57:16 -06:00
Kevin McConnell
fc1939d771
Avoid using Current in the partial
2025-02-26 10:53:03 +00:00
Kevin McConnell
385e299db7
Simplify param
2025-02-26 10:53:03 +00:00
Kevin McConnell
a802b8de5a
Allow managing bucket subscriptions
2025-02-26 10:53:03 +00:00
Kevin McConnell
6157d8b4bd
Start watching when participating on a bubble
...
If you're added as an assignee, or if you comment, then your watching
preference will be toggled on.
2025-02-26 10:53:03 +00:00
Kevin McConnell
694783e5f3
Allow toggling watch preference
...
We use a true/false preference so we can tell the difference between
disabling the watch vs never having the watch. This is so we can toggle
off and on the preferences for a container (like the bucket) without
losing any bubble-specific preferences.
2025-02-26 10:53:03 +00:00
Jason Zimdars
8b0f11ab3e
Use existing filters system to create some quick links
2025-02-25 16:57:03 -06:00
Jason Zimdars
256edbfa96
Special case self-assignment
2025-02-24 16:25:24 -06:00
Jason Zimdars
ed0a815a35
Fix that title could overlap unread indicator
2025-02-24 16:05:42 -06:00
Jason Zimdars
d254d1eb27
Bust this cache
2025-02-21 17:37:17 -06:00
Jason Zimdars
530b6e4a90
Stub notifications settings screen
2025-02-21 17:25:44 -06:00
Jason Zimdars
28bdc531b0
Mark individual notifications as read
2025-02-21 16:39:50 -06:00
Jason Zimdars
190e046479
Mark all notifications as read from the index
2025-02-21 12:12:00 -06:00
Jason Zimdars
302427f17b
This isn't necessary
2025-02-21 10:54:18 -06:00
Jason Zimdars
c4bc9242e2
Fix sign-in logo
2025-02-21 10:49:27 -06:00
Jason Zimdars
1d0562f905
Refactor
2025-02-21 10:44:40 -06:00
Jason Zimdars
fb01444a88
"Added by…" is a more useful filter than "Assigned by…"
2025-02-20 16:07:07 -06:00
Jason Zimdars
1ad6a9adb8
Introduce quick filters on the page so the dialog becomes advanced filtering
2025-02-20 15:20:30 -06:00
Jason Zimdars
4b14bc0a55
Shadows for these buttons, too
2025-02-20 13:15:57 -06:00
Jason Zimdars
8cde1883a6
Filter activity by bucket
2025-02-19 18:05:12 -06:00
Jason Zimdars
1fde270b18
Restore back shortcut
2025-02-19 16:05:48 -06:00
Jason Zimdars
867479c7bf
Display a link button when there are more unreads than the six we show
2025-02-19 15:17:31 -06:00
Jason Zimdars
2a6e559d7a
Tighter comment excerpts
2025-02-19 14:10:36 -06:00
Jason Zimdars
1a1ca72a3d
Remove summary avatars and tweak timestamp
2025-02-19 14:05:35 -06:00
Jason Zimdars
b3b881da17
Try a more Basecamp style activity event card
2025-02-19 14:02:07 -06:00
Jason Zimdars
0fc85f11a5
Need splat for list items, don't wiggle popped on hover
2025-02-19 13:20:42 -06:00
Jason Zimdars
58175ec37a
Merge branch 'main' into reactions
...
* main:
Try a lighter bubble style and bring back splats for popped
2025-02-19 11:23:20 -06:00
Jason Zimdars
5beb851904
Whitespace
2025-02-19 11:23:14 -06:00
Jason Zimdars
8b429ddb84
Move method to Reaction class
2025-02-19 10:16:31 -06:00
Jason Zimdars
18707300d4
Try a lighter bubble style and bring back splats for popped
2025-02-18 19:02:00 -06:00
Jason Zimdars
000bd158eb
Reactions on comments
2025-02-18 17:08:56 -06:00
Jason Zimdars
0258f09dd8
When you click a tag, include the bucket scope
2025-02-14 11:56:05 -06:00
Jason Zimdars
b54103cdef
Sort case insenstive
2025-02-14 11:18:24 -06:00
Jason Zimdars
5313394f18
Just display the names
2025-02-14 10:43:48 -06:00
Jason Zimdars
d9444f18dd
House seems to expect a placeholder value
...
Fixes that the placeholder would display `null` if you clear the content while editing a comment. See also: https://fizzy.37signals.com/buckets/693169850/bubbles/999008493#comment_994776744
2025-02-13 17:48:37 -06:00
Jason Zimdars
3e5b531d12
Extract into a single-purpose controller
2025-02-13 17:40:18 -06:00