Commit Graph
30 Commits
Author SHA1 Message Date
emil 7efe188a9a feat(ads): restore custom AdBanner with Admitad link 2026-05-14 16:21:50 +03:00
emil 87b35ba067 fix(ads): remove Admitad and Chitai-gorod banners completely 2026-05-14 15:55:37 +03:00
emil dfca40bb34 fix(lint): remove unused Props and eslint-disable directive 2026-05-14 15:38:04 +03:00
emil b22a68bf12 feat(ads): replace custom banner with Admitad leaderboard 2026-05-14 15:33:48 +03:00
emil 375455aac9 fix(ads): remove Yandex branding from banner, use neutral accent styling 2026-05-14 15:11:50 +03:00
emil 7c4241fd0e feat(ads): remove Yandex ads, move banner above generators 2026-05-14 15:07:17 +03:00
emil ae809cd119 feat(ads): replace Yandex Market with Admitad Читай-город affiliate link 2026-05-14 15:00:54 +03:00
emil 2225044795 feat(seo): add Admitad verification meta tag 2026-05-14 14:43:06 +03:00
emil f3993a8315 feat(ads): replace YandexRTB placeholder with AdBanner referral banners 2026-05-14 14:10:22 +03:00
emil 11e7c9578a feat(ads): add Yandex Market referral link to banner rotation 2026-05-14 14:05:49 +03:00
emil 3917934d45 fix(blog): register @tailwindcss/typography for prose styling 2026-05-14 13:24:43 +03:00
emil 36a714d7e2 content(blog): add real articles to all 16 posts 2026-05-14 13:12:39 +03:00
emil db09f493e9 fix(blog): add generator links, sync dates to 2026-05-14
- Add back-to-generators link on EN and RU blog index pages
- Update all 16 blog post dates to 2026-05-14 with staggered times
- Sync EN and RU post dates so matching topics have identical timestamps
2026-05-14 10:32:53 +03:00
emil ea77828094 fix(blog): remove test-post.md, fix blog index slug links
- Delete extra test-post.md (scope creep from F4)
- Fix EN blog index: strip 'en/' prefix from post.id in links
- Fix RU blog index: strip 'ru/' prefix from post.id in links
- Fix schema URLs in both blog indices to use clean slugs
2026-05-14 03:28:08 +03:00
emil 25fd24d236 feat(blog+categories): Wave 3-5 — blog infrastructure, categories, content, navigation
- Install @astrojs/rss and setup content collections (blog + generators)
- Create BlogLayout with BlogPosting schema, article OG tags, prev/next nav
- Create blog post pages EN/RU ([slug].astro) with dynamic routing
- Create blog index pages EN/RU with post cards and filtering
- Create RSS feeds EN/RU with auto-discovery links
- Create generator category pages EN/RU (5 categories each)
- Add category navigation pills to homepage
- Create Breadcrumbs, RelatedGenerators, RelatedPosts components
- Add breadcrumbs to GeneratorLayout and BlogLayout
- Wire RelatedGenerators into GeneratorLayout
- Wire RelatedPosts into blog post pages
- Create 8 EN + 8 RU blog post templates with placeholder content
- Add blog link to LanguageSwitcher navigation
- Add category and blog translation keys
2026-05-14 03:19:06 +03:00
emil 23cf7058f0 feat(schema): Wave 2 — add generator categories, Organization schema, 404 pages
- Add category field to generatorSchema (required, 5 values)
- Assign categories to all 28 generators
- Add Organization JSON-LD schema to BaseLayout
- Create custom 404 pages (EN + RU)
- Add not-found and blog translation keys
2026-05-14 02:48:05 +03:00
emil 43ea9bc8f3 fix(seo): Wave 1 — fix critical SEO gaps
- Fix duplicate faq/ruFaq keys in dice.json, list.json, colors.json
- Add <main> landmarks to about/privacy pages (EN + RU)
- Move YandexRTB after <main> on homepage
- Add x-default hreflang to BaseLayout
- Configure sitemap i18n with hreflang alternates
- Add Open Graph + Twitter Card meta tags
- Create default OG image (1200x630)
2026-05-14 02:39:56 +03:00
emil 75038780d5 fix(lint): fix pre-existing unused vars in 5 generators
- EmojiGenerator: remove unused clickToCopyLabel, CopyFeedback import, forEach i
- FontPairGenerator: prefer-const loadedFonts, remove unused headingFamily, bodyFamily, copyIconSvg
- HashGenerator: remove unused copyIcon, checkIcon, copyLabel
- Magic8BallGenerator: remove unused getTypeLabel
- TeamsGenerator: remove unused teamPrefix, errAddTwo, errTeamsMin, errTeamsMax, errMorePlayers
2026-05-13 21:29:57 +03:00
emil 8a0e2b5e0f fix(lint): remove unused vars in refactored generators
- Fix 11 lint errors introduced during refactoring
- All remaining 16 errors are pre-existing in unrefactored files
2026-05-13 20:59:01 +03:00
emil 0081510914 Wave 6: refactor generators batch 4 to crypto random
- refactor(generators): migrate Teams, Time, Uuid, Weighted to crypto random
- refactor(generators): migrate WheelSpinner, YesNo to crypto random

All 28 generators now use cryptographically secure random via src/lib/client/random.ts
2026-05-13 20:41:27 +03:00
emil 8e0485c215 Wave 5: refactor generators batch 3 to crypto random
- refactor(generators): migrate Meal, Names, Number, Palette to crypto random
- refactor(generators): migrate Password, Rps, Shuffler to crypto random
2026-05-13 20:34:16 +03:00
emil 49269f209d Wave 4: refactor generators batch 2 to crypto random
- refactor(generators): migrate Gradient, Hash, Letter, List to crypto random
- refactor(generators): migrate Lorem, Lottery, Magic8Ball to crypto random
2026-05-13 20:25:39 +03:00
emil 3d94c99ff9 Wave 3: refactor generators batch 1 to crypto random
- refactor(generators): migrate Card, Coin, Color, Country to crypto random
- refactor(generators): migrate Date, Emoji, FontPair to crypto random
- refactor(dice): deduplicate DiceGenerator by importing from dice-engine.ts
2026-05-13 20:16:40 +03:00
emil e24a8b744d Wave 2: shared components + dice engine crypto migration
- feat(components): add ResultBox and CopyButton shared components
- refactor(dice): migrate dice engine to cryptographically secure random
2026-05-13 19:42:28 +03:00
emil 515c4a6168 Wave 1: add deps, crypto random utility, i18n helper, privacy fix, CI gates
- fix(deps): add zod and typescript to package.json
- feat(lib): add cryptographically secure random utility with TDD
- feat(lib): add client i18n helper with TDD
- fix(i18n): update privacy policy for crypto accuracy
- ci(deploy): add test and lint gates, fix SSH security
2026-05-13 19:34:42 +03:00
emil 2c400abb0a fix(magic8ball): enlarge triangle, shrink text further for long answers 2026-05-13 00:50:55 +03:00
emil 074adaa5e4 fix(magic8ball): lower text further and widen triangle for long answers 2026-05-13 00:45:27 +03:00
emil 40bf7dbacf fix(magic8ball): shrink text and widen triangle viewport for long answers
- Reduce font size: 8px mobile / 10px desktop
- Tighten padding and max-width for earlier line breaks
- Lower text with mt-5 for wider triangle area
- Widen triangle clip-path: 50% 12%, 94% 92%, 6% 92%
2026-05-13 00:43:18 +03:00
emil 87e11655f6 fix(magic8ball): shift answer text down with mt-3 instead of pt-2
- Replace padding-top with margin-top so text actually shifts down
  inside the flex-centered triangle viewport
2026-05-13 00:35:50 +03:00
emil 8f11c5af43 feat: add favorites panel to meal generator, remove redundant Another one button
- Add clickable favorites counter with expandable panel
- Render saved recipes list with remove button
- Remove duplicate 'Another one' button (Generate already covers it)
- Sync favorite button state when removing from panel
2026-05-13 00:25:09 +03:00