spouliot
ed35362c7a
Add Formula Library ratings, Job Profitability report, and Quote Revision History improvements
...
- Formula Library ratings: thumbs up/down per company per formula; toggle on/off; sorts by net score; own formulas not rateable; FormulaLibraryRating entity + migration AddFormulaLibraryRatings
- Job Profitability report: actual labor cost (logged hours x StandardLaborRate) vs powder cost vs billed price per job; gross margin % color-coded; time-tracked-only filter; totals footer
- Quote Revision History: track Total price changes on every save; log Sent/Resent events with recipient email; replace flat table with grouped timeline UI (icons per event type, total-change badge on header)
- Setup Wizard: cap CompletedCount at TotalSteps so old 10-step data no longer shows 10/5
- Formula Library card: fix badge overflow on long titles; add Rate: label to make voting buttons discoverable
- Help docs and AI knowledge base updated for all three features
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-01 09:02:07 -04:00
..
2026-05-19 15:48:16 -04:00
2026-05-19 15:48:16 -04:00
2026-05-19 15:48:16 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-23 21:38:24 -04:00
2026-04-24 19:35:00 -04:00
2026-04-24 19:35:00 -04:00
2026-04-25 09:33:59 -04:00
2026-04-25 09:33:59 -04:00
2026-04-25 15:07:01 -04:00
2026-04-25 15:07:01 -04:00
2026-04-25 18:41:56 -04:00
2026-04-25 18:41:56 -04:00
2026-04-26 09:30:28 -04:00
2026-04-26 08:29:51 -04:00
2026-04-26 10:34:50 -04:00
2026-04-26 10:34:50 -04:00
2026-04-28 21:10:47 -04:00
2026-04-28 21:10:47 -04:00
2026-04-29 18:02:46 -04:00
2026-04-29 18:02:46 -04:00
2026-04-29 18:15:55 -04:00
2026-04-29 18:15:55 -04:00
2026-05-01 22:29:39 -04:00
2026-05-01 22:29:39 -04:00
2026-05-01 22:29:39 -04:00
2026-05-01 22:29:39 -04:00
2026-05-03 16:36:25 -04:00
2026-05-03 16:36:25 -04:00
2026-05-03 16:36:25 -04:00
2026-05-03 16:36:25 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 21:05:37 -04:00
2026-05-05 22:08:31 -04:00
2026-05-05 22:08:31 -04:00
2026-05-06 08:46:41 -04:00
2026-05-06 08:46:41 -04:00
2026-05-06 16:04:45 -04:00
2026-05-06 16:04:45 -04:00
2026-05-08 20:46:53 -04:00
2026-05-08 20:46:53 -04:00
2026-05-08 20:47:04 -04:00
2026-05-08 20:47:04 -04:00
2026-05-08 20:47:19 -04:00
2026-05-08 20:47:19 -04:00
2026-05-08 20:47:34 -04:00
2026-05-08 20:47:34 -04:00
2026-05-09 22:12:33 -04:00
2026-05-09 22:12:33 -04:00
2026-05-09 23:34:54 -04:00
2026-05-09 23:34:54 -04:00
2026-05-09 23:56:03 -04:00
2026-05-09 23:56:03 -04:00
2026-05-10 10:55:22 -04:00
2026-05-10 00:03:14 -04:00
2026-05-10 00:10:38 -04:00
2026-05-10 00:10:38 -04:00
2026-05-10 10:55:22 -04:00
2026-05-10 10:55:22 -04:00
2026-05-10 11:08:36 -04:00
2026-05-10 11:08:36 -04:00
2026-05-10 11:32:44 -04:00
2026-05-10 11:32:44 -04:00
2026-05-10 12:19:32 -04:00
2026-05-10 12:19:32 -04:00
2026-05-10 13:01:56 -04:00
2026-05-10 13:01:56 -04:00
2026-05-10 19:42:53 -04:00
2026-05-10 19:42:53 -04:00
2026-05-11 10:39:49 -04:00
2026-05-11 10:39:49 -04:00
2026-05-12 21:40:16 -04:00
2026-05-12 21:40:16 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 12:42:46 -04:00
2026-05-13 16:25:27 -04:00
2026-05-13 16:25:27 -04:00
2026-05-13 16:25:27 -04:00
2026-05-13 16:25:27 -04:00
2026-05-13 22:35:37 -04:00
2026-05-13 22:35:37 -04:00
2026-05-14 16:54:22 -04:00
2026-05-14 16:54:22 -04:00
2026-05-14 16:54:22 -04:00
2026-05-14 16:54:22 -04:00
2026-05-14 20:32:56 -04:00
2026-05-14 20:32:56 -04:00
2026-05-15 15:03:06 -04:00
2026-05-15 15:03:06 -04:00
2026-05-15 15:48:46 -04:00
2026-05-15 15:48:46 -04:00
2026-05-15 20:32:32 -04:00
2026-05-15 20:32:32 -04:00
2026-05-19 17:43:30 -04:00
2026-05-19 15:48:16 -04:00
2026-05-19 15:48:16 -04:00
2026-05-19 15:48:16 -04:00
2026-05-23 09:27:34 -04:00
2026-05-23 09:27:34 -04:00
2026-05-23 09:52:34 -04:00
2026-05-23 09:52:34 -04:00
2026-05-23 15:09:22 -04:00
2026-05-23 15:09:22 -04:00
2026-05-24 10:38:05 -04:00
2026-05-24 10:38:05 -04:00
2026-05-26 08:54:48 -04:00
2026-05-26 08:54:48 -04:00
2026-05-26 19:53:13 -04:00
2026-05-26 19:53:13 -04:00
2026-05-26 19:53:13 -04:00
2026-05-26 19:53:13 -04:00
2026-05-27 00:20:53 -04:00
2026-05-27 00:20:53 -04:00
2026-05-27 09:30:39 -04:00
2026-05-27 09:30:39 -04:00
2026-05-27 10:12:24 -04:00
2026-05-27 10:12:24 -04:00
2026-05-27 21:54:51 -04:00
2026-05-27 21:54:51 -04:00
2026-06-01 09:02:07 -04:00
2026-06-01 09:02:07 -04:00
2026-06-01 09:02:07 -04:00