Commit Graph

129 Commits

Author SHA1 Message Date
Rosa Gutierrez d1500ad4ec Rename apns-dev to push-dev and unify 1Password credentials
- Rename script from apns-dev to push-dev (handles both APNs and FCM)
- Fetch credentials from Deploy/Fizzy Production (same as Kamal)
- Use _B64 env vars to avoid escaping issues with multiline keys
- Update bin/dev flag from --apns to --push

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-25 19:31:13 +01:00
Fernando Olivares 55336873b2 Fix database issues and add APNS configuration
- Fix owner_id type to UUID in devices migration
- Fix NOT NULL crash in device registration
- Add APNS config and 1Password integration
- Add --apns flag to bin/dev for local development
- Clean up devices controller
2026-02-25 19:31:13 +01:00
dependabot[bot] 0ead67f85b Bump the development-dependencies group across 1 directory with 3 updates (#2546)
* Bump the development-dependencies group across 1 directory with 3 updates

Bumps the development-dependencies group with 3 updates in the / directory: [brakeman](https://github.com/presidentbeef/brakeman), [faker](https://github.com/faker-ruby/faker) and [selenium-webdriver](https://github.com/SeleniumHQ/selenium).


Updates `brakeman` from 7.1.2 to 8.0.1
- [Release notes](https://github.com/presidentbeef/brakeman/releases)
- [Changelog](https://github.com/presidentbeef/brakeman/blob/main/CHANGES.md)
- [Commits](https://github.com/presidentbeef/brakeman/compare/v7.1.2...v8.0.1)

Updates `faker` from 3.5.3 to 3.6.0
- [Release notes](https://github.com/faker-ruby/faker/releases)
- [Changelog](https://github.com/faker-ruby/faker/blob/main/CHANGELOG.md)
- [Commits](https://github.com/faker-ruby/faker/compare/v3.5.3...v3.6.0)

Updates `selenium-webdriver` from 4.39.0 to 4.40.0
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Changelog](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.39.0...selenium-4.40.0)

---
updated-dependencies:
- dependency-name: brakeman
  dependency-version: 8.0.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: development-dependencies
- dependency-name: faker
  dependency-version: 3.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
- dependency-name: selenium-webdriver
  dependency-version: 4.40.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: development-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Auto-sync Gemfile.saas.lock on Dependabot PRs

Dependabot can't update custom-named Gemfiles, so Gemfile.saas.lock
drifts whenever it bumps shared gems in Gemfile.lock.

Add `bin/bundle-drift forward` to push oss lockfile changes into the
saas lockfile (the reverse of `correct`), and a GitHub Actions workflow
that runs it automatically on Dependabot bundler branches.

* Update brakeman ignore fingerprint for 8.0.1

Brakeman 8.0.1 changed how it computes warning fingerprints, so the
existing ignore entry for the safe_constantize warning in Notifier
became obsolete. Update to the new fingerprint.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Daer <jeremy@37signals.com>
2026-02-16 15:29:51 -08:00
David Heinemeier Hansson f0583888eb More missing dependencies for libvips 2026-02-13 17:47:30 +01:00
David Heinemeier Hansson d7a10bea1c Include missing vips dependencies 2026-02-13 17:40:08 +01:00
Jay Ohms ea43d81850 Support mobile app local development access from devices over nip.io 2026-01-05 09:31:27 -05:00
Luis Fernando Jiménez cca845a3e0 fix: use the right gh-cli arch package (#2232) 2025-12-26 21:11:02 -08:00
Mike Dalessio 605f4ed2a4 Move deploy broadcast to the saas gem 2025-12-17 12:46:00 -05:00
Jeremy Daer a5a0cda295 Fix tailscale serve: use localhost:PORT, helpful error on Linux
Tailscale serve only supports localhost or 127.0.0.1 as proxy targets.
On Linux, prompts user to run `sudo tailscale set --operator=$USER` if access denied.
2025-12-16 14:47:09 -08:00
David Heinemeier Hansson a755ecdec9 Must be run as sudo 2025-12-16 14:36:51 -08:00
Jeremy Daer c691d39ecf Integrate fizzy-saas as vendored gem at saas/
- Update Gemfile.saas to use path: "saas" instead of GitHub source
- Update config/database.yml to reference local saas/ directory
- Update bin/setup to source saas/bin/setup directly
- Remove redundant dotfiles (ruby-version, gitignore, rubocop, github workflows)
- Add saas/db exclusions to root rubocop config
2025-12-16 12:25:22 -08:00
Jeremy Daer bf6ddcb933 Add --tailscale flag to bin/dev for remote access (#2168)
Enables sharing dev sites over Tailscale serve. Uses port convention
4xxxx (prepending 4 to the dev port, echoing TLS 443) so multiple apps
can run simultaneously on different ports.

Usage: bin/dev --tailscale
2025-12-16 09:54:53 -08:00
Jeremy Daer 586015c3f9 Bundle drift detection and correction (#2101)
Gemfile.saas evals Gemfile, so shared gems should have identical versions
in both lockfiles. This adds bin/bundle-drift to detect and fix drift:

* `bin/bundle-drift check` compares shared gem versions
* `bin/bundle-drift correct` seeds Gemfile.lock from Gemfile.saas.lock
  and re-locks, letting Bundler prune SaaS-only gems while preserving
  shared versions

Adds drift check to bin/ci and GitHub CI. Corrects existing drift.
2025-12-11 21:32:34 -08:00
Jeremy Daer 2e17b78e08 bin/bundle-both (#2100)
Convenience for bundling both OSS and SaaS in lock-step:
```bash
> bin/bundle-both install

▸ OSS: Gemfile
bundle install
Bundle complete! 45 Gemfile dependencies, 161 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.

▸ SaaS: Gemfile.saas
bundle install
Bundle complete! 63 Gemfile dependencies, 187 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
```
2025-12-11 20:26:06 -08:00
Kevin McConnell 6f002b66d8 In non-SaaS, run jobs in container by default 2025-12-10 12:32:35 +00:00
Stanko Krtalić 150e7caf03 Merge pull request #1908 from basecamp/install-runtime-and-ci-dependencies-on-mac
Install any runtime or ci dependencies in bin/setup on MacOS
2025-12-04 13:16:46 +01:00
Stanko K.R. ea826860e0 Install any runtime or ci dependencies in bin/setup 2025-12-04 09:16:30 +01:00
Mike Dalessio 6345aa4787 Update seeds to use @example.com
See also https://www.rfc-editor.org/rfc/rfc2606.html
2025-12-03 15:40:58 -05:00
David Heinemeier Hansson 737d92781b We now use GH actions instead of local CI since this project is public 2025-12-03 14:57:59 +01:00
Stanko K.R. 4885e220d7 Install missing tools needed by bin/setup 2025-12-03 11:40:39 +01:00
Joseph Lozano 9f527fa872 Fix bin/setup to explicitly use bash syntax for mise hook-env (#1813) 2025-12-02 13:43:37 -08:00
Jorge Manrubia cc6dcb6c5b Extract mysql setup to function 2025-12-01 12:51:06 +01:00
Jorge Manrubia 12de564176 Remove MySQL from default local development setup
https://3.basecamp.com/2914079/buckets/37331921/chats/9301300227@9334968661
2025-12-01 12:46:37 +01:00
Mike Dalessio bd19b91e05 Make sure the sqlite db is prepared in SAAS mode
Previously, the mysql database was prepared twice and sqlite not at all.
2025-11-29 14:09:55 -05:00
Mike Dalessio 027cfc02b1 Restore the ability to pass arguments to bin/rails test
The app is not loaded by rails/commands if there are additional arguments to "rails test"
2025-11-28 14:47:00 -05:00
Jorge Manrubia 81656ac260 Run SQLite in saas mode too 2025-11-28 15:53:58 +01:00
Jorge Manrubia f03fbba5ac Restore local CI, sensible setup for open source users 2025-11-28 15:53:58 +01:00
Jorge Manrubia cebd5d35f6 Revert "Remove local ci for now"
This reverts commit 7d6ed4a459f78d14767f1523b32553df84e627e5.
2025-11-28 15:53:58 +01:00
Jorge Manrubia 76d3ec0fc4 Remove local ci for now 2025-11-28 15:53:58 +01:00
Jorge Manrubia afbc0ca8e5 Include engine tests in saas mode
Notice that test is not a regular rake task you can enhance, but a hard-coded rails command.
2025-11-28 15:53:58 +01:00
Jorge Manrubia a5b02755b2 Add rake tasks for enabling/disabling saas mode 2025-11-28 15:53:58 +01:00
Jorge Manrubia 08cc02804d Invoke setup script in gem 2025-11-28 15:53:58 +01:00
Jorge Manrubia 3caf8d05a2 Remove line, this gets bin/setup confused, better to keep the rails output clean 2025-11-28 15:53:58 +01:00
Jorge Manrubia 97c280ddb1 Prepare bin/setup to work with SAAS env variable / txt file 2025-11-28 15:53:58 +01:00
Jorge Manrubia fb9aa5dfac Extract common method to configure bundle 2025-11-28 15:53:48 +01:00
Jorge Manrubia 5d32e40756 Use kamal from the 2025-11-28 15:53:48 +01:00
Jorge Manrubia 2c7079393a Move kamal deploy config to the gem 2025-11-28 15:53:48 +01:00
Jorge Manrubia 102827ff8d Use bundler groups instead of conditional
So that the gemfile.lock does not change across invocations
2025-11-28 15:53:48 +01:00
Jorge Manrubia e1e9a01720 Make open source the default, and check for sass instead 2025-11-28 15:53:48 +01:00
Mike Dalessio f0b2603ba4 Rename bin/gitleaks to gitleaks-audit
to prevent script recursion if bin is in user's $PATH
2025-11-26 21:36:01 -05:00
Mike Dalessio 7f46063c25 Introduce gitleaks to the codebase
- `bin/setup` installs gitleaks
- add `gitleaks dir` command to CI
- configure gitleaks to ignore tmp, log, and encrypted files
- tag existing false positives with `gitleaks:allow`
- add historical false positives to the ignore list
2025-11-26 15:46:47 -05:00
Kevin McConnell 11a38a4526 Initial (wip) staging deployment
This adds an initial configuration for staging. Note that we are doing
this ahead of having the full infrastructure in all 3 DCs. So this
this will result in some cross-DC writes for now (e.g. we have a single cache in
IAD). We'll correct this as the infrastructure becomes available.

We'll also run jobs on every app server, until we split them out to
separate instances.
2025-11-17 09:12:41 -05:00
Mike Dalessio 93b2cef419 Delete unused script migrate-primary-db 2025-11-17 09:11:57 -05:00
Mike Dalessio 29cf6485e4 Drop the migrations audit from CI 2025-11-17 09:11:57 -05:00
Mike Dalessio 4ad1718d86 Stub searchable functionality and start to restore login/auth 2025-11-17 09:11:42 -05:00
Mike Dalessio 362427b383 More changes to get setup and tests to run 2025-11-17 09:11:42 -05:00
Mike Dalessio d41d50d52b Account.sole → Current.account
and some other de-tenant changes, including removing the controller
tenanting concerns
2025-11-17 09:11:40 -05:00
Mike Dalessio 4d3c265042 Rip out activerecord-tenanting
Co-authored-by: Stanko K.R. <stanko@stanko.io>
2025-11-17 09:11:35 -05:00
Kevin McConnell 9fa68c0ea9 Add Trilogy adapter 2025-11-17 09:11:28 -05:00
Kevin McConnell ea64ba6f9e Use regular db:prepare now 2025-11-17 09:11:28 -05:00