Mike Dalessio
473703df3d
Invalidate the bubble cache when the bucket name changes
...
by including the bucket name as part of the bubble cache key.
ref: https://37s.fizzy.37signals.com/buckets/693169850/bubbles/999008709
Co-authored-by: Kevin McConnell <kevin@37signals.com >
2025-03-20 12:46:23 -04:00
Jason Zimdars
836e6fab5e
Avoid touch when setting initial stage
2025-03-18 08:26:16 -05:00
Jason Zimdars
28a569c49b
Tickets
2025-03-17 21:24:08 -05:00
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
59144ad17a
Add Watches to track notification preferences
2025-02-26 10:53:03 +00:00
Kevin McConnell
6832ba8f37
It's not just about drafts now
2025-02-11 14:34:39 +00:00
Kevin McConnell
81197bfb49
Don't set a default title
2025-02-11 14:34:39 +00:00
Jason Zimdars
affa4cae7a
Track changes to the bubble's name
2025-02-04 16:14:29 -06:00
Jason Zimdars
d1ddb8d299
Track events on due dates
2025-02-04 15:49:34 -06:00
Kevin McConnell
cd1e6378d0
Add drafted and published states
2025-01-15 10:58:00 +00:00
Kevin McConnell
c62e800b08
Notifications are all related to a Bubble
2025-01-13 14:21:47 +00:00
Kevin McConnell
8a51597408
Add direct linking to comments
2025-01-13 14:21:47 +00:00
Kevin McConnell
af5ac65116
Make notification target polymorphic
2025-01-13 14:21:47 +00:00
Kevin McConnell
d0ae5b4bdc
Add notification model
2025-01-13 14:21:47 +00:00
Jose Farias
e117f4e5af
boost_count -> boosts_count
...
This aligns better with counter_cache conventions, in case we turn boosts into a model later
2024-11-19 14:22:51 -06:00
Jose Farias
2a9be42c4e
Use count cache instead of counting comments in calculating score
2024-11-19 13:26:25 -06:00
Jose Farias
f17b060906
Move rescoring concerns to bubble
2024-11-15 19:48:53 -06:00
Jose Farias
b4e8adca47
Pre-calculate comment counts and activity scores
2024-11-15 18:17:42 -06:00
Jose Farias
f2706d0f74
Unnest bubble filters
2024-11-05 13:04:05 -06:00
Jose Farias
cf9b07711a
Document left_joins_messageable smell
2024-10-28 10:27:50 -06:00
Jose Farias
5cdf83163c
Document with_status name smell
2024-10-28 10:25:56 -06:00
Jose Farias
8b062b4432
Pull out Bubble#activity_count
2024-10-28 10:07:12 -06:00
Jose Farias
46d1ce4702
Make it clear where the boost_count is coming from
2024-10-27 19:53:37 -06:00
Jose Farias
2fb6ed76b3
Fix comments-dependent scopes
2024-10-27 19:50:06 -06:00
Jose Farias
0727414017
Lean into delegated types APIs
2024-10-27 17:39:30 -06:00
Jose Farias
993870c10c
Messageable concerns aren't actually dependent on Messages
2024-10-27 12:23:47 -06:00
Jose Farias
f9712ea53f
Messageables don't belong to bubble directly
2024-10-27 11:57:33 -06:00
Jose Farias
85d47a35ab
threadables -> messageables
2024-10-25 15:03:31 -06:00
Jose Farias
cf22fb454a
not_popped -> active
2024-10-23 18:32:27 -06:00
Jose Farias
b0565fbf20
Spike workflows
2024-10-21 15:33:30 -06:00
Jose Farias
6dc01479b7
Fix search form
2024-10-17 21:34:48 -06:00
Jose Farias
e754b5bf92
Move all of Bubble's searchable concerns into Searchable
2024-10-17 17:38:33 -06:00
Jose Farias
f4b5210ca1
Spike persisted filters
2024-10-16 16:41:11 -06:00
Jose Farias
ec7fc75054
Spike events system
2024-10-11 20:14:09 -05:00
Jeffrey Hardy
462032155c
Always set a default Bubble title
2024-10-03 15:40:51 -04:00
Kevin McConnell
b7feddf6b7
Temporarily wire up filtering on the form
2024-10-03 16:11:29 +01:00
Kevin McConnell
e50144d97f
Add modelling for "popped" bubbles
2024-10-03 12:54:13 +01:00
Jeffrey Hardy
889dfdd06a
Introduce a Bubble.tagged_with scope to simplify controller finding
2024-10-02 15:49:36 -04:00
Jeffrey Hardy
044117f9c1
Extract Bucket::Assignable and rename Assignment#user to #assignee
2024-10-02 12:29:59 -04:00
Jeffrey Hardy
49a3e569c2
Use chained scopes
2024-10-02 09:09:12 -04:00
Kevin McConnell
518828883c
Make bubbles and comments searchable
2024-10-02 13:51:12 +01:00
Jeffrey Hardy
4e579e5a34
Rename Project to Bucket
2024-09-24 15:32:44 -04:00
Jeffrey Hardy
1d8d10ce63
Replace Bubble#color enum with a standard attribute with a default
2024-09-18 16:00:29 -04:00
Jeffrey Hardy
c09a02fa98
Introduce projects and accesses
2024-09-18 13:06:30 -04:00
Jason Zimdars
56c7fe4abb
Add assignees to a bubble WIP
...
- Still needs UI to display multiple assignees
- Still needs UI for changing/removing assignees
2024-09-17 17:10:23 -05:00
Jason Zimdars
362f373378
Inline color picker
2024-09-16 17:41:14 -05:00
Jeffrey Hardy
40863453e0
Recast categories as tags
2024-09-05 17:36:48 -04:00
Jeffrey Hardy
5aae70298b
Rename Splat to Bubble
2024-09-04 14:54:11 -04:00