Commit Graph

66 Commits

Author SHA1 Message Date
Rob Zolkos bb54b859dc Add workflow column filtering to cards (#2787) 2026-04-14 13:14:14 -04:00
Ítalo Matos fbc586646f Refactor: improve query scope composition with merge syntax (#2131)
* Refactor: improve query scope composition with merge syntax

Replace manual WHERE clause concatenation with Rails' merge method
for more elegant and maintainable scope composition across Card,
Comment, and Filter models. This approach better follows Rails
conventions and improves code readability.

* Extend scope composition improvements to Card::Closeable

Apply the same nested hash syntax pattern to closures table references
in order and where clauses.

* Remove unnecessary outer braces from where clause

---------

Co-authored-by: Jeremy Daer <jeremy@37signals.com>
2025-12-13 10:10:13 -08:00
Mike Dalessio 50fe973105 Remove N+1 on the cards board. 2025-11-27 11:30:54 -05:00
Mike Dalessio 378705a30d Deduplicate filter results
when both a card and that card's comments match the search term, we
don't want to show it multiple times.

ref: https://app.fizzy.do/5986089/cards/3030
2025-11-19 17:51:38 -05:00
Jorge Manrubia 4a86e3a298 Don't show closed carsd when filtering by "added by"
You can still select the done filter if you want to.

https://app.fizzy.do/5986089/cards/2639
2025-11-18 11:40:01 +01:00
Stanko K.R. 4f4bf5bee1 Fix potential crash due to execution of default blocks 2025-11-17 09:12:40 -05:00
Stanko K.R. 8fa9566c07 Update sign up 2025-11-17 09:12:40 -05:00
Donal McBreen fc56ad9d7c Combine uuid-old and uuid branch changes
- Switch to binary 16 for UUID keys
- Remove AccountScopedRecord base class, all model use binary uuids now
- Fix the search sql to serialize uuids properly
- Patch the MySQL schema dumper to output binary lengths
2025-11-17 09:12:34 -05:00
Mike Dalessio e4011ef211 Update primary keys on customer data to UUIDs
- schema changes to primary and foreign keys
- fixture changes
- customer data models subclass AccountScopedRecord
- import script updated
2025-11-17 09:12:30 -05:00
Donal McBreen 3aa4a1a562 Shard the search index into 16 tables
Create search_index_0 to search_index_15 tables and shard each index by
account id. MySQL has no ability to pre-filter fulltext indexes by
another field so this is the best bet for improving performance.

Each fulltest index internally creates 11 sub tables (see
https://dev.mysql.com/doc/refman/8.4/en/innodb-fulltext-index.html) so
actually we have 192 tables in total here.

The search_index table name is generated dynamically based on the
account_id.
2025-11-17 09:12:17 -05:00
Donal McBreen ddd7fe082a Ensure the mentioning scope search works
Include the filter by accessible board ids to avoid large joins from the
search_index table. Drop the unused search scope.
2025-11-17 09:12:17 -05:00
Stanko K.R. ba3f6b188e Add account_id to everything 2025-11-17 09:11:42 -05:00
Jorge Manrubia 03a345609e Baseline replacing collection with board across code 2025-11-05 13:31:54 +01:00
Jason Zimdars 1fcf28abcf Don't include drafted cards in filtered views 2025-11-04 21:53:50 -06:00
Jason Zimdars 2ab737b032 Open should mean everything except closed and not now 2025-10-29 16:07:29 -05:00
Jason Zimdars e2c9df7c43 Include drafts in filter collection 2025-10-15 20:34:03 -05:00
Jorge Manrubia d2838fc3d8 Show completed cards when filtering cards by creator 2025-10-14 10:35:18 +02:00
Jorge Manrubia 7cb575b329 Exclude drafts from filtered cards 2025-10-07 10:32:10 +02:00
Jorge Manrubia 24f1394ca3 Remove workflows code, remove more unused code 2025-09-28 20:39:47 +02:00
Jorge Manrubia 2f6a639682 Prepare entropy code for the new auto postpone approach 2025-09-24 16:22:42 +02:00
Jorge Manrubia 55a22f98e3 Submit and refresh results as you type terms 2025-09-12 18:25:27 +02:00
Jorge Manrubia a6b2944f54 Array not needed 2025-09-09 12:15:04 +02:00
Jorge Manrubia 1366ccc8df Add caching and http caching to the cards index screen 2025-09-09 12:05:16 +02:00
Jorge Manrubia 61fd84ab5e Add server-side caching and HTTP caching when serving events in the timeline 2025-09-09 11:30:05 +02:00
Jason Zimdars 70b07f856f Use inquiry method 2025-08-31 15:28:01 -05:00
Jason Zimdars f80ef52f81 Workflow stage filter should only apply to cards in doing
No other column has Workflows so they should be unaffected by the filter
2025-08-28 20:54:23 -05:00
Jorge Manrubia 2eaf462efd Fix: queries were failing due to using the wrong alias 2025-08-22 09:23:35 +02:00
Jorge Manrubia c8569ce8b9 Split indexed_by into two filters: indexed by and sort by
https://3.basecamp.com/2914079/buckets/37331921/todos/8877489555#__recording_8987808963
2025-08-21 19:12:54 +02:00
Jorge Manrubia 5ad2d09eae Move the hack to fetch completed cards to the insight command logic
We need to rework this as part of the filters revamp. "indexed_by" being
a mix of filters keeps biting us.
2025-07-24 16:48:05 +02:00
Jorge Manrubia fc26329daf Restore default to open cards. Use special "all" value instead.
The change could have side effects (e.g: when running commands).

This also include further changes.
2025-07-24 16:48:04 +02:00
Jorge Manrubia dd28e3d1e9 Replace special value with just not asuming that filters are about open cards by default 2025-07-24 16:48:03 +02:00
Jorge Manrubia 9d0887f6bd Use a workaround with a special indexed_by filter to "query all" 2025-07-24 16:48:02 +02:00
Jorge Manrubia 1c6adf54a8 Restore semantic searches 2025-07-24 16:47:57 +02:00
Jorge Manrubia cd9955d938 Add "close by" filter 2025-07-03 14:32:03 +02:00
Jorge Manrubia 4d5017b671 Add chip filters for the new time window filters
rename close => closure to ease interpretation by the LLM
2025-06-27 13:38:45 +02:00
Jorge Manrubia 3fbfa1404c Add support for filtering by creation or completion windows of times 2025-06-27 13:38:22 +02:00
Jorge Manrubia 9e3dbb0858 Remove semantic searches
We may revisit in the future but we'll go with keyword search only for launch
2025-06-25 09:36:14 +02:00
Jorge Manrubia 7371147e5f Separate search paths 2025-06-24 13:32:31 +02:00
Jorge Manrubia 5fe5419905 Move similarity search to a param
To keep current tests working. This is all quite experimental. Used as a sandbox for now.
2025-05-16 14:16:14 +02:00
Jorge Manrubia 280beb0db7 Arbitrary groups include closed cards 2025-05-08 09:52:49 +02:00
Jorge Manrubia 561e9fad0c Support selecting multiple cards by using a list of numbers (separated by comma, or space)
https://3.basecamp.com/2914079/buckets/37331921/todos/8620236700#__recording_8620273944
2025-05-07 11:30:58 +02:00
David Heinemeier Hansson 7a46fd0948 Stick with open/close as a consistent pair instead of active/close 2025-04-22 12:08:56 +02:00
David Heinemeier Hansson cacee0febb Remove anemic scope 2025-04-18 17:18:13 +02:00
Jorge Manrubia 695247ae9b Paginate collection cards 2025-04-10 15:09:56 +02:00
Jorge Manrubia 723e6d94f5 Rename bubbles => cards 2025-04-09 14:50:58 +02:00
Jorge Manrubia cf8331dad7 No need to modify this filter, it was already working well 2025-04-03 14:25:48 +02:00
Jorge Manrubia 5a2b7c5abd Rework buckets index using proper queries and tidy up 2025-04-03 13:26:16 +02:00
Jorge Manrubia 796ee44158 Tidy up header templates for listing buckets 2025-04-03 12:53:19 +02:00
Jason Zimdars fb01444a88 "Added by…" is a more useful filter than "Assigned by…" 2025-02-20 16:07:07 -06:00
Kevin McConnell 85d5f7d7d7 Allow filtering by stage 2025-01-24 10:28:12 +00:00