Commit Graph

4232 Commits

Author SHA1 Message Date
Jason Zimdars 626aa0ea8a Don't animate expanding columns when restoring 2025-10-15 12:51:06 -05:00
Jorge Manrubia 0666e504d6 Assign postpone_by to system when auto-cleaning 2025-10-15 15:08:41 +02:00
Jorge Manrubia 4cc8ab829e Don't choke if no user 2025-10-15 15:06:16 +02:00
Jorge Manrubia 634270a1e8 Merge main into now-now-stamp and resolve schema conflicts 2025-10-15 14:05:27 +02:00
Jorge Manrubia acdc7706ce Add not now and closed as status filters
https://fizzy.37signals.com/5986089/cards/2342
2025-10-15 13:59:50 +02:00
Jorge Manrubia 9263cff3d5 Store and show the user that postpones cards 2025-10-15 13:44:49 +02: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
Andy Smith acce22bbd8 Use "me" on the profile page buttons 2025-10-14 16:51:05 -05:00
Andy Smith 31d5ef7a4b Word break for webhook URL 2025-10-14 16:22:14 -05:00
Andy Smith 9f3b0755f1 Add stamp to Not Now (doesn't include the name, though) 2025-10-14 16:09:41 -05:00
Andy Smith 298a6e55fd Merge pull request #1307 from basecamp/tooltip-safari-fix
Fix Safari overflow rendering bug
2025-10-14 15:23:28 -05:00
Andy Smith e995e7a8e8 Merge branch 'main' into tooltip-safari-fix
* main: (41 commits)
  Mount our backup vol.
  "Postpones" -> "Closes in"
  Prevent view transition animations on page refreshes
  dep: update AR::Tenanted to allow config adapter registration
  More fine-grained approach to listen for broadcasted refresh signals
  Reuse existing cache invalidation logic that replaced this helper
  Show completed cards when filtering cards by creator
  Refactor to remove workflows styles
  Display column when viewing cards in a grid (filtering)
  Dial back title size on perma
  Add bubble when The Stream has bubbled cards
  This got too wide in the collapsed state
  Allow selecting default color
  Style
  Focus filter input with a hotkey, adjust sizing
  `esc` clears filters
  beamer-testbed configures fizzy-01 to be the writer
  beamer-testbed can connect to queenbee on the host
  beamer-testbed runs on host port 3006
  Activity bumps cards to the top of triaged columns, too
  ...
2025-10-14 15:20:04 -05:00
Mike Dalessio 3e54b7e655 backups: sweep them into "/backups" if it exists
and delete any backups older than our data retention policy

ref: https://3.basecamp.com/2914079/buckets/37331921/todos/9175385847
2025-10-14 16:07:49 -04:00
Andy Smith fb4abe86f7 Fix Safari overflow rendering bug 2025-10-14 14:00:08 -05:00
Jason Zimdars a0520d34fc Merge pull request #1306 from basecamp/fix-postpones-copy
"Postpones" -> "Closes in"
2025-10-14 12:08:32 -05:00
Jason Zimdars 040c8a92c2 "Postpones" -> "Closes in" 2025-10-14 12:05:21 -05: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 99d7f62dbc Merge pull request #1299 from basecamp/order-stream-by-activity
Activity bumps cards to the top
2025-10-14 08:14:42 -05:00
Jorge Manrubia 956faaa67d More fine-grained approach to listen for broadcasted refresh signals
Only listen for collections actually involved in the view
2025-10-14 11:10:49 +02:00
Jorge Manrubia 6d434ec467 Reuse existing cache invalidation logic that replaced this helper 2025-10-14 11:02:15 +02:00
Jorge Manrubia d2838fc3d8 Show completed cards when filtering cards by creator 2025-10-14 10:35:18 +02:00
Jason Zimdars 940db09063 Refactor to remove workflows styles 2025-10-13 18:06:14 -05:00
Jason Zimdars 9fb583e21c Display column when viewing cards in a grid (filtering) 2025-10-13 18:06:14 -05:00
Jason Zimdars 109822d57a Dial back title size on perma 2025-10-13 18:06:14 -05:00
Jason Zimdars 1bb3b50fe6 Add bubble when The Stream has bubbled cards 2025-10-13 18:06:14 -05:00
Jason Zimdars 5256c2fa86 This got too wide in the collapsed state 2025-10-13 18:06:14 -05:00
Jason Zimdars 8d82a1557b Allow selecting default color
- Adjust swatch layout to be more resilliant and space efficient
- Select text on focus
- Update placeholder
2025-10-13 18:06:14 -05:00
Jason Zimdars 03dcfe8964 Style 2025-10-13 18:04:12 -05:00
Jason Zimdars 679b4d2c94 Focus filter input with a hotkey, adjust sizing 2025-10-13 18:04:01 -05:00
Jason Zimdars b49275508d esc clears filters 2025-10-13 18:03:42 -05: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 63458ceb87 Fix SQLiteBackupsJob to work with AR::Tenanted v0.5.0
ref: https://github.com/basecamp/activerecord-tenanted/pull/215
2025-10-13 08:47:16 -04:00
Andy Smith 424a7795a9 Hide column list when creating a new card 2025-10-10 16:53:34 -05:00
Andy Smith cafb17d21f Tray toggle height should match card size 2025-10-10 16:38:38 -05:00
Andy Smith fe842723b6 Nevermind about the default reason :) 2025-10-10 15:07:17 -05:00
Andy Smith 5ff50fd352 Change default reason from Completed to Done 2025-10-10 15:04:47 -05:00
Andy Smith 81ce61aa9e Match the column name in workflows 2025-10-10 14:56:25 -05:00
Andy Smith 8085509cfd Use stable scrollbar gutters for the Fizzy menu 2025-10-10 13:22:06 -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 b7abf33c29 Bump identity cache fragments 2025-10-10 11:08:39 -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
Andy Smith 9ead1d82ac Merge branch 'main' into public-description-lists
* main: (21 commits)
  Ruby 3.4.7 (#1274)
  bin/setup: enpurple step headings
  bin/setup: ensure PATH is prepared after a new Ruby is installed
  Drop defunct bin/bundle that interferes with Bundler's own version management
  bin/setup: use Bash so we can bootstrap Ruby (#1273)
  Don't try to wrap with a download link, every file already has one in the caption
  bundle lock --normalize-platforms
  Show column title on public collections
  Docker: explicit libssl dep
  Ruby 3.4.6 (#1272)
  Check the selected color
  Style
  Add column color to cache keys
  Make the edit form the same dimensions as the add form
  Don't let the column button effect apply to buttons in the picker
  Set and change column colors
  Prom metrics in dev (#1269)
  Cleanup prototyping
  Properly scroll and center content
  Sorta working x-scroll
  ...
2025-10-09 16:08:16 -05:00
Jason Zimdars 094c2c056b Don't try to wrap with a download link, every file already has one in the caption 2025-10-08 21:54:25 -05:00
Jason Zimdars 8c3f0c66b7 Show column title on public collections 2025-10-08 17:55:35 -05:00
Jason Zimdars 4bc304f762 Check the selected color 2025-10-08 17:37:10 -05:00
Jason Zimdars 3390cd95af Style 2025-10-08 17:11:42 -05:00
Jason Zimdars fcba8b6acb Add column color to cache keys
So cards change colors when you change the column color
2025-10-08 17:08:32 -05:00