Commit Graph

19 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
925540f3c6 Improve social milestone sharing flow 2026-08-14 12:31:10 +02:00
f7d82aa5bd Add consented social milestone posting 2026-08-14 09:03:21 +02:00
e3276f5943 retention 2026-08-11 23:35:57 +02:00
70d97aa970 Copy overhaul + qr designs 2026-07-27 17:54:59 +02:00
Timo
863e03f802 Social asset hosting API for TikTok PULL_FROM_URL
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-10 11:01:56 +02:00
Timo Knuth
0b9c8d2a8f TikTok api 2026-07-02 13:06:50 +02:00
Timo Knuth
7d2724b65d revops + onboarding 2026-04-22 20:01:46 +02:00
Timo Knuth
6b73ac5c50 feat: implement pricing strategy, subscription tiers, and core infrastructure for QR code management 2026-04-14 19:34:47 +02:00
Timo Knuth
7afd39c18c Email retention 2026-04-02 11:37:58 +02:00
Timo Knuth
76bde71585 fix: correct metadata dates, remove draft note, remove duplicate section
- Fixed all 'undefined NaN, NaN' dates in metadata divs across all 22 posts
- Removed draft instruction from qr-code-scan-statistics-2026
- Removed duplicate 'Trackable / dynamic QR code' section from trackable-qr-codes
- All posts now have proper 'Last updated' dates showing January 26, 2026
2026-03-06 16:01:01 +01:00
f67945d8e7 Final 2026-01-22 22:05:06 +01:00
Timo Knuth
efb1654370 fix: Optimize flipping card animation backface and timing 2026-01-22 15:46:31 +01:00
Timo Knuth
05531cda3f 4 neue dynamischen 2026-01-11 01:29:21 +01:00
Timo Knuth
6aa3267f26 Newsletter comming soon 2025-12-18 15:54:53 +01:00
Timo Knuth
424c61a176 Forgot password implementierung 2025-11-18 19:21:29 +01:00
Timo Knuth
f31992b952 Wichige änderung an DB 2025-11-05 12:02:59 +01:00
Timo Knuth
bccf771ffc Add Stripe subscription integration with pricing plans 2025-10-14 16:58:11 +02:00
Timo Knuth
5262f9e78f Initial commit - QR Master application 2025-10-13 20:19:18 +02:00