Commit Graph

279 Commits

Author SHA1 Message Date
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. 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 6c15610fb3 Fix test 2025-10-30 15:56:12 +01:00
Jorge Manrubia 9d548e77ef Merge pull request #1418 from basecamp/sort-columns
Sort columns
2025-10-30 08:39:53 +01:00
Jason Zimdars a8fc78fa90 Update tests 2025-10-29 11:23:13 -05:00
Jorge Manrubia 7a1dde1a81 Add tests 2025-10-29 16:41:04 +01:00
Jorge Manrubia aa1ffb3357 Remove AI summaries and semantic searches
We were not using either. We can restore if we revisit.
2025-10-29 11:55:32 +01:00
Jorge Manrubia 9317a82570 Remove Fizzy Ask
Since we are not going to ship it
2025-10-27 14:45:30 +01:00
Jorge Manrubia d6c7fb2084 Remove unused constants / controller
This came from the previous 3-column times
2025-10-25 18:50:37 +02:00
Jason Zimdars f5384baf63 Boxcar -> BOXCAR 2025-10-23 15:05:36 -07:00
Jason Zimdars 1c8a9fdc67 Update tests 2025-10-23 07:54:46 -07:00
Jason Zimdars 47042602de Update tests 2025-10-22 14:13:06 -07:00
Jason Zimdars f7c5996bec Update test 2025-10-16 20:20:56 -05:00
Jason Zimdars da413e7540 Remove closure reasons 2025-10-15 16:15:56 -05:00
Mike Dalessio 3399e45130 Introduce an "Identity" model to ease login
- New untenanted Identity and Membership models
- New `identity_token` cookie with path "/" holds state across tenants

We're not sure whether the untenanted database will be sqlite or
MySQL, and so I've been careful to minimize

- database reads, placing them behind etags and caching
- database writes, only writing when a new Session is created (login)

Note that we track two things in the identity_token cookie: a signed
id, and the updated_at for the underlying Identity object. This allows
us to effectively cache on the Identity without having to hit the
database, by using an Identity::Mock object that is compatible with
etag and cache methods.

The new integration test shows the desired user-facing behavior, which
is to make it easy to login without a tenanted URL and to jump between
tenants.

- the untenanted "login_help" page shows all linked memberships
- the jump menu shows all linked memberships (except the current)

Also introduced a utility script to populate existing employee
Identities, grouping accounts by email address.
2025-10-10 10:12:25 -04:00
Jorge Manrubia 6073f79191 Invalidate cards when watching/unwatching
Follow up to https://fizzy.37signals.com/5986089/cards/2198
2025-10-06 16:13:33 +02:00
Jorge Manrubia c846221208 Invalidate cards when watchers change 2025-10-06 15:44:12 +02:00
Jorge Manrubia 38116f64e4 Higher fidelity for watching/unwatching cards 2025-10-06 10:48:31 +02:00
Jorge Manrubia 5e09944606 Separate card and collection watchers
https://fizzy.37signals.com/5986089/cards/375
2025-10-03 19:04:01 +02:00
Mike Dalessio 2d327e6294 Render a helpful menu of tenants temporarily 2025-10-02 16:33:25 -04:00
Mike Dalessio 47370084d2 Remove code related to Launchpad auth or 37id Users 2025-10-02 16:33:23 -04:00
Jorge Manrubia 1b6b82a6cc Redirect to cards when searching by card id 2025-09-30 13:52:27 +02:00
Jorge Manrubia f7f4aa6eaf Add more controller tests 2025-09-28 22:02:01 +02:00
Jorge Manrubia 23895e53aa Add tests for new controllers 2025-09-28 21:11:07 +02:00
Jorge Manrubia 0b0fb57e58 Fix tests 2025-09-28 20:31:41 +02:00
Jorge Manrubia e14262dc01 Fix tests, remove workflow controllers 2025-09-28 18:50:26 +02:00
Jorge Manrubia 1b39e0b45e Format 2025-09-28 11:18:54 +02:00
Jorge Manrubia d7ef9749c0 Remove old drop controller 2025-09-26 12:33:29 +02:00
Jorge Manrubia 2f6a639682 Prepare entropy code for the new auto postpone approach 2025-09-24 16:22:42 +02:00
Jorge Manrubia de60b198bd Fix tests 2025-09-19 16:52:13 +02:00
Jorge Manrubia e6608748f6 Fix test 2025-09-17 19:40:03 +02:00
Jorge Manrubia a680235773 Redirect to home if remove yourself from the collection 2025-09-17 18:21:50 +02:00
Stanko K.R. 34222b9717 Add missing actions 2025-09-16 20:23:50 +02:00
Stanko K.R. 63e64a060d Use HTML5 validation for the URL 2025-09-16 20:08:06 +02:00
Stanko K.R. 02a421675f Scope Webhooks to Collections 2025-09-16 20:07:25 +02:00
Stanko K.R. 680a69ad29 Add tests for webhooks controllers 2025-09-16 20:04:20 +02:00
Mike Dalessio 2630e4bd74 Extract 37id and QB controllers, models, and tests 2025-09-13 16:03:02 -04:00
Mike Dalessio 8f39c015ea Tests now pass with local authentication
This is the first step of a multi-step SaaS engine extraction.

Looking ahead to an open source release, we need to make sure that
local authentication is treated as an "official" option, and not just
a hack I added for Kevin to do load testing outside our DC. So this PR
gets to green, and adds a CI step in "local authentication" mode.

This all probably feels a little hacky to you, Reader, but the goal of
this change is to ease the next step, which will be extracting the
37id and Queenbee integrations into a proprietary "SaaS mode" engine.

In service of that goal, this commit simply wraps all of the dependent
code and tests with a conditional check on
`config.x.local_authentication`.
2025-09-13 15:21:00 -04:00
Jorge Manrubia 4e72566856 Flatten card resource
We only need the parent collection for creating cards. Carrying it in the
rest of actions is a hassle.
2025-09-10 11:24:23 +02:00
Jorge Manrubia d533f05c7b Use vanilla resources for handling notifications 2025-09-10 09:17:57 +02:00
Jorge Manrubia be246d204f Replace assignees with a turbo stream instead of replacing the full card
So that we don't lose th editing context if you do it while editing a card

https://fizzy.37signals.com/5986089/collections/2/cards/1479
2025-09-09 15:32:18 +02:00
Jorge Manrubia cfa0149564 Persist timezones in the server
Add a beacon to persist timezones when these change (or the first time)
2025-09-05 12:11:57 +02:00
Jorge Manrubia 5b68750713 Generate weekly highlights instead of daily ones
https://3.basecamp.com/2914079/buckets/37331921/todos/9010176047
2025-09-01 16:01:19 +02:00
Jorge Manrubia 6f2670d6dd Merge main into bundle-emails branch and resolve conflicts 2025-09-01 11:49:20 +02:00
Mike Dalessio 87d81e608b refactor: remove unused routes associated with "resource :account"
- Drop from 313 unused routes to 306 unused routes
- Use a namespace for the account-related resource routes
- Controllers are nested under the "Account" module now
- Move views from "accounts/" to "account/"
2025-08-28 11:12:24 -04:00
Jorge Manrubia e4ab1366be Add unsubscribe links and headers for emails
https://3.basecamp.com/2914079/buckets/37331921/todos/9002504172
2025-08-28 16:59:24 +02:00
Stanko K.R. 89af9066d3 Remove Fizzy Do command logic 2025-08-22 07:33:24 +02:00
Jorge Manrubia fa82dc0384 Remove code related to Fizzy Do /command support and filtering
https://3.basecamp.com/2914079/buckets/37331921/messages/8961776532
2025-08-18 13:41:20 +02:00
Mike Dalessio e84cd529d5 The "sign out" button now clears the Launchpad login.
ref: https://fizzy.37signals.com/5986089/collections/2/cards/1382
2025-08-15 12:25:10 -04:00