Commit Graph

5630 Commits

Author SHA1 Message Date
Mike Dalessio eb1d1c0302 Merge pull request #1290 from basecamp/flavorjones/perf-tuning-5
Increase the number of job workers to match CPUs
2025-10-11 11:32:50 -04:00
Mike Dalessio b9a616b083 Increase the number of job workers to match CPUs
JOB_CONCURRENCY would still override this number.
2025-10-11 11:29:21 -04:00
Mike Dalessio b056bd61dc Merge pull request #1289 from basecamp/flavorjones/perf-tuning-4
Additional Autotuner suggestions
2025-10-11 11:20:48 -04:00
Mike Dalessio 956962de7f Additional Autotuner suggestions
The following suggestions reduce the number of minor garbage collection cycles, specifically a cycle called "malloc". Your app runs malloc cycles in approximately 18.52% of all minor garbage collection cycles.

Reducing minor garbage collection cycles can help reduce response times. The following tuning values aim to reduce malloc garbage collection cycles by setting it to a higher value. This may cause a slight increase in memory usage. You should monitor memory usage carefully to ensure your app is not running out of memory.

Suggested tuning values:
  RUBY_GC_MALLOC_LIMIT=33554432
  RUBY_GC_MALLOC_LIMIT_MAX=67108864
2025-10-11 11:15:54 -04:00
Jeremy Daer 440e96cfe1 bin/setup: drop spinners since they interfere with bash trap and error output 2025-10-10 22:44:44 -07:00
Andy Smith 95529899fc Merge pull request #1288 from basecamp/hide-columns-when-creating
Hide column list when creating a new card
2025-10-10 16:57:25 -05:00
Andy Smith 424a7795a9 Hide column list when creating a new card 2025-10-10 16:53:34 -05:00
Andy Smith f09dcfc4ed Merge pull request #1287 from basecamp/tray-trigger-height
Tray toggle height should match card size
2025-10-10 16:41:35 -05:00
Andy Smith cafb17d21f Tray toggle height should match card size 2025-10-10 16:38:38 -05:00
Mike Dalessio 3c4266f689 Merge pull request #1286 from basecamp/flavorjones/perf-tuning-3
GC: Defer major GC cycles until after request handling completes
2025-10-10 16:56:10 -04:00
Mike Dalessio 550a4b7c33 Don't set puma performance settings in dev 2025-10-10 16:53:52 -04:00
Mike Dalessio 257aeb8511 GC: Defer major GC cycles until after request handling completes 2025-10-10 16:49:01 -04:00
Andy Smith 47b8b83561 Merge pull request #1285 from basecamp/done-column-verbiage
Done column verbiage
2025-10-10 15:32:13 -05:00
Mike Dalessio ab524f0a9d Merge pull request #1284 from basecamp/flavorjones/perf-tuning-2
Set Autotuner GC recommendations
2025-10-10 16:27:30 -04:00
Mike Dalessio 0b0f16cc5d Set Autotuner GC recommendations 2025-10-10 16:19:11 -04: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
Mike Dalessio e79a546d87 Merge pull request #1283 from basecamp/flavorjones/perf-tuning-1
Performance tuning round 1
2025-10-10 15:52:57 -04:00
Mike Dalessio fb45b9d366 Install Autotuner for GC recommendations 2025-10-10 15:49:48 -04:00
Mike Dalessio 016f00dfb5 Call Process.warmup 2025-10-10 15:17:13 -04:00
Andy Smith 19863dd519 Merge pull request #1282 from basecamp/fizzy-menu-scrollbar
Use stable scrollbar gutters for the Fizzy menu
2025-10-10 14:13:39 -05:00
Mike Dalessio ba090196d8 Baseline puma worker/thread config
Because we expect fewer I/O waits than Rails apps that connect to the
database over the network, let's start with a baseline config of 1
worker per CPU, 1 thread per worker and tune it from there.

https://edgeguides.rubyonrails.org/tuning_performance_for_deployment.html#puma
2025-10-10 15:00:03 -04:00
Andy Smith 8085509cfd Use stable scrollbar gutters for the Fizzy menu 2025-10-10 13:22:06 -05:00
Jorge Manrubia 423a9c3e08 Update lexxy to latest now for good! 2025-10-10 19:26:48 +02:00
Jorge Manrubia 52c6c42bfb Update lexxy to latest 2025-10-10 19:15:12 +02:00
Mike Dalessio f95470e96b Merge pull request #1280 from basecamp/flavorjones/remove-identity-fragment-cache
Remove the caching around Identity-related fragments
2025-10-10 11:55:53 -04:00
Jorge Manrubia 5b90f00bae Update lexxy to latest 2025-10-10 17:55:39 +02: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 d973509895 Merge pull request #1279 from basecamp/flavorjones/add-beamer-duh
db: Add beamer to the untenanted database
2025-10-10 11:44:13 -04:00
Mike Dalessio c368485e84 db: Add beamer to the untenanted database 2025-10-10 11:43:07 -04:00
Mike Dalessio 9c438816c3 Merge pull request #1278 from basecamp/flavorjones/fix-existing-session-identities
Fix identities for existing sessions
2025-10-10 11:14:48 -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 25d3e471df Merge pull request #1277 from basecamp/flavorjones/identity-and-membership
Introduce an "Identity" model to ease login
2025-10-10 10:35:05 -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
Jorge Manrubia f38410890a Merge pull request #1276 from basecamp/udpate-fizzy
Update lexxy to latest
2025-10-10 15:45:57 +02:00
Jorge Manrubia a5b8012eb6 Update lexxy to latest 2025-10-10 15:42:21 +02:00
Andy Smith e068faf3ec Merge pull request #1275 from basecamp/public-description-lists
Public description lists
2025-10-09 16:12:58 -05: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
Jeremy Daer 0cdf68125d Ruby 3.4.7 (#1274) 2025-10-09 13:24:01 -07:00
Jeremy Daer 0d4a045e1c bin/setup: enpurple step headings 2025-10-08 22:05:27 -07:00
Jeremy Daer 5c48e47c02 bin/setup: ensure PATH is prepared after a new Ruby is installed 2025-10-08 22:02:57 -07:00
Jeremy Daer 2faaba3ef0 Drop defunct bin/bundle that interferes with Bundler's own version management
Without it, Bundler auto-installs the correct version to run, including
newer Bundler versions.
2025-10-08 22:01:57 -07:00
Jeremy Daer 0e82255601 bin/setup: use Bash so we can bootstrap Ruby (#1273)
And chew gum
2025-10-08 21:45:18 -07: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
Jeremy Daer 3dd3dcc2e7 bundle lock --normalize-platforms 2025-10-08 16:02:09 -07:00
Jason Zimdars 37ba5e8b67 Merge branch 'public-columns-fix' 2025-10-08 18:01:50 -05:00
Jason Zimdars 8c3f0c66b7 Show column title on public collections 2025-10-08 17:55:35 -05:00
Jeremy Daer 2411ab74a0 Docker: explicit libssl dep 2025-10-08 15:50:55 -07:00