Commit Graph

502 Commits

Author SHA1 Message Date
Donal McBreen f6ec9bbeea Use a custom class for Uuid values 2025-11-17 09:12:35 -05:00
Donal McBreen f4729577b6 Use uuids in the search_index tables too 2025-11-17 09:12:35 -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
Stanko K.R. 71a332bb08 Remove dead code 2025-11-17 09:12:17 -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
Kevin McConnell 915c1202f8 Initial minimal primary/replica switching 2025-11-17 09:11:57 -05:00
Mike Dalessio 29cf6485e4 Drop the migrations audit from CI 2025-11-17 09:11:57 -05:00
Mike Dalessio 006aa4d6b3 Tests need to set up the script_name properly
which requires tweaking fixtures for the memberships and the account
2025-11-17 09:11:42 -05:00
Mike Dalessio 030433b99d Remove debugging statements 2025-11-17 09:11:42 -05:00
Mike Dalessio ec54014832 Add account slug middleware
and set Current.account
2025-11-17 09:11:42 -05:00
Mike Dalessio d6c7fc9e0a Database config for mysql 2025-11-17 09:11:42 -05:00
Stanko K.R. 6705b5225f Remove the untenanted database 2025-11-17 09:11:36 -05:00
Mike Dalessio 4d3c265042 Rip out activerecord-tenanting
Co-authored-by: Stanko K.R. <stanko@stanko.io>
2025-11-17 09:11:35 -05:00
Kevin McConnell e5bbe6cf64 Remove Beamer 2025-11-17 09:11:28 -05:00
Mike Dalessio 19df86aef9 Re-enable SQL query logging 2025-11-14 13:19:35 -05:00
Jorge Manrubia eea9afb639 Fix: dismiss grouped notifications by card from the notifications tray
This also splits the templates into two: index and tray, since the URL now changes.
2025-11-14 12:58:24 +01:00
David Heinemeier Hansson 63291ca0a2 Alpha sort lists when they're three or longer and there isn't another reason for existing sort 2025-11-08 20:09:12 +01:00
David Heinemeier Hansson 5231f13ced Show up top 2025-11-08 20:06:56 +01:00
David Heinemeier Hansson 75b8adeb9a No longer used 2025-11-08 20:06:50 +01:00
David Heinemeier Hansson 5d4f4f8a74 No longer used 2025-11-08 20:04:38 +01:00
David Heinemeier Hansson e28e02f273 Move down to related routes for logging in and joining 2025-11-08 20:03:48 +01:00
Jorge Manrubia 8a07782e0f Enable public file server for assets
Attempt to deal with https://app.fizzy.do/5986089/cards/2790
2025-11-07 13:13:24 +01:00
Kevin McConnell 7a23e0bdd5 Serve default error pages 2025-11-06 09:56:28 +00:00
Mike Dalessio 72a1cfc088 dep: update Rails and AR::Tenanted
Note that the query logs in this version of AR::Tenanted have changed,
to use standard Rails query log tags, which I have enabled.

Note that enabling Rails query log tags disables prepared
statements. I don't think turning off prepared statements will impact
our performance, but I'll verify that post-deploy (we have dashboards
for a reason).
2025-11-05 13:12:42 -05:00
Jorge Manrubia 2af7a9f402 Merge pull request #1498 from basecamp/rename-boards
Rename collections => boards
2025-11-05 18:50:49 +01:00
Jorge Manrubia a717ae838b Support old public collection urls 2025-11-05 14:02:40 +01:00
Jorge Manrubia 41c8c7ee53 Support old collection urls 2025-11-05 13:58:40 +01:00
Jorge Manrubia 03a345609e Baseline replacing collection with board across code 2025-11-05 13:31:54 +01:00
Stanko Krtalić 1c54efbd75 Merge pull request #1497 from basecamp/fix-double-memberships
Prohibit duplicate memberships
2025-11-05 12:22:32 +01:00
Stanko K.R. cfdd7ab1cb Prohibit duplicate memberships 2025-11-05 11:57:40 +01:00
Kevin McConnell b66bad082a Specify asset path in deployment
We need this so that app containers can serve old asset versions, to
cover the cases where a request for an old asset is a MISS on the CDN.
2025-11-05 08:32:10 +00:00
Jorge Manrubia 2bb90eab13 Use the sole collection as the root for a better onboarding experience for new accounts 2025-11-04 17:09:35 +01:00
Fernando Álvarez 514c0f45a2 Migrate to fizzy.do 2025-11-04 13:17:10 +01:00
Kevin McConnell 417acab12a Upgrade Beamer to zone-aware version 2025-11-04 09:58:53 +00:00
Stanko K.R. 1c4c271fd8 Remove unused route 2025-11-04 07:20:16 +01:00
Mike Dalessio 8538c21d4e Copy Cloudflare's True-Client-IP header to X-Forwarded-For
ref: https://3.basecamp.com/2914079/buckets/37331921/todos/9243121525
2025-11-03 14:22:33 -05:00
Jorge Manrubia 7f7ecdaf28 Merge pull request #1456 from basecamp/only-show-draft-banner
Only show draft banner when the draft has some previous title/content set
2025-11-03 14:48:51 +01:00
David Heinemeier Hansson e081ce5e76 Consistently use symbols for module scopes 2025-11-03 14:47:48 +01:00
Jorge Manrubia ebf8490c2b Use Turbo.fetch to prevent page refreshes bounces when using rails/requests 2025-11-03 14:46:22 +01:00
David Heinemeier Hansson ecd0d319cc Style 2025-11-03 14:44:46 +01:00
David Heinemeier Hansson 2f1ee30a2b Remove duplicated nesting 2025-11-03 14:20:57 +01:00
David Heinemeier Hansson 225a70fc52 Remove here too 2025-11-03 13:40:20 +01:00
David Heinemeier Hansson 38a7a14466 Remove vector extension that we are no longer using 2025-11-03 13:40:03 +01:00
Jorge Manrubia 9d4dd3b00e Remove "save as draft"
Removes the creating status completely as well as the abandoned cards system. It will
always resume drafts if they exist, for a given collection and user.

https://app.box-car.com/5986089/cards/2489
2025-11-03 09:32:29 +01:00
David Heinemeier Hansson 43069b1ea4 Extract Users::JoinsController from overloaded UsersController
Good code smell is when the before_action callbacks stack up but can't
be shared across actions
2025-11-02 17:49:25 +01:00
David Heinemeier Hansson bced7405df Extract events loading from overloaded UsersController 2025-11-02 17:31:28 +01:00
David Heinemeier Hansson 6a62df470c No longer used 2025-11-02 16:34:29 +01:00
David Heinemeier Hansson b3474ec97d Rename Entropy::Configuration to just Entropy 2025-11-02 13:11:41 +01:00
David Heinemeier Hansson 72d0008df0 Only restrict resource actions when there's a specific story to tell 2025-11-02 12:49:17 +01:00