Commit Graph

712 Commits

Author SHA1 Message Date
David Heinemeier Hansson eebda8bfd2 No longer used 2025-10-24 12:58:34 -07:00
Jason Zimdars f5384baf63 Boxcar -> BOXCAR 2025-10-23 15:05:36 -07:00
Kevin McConnell decd01c8d0 Extend public caching to 30 seconds
Up from the previous 5 seconds. It's still short enough that the pages
shouldn't feel stale, but it further reduces the number of requests that
will reach the app.

Also moved this into a shared concern so we can adjust the caching rule
in one place.
2025-10-23 11:48:12 -07:00
Jason Zimdars ed9cede24b These use the old collection link format 2025-10-22 17:12:43 -07:00
Jason Zimdars d3a20060e2 Redirect to collection after publishing a card 2025-10-22 17:07:24 -07:00
Jason Zimdars 81618d758e Avoid capitalizing "board" 2025-10-22 13:49:23 -07:00
Jason Zimdars c3a3f157a2 Merge branch 'main' into remove-closure-reasons 2025-10-16 13:55:13 -05:00
Jorge Manrubia f4bd7d7a00 Remove unnecessary assignment 2025-10-16 16:05:01 +02:00
Jorge Manrubia 13135941d8 Sort search results by recency
https://fizzy.37signals.com/5986089/cards/2236/edit
2025-10-16 15:55:01 +02:00
Jorge Manrubia e6df694f4b Fix keep right order in the stream column 2025-10-16 14:30:37 +02:00
Jason Zimdars da413e7540 Remove closure reasons 2025-10-15 16:15:56 -05:00
Kevin McConnell c1600a99e2 Populate writer and last transaction in responses
In order to control routing dynamically, we need to expose some Beamer
information to the proxy.

The `beamer_writer` value is used by the proxy to keep track of which
node should receive write requests. When it changes due to a failover,
the proxy will update after seeing a new value in this header. We
provide this to the proxy in the `X-Writer` response header.

The `beamer_last_txn` value will be used to control writer pinning.
Setting it in the cookie here is the first stage of this. The second
stage will be to catch situations where a reader gets a request where
this header value is set to a large value than the reader has seen; when
that happens if means there's a risk of reading stale data, so rather
than serve the request we should request the proxy to reproxy it back to
the writer.

We also set `X-Kamal-Target` in the response to match the
`X-Kamal-Target` that was set in the request; this lets us see which
proxy target served each request, which is useful for diagnostics.
2025-10-15 08:46:45 +01:00
Jorge Manrubia 690ba7e655 Merge pull request #1303 from basecamp/card-broadcasts
Improve page refreshes
2025-10-14 15:43:12 +02:00
Jorge Manrubia b177f92ec1 Prevent view transition animations on page refreshes
View transitions don't play great with page refreshes as they can make those
very noticeable
2025-10-14 15:38:35 +02:00
Jason Zimdars 94b5b6fc9e Activity bumps cards to the top of triaged columns, too 2025-10-13 15:51:35 -05:00
Jason Zimdars fb865effac Activity bumps cards to the top of the stream 2025-10-13 15:39:14 -05:00
Mike Dalessio ec119b774a Remove the caching around Identity-related fragments
The Identity table read should be OK given the menu is etagged
and the untenanted page should be a rarity.
2025-10-10 11:53:36 -04:00
Mike Dalessio 04be825609 Fix identities for existing sessions 2025-10-10 10:58:30 -04: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
Jason Zimdars d7cf5c9348 Set and change column colors 2025-10-08 16:47:36 -05:00
Jorge Manrubia 4e6866bd2e Add pagination to searches 2025-10-07 08:49:05 +02:00
Jorge Manrubia 38116f64e4 Higher fidelity for watching/unwatching cards 2025-10-06 10:48:31 +02:00
Jason Zimdars d591166f01 Merge pull request #1212 from basecamp/column-perma
Column perma
2025-10-03 16:09:42 -05:00
Jorge Manrubia e610bc981e Handle update with a page refresh so that both the list of subscribers and the bell update on the same operation
We can optimize with streams separately, this fixes a bug
2025-10-03 18:25:04 +02:00
Jorge Manrubia 4527dcbeda Remove unnecessary filtering code
After removing collections from the filtering menu, there was quite a good cleanup here pending
2025-10-03 10:56:34 +02:00
Jason Zimdars 610db7d203 Make The Stream expandable 2025-10-02 17:57:09 -05:00
Jason Zimdars 095d5f8b0f Merge branch 'main' into column-perma
* main: (47 commits)
  Remove overflow from columns
  Only reverse Watching button if icon_only
  Move video captions below content
  Account#slug uses the virtual "tenant" attribute
  Rename LOCAL_AUTHENTICATION to OSS_CONFIG
  Add a script to generate unique passwords per email address
  Visually hide the pagination indicator
  Use hide avatars from tabindex on preview
  Render a helpful menu of tenants temporarily
  Remove code related to Launchpad auth or 37id Users
  Formatting
  Fix missing close bracket from merge
  Reverse involvement buttons if watching
  Only render the manifest link for tenanted URLs
  Move load-balancer to fizzy-lb-101
  Add otel_collector accessory for load balancer
  Fix: this was getting idiomorph confused as it was being invoked on many subtree elements
  Keep column popups during page refreshes
  Don't render next link unless there is more activity
  Live updates for the collection perma
  ...
2025-10-02 17:36:56 -05:00
Jason Zimdars d080773fa0 Expand Closed and Not Now columns 2025-10-02 16:59:46 -05:00
Mike Dalessio 2d327e6294 Render a helpful menu of tenants temporarily 2025-10-02 16:33:25 -04:00
Jorge Manrubia bc90129af2 Use frame based pagination for the users timeline too 2025-10-02 15:45:09 +02:00
Jorge Manrubia 0d6333f8ba Use frame-based pagination for the activity timeline 2025-10-02 15:07:52 +02:00
Jorge Manrubia 5f8457ad9d Don't broadcast updates of cards unless published
To prevent https://fizzy.37signals.com/5986089/cards/1631
2025-10-02 14:19:21 +02:00
Jason Zimdars 8e1243a283 Add layout to show view 2025-10-01 17:13:33 -05:00
Jorge Manrubia 0347806ce1 Fix: Keep the previous filtering when navigating back from cards
https://fizzy.37signals.com/5986089/cards/1760/edit

This also adds a proper resource for filtered collections, instead of changing the URL to cards for filtering cards.
2025-09-30 15:48:56 +02:00
Jorge Manrubia d0003e6e94 Columns does not exist anyymore! 2025-09-30 14:51:04 +02:00
Jorge Manrubia 1b6b82a6cc Redirect to cards when searching by card id 2025-09-30 13:52:27 +02:00
Jorge Manrubia dc99b63b50 Place golden cards first 2025-09-29 21:56:40 +02:00
Jorge Manrubia c95bdf0dc7 Add some basic caching for the new columns approach 2025-09-29 15:09:38 +02:00
Jorge Manrubia 1bb8de8564 Fix tests 2025-09-29 13:13:40 +02:00
Jorge Manrubia 1a46199199 Move actions to stream templates 2025-09-28 22:48:26 +02:00
Jorge Manrubia 23895e53aa Add tests for new controllers 2025-09-28 21:11:07 +02:00
Jorge Manrubia e14262dc01 Fix tests, remove workflow controllers 2025-09-28 18:50:26 +02:00
Jorge Manrubia b0e62a3a4f Add default columns when creating a collection 2025-09-28 18:43:23 +02:00
Jorge Manrubia 4103e0c346 Adapt public collections/cards to the new columns model 2025-09-28 18:33:06 +02:00
Jorge Manrubia 1b39e0b45e Format 2025-09-28 11:18:54 +02:00
Jorge Manrubia ce065623f7 Delete columns 2025-09-28 11:09:33 +02:00
Jorge Manrubia 7a97d978f5 Rename columns 2025-09-28 11:06:40 +02:00
Jorge Manrubia 47eaecae31 Add columns 2025-09-27 08:40:45 +02:00
Jorge Manrubia e3e051d4c1 Initial cards view 2025-09-26 17:19:11 +02:00
Jorge Manrubia 5c52b6b056 More fidelity for D&D cards
- Reload source frame with morphing. E.g: to deal with pagination or with the D&D placeholder
- Decrease source counter with JS
2025-09-26 15:30:09 +02:00