77 Commits

Author SHA1 Message Date
Rob Zolkos 6a71856b3d Add JSON activities API endpoint (#2783)
* Add JSON events API endpoint

* Add regression test for event particulars defaults

* Move JSON events API to a dedicated ActivitiesController

The events endpoint served both the HTML day timeline and the JSON API
feed, but the two paths shared no data or behavior — the HTML side uses
DayTimelinesScoped while the JSON side built its own query. Splitting
into ActivitiesController gives the API its own home at
GET /:account/activities.json without dragging in the timeline
before_actions.

Also preloads comment creator in Event.preloaded to avoid an N+1 when
rendering comment eventables in the JSON feed.
2026-04-08 08:39:36 -04:00
Mike Dalessio 0c10622672 Fix double-escaped HTML entities in webhook payloads
`Event::Description#to_plain_text` now returns an html-safe string to
prevent double-escaping when the ERB template renders the basecamp
and campfire payloads.

ref: https://3.basecamp.com/2914079/buckets/27/card_tables/cards/9574495379
2026-02-13 03:25:59 -05:00
Jankees van Woezik cf82ead0e3 Add link to Fizzy to Slack message
This makes it nice to use with a Slack webhook enabled, see
also this discussion: https://github.com/basecamp/fizzy/discussions/2238
2025-12-24 11:16:14 +01:00
Stanko K.R. 0df667f4fb Fix HTML injection in webhooks through card titles 2025-12-22 12:20:32 +01:00
Jason Zimdars 86932803e4 Clarify not now move actions copy 2025-11-24 12:03:34 +01:00
Jorge Manrubia 676c2a42fe Always use the creator name for the plain text form
You does not make sense for webhooks
2025-11-06 14:16:01 +01:00
Jorge Manrubia 6fcb51703d Format 2025-11-06 11:44:03 +01:00
Jorge Manrubia 0c48e5f30a No need to escape here 2025-11-06 11:43:22 +01:00
Jorge Manrubia e4cb5579f0 Order methods 2025-11-06 11:02:20 +01:00
Jorge Manrubia f5dfcd461c Rename method 2025-11-06 11:01:21 +01:00
Jorge Manrubia c926d7ad6c Extract description object to remove the helper salad
Lots of repetition with the helpers and params
2025-11-06 10:56:07 +01:00
Jorge Manrubia aa1ffb3357 Remove AI summaries and semantic searches
We were not using either. We can restore if we revisit.
2025-10-29 11:55:32 +01:00
Jorge Manrubia 9317a82570 Remove Fizzy Ask
Since we are not going to ship it
2025-10-27 14:45:30 +01:00
Jorge Manrubia 1d1a3da9cf Cleanup workflow/stages
This was pending after moving to columns
2025-10-07 11:10:10 +02:00
Jorge Manrubia 6b0bca2475 Reduce size further since sometimes you get truncated summaries 2025-10-06 15:17:28 +02:00
Jorge Manrubia 7178945418 Reduce max length 2025-10-06 12:44:24 +02:00
Jorge Manrubia 3d8437bd5f Truncate summaries to keep within API limits
https://fizzy.37signals.com/5986089/cards/1739
2025-09-15 16:14:29 +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
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
Jorge Manrubia b6b4617eec Remove unused constant 2025-09-02 17:24:22 +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 80e37bef36 Separate method with two outputs into two 2025-08-27 14:32:13 +02:00
Jorge Manrubia 744faf12c0 Extract "response cost" object to unify calculations around LLM usage costs 2025-08-27 13:18:41 +02:00
Jorge Manrubia 0eea4f003c Remove unnecessary guards 2025-08-27 09:41:47 +02:00
Jorge Manrubia 853a75a54f Rename "cost_microcents" => "cost_in_microcents" 2025-08-27 09:38:23 +02:00
Jason Zimdars 5cf119cbd1 Adjust prompt to force proper link construction; recognize people milestones and events 2025-08-18 10:00:16 -05:00
Jason Zimdars acfe89ca52 Update prompt to render links and use more casual language 2025-08-14 14:32:53 -05:00
Jason Zimdars e8dc14fda7 Simplify prompt, adjust styles to move away from bullet format 2025-08-11 18:03:48 -05:00
Jorge Manrubia 8addd4bd50 Remove comment 2025-08-11 12:42:31 +02:00
Jason Zimdars 9362b711d8 Adjust prompt 2025-08-05 16:02:11 -05:00
Jason Zimdars b30a329a1a Surface some fun user activity 2025-07-31 14:30:08 -05:00
Jason Zimdars 7d55069d88 Adjust prompt 2025-07-31 10:30:00 -05:00
Jason Zimdars b795a43d5c Simplify the prompt, try a top 5 points format 2025-07-30 18:14:37 -05:00
Jason Zimdars 0f3aa31943 Bold names, ensure summaries generate correctly structured collection links 2025-07-29 11:57:23 -05:00
Jason Zimdars 3479129721 Update prompt 2025-07-25 10:07:49 -05:00
Jorge Manrubia 5ad2d09eae Move the hack to fetch completed cards to the insight command logic
We need to rework this as part of the filters revamp. "indexed_by" being
a mix of filters keeps biting us.
2025-07-24 16:48:05 +02:00
Jorge Manrubia 018c746d2a Make the prompt smarter about the current context to make better calls 2025-07-24 16:48:03 +02:00
Jorge Manrubia 8bb7783215 Extract "prompt generation" logic to models for events, comments and cards
So that we can reuse in other scenarios
2025-07-24 16:48:03 +02:00
Jorge Manrubia 4d3e7bf0af Fix: llm model 2025-07-24 16:48:01 +02:00
Jorge Manrubia f3fa324f09 Let summaries know about collections 2025-07-23 16:54:39 +02:00
Jorge Manrubia c082a1b1f5 More tweaks 2025-07-23 13:15:49 +02:00
Jorge Manrubia c8c297a75e Fix model selection (I had broken it!) 2025-07-23 13:10:47 +02:00
Jorge Manrubia 49518692bb Some prompt refinements 2025-07-23 13:04:41 +02:00
Jorge Manrubia fc1ff7bf5e Fix tests 2025-07-23 12:21:20 +02:00
Jorge Manrubia 90ddadea5c Format 2025-07-23 12:04:18 +02:00
Jorge Manrubia f32e89c277 Format 2025-07-23 11:43:10 +02:00
Jorge Manrubia c3ae05833e Make models selectable 2025-07-23 11:02:34 +02:00
Jorge Manrubia 5322ce2afb Add comment's context for each card too 2025-07-22 22:43:01 +02:00
Jorge Manrubia e1ab4ec13c Use 4o for now, it's just better for summarizing and conversation
It's more expensive, going with the best and we'll tune later
2025-07-22 22:34:12 +02:00