maziggy
e761e09297
feat(sponsor-prompt): in-app toast at earned milestones
...
ghcr.io pull baseline (~10k/day rising → ~8-12k active installs) puts
sponsor conversion at 0.08% — roughly an order of magnitude under
industry-benchmark for OSS with visible CTA. The Settings banner from
0d4b9d4e gives passive every-visit visibility on one page; this adds
opt-out-able active visibility at moments where the user has just
earned something with Bambuddy.
Five trigger families with a 14-day cross-family cooldown: prints
(100/500/1000/2500/5000), cost (100/500/1000 tracked filament +
energy), archives (50/250/1000), anniversary (1 year), version-update
(re-armable on each major bump). New sponsor_toast_state table with
nullable user_id so auth-disabled installs get the same trigger logic
through one code path (NULL-keyed install-default row).
2026-06-28 12:38:31 +02:00
..
2026-06-06 10:41:28 +02:00
2026-06-28 12:37:26 +02:00
2026-06-04 11:30:26 +02:00
2026-06-03 10:14:57 +02:00
2026-05-30 13:49:09 +02:00
2026-06-20 12:07:20 +02:00
2026-05-14 08:58:33 +02:00
2026-05-22 10:02:41 +02:00
2026-06-06 13:40:56 +02:00
2026-06-06 13:40:56 +02:00
2026-05-24 12:51:24 +02:00
2026-05-08 09:01:51 +02:00
2026-05-15 15:43:37 +02:00
2026-05-08 11:52:42 +02:00
2026-05-24 10:16:30 +02:00
2026-06-05 13:53:26 +02:00
2026-05-29 10:55:41 +02:00
2026-05-24 08:49:21 +02:00
2026-06-09 07:38:59 +02:00
2026-05-28 08:40:43 +02:00
2026-06-05 13:53:26 +02:00
2026-06-06 13:30:13 +02:00
2026-06-19 11:29:07 +02:00
2026-05-11 12:27:41 +02:00
2026-05-03 08:12:36 +02:00
2026-05-08 14:06:40 +02:00
2026-06-20 12:07:20 +02:00
2026-05-16 14:35:47 +02:00
2026-06-02 14:51:08 +02:00
2026-06-02 14:51:08 +02:00
2026-05-22 10:22:14 +02:00
2026-06-13 07:49:31 +02:00
2026-06-17 11:33:23 +02:00
2026-06-17 11:33:23 +02:00
2026-06-05 09:29:53 +02:00
2026-06-02 10:02:17 +02:00
2026-06-02 10:02:17 +02:00
2026-06-02 12:42:16 +02:00
2026-06-20 08:28:44 +02:00
2026-05-21 08:45:59 +02:00
2026-05-15 08:50:37 +02:00
2026-05-15 08:50:37 +02:00
2026-05-15 08:50:37 +02:00
2026-05-15 08:50:37 +02:00
2026-05-08 11:52:42 +02:00
2026-05-13 13:23:21 +02:00
2026-04-29 11:17:43 +02:00
2026-05-17 09:30:02 +02:00
2026-05-20 08:12:17 +02:00
2026-06-09 09:16:36 +02:00
2026-06-20 12:07:20 +02:00
2026-06-10 10:59:27 +02:00
2026-06-20 12:07:20 +02:00
2026-05-21 08:30:17 +02:00
2026-06-20 12:55:24 +02:00
2026-05-04 10:34:36 +02:00
2026-06-08 08:18:13 +02:00
2026-06-11 09:23:03 +02:00
2026-05-05 16:00:22 +02:00
2026-06-02 10:02:17 +02:00
2026-05-19 10:53:36 +02:00
2026-05-25 09:04:47 +02:00
2026-06-02 12:12:54 +02:00
2026-05-24 09:18:38 +02:00
2026-06-20 12:07:20 +02:00
2026-06-09 10:43:07 +02:00
2026-05-20 11:25:45 +02:00
2026-05-24 09:18:38 +02:00
2026-06-08 07:54:24 +02:00
2026-06-17 12:04:57 +02:00
2026-05-14 15:28:41 +02:00
2026-06-12 10:14:06 +02:00
2026-06-12 10:14:06 +02:00
2026-06-20 15:50:58 +02:00
2026-04-29 09:13:33 +02:00
2026-05-12 16:02:24 +02:00
2026-05-08 11:52:42 +02:00
2026-05-08 14:28:41 +02:00
2026-05-08 11:52:42 +02:00
2026-05-18 08:51:27 +02:00
2026-06-17 11:33:23 +02:00
2026-05-12 08:48:30 +02:00
2026-05-20 11:00:54 +02:00
2026-06-09 09:16:36 +02:00
2026-05-08 11:52:42 +02:00
2026-05-22 09:05:25 +02:00
2026-06-14 10:58:02 +02:00
2026-06-18 11:46:07 +02:00
2026-06-20 08:28:44 +02:00
2026-05-24 12:30:12 +02:00
2026-05-12 09:20:53 +02:00
2026-05-15 08:50:37 +02:00
2026-06-20 12:26:31 +02:00
2026-06-05 17:19:16 +02:00
2026-05-30 13:34:10 +02:00
2026-05-30 13:34:10 +02:00
2026-05-30 13:34:10 +02:00
2026-06-02 14:33:20 +02:00
2026-06-14 10:52:41 +02:00
2026-06-09 08:22:38 +02:00
2026-06-03 10:04:37 +02:00
2026-06-11 13:35:20 +02:00