Commit Graph

5931 Commits

Author SHA1 Message Date
Alexander Zaytsev 2d5e441bf5 Consistent spacing 2025-12-24 15:51:46 +01:00
Alexander Zaytsev 3e562f0428 Adjust .notifications__status corner radius 2025-12-23 22:55:02 +01:00
Alexander Zaytsev e7d8f87d3c Add missing comma 2025-12-23 22:53:36 +01:00
Alexander Zaytsev 77279d470f Notifications settings -> Notification Settings 2025-12-23 22:53:16 +01:00
Jason Zimdars 0875d7369c Merge pull request #2241 from basecamp/improve-account-admin
Internaly only view
2025-12-23 12:21:19 -06:00
Jason Zimdars 472b1a1cad Internaly only view
Adds plan name and indicates when overrides exceed limits; cleans up UI
at bit
2025-12-23 12:02:18 -06:00
Andy Smith 35619857aa Target comment elements more precisely 2025-12-23 11:27:16 -06:00
Jason Zimdars 87977eb770 Merge pull request #2211 from basecamp/card-nav-hotkeys
Add hotkeys for triaging cards in columns
2025-12-23 09:45:24 -06:00
Rosa Gutierrez 3fcf5a9d08 Require authorization for direct uploads
Respond with 403 to JSON requests that are unauthorized, instead of
redirecting.
2025-12-23 11:08:51 +01:00
Jason Zimdars b044a4b355 Add Adwaita Sans to font stack
Even on Linux, Chromium "helps" by mapping `BlinkMacSystemFont` to the
system Helvetica equivalent, "Liberation Sans". But Liberations doesn't
have the 900 font weight that give Fizzy its characteristic chunky look.
Pushing the Gnome deafult, "Adwaita Sans" head of the system fonts for
Mac allows black weight. That's how it worked on Linux until we removed
`system-ui` from the font stack in #2000. This is largely for Omarchy
users, of which most of our developers are, so it seems fair.
2025-12-22 17:55:49 -06:00
Jason Zimdars 3a43e5e6c5 Don't render this at all in the preview template
Avoids situations where the hotkey could be triggered on the board view
2025-12-22 16:42:42 -06:00
Andy Smith ea61907397 Pass in data attribute to partial 2025-12-22 14:43:08 -06:00
Andy Smith 348808edc2 Replace span with li 2025-12-22 14:26:03 -06:00
Jason Zimdars 6de7b40024 Explicitly diable hotkeys in Not Now and Done 2025-12-22 14:14:50 -06:00
Jason Zimdars 72ffc2b974 Merge branch 'main' into smooth-theme-change 2025-12-22 11:34:48 -06:00
Jason Zimdars 806297eb12 Merge pull request #2230 from basecamp/refactor-system-comment-classes
Refactor system comment classes
2025-12-22 11:15:48 -06:00
Jason Zimdars 5716303c22 Rename
It feels odd to have a `.system` class in the `.comment` namespace.
Might as well make it really obvious if we're going to rename it
2025-12-22 11:12:46 -06:00
Jason Zimdars 563c530e3e Merge pull request #2213 from basecamp/welcome-letter
Stub welcome letter for newly created accounts
2025-12-22 10:17:41 -06:00
Stanko K.R. 0df667f4fb Fix HTML injection in webhooks through card titles 2025-12-22 12:20:32 +01:00
Jason Zimdars e724b3bf86 Move to variable 2025-12-20 18:19:13 -06:00
Jason Zimdars 71433718d5 Set view-transition-name so it gets calculated in the layer rendering
Prevents cards from briefly appearing on top of the letter while they
finish transitioning
2025-12-20 18:16:35 -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 d4ace2752c Ensure the flash notice passes through the redirect 2025-12-20 18:04:56 -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 Zimdars f2b49d0798 Avoid orphans 2025-12-20 17:34:05 -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
Rosa Gutierrez 641e67dc2e Remove status from allowed parameters in CardsController#update
We don't allow changing the status via this action, and it's confusing
and can lead to cases where someone can set someone's else card as
draft, effectively hiding it.
2025-12-19 22:35:30 +01:00
Jeremy Daer bd6c1cf34f Storage: harden reconcile for concurrent writes and fix board transfer (#2096)
* Storage: harden reconcile for concurrent writes and fix board transfer

Reconcile now uses two-cursor approach: captures cursor before and after
the storage scan, aborting if they differ (entries added during scan).
Job retries 3x with 1-minute waits and limits concurrency to 1 per owner.

Board transfer now correctly moves storage for card description embeds
and comment embeds, not just direct attachments. Uses batched queries
to handle cards with thousands of comments efficiently.

Also fixes N+1 queries in attachment grouping via lookup maps.

* Storage: fix per-attachment reconcile and enforce no blob reuse

The storage ledger tracks per-attachment (not per-blob) as a business
abstraction for quotas. This fixes reconcile to match that model and
adds enforcement to prevent blob reuse in tracked contexts.

* Reconcile now uses joins(:blob).sum() for per-attachment counting
* New validation prevents reusing blobs across tracked attachments
* Race-safe storage_total creation with create_or_find_by
* Job efficiency: skip find_by when object already available
* Backfill script checks per-attachment, not just per-blob
2025-12-19 13:07:32 -08:00
Jason Zimdars 6e90a6dbfb Add hotkeys for triaging cards in columns
Hover to select items
2025-12-19 14:33:47 -06:00
Stanko K.R. ca388c2b84 Replace handle_ naming 2025-12-19 19:21:58 +01:00
Stanko K.R. df1dfde2b3 Use same constant for fake magic links 2025-12-19 19:21:58 +01:00
Stanko K.R. 3af8bdbe37 Replace FakeMagicLink with a temporary object 2025-12-19 19:21:58 +01:00
Stanko K.R. 52d57c4681 Tidy up session_token 2025-12-19 19:21:57 +01:00
Stanko K.R. e0270c6c49 Clean up interfaces
I talked to the mobile team, and to keep things simple we agreed to send
the token via a cookie.
2025-12-19 19:21:57 +01:00
Stanko K.R. 1a1f4a077b Simplify auth logic 2025-12-19 19:21:57 +01:00
Fernando Olivares cddddcf83a Fix due to unit test when creating with invalid emails 2025-12-19 19:21:57 +01:00
Fernando Olivares b3c8d02709 Cleanup session creation 2025-12-19 19:21:57 +01:00
Fernando Olivares 6e8d6a3df0 Update to always return a pending auth token for JSON responses. 2025-12-19 19:21:57 +01:00
Fernando Olivares 877f82c0cc Pass a server token when creating a magic link via API 2025-12-19 19:21:57 +01:00
Fernando Olivares a75a939289 Simplify code a bit 2025-12-19 19:21:57 +01:00
Fernando Olivares 360e14352f Simplify session create logic for both html and json 2025-12-19 19:21:57 +01:00
Stanko K.R. e5bdb3b071 Add back missing development magic link prompt 2025-12-19 19:21:57 +01:00
Stanko K.R. c0a0786539 Return the session cookie
We had a call about this. In short, we could reuse access tokens but then the user would see access tokens for every mobile device they have without any indication as to what is going on. So, since this really is just logging in instead of an integration which seems to be the primary purpose of access tokens, we can just use our regular session cookie for authentication.
2025-12-19 19:21:57 +01:00
Stanko K.R. 54ceb4df7c Remove email address and users from magic link response
The identity endpoint can be used to fetch that information
2025-12-19 19:21:57 +01:00
Stanko K.R. b92982b244 Cleanup & simplify sign in 2025-12-19 19:21:57 +01:00
Fernando Olivares 093240c6f7 Return email and users too 2025-12-19 19:21:57 +01:00