emil and Sisyphus
8eafd504b2
fix(lint): resolve explicit any and useless assignment in DM components
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 18:10:28 +03:00
emil and Sisyphus
3388d70d96
chore(lint): add debug-open5e.mjs to ESLint ignores
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 18:10:19 +03:00
emil and Sisyphus
fddc40e967
docs: note boulder tracking sync issue in DM dashboard redesign
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-15 18:02:00 +03:00
emil
1c38df7e74
style(dm): redesign dashboard with purple-gold theme
...
Redesign DM Dashboard (/dm/, /ru/dm/) with purple-gold theme (#534AB7 + #c8a84b):
Design System:
- Update dm-theme.css with 49 purple-gold tokens (transitions, shadows, hover states)
- Create DmTabs.astro with ARIA, keyboard nav, URL hash sync, localStorage persistence
- Create DmSidebar.astro for desktop navigation
- Redesign DmHeader with gold accent
- Update DmButton, DmCard, DmInput primitives
- Expand i18n to 47 strings
Layout:
- Redesign DmLayout with 3-column dashboard grid (sidebar|main|context)
- Update /dm/index.astro and /ru/dm/index.astro with named slots
Feature Components:
- DiceRoller: empty state, ARIA live, color-coded history, storage key fallback
- InitiativeTracker: HP editing, active highlighting, storage key fallback
- Open5eReference: skeletons, debounce, error retry, gold tabs
- NotesPanel: cross-tab sync, copy-to-clipboard, auto-save
- AuthPanel: VK/Yandex brand colors, pill buttons
Tests:
- Add 50 Playwright E2E tests (smoke, dice, initiative, reference, notes, data-migration)
Fixes:
- Document Open5e client.ts URL bugfix
- Add backward-compatible storage key fallback for dice/initiative
- Preserve legacy sessionStorage data on load
2026-05-15 17:49:32 +03:00
emil
11da171bfb
docs: add AGENTS.md knowledge base (root + generators + dm)
2026-05-15 04:35:00 +03:00
emil
592fa4cc3e
chore(vk): remove debug logging from callback
2026-05-15 04:21:34 +03:00
emil
5815b52c4e
fix(vk): add client_id to user_info request, use query params for device_id
2026-05-15 04:18:19 +03:00
emil
57d56c7f29
debug(vk): log full callback URL and all query params
2026-05-15 04:15:07 +03:00
emil
258f062115
fix(lint): remove unused refreshToken variable
2026-05-15 04:11:07 +03:00
emil
fbc011f55e
fix(vk): use id.vk.ru domain, handle payload param, add device_id to token exchange
2026-05-15 04:09:02 +03:00
emil
5b6247ff7c
style(auth): remove debug border from AuthPanel, clean up console.log
2026-05-15 03:55:51 +03:00
emil
6f2d9aff5d
fix(auth): make DM pages server-rendered so middleware can set Astro.locals.user
...
Pages /dm/ and /ru/dm/ were static (prerendered), so middleware
never ran and Astro.locals.user was always null. Adding
prerender = false allows middleware to authenticate the user
before page render.
2026-05-15 03:50:41 +03:00
emil
38a778f3de
debug(auth): add visible debug border and user state to AuthPanel
2026-05-15 03:40:01 +03:00
emil
08161dcdd1
fix(auth): unify cookie name to auth_token for OAuth and middleware compatibility
...
- Change COOKIE_NAME from 'session' to 'auth_token' in oauth.ts
- Update logout.ts to use Headers.append() and SameSite=Lax
- Fixes mismatch where callback set 'session' but middleware read 'auth_token'
2026-05-15 02:22:19 +03:00
emil
de81e54ae1
fix(oauth): use SameSite=Lax for session cookie to survive cross-site redirect
2026-05-15 02:14:21 +03:00
emil
b762e2eb66
fix(health): check DB connectivity in health endpoint
2026-05-15 02:05:40 +03:00
emil
b71902b686
fix(oauth): use separate Set-Cookie headers for multiple cookies
...
Browser cannot parse multiple cookies from a single Set-Cookie header
joined by comma (RFC 6265). Use Headers.append() to send each cookie
in its own Set-Cookie header. Fixes state/verifier cookie mismatch.
2026-05-15 01:59:56 +03:00
emil
da6208de50
fix(oauth): fix VK token URL (.ru -> .com), add error logging to callbacks
2026-05-15 01:50:45 +03:00
emil
da0ee46bc0
fix(dm): scope DM theme CSS to .dm-theme class to override BaseLayout purple accent
2026-05-15 01:46:01 +03:00
emil
aaf596a7bc
fix(dm): OAuth redirect_uri, orange buttons, denser layout, hide lang switcher
...
- Fix OAuth redirect_uri mismatch in VK/Yandex callbacks (use PUBLIC_APP_URL)
- Make quick dice buttons and anchor nav links orange by default
- Densify DM Dashboard layout (smaller gaps, tighter spacing)
- Hide LanguageSwitcher/Blog/About/Privacy links on DM pages
- Increase notes textarea height for better usability
2026-05-15 01:42:09 +03:00
emil
5273518908
fix: SameSite=Lax for OAuth cookies to allow cross-site redirects
2026-05-15 01:28:24 +03:00
emil
2b57cba3bb
fix: use process.env for runtime OAuth secrets
2026-05-15 01:25:27 +03:00
emil
4a13ba3272
fix deploy: copy dist directory instead of contents
2026-05-15 01:01:55 +03:00
emil
d24f978d7e
trigger deploy
2026-05-15 00:54:45 +03:00
emil
1a092e05c1
feat(dm): add dashboard with oauth, dice, initiative, open5e, notes
2026-05-14 23:48:36 +03:00
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
f6f1ca05c9
feat(seo): add Admitad verification file
2026-05-14 14:48:07 +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