Donal McBreen e51f0bfee7 Fix account destroy cascade gaps
Account incineration could leave orphaned records due to missing cascade
declarations and async jobs failing when the account was already gone.

Cascade fixes:
- Add Account::Searchable concern to clean up Search::Query (delete_all)
  and Search::Record (destroy_all, respects SQLite FTS dependent: :destroy)
- Add before_destroy in Account::Storage to delete storage entries
- Suppress storage entry recording during incineration so attachment
  purge callbacks don't create entries or enqueue materialize jobs
- Guard Access#clean_inaccessible_data_later with unless user.destroyed?
  to avoid enqueuing pointless jobs during user cascade

Job tenancy:
- Extract AccountTenanted concern from the global ActiveJob initializer
  into ApplicationJob (include) with targeted prepends for
  ActionMailer::MailDeliveryJob and Turbo broadcast jobs
- Defer account resolution from deserialize to perform so that missing
  accounts raise DeserializationError inside the execution path where
  discard_on can handle it

Tests:
- Comprehensive incineration test covering 35 model types with
  before/after assertions and full enqueued job processing
- Mailer deliver_later test verifying account context survives job
  serialization for multi-account users
- Turbo broadcast test verifying account-scoped URLs in rendered partials
2026-04-06 10:04:24 +01:00
2026-04-06 10:04:24 +01:00
2026-04-06 10:04:24 +01:00
2026-03-18 11:51:10 +01:00
2024-06-21 13:19:56 +01:00
2025-12-02 13:35:58 -08:00
2026-03-31 15:14:49 +01:00
2024-06-21 13:19:56 +01:00
2026-04-06 10:04:24 +01:00
2024-06-21 13:19:56 +01:00
2025-11-21 09:15:19 +00:00
2025-12-04 09:59:17 -08:00
2025-10-09 13:24:01 -07:00
2025-12-02 20:37:58 +01:00
2025-11-28 15:53:58 +01:00
2024-06-21 16:42:48 +01:00
2025-12-12 17:26:50 +00:00

Fizzy

This is the source code of Fizzy, the Kanban tracking tool for issues and ideas by 37signals.

Running your own Fizzy instance

If you want to run your own Fizzy instance, but don't need to change its code, you can use our pre-built Docker image. You'll need access to a server on which you can run Docker, and you'll need to configure some options to customize your installation.

You can find the details of how to do a Docker-based deployment in our Docker deployment guide.

If you want more flexibility to customize your Fizzy installation by changing its code, and deploy those changes to your server, then we recommend you deploy Fizzy with Kamal. You can find a complete walkthrough of doing that in our Kamal deployment guide.

Development

You are welcome -- and encouraged -- to modify Fizzy to your liking. Please see our Development guide for how to get Fizzy set up for local development.

Contributing

We welcome contributions! Please read our style guide before submitting code.

License

Fizzy is released under the O'Saasy License.

S
Description
No description provided
Readme 62 MiB
Languages
Ruby 67.8%
HTML 14.6%
CSS 10.8%
JavaScript 5.6%
Shell 0.9%
Other 0.3%