Commit Graph

1083 Commits

Author SHA1 Message Date
Mike Dalessio e7dcefb25b Extract SignalUser and SignalAccount, and QB routes 2025-09-13 16:03:02 -04:00
Mike Dalessio 8f39c015ea Tests now pass with local authentication
This is the first step of a multi-step SaaS engine extraction.

Looking ahead to an open source release, we need to make sure that
local authentication is treated as an "official" option, and not just
a hack I added for Kevin to do load testing outside our DC. So this PR
gets to green, and adds a CI step in "local authentication" mode.

This all probably feels a little hacky to you, Reader, but the goal of
this change is to ease the next step, which will be extracting the
37id and Queenbee integrations into a proprietary "SaaS mode" engine.

In service of that goal, this commit simply wraps all of the dependent
code and tests with a conditional check on
`config.x.local_authentication`.
2025-09-13 15:21:00 -04:00
Jorge Manrubia 9e5108bcae Touch user on modification to invalidate cache
For the new "add card" in the cards screen
2025-09-12 18:59:18 +02:00
Jorge Manrubia ba3b782d21 Merge branch 'main' into watchers
* main:
  Fix add card not working in the cards screen
  Submit and refresh results as you type terms
  Fix: When expanding filters, submitting filters should keep the filters expanded
  Invalidate cache when filter changes
  Switch to gpt-5-chat
  Handle filter toggles with JS
  Prevent glitch where you see the filter bar expanded when you clear it
  Remove unused templates
  Fix: all collections link not working after moving to turbo frame
  Restore cache I deleted by mistake
  Speed up filter expansion with turbo stream
  Fix: filtering collections not working after moving menu to turbo frame
  Respect params when loading the menu or they won't be reflected!
  Add HTTP cache for the menu
  Load main menu lazily with a turbo frame
  Inline :has(&) as it's REALLY slow in Safari
  Extract helper method
  Remove transition that is making Safari choke when navigating to Fizzy menus
  Reduce page size to reduce load for processing local times on initial page load
  Avoid having to parse strings

# Conflicts:
#	app/views/cards/index/_add_card_button.html.erb
#	test/vcr_cassettes/period_highlight_test-test_don_t_generate_highlights_for_existing_periods.yml
#	test/vcr_cassettes/period_highlight_test-test_generate_period_highlights.yml
#	test/vcr_cassettes/user/highlights_test-test_don_t_generate_highlights_for_existing_periods.yml
#	test/vcr_cassettes/user/highlights_test-test_generate_weekly_highlights.yml
2025-09-12 18:52:17 +02:00
Jorge Manrubia 55a22f98e3 Submit and refresh results as you type terms 2025-09-12 18:25:27 +02:00
Jorge Manrubia eabce24415 Switch to gpt-5-chat
Cheaper and good enough

https://3.basecamp.com/2914079/buckets/37331921/todos/9041305517
2025-09-12 16:16:54 +02:00
Jorge Manrubia 5e0918d373 Handle filter toggles with JS
To make them feel faster
2025-09-12 14:12:16 +02:00
Jason Zimdars c4dec29b49 Assignment notifications should always be delivered
- They're effectively @mentions
- This means watching really reflects the UI state: Watching for new cards
2025-09-11 21:21:11 -05:00
Jason Zimdars e68b344cc2 Remove _Everything_ inolvement 2025-09-11 12:34:31 -05:00
Jorge Manrubia 312c5c7331 Fix some cache invalidation problems
- https://fizzy.37signals.com/5986089/cards/1585
- https://fizzy.37signals.com/5986089/cards/1616
2025-09-10 17:37:13 +02:00
Jorge Manrubia 23d2512525 Bust user filtering cache when the displayed associations change 2025-09-10 16:55:37 +02:00
Jorge Manrubia 4e72566856 Flatten card resource
We only need the parent collection for creating cards. Carrying it in the
rest of actions is a hassle.
2025-09-10 11:24:23 +02:00
Jorge Manrubia 7f7ecf0346 Delete notifications when the user loses access to the collection 2025-09-10 10:24:20 +02:00
Jorge Manrubia 2e51a34694 Extract method to fetch all the notifications for a card for a given user
We'll need to handle access changes
2025-09-10 10:08:14 +02:00
Jorge Manrubia b9c7ac225a Extract method 2025-09-10 10:07:58 +02:00
Jorge Manrubia 58c525e5a6 Broadcast notifications that are deleted
To prevent 404s when someone doesn't refresh the page
2025-09-10 09:50:22 +02:00
Jason Zimdars 4e50609d2b Create a copy before modifying to avoid modifying the cached filter 2025-09-09 22:45:46 -05:00
Jorge Manrubia 8ea2d7346b Restore add card button in the timeline
It will add to the first selected collection, or to the
first one in the menu if no collection selected
2025-09-09 17:41:07 +02:00
Jorge Manrubia 242a367e0a Fix: add card adding cards to the wrong collection
Make sure we only show the "add card" button when there is a single collection selected, and that it adds to that collection.

https://fizzy.37signals.com/5986089/collections/2/cards/1439
2025-09-09 14:47:34 +02:00
Jorge Manrubia 9b4eaf0952 Format 2025-09-09 12:31:07 +02:00
Jorge Manrubia a6b2944f54 Array not needed 2025-09-09 12:15:04 +02:00
Jorge Manrubia 1366ccc8df Add caching and http caching to the cards index screen 2025-09-09 12:05:16 +02:00
Jorge Manrubia 61fd84ab5e Add server-side caching and HTTP caching when serving events in the timeline 2025-09-09 11:30:05 +02:00
Jason Zimdars d7844a4105 Merge pull request #1031 from basecamp/improve-workflows
Improve workflows
2025-09-08 10:32:50 -05:00
Jorge Manrubia ebfc168266 Make sure it considers the week before if this is invoked on a sunday 2025-09-08 08:38:33 +02:00
Jorge Manrubia ac11d8f830 Refine comment 2025-09-05 17:23:52 +02:00
Jorge Manrubia 573f62c3b4 Add comment 2025-09-05 17:23:26 +02:00
Jorge Manrubia d9cc592566 Merge pull request #1007 from basecamp/weekly-highlights
Weekly highlights
2025-09-05 17:03:38 +02:00
Jorge Manrubia b15cb4541f Show summarier capturing the actual weeks in the user's timezone
https://3.basecamp.com/2914079/buckets/37331921/todos/9010176047#__recording_9037056688
2025-09-05 13:48:02 +02:00
Jorge Manrubia e15cc80929 Only process summaries for active users (not deactivated or system) 2025-09-05 13:46:28 +02:00
Jorge Manrubia aad61b36bc Generate highlights in the user timezone, now that we persist it
Also, remove the dates and duration from the highlights records. Those are not relevant, only the events-derived
key is. If two users with different timezones have different activities, they should see different summaries.
2025-09-05 12:39:09 +02:00
Jorge Manrubia cfa0149564 Persist timezones in the server
Add a beacon to persist timezones when these change (or the first time)
2025-09-05 12:11:57 +02:00
Jason Zimdars 96ec2f698e Fix that in-use Workflows couldn't be deleted 2025-09-04 15:14:04 -05:00
Jason Zimdars 3814c17d49 Be defensive about unwanted elements it sometimes inserts 2025-09-04 12:52:01 -05:00
Jason Zimdars 53f06d2554 Adjust summary, style in newspaper format 2025-09-02 22:14:13 -05:00
Jason Zimdars 4d6201b8dc Filter to just drafts 2025-09-02 19:32:19 -05:00
Jorge Manrubia b6b4617eec Remove unused constant 2025-09-02 17:24:22 +02:00
Jorge Manrubia 1176857ec3 Remove unused methods 2025-09-02 17:22:53 +02:00
Jorge Manrubia c412ae89e6 Only generate summaries when there is enough activity 2025-09-02 16:32:30 +02:00
Jorge Manrubia d785f9f80f Don't show summaries when using filters 2025-09-02 12:20:02 +02:00
Jorge Manrubia eb908ea316 Not used anymore 2025-09-02 11:07:57 +02:00
Jorge Manrubia a9d9351472 Extract object to represent a period to tidy up params repetition 2025-09-02 10:55:53 +02:00
Mike Dalessio 85b6f46422 Do not try to bundle notifications for system users
ref: https://fizzy.37signals.com/5986089/collections/7/cards/1471
2025-09-01 12:37:34 -04:00
Jorge Manrubia dfbc77c2e5 Render weekly highlights considering periods of inactivity 2025-09-01 17:09:43 +02:00
Jorge Manrubia 5b68750713 Generate weekly highlights instead of daily ones
https://3.basecamp.com/2914079/buckets/37331921/todos/9010176047
2025-09-01 16:01:19 +02:00
Jorge Manrubia b51af8b5da Extract method and make sure we don't deliver emails when notification setting is set to never
This should be prevented by the current design, but let's be a bit defensive here.
2025-09-01 12:17:13 +02:00
Jorge Manrubia 6f2670d6dd Merge main into bundle-emails branch and resolve conflicts 2025-09-01 11:49:20 +02:00
Jason Zimdars 70b07f856f Use inquiry method 2025-08-31 15:28:01 -05:00
Jorge Manrubia bec4abad0c Rename method to match semantics
"rescheduling" was a from an implementation I had dropped
2025-08-29 09:28:32 +02:00
Jason Zimdars f80ef52f81 Workflow stage filter should only apply to cards in doing
No other column has Workflows so they should be unaffected by the filter
2025-08-28 20:54:23 -05:00