Commit Graph

16 Commits

Author SHA1 Message Date
eb932ebdaa Publish milestones per channel and add Instagram
Consent is bound to the channel it was given for: approving a post on X says
nothing about Instagram. Publishing state moves from the SocialMilestone row
into SocialMilestonePost, one row per channel, where a missing row means no
consent. The dialog asks per channel, shows the text each one will publish and
keeps a separate handle for each; Instagram captions end in hashtags because a
link there is not clickable.

Also fixes three problems in the existing X path:

- A QR code already past several thresholds produced one prompt per threshold,
  and since the post quotes the current scan count, every one of them would
  have published the same number. Only the highest threshold is announced now.
- Detection ran after every unique scan and re-read the QR code's full scan
  history just to hit skipDuplicates. Known milestones are filtered first.
- A failed post stayed failed forever because the consent dialog only opens
  once. The queue now retries three times on its own, spaces first attempts by
  SOCIAL_MILESTONE_MIN_GAP_HOURS, and Settings lists every milestone per
  channel with restart and revoke.

The worker no longer renders the card itself; it downloads the image the app
renders at /s/m/<token>/og, which also serves the new square and portrait
formats. Instagram publishing stays off until SOCIAL_MILESTONE_CHANNELS and
SOCIAL_WORKER_CHANNELS both name it.

Schema changes are manual SQL, see sql/2026-08-16_*.sql. Run both before
deploying this version.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 13:46:13 +02:00
40b73877b6 Ignore .env.test
The staging stack is configured through .env.test, which holds its own database password
and secrets. It was not covered by the existing .env rules.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 22:14:01 +02:00
e3276f5943 retention 2026-08-11 23:35:57 +02:00
ca605f8852 SEO blog post V2 2026-08-05 22:28:34 +02:00
49c85288a1 Add developer ecosystem page and footer links 2026-08-02 00:11:29 +02:00
0dd559e6b7 Remove atom-eve build/runtime artifacts from git, ignore them 2026-07-15 18:39:00 +02:00
01284f5283 Fix 2026-07-07 00:10:29 +02:00
68b2ac0089 11 seo pages 2026-07-06 21:53:53 +02:00
Timo Knuth
c4fac0f726 SEO + Stripe 2026-04-27 17:10:30 +02:00
Timo Knuth
32935041b3 add 2026-04-21 12:37:18 +02:00
Timo Knuth
fe00bede47 Migration 2026-04-03 00:31:20 +02:00
Timo Knuth
fb70b433c7 Industries 2026-03-31 18:46:01 +02:00
Timo Knuth
cbafffdf1b Add Prisma migrations to version control - fixes deployment sync issue 2026-01-23 16:22:07 +01:00
Timo Knuth
efb1654370 fix: Optimize flipping card animation backface and timing 2026-01-22 15:46:31 +01:00
Timo Knuth
64a945da7f Fix: Add dynamic export to analytics route and exclude dev-server from deploy 2025-10-13 21:17:58 +02:00
Timo Knuth
5262f9e78f Initial commit - QR Master application 2025-10-13 20:19:18 +02:00