Thiago Youssef
bd0a749f22
Bump rails requestjs version
2025-12-17 20:18:38 -03:00
Andy Smith
9d29b4d316
Merge pull request #2187 from basecamp/magic-link-all-caps
...
uppercase text on magic link input
2025-12-17 14:44:11 -06:00
Andy Smith
d36f7db7fc
uppercase text on magic link input
2025-12-17 14:19:51 -06:00
Andy Smith
629cdb6f92
Merge pull request #2162 from nqst/fix-steps-icon-appearance
...
Fix Steps icon appearance
2025-12-17 13:25:56 -06:00
Alexander Zaytsev
f7d1e13ce3
Simplify CSS /thx @andyra
2025-12-17 20:09:14 +01:00
Alexander Zaytsev
5cf62adc03
Merge branch 'main' into fix-steps-icon-appearance
2025-12-17 20:04:05 +01: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
Alexander Zaytsev
722847806c
Merge branch 'main' into fix-steps-icon-appearance
2025-12-16 15:47:35 +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