Commit Graph

8499 Commits

Author SHA1 Message Date
Samuel Péchèr 6b427ad9b9 Update timestamp 2025-12-18 17:34:47 +00:00
Samuel Péchèr 60dc6927fe Remove attachment detection 2025-12-18 17:34:25 +00:00
Samuel Péchèr d250c256c6 Add paragraph space to seed Card #8 2025-12-18 09:27:56 +00:00
Samuel Péchèr b2017a75cf Add script to separate non-blank sibling <p> 2025-12-18 09:27:56 +00:00
Zoltan Hosszu cc6249340d Adjusting text content spacing between paragraphs
This PR removes spacing between paragraphs. It keeps spacing for elements following paragraphs (blockquotes, lists, attachments, etc).
2025-12-17 18:45:23 +00:00
Mike Dalessio 75ef9bfd64 Add a gitleaks rule to find hex strings in URLs
but allow things that look like Github SHAs.
2025-12-17 13:40:07 -05:00
Mike Dalessio 605f4ed2a4 Move deploy broadcast to the saas gem 2025-12-17 12:46:00 -05:00
Andy Smith a196715968 Merge pull request #2184 from basecamp/andy-17-dec-25
Andy 17 dec 25
2025-12-17 11:40:53 -06:00
Andy Smith 6e568aa8b2 Fix new card buttons on mobile 2025-12-17 11:31:33 -06:00
Andy Smith caefa72748 Remove testing logic 2025-12-17 11:26:59 -06:00
Andy Smith b87ae1494a Better upgrde footer on mobile 2025-12-17 11:26:37 -06:00
Andy Smith 1a01aa0a69 Fizzy menu a11y 2025-12-17 11:12:38 -06:00
Andy Smith 2956ea3f90 Fix divider above subscription footer 2025-12-17 11:07:38 -06:00
Andy Smith e2f27fe384 Improve a11y for user list 2025-12-17 11:07:17 -06: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
Jason Zimdars 79070f5cef Merge pull request #2172 from basecamp/hide-when-singular-entry
Hide the 'Show history' button if there are no other entries to expand
2025-12-16 16:13:53 -06:00
Jason Zimdars 5949b421e9 Hide the 'Show history' button if there are no other entries to expand 2025-12-16 16:09:09 -06:00
Jeremy Daer a2c69b4d1b Merge pull request #2170 from basecamp/monosaas
Repatriate fizzy-saas
2025-12-16 12:45:54 -08:00
Jason Zimdars d74f1535d6 Merge pull request #2171 from basecamp/collapse-system-comments
Collapse and expand system comments
2025-12-16 14:33:40 -06: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
Jason Zimdars 8659e19671 Collapse and expand system comments 2025-12-16 14:21:48 -06:00
Jeremy Daer bf47dfde91 Merge fizzy-saas repository into saas/
Consolidates fizzy-saas back into the main repo as a vendored gem.
Full commit history preserved with files under saas/ prefix.

* saas-import/main: (131 commits)
  Format
  Remove nested if
  Move presentation method to a regular view helper
  Format
  Rename to stripe_session to avoid confusions
  Extract method
  Make active_subscription a private method
  More concise
  Prefer if/else over early return
  Rename param to remove redundant bit
  This is needed for vat id collection
  Enable tax id collection
  Grab and show the next amount to pay from Stripe
  Add system to comp accounts
  Add record to track overridden limits
  Enable automatic taxes and calculate based on mandatory billing address
  Remove redundant condition
  Don't prevent creating drafts, or you won't get to see the upgrade banner
  Give this some padding
  Show different things to non-admins
  ...
2025-12-16 12:02:48 -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 97ffe00672 My life for a trailing comma 2025-12-16 09:54:04 -08:00
Jeremy Daer a68bd2775d Fix Tailscale host match. Rails wraps the regexp in its own anchors and port-match. 2025-12-16 09:35:26 -08:00
Jorge Manrubia 212743fe3f Merge pull request #2165 from basecamp/revert-css
Revert "Mobile app / Scoped stylesheets" (#1698)
2025-12-16 17:35:19 +01:00
Jorge Manrubia 0278fe6ae4 Revert "Mobile app / Scoped stylesheets" (#1698)
This reverts commit 39c1906e67.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-16 17:20:18 +01:00
Mike Dalessio 2b388dd241 Merge pull request #2164 from basecamp/flavorjones/user-validate-name
Validate User name presence and handle blank names gracefully
2025-12-16 10:49:13 -05:00
Jorge Manrubia 761cc8b6d5 Merge pull request #2050 from basecamp/billing
Add billing system (monthly subscriptions)
2025-12-16 16:47:16 +01:00
Jorge Manrubia ee80b87c8c Add billing system with Stripe
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Jason Zimdars <jz@37signals.com>
2025-12-16 16:44:20 +01:00
Mike Dalessio b75d2ae6d8 Validate User name presence and handle blank names gracefully
Addresses an issue where User#familiar_name assumed `name` was always
present, potentially raising an exception during view rendering. Now
User validates name presence, and User#familiar_name handles blank
strings without error, in case any existing invalid records exist.
2025-12-16 10:44:10 -05:00
Jorge Manrubia 8382111ef2 Merge pull request #23 from basecamp/billing
Add monthly subscriptions
2025-12-16 16:27:41 +01:00
Kevin McConnell 76400765c1 Merge pull request #2159 from basecamp/upgrade-thruster
Update Thruster
2025-12-16 14:41:43 +00:00
Adrien Maston 39c1906e67 Merge pull request #1698 from basecamp/mobile-app/scoped-stylesheets
Mobile app / Scoped stylesheets
2025-12-16 15:34:37 +01:00
Adrien Maston 04332bc526 Merge branch 'main' into mobile-app/scoped-stylesheets
* main:
  Use decimals for ordered lists
  Update cached fragments
  Revert "Merge pull request #1865 from basecamp/public-avatar-caching"
  Show only public cards on public boards
  Swap order of avatar links
  Limit length of full name during signup
  Make layout bulletproof
  Serve own avatar from its own endpoint
2025-12-16 15:30:31 +01:00
Kevin McConnell 14f337739d Update Thruster 2025-12-16 13:28:49 +00:00
Jorge Manrubia 3c197debd2 Format 2025-12-16 12:00:46 +01:00
Jorge Manrubia 5b2fa6b74a Remove nested if 2025-12-16 12:00:23 +01:00
Jorge Manrubia 2671e52821 Move presentation method to a regular view helper 2025-12-16 12:00:23 +01:00
Jorge Manrubia bf045b9907 Format 2025-12-16 12:00:23 +01:00
Jorge Manrubia 8d11c62b7c Rename to stripe_session to avoid confusions 2025-12-16 12:00:23 +01:00
Jorge Manrubia 71369de38d Extract method 2025-12-16 12:00:23 +01:00
Jorge Manrubia b39a9ecab4 Make active_subscription a private method 2025-12-16 12:00:23 +01:00
Jorge Manrubia e47657759f More concise 2025-12-16 12:00:23 +01:00
Jorge Manrubia 20b5e57dd3 Prefer if/else over early return 2025-12-16 12:00:23 +01:00
Jorge Manrubia 973b4e4aed Rename param to remove redundant bit
Co-authored-by: Matt Almeida <matt7@hey.com>
2025-12-16 12:00:23 +01:00
Jorge Manrubia c0050415f5 This is needed for vat id collection 2025-12-16 12:00:23 +01:00
Jorge Manrubia f68aa0d947 Enable tax id collection 2025-12-16 12:00:23 +01:00
Jorge Manrubia 3395b8d6ed Grab and show the next amount to pay from Stripe 2025-12-16 12:00:23 +01:00