Commit Graph

129 Commits

Author SHA1 Message Date
Jorge Manrubia efc809c23e Script to fix misassigned tags
See https://github.com/basecamp/fizzy/pull/1879
2025-12-03 23:46:08 +01:00
Mike Dalessio 6345aa4787 Update seeds to use @example.com
See also https://www.rfc-editor.org/rfc/rfc2606.html
2025-12-03 15:40:58 -05:00
Mike Dalessio edf6b53469 Introduce an "owner" role, and prevent it from being administered
to prevent the owner from being demoted or kicked out.

ref: https://app.fizzy.do/5986089/cards/3213
2025-11-29 14:13:29 -05:00
Jorge Manrubia d195497b76 Remove configure-lb scripts (moved to fizzy-saas gem)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-28 16:06:40 +01:00
Jorge Manrubia 499b132b42 Remove script that depends on QB 2025-11-28 15:53:58 +01:00
Fernando Álvarez 91929d7c09 Add extra fizzy lbs 2025-11-28 15:19:51 +01:00
Mike Dalessio 2a88e8aacc Configure beta load balancer
including otel config
2025-11-24 14:21:42 -05:00
Kevin McConnell bd259f7795 Add optimistic pausing to avoid stale reads
Instead of writer pinning, we'll track the last transaction ID of each
write in the session. Then on each read we'll wait for the replica to
report that this transaction is available.

If it doesn't become available within a reasonable timeout, we'll
proceed anyway, and accept the possibility of a stale read.

The hope here is that most of the time, the replica is caught up in the
time between a write request and the following read request. If it's
not, we now have a little tolerance to wait for it, which hopefully
proves enough to stale reads are not encountered in normal use.

We also disable the writer affinity opt-out mechanism that we had
before, since we will no longer be using writer affinity at the load
balancer.
2025-11-24 13:29:52 +00:00
Stanko Krtalić c33802d37b Fix attachemnts (#1627)
* Load keys from tenanted dbs

* Implement sgid swapping

* Fix sgid generation

* Flip the logic to do lookups by tenant and id

* Create missing blobs

* Copy over variations

* fix-active-storage-links: fix mentions

* Fix variant generation

* Fix avatars

* Fix avatars

---------

Co-authored-by: Mike Dalessio <mike@37signals.com>
2025-11-20 11:47:49 -05:00
Stanko K.R. 245c328570 Decode the filename form the URL 2025-11-18 19:39:32 +01:00
Stanko K.R. d574748432 Add script to fix active storage links 2025-11-18 19:24:04 +01:00
David Heinemeier Hansson 43d384961a Add users to the populater too 2025-11-18 17:59:15 +01:00
David Heinemeier Hansson 9cbb6b4569 Broadcasts are slowing things down 2025-11-18 17:59:15 +01:00
David Heinemeier Hansson 8e6e764d58 Fix for an account-aware domain model 2025-11-18 17:44:25 +01:00
David Heinemeier Hansson bfe8d74ccd Fix the populate script and add tags 2025-11-18 17:36:33 +01:00
Stanko K.R. 1bd4a1b4e7 Disable webhooks and email notifications in non-prod envs 2025-11-18 16:16:01 +01:00
Stanko K.R. ab07488fbd Fix int and string overflow during prod import 2025-11-18 16:16:01 +01:00
Kevin McConnell 2661c7ba63 Update LB scripts for production deployment 2025-11-18 12:52:23 +00:00
Stanko K.R. b7404087bd Fix schema incomatibilities with production 2025-11-17 20:31:42 +01:00
Stanko K.R. d915bff326 Fix admin having duplicate user after import 2025-11-17 09:12:41 -05:00
Kevin McConnell 11a38a4526 Initial (wip) staging deployment
This adds an initial configuration for staging. Note that we are doing
this ahead of having the full infrastructure in all 3 DCs. So this
this will result in some cross-DC writes for now (e.g. we have a single cache in
IAD). We'll correct this as the infrastructure becomes available.

We'll also run jobs on every app server, until we split them out to
separate instances.
2025-11-17 09:12:41 -05:00
Stanko K.R. 0a3f91f220 Fix entropy imports 2025-11-17 09:12:41 -05:00
Mike Dalessio fe6df7085f Finish the rollout of account_id to all core data models
Schema:
- add account_id to tables it was missing from
- make account_id a required column everywhere
- add [account_id] indexes, or add `account_id` to existing indices

Models:
- add `belongs_to :account` to all models (default to using a domain
  model's account whenever possible)
- add account_id in all the necessary fixtures
- add account_id to insert_all hashes
- pass account_id to a few initialize calls

Miscellaneous:
- update the import script to set account_id

Note that I'm not adding account_id to the join tables primarily
because I couldn't think of an easy way to populate it without making
it a full Join model, and that was more work than I have time to take
on right now.
2025-11-17 09:12:40 -05:00
Stanko K.R. 8fa9566c07 Update sign up 2025-11-17 09:12:40 -05:00
Stanko K.R. edf837fed3 Drop memberships 2025-11-17 09:12:39 -05:00
Donal McBreen 84d1fb6827 Import steps correctly 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
Kevin McConnell 6c04b56f4b Compact the UUIDs to base36 2025-11-17 09:12:31 -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. 32d96db7d9 Replace card id with card number 2025-11-17 09:12:15 -05:00
Stanko K.R. 906e82a346 Optimize card and comment imports 2025-11-17 09:11:57 -05:00
Stanko K.R. 5c86d307be Fix import bugs with a real prod account 2025-11-17 09:11:57 -05:00
Stanko K.R. c894bcc3b2 Fix event creation 2025-11-17 09:11:42 -05:00
Stanko K.R. ba3f6b188e Add account_id to everything 2025-11-17 09:11:42 -05:00
Stanko K.R. 65f97babd9 Create SQLite import script 2025-11-17 09:11:42 -05:00
Mike Dalessio d41d50d52b Account.sole → Current.account
and some other de-tenant changes, including removing the controller
tenanting concerns
2025-11-17 09:11:40 -05:00
Jorge Manrubia 39ec6cf062 Replace collection with board in the code, tests green 2025-11-05 13:41:12 +01:00
Jorge Manrubia 03a345609e Baseline replacing collection with board across code 2025-11-05 13:31:54 +01:00
Fernando Álvarez 514c0f45a2 Migrate to fizzy.do 2025-11-04 13:17:10 +01:00
Jorge Manrubia f104e31f3f Remove unused method 2025-11-04 05:06:18 +01:00
David Heinemeier Hansson aae16d2070 Fix path 2025-10-31 21:21:10 +01:00
David Heinemeier Hansson d49c7f45eb Use a single populate script with faker data 2025-10-31 21:19:33 +01:00
David Heinemeier Hansson e258e39242 Slim down 2025-10-31 17:47:02 +01:00
David Heinemeier Hansson 65c3dba574 Do it on a single line 2025-10-31 17:00:16 +01:00
David Heinemeier Hansson f3b00eaa3e Explain the ID 2025-10-31 17:00:16 +01:00
Stanko Krtalić 98755844a1 Remove the internal API
* Bind sessions to identities
* Remove references to the identity token
* Move email changes to identity
* Move account menu into a turbo-frame
* Create tenants from a tenanted route
2025-10-31 16:26:08 +01:00
Stanko K.R. 201c3e27d3 Update tests for the Internal API 2025-10-31 16:26:08 +01:00
Stanko K.R. 79b012f319 Add Join Codes 2025-10-31 16:24:30 +01:00
Stanko K.R. 5cef4ffeb0 Add sign in flow using magic links 2025-10-31 16:22:12 +01:00
David Heinemeier Hansson 4c851e2756 Fix-up population script and take it to 10K cards 2025-10-31 15:47:53 +01:00