Files
QR-master/.gitignore
Timo Knuth 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

100 lines
1.5 KiB
Plaintext

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/.next-stale-module-cache/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# local env files
.env*.local
.env
.env.test
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
# prisma
# /prisma/migrations/ # Now tracked in Git for deployment
# docker
docker-compose.override.yml
*.sql
!prisma/migrations/**/*.sql
# Hand-applied schema changes and analysis queries belong in history.
# Backup dumps land in the repo root, so they stay ignored.
!sql/**/*.sql
/backups/
# logs
logs
*.log
# project-specific
Leads/
/marketing/
output/
remotion/
# local dev script
dev-server.js
.gstack/
# atom-eve agent build/runtime artifacts
/.output/
/.eve/
/.workflow-data/
.env.meta
# Local temporary files, test scripts, and reports
tmp/
.codex-temp/
*.report.html
*.report.json
tmp_*.js
test_email.py
meta-fix.js
read-inbox.mjs
quora_antwort_statisch_dynamisch.txt
# Local blog audit reports and temporary snapshots
scratch_blog_analysis.json
scratch_scored_blog_posts.json
src/lib/blog-data.snapshot-*.ts
# Local developer-package workspaces and unreferenced generated media
/packages/
/public/Events/
/public/Gyms/
/public/Hotels/
/public/Real Estate/
/public/restaurant/
/.qr-master-api-health-state
# Python worker bytecode
__pycache__/