34 Commits

Author SHA1 Message Date
claude-code 0af6a01b69 Add Metabase dashboard setup and rework the teaser workflow
Build and push image / build (push) Successful in 7m50s
The teaser workflow now takes its Postiz routing and API key from a config
node instead of hard-coded placeholders inside the Code node, so activating
it is a matter of filling two fields rather than editing JavaScript.

scripts/setup-metabase-dashboard.mjs registers the hidden11 database in
Metabase and builds the funnel dashboard from the SQL views. It is
idempotent, so it can be re-run after adding a view.

Refs #4 #9

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvQ1ErZNRUcWgCEkJ9uyrn
2026-08-26 13:07:07 +00:00
claude-code dd9497193a Bound the prerendered archive window
Build and push image / build (push) Successful in 8m18s
Prerendering every past answer page in six languages meant 700 static pages,
and the CI runner blew past Next's 60s per-page export timeout on
/puzzle/236, failing the build. The set also grew by six pages a day, so
every build would have been slower than the last.

generateStaticParams now covers the most recent 30 days per locale (202
pages, ~35s locally). Older days keep working exactly as before: they are
still linked, still in the sitemap and still indexable, but render on first
request and are then cached by ISR — measured at 180ms cold.

Also raises staticPageGenerationTimeout to 180s for headroom, since the
runner shares a host with Gitea and Postgres.

Refs #6

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvQ1ErZNRUcWgCEkJ9uyrn
2026-08-26 13:04:49 +00:00
claude-code 0de85cbc51 Localize the archive, add reminders, named challenges and a funnel
Build and push image / build (push) Failing after 15m20s
Archive and answer pages now exist in all six languages and are prerendered
instead of rendered per request, and each answer page carries a sentence of
real context per player (club, league, nationality, former clubs, honours)
plus Article and BreadcrumbList JSON-LD. The sitemap grows from 121 to 691
URLs, every one with hreflang alternates.

Adds an optional display name to shared results, so a challenge link reads
"<name> challenges you" in the page, the OG image and the head-to-head
verdict; the name is sanitised both when written and when parsed back.

Adds an opt-in daily reminder (Web Push without payload, so no content
encryption) and a PWA install prompt shown once the day is finished, plus
first-party event ingestion at /api/events that mirrors GA4 so the funnel
survives ad blockers.

Wires the missing N8N_PLAYS_WEBHOOK_URL into the deployment along with the
new events, push and search-verification secrets, and ships the n8n
workflows, the Postgres schema with funnel/retention views, and an IndexNow
submitter.

Refs #2 #3 #5 #6 #7 #8 #9 #10

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvQ1ErZNRUcWgCEkJ9uyrn
2026-08-26 12:41:28 +00:00
claude-code 3ce9ab7bf1 Add localized SEO pages, puzzle archive and challenge loop
Build and push image / build (push) Successful in 3m13s
Localized home pages (/es, /fr, /de, /it, /pt) with server-rendered intro,
how-to-play and FAQ plus FAQPage/WebApplication JSON-LD and hreflang.

Puzzle archive at /archive with answer pages (/puzzle/N) for past days only
and replays (/play/N) that never touch stats or the daily streak.

Challenge loop: shared results link back as /?challenge=<code> and the result
screen shows a head-to-head verdict.

Also adds robots.txt, sitemap.xml, the PWA manifest and icons, a compact
share text with WhatsApp/X/copy channels, a next-puzzle countdown, the
social-proof play counter and a spoiler-free /api/teaser for daily posting.

Refs #1

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QvQ1ErZNRUcWgCEkJ9uyrn
2026-08-26 12:23:59 +00:00
alexandrev-tibco c89b042e76 Use campeonato liguero instead of campeonato in ES translations
Build and push image / build (push) Successful in 1m17s
Avoids ambiguity with cup competitions — league titles are now
consistently referred to as "campeonato liguero / campeonatos ligueros"
in all Spanish clue translations.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 07:20:10 +02:00
alexandrev-tibco 2a8d055da3 Fix Close label translation and replace liga with campeonato in clues
Build and push image / build (push) Successful in 1m19s
- Fix feedback color label: Close → Cerca/Proche/Nah/Vicino/Perto
  in all non-English locales (was using the verb "to close" instead
  of "near/close")
- Replace "liga/ligas" with "campeonato/campeonatos" in all ES
  translations that refer to league titles, to avoid confusion with
  the competition name LaLiga
- Add new player fields (ballonDOr, goldenBoot, worldCupWinner,
  copaAmericaWinner, eurocupWinner) and rework clue generation with
  difficulty-aware mixing (easy=all direct, medium=2 direct+2 harder,
  hard=1 direct+2 medium+comparisons)
- Add new clue types: club, trophy (World Cup/Euro/Copa), award
  (Ballon d'Or/Golden Boot), with full i18n support in 6 languages

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 07:18:58 +02:00
alexandrev-tibco 5effa81a82 Diversify clue categories
Build and push image / build (push) Successful in 1m19s
2026-05-09 23:37:19 +02:00
alexandrev-tibco 990fd641fe Reduce clue volume and tune difficulty
Build and push image / build (push) Successful in 1m19s
2026-05-08 14:12:49 +02:00
alexandrev-tibco f784c9c722 Reveal failed puzzles and improve clue coverage
Build and push image / build (push) Successful in 1m19s
2026-05-07 11:53:14 +02:00
alexandrev-tibco 53214f96a5 Remove generic clues and document data sources
Build and push image / build (push) Successful in 1m17s
2026-05-07 08:13:28 +02:00
alexandrev-tibco 3048be5c29 Add sponsor slots and translated clues
Build and push image / build (push) Successful in 1m19s
2026-05-06 09:25:40 +02:00
alexandrev-tibco bee80c7776 Add onboarding and viral share loop
Build and push image / build (push) Successful in 1m15s
2026-05-05 19:26:26 +02:00
alexandrev-tibco 6a5e401104 Add n8n feedback form
Build and push image / build (push) Successful in 1m17s
2026-05-05 15:34:30 +02:00
alexandrev-tibco 575a36c058 Generate a full year of unique puzzles
Build and push image / build (push) Successful in 1m16s
2026-05-05 15:24:06 +02:00
alexandrev-tibco e52dd7da17 Refine share flows
Build and push image / build (push) Successful in 1m16s
2026-05-05 11:50:28 +02:00
alexandrev-tibco b8f9345015 Share homepage instead of result link
Build and push image / build (push) Successful in 1m17s
2026-05-05 11:47:03 +02:00
alexandrev-tibco dada9bf14a Read analytics IDs at runtime
Build and push image / build (push) Successful in 1m15s
2026-05-05 11:36:48 +02:00
alexandrev-tibco 3a8a38ea25 Add GA4 and Clarity analytics
Build and push image / build (push) Successful in 1m18s
2026-05-05 11:31:09 +02:00
alexandrev-tibco 52121fa682 Fix homepage social preview
Build and push image / build (push) Successful in 1m14s
2026-05-05 11:17:46 +02:00
alexandrev-tibco f27b86b78f Disable homepage prerender cache
Build and push image / build (push) Successful in 1m20s
2026-05-05 09:42:06 +02:00
alexandrev-tibco 4ea874a31e Use static OG image for home preview
Build and push image / build (push) Successful in 1m21s
2026-05-05 09:33:59 +02:00
alexandrev-tibco 1cd8d008f0 Simplify share modal
Build and push image / build (push) Successful in 1m21s
2026-05-04 22:53:05 +02:00
alexandrev-tibco 9feb7346d4 Improve shared link previews
Build and push image / build (push) Successful in 1m22s
2026-05-04 22:37:56 +02:00
alexandrev-tibco 0ac9b06a6d Polish sharing experience
Build and push image / build (push) Successful in 1m20s
2026-05-04 22:28:05 +02:00
alexandrev-tibco 8d4a5cb20f Fix Unicode share encoding
Build and push image / build (push) Successful in 1m15s
2026-05-04 22:19:40 +02:00
alexandrev-tibco f4157f6b82 Improve puzzle difficulty and sharing
Build and push image / build (push) Successful in 1m15s
2026-05-04 21:04:27 +02:00
alexandrev 4cc7aa115e fix: add kustomize source type for argocd-image-updater
Build and push image / build (push) Successful in 5s
2026-05-04 17:38:56 +00:00
alexandrev 42a6079422 chore: add kustomization.yaml for argocd-image-updater
Build and push image / build (push) Successful in 5s
2026-05-04 17:36:46 +00:00
alexandrev-tibco 61428b1980 Add imagePullSecret to hidden11 deployment
Build and push image / build (push) Successful in 7s
2026-05-04 14:15:25 +02:00
alexandrev-tibco 8f904b233d Use local Gitea checkout in workflow
Build and push image / build (push) Successful in 2m33s
2026-05-03 11:59:44 +02:00
alexandrev-tibco aa1d59a65c Retry hidden11 image build
Build and push image / build (push) Failing after 11s
2026-05-03 11:56:47 +02:00
alexandrev-tibco 426aa3ce70 Use direct docker commands in Gitea workflow
Build and push image / build (push) Failing after 5s
2026-05-03 11:50:19 +02:00
alexandrev-tibco 0e07008a31 Trigger hidden11 deployment
Build and push image / build (push) Failing after 6m22s
2026-05-03 11:39:58 +02:00
alexandrev-tibco fa04b20e30 Initial hidden11 MVP 2026-05-02 20:50:36 +02:00