Commit Graph

3018 Commits

Author SHA1 Message Date
Jay Ohms e379721c2f Merge branch 'main' into mobile-app/prepare-webviews
* main: (107 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:52:04 -05:00
Adrien Maston 573ffe0ee4 Add titles to pins and search permas 2025-12-19 15:44:36 +01:00
Jorge Manrubia fcc426a97b Merge pull request #2192 from italomatos/optimize-card-count-queries
Optimize card count queries to avoid duplicates
2025-12-19 12:05:35 +01:00
Jorge Manrubia 33fc239571 Merge pull request #2140 from dilberryhoundog/fix-stale-account-cache
Fix: resolve stale account names in jump menu and page titles
2025-12-19 11:26:23 +01:00
Jason Zimdars 478fc26337 Only apply when Current.user is set so that broadcasts don't fail 2025-12-18 20:45:11 -06:00
Jason Zimdars fa2b2fb194 Hotkey m to toggle assignment to self 2025-12-18 16:47:36 -06:00
Jason Zimdars 2356f61f9b Merge pull request #2198 from basecamp/card-comments-count
Show comments on preview cards
2025-12-18 16:01:35 -06:00
Andy Smith d751ae5522 Move closure message to its own grid area 2025-12-18 11:17:10 -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
Jason Zimdars a56f200e1f Show comments on preview cards 2025-12-18 10:29:36 -06:00
Stanko Krtalić 42185a8d6d Merge pull request #2153 from basecamp/limit-the-number-of-asignees-on-a-card
Limit the number of asignees on a card
2025-12-18 12:08:45 +01:00
Italo Matos fd89a452c3 Optimize card count queries to avoid duplicates
Replace duplicate .count calls with cached variables using .size method.
This reduces database queries by approximately 50% on mobile board views.

Changes:
- Cache card counts in local variables (postponed, awaiting_triage, closed, active)
- Use .size instead of .count (more intelligent - leverages preload when available)
- Reuse cached values instead of making duplicate SQL queries

Impact:
- Mobile columns view: reduced from ~6 to ~3 COUNT queries
- Better performance with no visual changes to the UI
2025-12-18 07:09:57 -03:00
Adrien Maston 5d6f3f5156 Allow search perma's form to target the whole page
... to pick up the url change and <head> update
2025-12-18 10:13:55 +01:00
Jason Zimdars e0d50bb730 Merge pull request #2180 from nqst/cleaner-system-comment-selectors
Use simpler selectors to target system comments
2025-12-17 20:14:32 -06:00
Jason Zimdars ae5cb096f9 Let's just use the class we already have 2025-12-17 20:06:38 -06:00
Andy Smith d36f7db7fc uppercase text on magic link input 2025-12-17 14:19:51 -06:00
Andy Smith 6e568aa8b2 Fix new card buttons on mobile 2025-12-17 11:31:33 -06:00
Andy Smith 1a01aa0a69 Fizzy menu a11y 2025-12-17 11:12:38 -06:00
Andy Smith e2f27fe384 Improve a11y for user list 2025-12-17 11:07:17 -06:00
Adrien Maston 86ec2959fb Move pins perma panel out of turbo frame 2025-12-17 12:55:58 +01:00
Adrien Maston b040424e2f Make search perma mobile friendly 2025-12-17 12:50:36 +01:00
Adrien Maston 92e63d80cc Make my/pins perma mobile-friendly 2025-12-17 12:30:08 +01:00
Adrien Maston 12bc237665 Horizontal column picker
... in card perma
2025-12-17 11:34:31 +01:00
Adrien Maston 0f26baee09 Hide elements
Menu, back buttons, bottom bar
2025-12-17 10:45:24 +01:00
Adrien Maston 3c9c4cafea Use buttons above title layout 2025-12-17 10:45:17 +01:00
Alexander Zaytsev 035c5f97a1 Use simpler selectors to target system comments 2025-12-17 10:09:35 +01:00
Adrien Maston 5b7aa67bb3 Add platform attribute 2025-12-17 08:56:08 +01:00
Jason Zimdars 8659e19671 Collapse and expand system comments 2025-12-16 14:21:48 -06:00
Stanko K.R. 52bdc8d1a7 Fix typo 2025-12-16 18:55:45 +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
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
Jason Zimdars 140399aa6c Style max notice 2025-12-15 16:49:54 -06:00
Stanko K.R. 15cb1f7fe1 Add UI to prevent assigning more than 10 asignees 2025-12-15 16:40:52 +01:00
Kevin McConnell e2292a1739 Update cached fragments 2025-12-15 13:23:57 +00:00
Kevin McConnell 741eff7bdc Revert "Merge pull request #1865 from basecamp/public-avatar-caching"
This reverts commit c628f14c01, reversing
changes made to 4bafc73236.
2025-12-15 13:07:13 +00:00
Kevin McConnell c628f14c01 Merge pull request #1865 from basecamp/public-avatar-caching
Serve own avatar from its own endpoint
2025-12-15 12:20:28 +00:00
Kevin McConnell 87c6557747 Limit length of full name during signup
If we don't validate for length, then signups that overflow the database
columns will unnecessarily create and cancel a tenant. Adding a
validation means we can avoid this.
2025-12-15 09:56:35 +00: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
Dylan f01a648441 🐛 fix: resolve stale account names in jump menu and page titles
Add account data to fresh_when etag arrays so Rails serves fresh responses after account changes.

- Add @accounts to menus controller etag

- Add Current.account to boards controller etag

- Add ETag cache invalidation tests for both controllers
2025-12-15 15:59:25 +08:00
Mike Dalessio c6725fdca0 Bust comment view cache
because, unlike ordinary view file changes, the change to Action Text
attachment rendering in e9cb2956 doesn't bust the cache automatically.
2025-12-14 13:05:45 -05:00
Mike Dalessio 088b06bf95 Merge pull request #2137 from basecamp/flavorjones/data-action-fix
Image lightbox uses Stimulus target callbacks instead of `data-action`
2025-12-14 12:48:17 -05:00
Jorge Manrubia 57008e0026 Merge pull request #2111 from robzolkos/remove-unpaired-view-transition-name
Remove unpaired view-transition-name
2025-12-14 09:39:08 +01:00
Jorge Manrubia cac9088ad3 Merge pull request #2105 from seuros/main
feat: expose closed boolean in card JSON API
2025-12-14 09:36:32 +01:00
Jorge Manrubia d7e5d4218f Merge pull request #2032 from tomycostantino/update-columns-on-actions
Fix: board columns actions are stale when moving a column moves
2025-12-14 09:28:57 +01:00
Mike Dalessio e9cb2956ee Lightbox uses Stimulus target callbacks instead of data-action
Remove data-action from the sanitizer allowlist to disallow injection
of potentially malicious Stimulus actions in user-provided
content. The lightbox controller now uses imageTarget callbacks to
handle clicks on image links.

Also add the file name as a caption in the light box, and fix the
caption color for dark mode visibility.
2025-12-13 17:06:03 -05:00
Jason Zimdars 0bc3ccb528 Merge pull request #2109 from basecamp/theme-tweak
Apply theme preference before body renders
2025-12-12 11:48:47 -06:00
Rob Zolkos a12dfea3c8 Remove unpaired view-transition-name from public card show 2025-12-12 10:50:51 -05: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
Abdelkader Boudih b5caa8716d feat: expose closed boolean in card JSON API
Adds `closed` field to card JSON response, allowing API consumers
to detect closed status without parsing the status enum or making
additional API calls.
2025-12-12 10:12:21 +01:00