- Inline dice engine: XdY±Z, keep/drop (4d6dl1), exploding (3d6!), penetrating (!p), reroll (r1, ro1, r<3)
- Notation input with real-time validation and bidirectional sync with controls
- Advantage/Disadvantage toggle with smart disable when count>1 or keep/drop present
- 6 presets: Attack, Damage, Fireball, Sneak Attack, Stat Roll (4d6dl1), Savage Strike (2d6!)
- Roll history with dropped strikethrough, explosion chains, reroll arrows
- Updated SEO title/description and When-to-use blocks (EN+RU)
Adds XdY+Z notation parsing with bidirectional sync, 3-way advantage/disadvantage
toggle, last-10 roll history in sessionStorage, and D&D quick presets (Attack,
Damage, Fireball, Sneak Attack, Stat Roll). Updates SEO meta and SeoBlock content
in both EN and RU pages.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The dynamic [slug].astro imported all 10 generator components, causing Astro
to bundle all their scripts into every Russian page. Scripts then crashed
trying to find DOM elements that don't exist on the page.
Each Russian generator page now imports only its own component, matching
the English page structure.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New i18n system: src/i18n/translations.ts with en/ru translation objects
- LanguageSwitcher component (fixed top-right EN/RU toggle)
- BaseLayout updated with lang prop, hreflang links, auto-redirect for Russian browsers
- All 10 generator components updated to use T.* translations
- GeneratorCard updated to show ruTitle/ruDescription and link to /ru/ routes
- SeoBlock updated with translated section headers
- New /ru/ home page and /ru/generators/[slug] dynamic route (all 10 generators)
- Russian SEO content (howTo/whenTo) for all generator pages
- English pages explicitly pass lang="en"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Each page now has a subtle text section with keyword-rich content
for search engine indexing, without disrupting the tool UX.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- @astrojs/sitemap generates sitemap-index.xml at build time
- robots.txt points crawlers to the sitemap
- generators.ts extended with seoTitle and seoDescription per generator
- All generator pages now use seoTitle/seoDescription for <title> and <meta description>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Leaderboard shows horizontal layout with logo, text and CTA button.
Tile/rectangle show vertical layout. All link to Yandex referral URL with rel=sponsored.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Coin flip: slider 1–20 coins, heads/tails display with H/T count summary
- List picker: textarea input, configurable pick count, unique or with-replacement, Ctrl+Enter shortcut
- UUID/Token: UUID v4 via crypto, hex and base64 modes with configurable byte length, up to 20 at once
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
On push to main: builds Astro, deploys dist/ to reg.ru via rsync over SSH.
Requires DEPLOY_KEY, DEPLOY_HOST, DEPLOY_USER secrets.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds /generators/cards/ — draws 1–52 cards from a standard 52-card deck. Supports unique draws (Fisher-Yates) and with-replacement mode. Cards rendered as mini playing-card tiles with red suits coloured. Clipboard copy in rank+suit format (e.g. A♠, K♥).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds /generators/dice/ with configurable count (1–20) and standard RPG sides (d4/d6/d8/d10/d12/d20/d100). Shows individual rolls with colour-coded min/max, running total, and clipboard copy in NdS=total format.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds /generators/lottery/ with configurable range and pick count. Partial Fisher-Yates shuffle guarantees unique draws, results sorted ascending and displayed as numbered balls with clipboard copy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds /generators/password/ with length slider (4–64), uppercase/lowercase/digits/symbols toggles, guaranteed character-type coverage, Fisher-Yates shuffle, and clipboard copy. Sets password status to live in the generator catalog. Also adds CLAUDE.md with project architecture notes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>