Commit Graph

149 Commits

Author SHA1 Message Date
Andy Smith 58a330aa17 Merge branch 'main' into mobile-columns-pt-iii
* main: (55 commits)
  Add padding to upgrade message on larger screens
  Add test coverage for autolinking multiple URLs
  Add "noopener" to autolinks' rel attribute
  Avoid string manipulation when autolinking.
  Only bump z-index when nav is open
  Move nav and related elements above footer
  Delete Dockerfile.dev
  fix: use the right gh-cli arch package (#2232)
  Bump actions/attest-build-provenance from 3.0.0 to 3.1.0 (#2257)
  Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (#2256)
  Consider user avatars always public
  Implement authorization for Active Storage endpoints
  Update documentation
  Expose the card ID and URL on comments
  Don't run application recurring jobs in betas
  This link is reduntant if you're over the limits
  Add obvious upgrade button when you're out of storage
  Internaly only view
  Target comment elements more precisely
  Better name for helper method
  ...
2025-12-29 14:07:00 -06:00
Jason Zimdars c33b12aa14 We get this for free 2025-12-20 18:12:34 -06:00
Jason Zimdars d0587d5db8 turbo:load doesn't seem to be working, try a specific controller method to open it 2025-12-20 18:05:41 -06:00
Jason Zimdars c32286da00 Remove second data-action attribute 2025-12-20 17:46:31 -06:00
Jason Zimdars 3b1c67f57d Undo debug 2025-12-20 17:34:19 -06:00
Jason Fried 69f6149ddc Updated the welcome message. 2025-12-19 15:29:20 -08:00
Jason Zimdars 10f27f19a6 Add a close button 2025-12-19 15:46:18 -06:00
Jason Zimdars 0adcfabe4c Stub welcome letter for newly created accounts 2025-12-19 15:36:52 -06:00
Andy Smith c3a3aa108a Merge branch 'main' into mobile-columns-pt-iii
* main: (318 commits)
  Document the new sign in method
  Replace handle_ naming
  Use same constant for fake magic links
  Replace FakeMagicLink with a temporary object
  Tidy up session_token
  Clean up interfaces
  Split tests by controller or responsibility
  Simplify auth logic
  Fix due to unit test when creating with invalid emails
  Restore sessions_controller test on creating invalid email address
  Move magic link api tests to their own files
  Rename test to clarify what they're about
  Cleanup session creation
  Update to always return a pending auth token for JSON responses.
  Update API test for cross code
  Change test expectation on single tenant mode account creation
  Add unit tests for the new endpoints
  Pass a server token when creating a magic link via API
  Simplify code a bit
  Simplify session create logic for both html and json
  ...
2025-12-19 13:13:15 -06:00
Adrien Maston 972f86b603 Merge pull request #2177 from basecamp/mobile-app/scoped-styles
Mobile app / Scoped styles
2025-12-18 17:57:46 +01:00
Andy Smith 1a01aa0a69 Fizzy menu a11y 2025-12-17 11:12:38 -06:00
Adrien Maston 5b7aa67bb3 Add platform attribute 2025-12-17 08:56:08 +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
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
Andy Smith f2591e7da6 Basic scrolling setup 2025-12-15 14:56:27 -06:00
Adrien Maston 1f346085b9 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (119 commits)
  Bust comment view cache
  Update lexxy to bring fixes from https://github.com/basecamp/lexxy/releases/tag/v0.1.24.beta
  Fix unexpected remove empty line from README
  Lightbox uses Stimulus target callbacks instead of data-action
  Add test coverage for the image lightbox
  Add tests for tenancy middleware and timezone cookie
  Refactor: Simplify TimeWindowParser using Rails convenience methods
  SMTP: support SMTPS on port 465 (#2132)
  Bump fizzy-saas to retain fewer docker images (#2134)
  Add test coverage for with_golden_first scope (#2130)
  Refactor: improve query scope composition with merge syntax (#2131)
  Validate avatar sizes
  Introduce Vips configuration
  Tailscale serve support (#2126)
  Update tests with final method naming: record! -> record
  CSP config to allow Minio in development
  Update fizzy-saas to get employee restriction in staging
  Drop staff restriction in beta and staging
  Unused
  Use new FIZZY_GH_TOKEN with limited access
  ...
2025-12-15 10:43:32 +01:00
Kevin McConnell 87ad234f32 Apply theme preference before body
To avoid any visual flashes of the old theme before the Stimulus
controllers load, we can apply the saved theme from `<head>` whenever
there is a full page load.

This applies to both the regular and public views, as we're doing it in
the shared head partial.
2025-12-12 14:17:58 +00:00
Adrien Maston 6c53fdb525 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (70 commits)
  bin/ci: run OSS suite in SAAS mode for full coverage (#2029)
  Fix flaky tests caused by leaky show_exceptions twiddling (#2028)
  Fix ActiveStorage FileNotFoundError with immediate variant processing (#2022)
  Immediate avatar and embed variants (#2002)
  Should be in global gitignore
  Account for browser button styled and adjust mobile padding for perma BG
  Wrap the overflow menu
  doc: update style doc reference for LLM agents
  Fix Identity destruction callback ordering
  Ensure user toggles on board edit page are cached properly
  Adopt a cooldown period for dependency updates
  Add lazy error context for Rails error reporter (#2014)
  Disable board edit buttons for select all/none when not privileged
  Autotuner: use structured logging instead of Sentry (#2011)
  Add datetime to the search results
  Fix involvement button label
  Bump mittens to 0.3.1 (#2006)
  No need to pass Currentl.user since it is the default value for the param
  Validate email before creating identity during join code redemption
  Ignore RubyMine project files in .gitignore
  ...
2025-12-09 09:11:51 +01:00
Jason Zimdars 8db6f508bf Merge branch 'main' into theme-switcher-revised 2025-12-08 17:58:46 -06:00
Jeremy Daer db55923fdb Fix lightbox transitionend listener leak
Switch to a Stimulus action for automatic handling
2025-12-05 16:19:01 -08:00
Adrien Maston 7a5a3c91f8 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (82 commits)
  We can remove ad-hoc handling now that we rely on page refreshes in the card perma
  Only broadcast when the preview changes, use the _later variant for the broadcast, add tests
  Update pinned cards when the title changes
  Rename to be more consistent
  Beautify board watchers list (#1946)
  Add missing data-attr on public board
  Fix hotkey text size on tiny viewports
  Use buil-in support for :self in Stimulus
  Save a bunch of invocations on morph events from children elements
  Fix: memoization was showing stale values when morphing
  GitHub actions: limit GITHUB_TOKEN permissions (#1933)
  Validate Identity email address
  Drop defunct user creation script
  Golden cards should be placed at the top
  Animate the column height with a stimulus controller so that it does not depend to the server to update when you D&D
  mise: respect .ruby-version
  Support custom validation messages
  Move css bit to the new blank slates CSS
  Prevent board names with only spaces and show validation message
  Keep the column color when D&D cards
  ...
2025-12-05 12:20:05 +01:00
Bruno Canepa 2864e32efa Move theme button into the user profile page 2025-12-04 17:01:14 -03:00
Bruno Canepa 2120d00186 Add Theme Switcher 2025-12-04 16:36:16 -03:00
Kevin McConnell 184a827965 Show alert message on login when rate limited
When the auth-related controllers hit rate limits they set an alert in
the flash. But we weren't displaying the flash on the public layout, so
those were never seen.

Changed to surface the alert. But also change the "Try another code"
message to be shake-only instead, to match the current behaviour.
2025-12-03 11:29:42 +00:00
Adrien Maston a770f614c0 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (85 commits)
  Fix crash when inserting an emoji into a max length reaction
  change the object type in the example code (#1824)
  We can't hide public boards like this
  Consistent breakpoints for min- and max-width
  Repair tooltip z-index selector
  Fix bin/setup to explicitly use bash syntax for mise hook-env (#1813)
  Update AGENTS.md (#1818)
  Bundler: normalize platforms (#1822)
  Robots, begone (#1812)
  Account for input padding on autoresize pseudo-element
  Updated database.sqlite.yml
  (account): encode external_account_id in slug
  Allow typing magic links on mobile
  Add contributing guide
  Disconnect action cable when user is deactivated
  Disable ARM image builds
  Disable image builds for PRs
  Add libssl-dev
  Add automated Docker image builds
  Make the jump nav hotkeys look like the others
  ...
2025-12-03 10:57:27 +01:00
Marco Roth 2f88908cdf Address HTML markup issues reported by Herb 2025-12-02 17:23:51 +01:00
Adrien Maston 0e290feaf2 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (30 commits)
  Update useragent to recognize twitterbot/facebot
  Add defensive styles for non-square avatar images
  Update test for copy changes
  Missed commit
  AI: standardize on https://agents.md
  Make it clear this is just notifications, not comprehensive activity
  AI: configure MCP servers for Chrome, Grafana, and Sentry (#1727)
  Allow requests from Google Image Proxy
  Update to basecamp's useragent fork
  Clean up a little bit the CSRF reporting code
  Claude: production observability guidance (#1725)
  Prevent autoscroll to the root columns container to prevent jump on page load
  Include full name string so you can type your name to filter
  Prioritize current user and assigned users in assignment dropdown
  Check and report on Sec-Fetch-Site header for forgery protection
  bundle update
  Bump bootsnap from 1.18.6 to 1.19.0
  Bump rails from `077c3ad` to `17f6e00`
  Fix cards getting stuck in edit mode
  Don't report ConcurrentMigrationError to Sentry
  ...
2025-11-26 10:27:33 +01:00
Jason Zimdars d825447e6b Add defensive styles for non-square avatar images 2025-11-25 16:51:07 -06:00
Adrien Maston df2e4c1518 Merge branch 'main' into mobile-app/scoped-stylesheets
* main: (35 commits)
  Replace the whole card on update
  Include bottom inset on the modal and footer, too
  Attempt to fix expanded search input
  Lose the second close button
  This seems to have caused the unwanted effect of not focusing the field in Mobile Safari
  Always display the cancel button, `esc` isn't obvious
  Nothing should cover the bar, trays or search results
  Dark theme color isn't black
  Add env constaints for mobile layout
  Smaller on mobile
  Reasonalbe max heights
  Remove top orientation (it doesn't work well), make right and left classes exclusive
  This is too fancy, remove it
  Set reasonable maxes
  Restore bubble to Maybe
  Restore structured logging of `queenbee_id`
  Add a kamal pre-build hook with some safety checks
  Configure beta to use production blob store
  Configure beta load balancer
  Update beta deployment and secrets config
  ...
2025-11-25 10:36:48 +01:00
Jason Zimdars 789c00b87f Dark theme color isn't black
I *think* we don't need the theme color in the manifest since it doesn't
have dark mode support anyway
2025-11-24 16:37:50 -06:00
Adrien Maston 041ac0c28e Add conditional stylesheets for mobile apps 2025-11-24 11:52:56 +01:00
Mike Dalessio 5a85466732 Remove the account slug from the PWA manifest
- linked in the `head` on all requests (previously just tenanted requests)
- `start_url` and `scope` are "/" (previously account slug)
2025-11-19 08:27:41 -05:00
Jason Zimdars 5964431fc4 Merge pull request #1592 from basecamp/add-nav-logotype
Add logotype to nav
2025-11-17 18:03:50 -06:00
Jason Zimdars a4ada7df20 Add logotype to public layout, too 2025-11-17 18:01:51 -06:00
Jason Zimdars fdf02c8fe2 Don't allow zooming inside PWAs 2025-11-17 13:47:57 -06: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
Jason Zimdars ed97d71cce Aggregate notifications by card 2025-11-12 14:29:25 -06:00
Sean Mitchell 9d2f7c0f41 Update icon (#1530)
* Update fav and app icons
* Update logo files
* Use logo webp
2025-11-10 12:33:29 -08:00
David Heinemeier Hansson 5d98ca3c4b Move loader up a level 2025-11-08 16:59:36 +01:00
Andy Smith f3e9a16b20 Merge pull request #1525 from basecamp/mail-avatars
Render SVG avatars with regular HTML in emails since mail services won't support SVG
2025-11-07 14:00:07 -06:00
Andy Smith 23ce52d79a Sticky Fizzy nav 2025-11-07 11:31:24 -06:00
Andy Smith 281d57db10 Account for MS mail 2025-11-07 11:04:49 -06:00
Andy Smith 5df2559951 Style avatar initials 2025-11-07 11:02:57 -06:00
Jason Zimdars 3a21e0ed82 Stronger logo presence (bigger) 2025-11-07 07:08:21 +01:00
Jason Zimdars 7a58c23e55 Copy edits for unified flow 2025-11-07 07:06:28 +01:00
Jason Zimdars 76bc1d3eda Need a place to display board title 2025-11-06 15:22:57 -06:00
Andy Smith 1c0794cd51 Signup page a11y tweaks 2025-11-06 11:57:52 -06:00
Jorge Manrubia 8e76633bc7 Make sure attribution in events is cache-friendly 2025-11-05 11:44:01 +01:00
Jason Zimdars 7d154b682e Rename 'BOXCAR' to 'Fizzy'
Missed files
2025-11-03 16:30:44 -06:00
Jason Zimdars 5652e5699f Update design, logo, and copy 2025-10-31 16:26:08 +01:00