fix(lint): remove unused Props and eslint-disable directive

This commit is contained in:
emil
2026-05-14 15:38:04 +03:00
parent b22a68bf12
commit dfca40bb34
6 changed files with 785 additions and 38 deletions
+122
View File
@@ -0,0 +1,122 @@
# Plan: Add Typography Styles to Blog Posts
## TL;DR
> The `@tailwindcss/typography` plugin is installed but not registered in the CSS. Add `@plugin "@tailwindcss/typography";` to `BaseLayout.astro`, rebuild, verify that blog posts render with proper typography, and commit.
>
> **Deliverables**: 1 modified file (`BaseLayout.astro`), build passes, prettier blog rendering
> **Estimated Effort**: Quick
> **Parallel Execution**: NO — single task
---
## Context
### Problem Discovered
After filling all 16 blog posts with real content, the user noticed that posts render as plain text without formatting. Investigation revealed:
- `BlogLayout.astro` already applies `prose prose-invert prose-zinc` to the content container
- The `@tailwindcss/typography` plugin was **not installed** (hence `prose` did nothing)
- Plugin was installed via `npm install -D @tailwindcss/typography` during diagnosis
- The plugin still needs to be **registered in the CSS** with `@plugin "@tailwindcss/typography";`
### Root Cause
In Tailwind CSS v4, plugins must be explicitly loaded in the CSS file. The `@import "tailwindcss";` in `BaseLayout.astro` is not enough — the typography plugin requires `@plugin "@tailwindcss/typography";`.
---
## Work Objectives
### Core Objective
Register the typography plugin so that the `prose` class in `BlogLayout.astro` actually styles rendered Markdown.
### Concrete Deliverables
- `src/layouts/BaseLayout.astro` — add `@plugin "@tailwindcss/typography";`
- Build passes with 0 errors
- Blog posts display styled headings, lists, code blocks, and other Markdown elements
### Definition of Done
- [ ] `npm run build` produces 92+ pages with 0 errors
- [ ] A rendered blog post shows styled `h2`, `ul`, `code`, and `strong` elements (not plain browser defaults)
### Must Have
- Plugin registered correctly for Tailwind v4 syntax (`@plugin`)
- No visual regressions on non-blog pages
### Must NOT Have
- Do NOT install additional unrelated packages
- Do NOT change existing prose classes in `BlogLayout.astro`
---
## Execution Strategy
### Task 1: Register Typography Plugin
- [x] 1. Register `@tailwindcss/typography` plugin
**What to do**:
- Edit `src/layouts/BaseLayout.astro`
- Find the `<style is:global>` block with `@import "tailwindcss";`
- Add `@plugin "@tailwindcss/typography";` immediately after the `@import` line
- The result should look like:
```css
@import "tailwindcss";
@plugin "@tailwindcss/typography";
```
**Recommended Agent Profile**:
- **Category**: `quick`
- **Skills**: []
**Parallelization**:
- **Can Run In Parallel**: NO
- **Blocked By**: None
**Acceptance Criteria**:
- [ ] `BaseLayout.astro` contains `@plugin "@tailwindcss/typography";`
**QA Scenarios**:
```
Scenario: Plugin registered
Tool: Bash (grep)
Steps:
1. grep '@plugin "@tailwindcss/typography"' src/layouts/BaseLayout.astro
Expected Result: Match found
```
**Commit**: NO (group with verification)
---
## Final Verification Wave
- [x] F1. Build + Visual Check
Run `npm run build`. Must pass with 0 errors and 92+ pages. Then verify a sample blog post renders with styled typography (headings are larger/bolder, lists have bullets, inline code is monospaced).
Output: `Build [PASS/FAIL] | Visual [PASS/FAIL]`
- [x] F2. Git Commit
Stage `src/layouts/BaseLayout.astro` and `package.json`/`package-lock.json`. Commit with message: `fix(blog): register @tailwindcss/typography for prose styling`
Do NOT push to remote.
---
## Commit Strategy
- **F2**: `fix(blog): register @tailwindcss/typography for prose styling`
---
## Success Criteria
### Verification Commands
```bash
npm run build # Expected: 92+ pages, 0 errors
grep '@plugin "@tailwindcss/typography"' src/layouts/BaseLayout.astro # Expected: match
```
### Final Checklist
- [ ] Plugin registered in CSS
- [ ] Build passes
- [ ] Blog posts render with styled typography
- [ ] Changes committed (not pushed)
+528
View File
@@ -0,0 +1,528 @@
# Plan: Fill Blog Posts with Real Content
## TL;DR
> Replace placeholder text in 16 bilingual blog posts (8 EN + 8 RU) with real, research-backed, SEO-optimized articles about randomness, security, gaming, design, and decision-making topics. Each article 800–1500 words with h2/h3 structure, practical examples, and natural references to related Randify generators.
>
> **Deliverables**: 16 updated `.md` files with real content bodies, preserved frontmatter
> **Estimated Effort**: Medium
> **Parallel Execution**: YES — 4 waves of 4 parallel tasks each
> **Critical Path**: EN Wave 1 → EN Wave 2 → RU Wave 1 → RU Wave 2 → Build Verify
---
## Context
### Original Request
"Отлично! Теперь наполни блоги реалным содержимым. проведи нужные исследования и сделай качественные блоги на эти тематики"
### Current State
- All 16 blog post templates exist with correct frontmatter (title, description, dates, tags, relatedGenerators)
- Body contains placeholder text ("This article will explore...", "Stay tuned...")
- Files located in `src/content/blog/en/` (8 files) and `src/content/blog/ru/` (8 files)
- RU filenames differ slightly from EN slugs:
- EN `dice-notation-explained.md` → RU `dice-notation-guide.md`
- EN `random-team-picker.md` → RU `random-team-selection.md`
- EN `color-theory-palettes.md` → RU `color-theory-guide.md`
- Blog is already wired into Astro Content Collections; body text is the only missing piece
---
## Work Objectives
### Core Objective
Replace all placeholder body text with real, high-quality articles that provide genuine value to readers and improve SEO for Yandex РСЯ moderation.
### Concrete Deliverables
- 8 EN blog posts with real content (800–1500 words each)
- 8 RU blog posts with real content (800–1500 words each), adapted (not translated verbatim) for Russian audience
- All frontmatter preserved exactly as-is
- Build passes (`npm run build`) with 0 errors
### Definition of Done
- [ ] All 16 `.md` files contain real content, no placeholder text remains
- [ ] `npm run build` produces 92+ pages with 0 errors
- [ ] Content is factually accurate, well-structured with h2/h3 headings
- [ ] Each article naturally references its related Randify generators
### Must Have
- Real, substantive content in every post (no filler, no Lorem ipsum)
- SEO-optimized: keywords in h2 headings and first paragraph
- Practical examples, checklists, or actionable advice in each article
- h2/h3 structure for readability
- Natural integration of related generator names
### Must NOT Have (Guardrails)
- Do NOT modify frontmatter (preserve exactly)
- Do NOT change filenames or slugs
- Do NOT add external links (keep readers on site)
- Do NOT use AI-sounding filler ("in conclusion", "it's important to note", excessive adverbs)
- Do NOT push to main without user approval
---
## Verification Strategy
### Test Decision
- **Infrastructure exists**: NO (no test runner configured)
- **Automated tests**: None
- **Agent-Executed QA**: Build verification + content spot-checks
### QA Policy
Every wave includes agent-executed verification:
- **Build**: `npm run build` must pass
- **Content check**: Read random sample of posts to verify no placeholder text remains
---
## Execution Strategy
### Parallel Execution Waves
```
Wave 1 (Start Immediately — 4 EN posts):
├── Task 1: EN — Cryptographically Secure Randomness
├── Task 2: EN — Strong Passwords
├── Task 3: EN — Dice Notation
└── Task 4: EN — Psychology of Randomness
Wave 2 (After Wave 1 — 4 EN posts):
├── Task 5: EN — RNG in Gaming
├── Task 6: EN — Random Team Picker
├── Task 7: EN — Color Theory Palettes
└── Task 8: EN — UUID vs Sequential IDs
Wave 3 (After Wave 2 — 4 RU posts):
├── Task 9: RU — Криптографически стойкая случайность
├── Task 10: RU — Надёжные пароли
├── Task 11: RU — Нотация кубиков
└── Task 12: RU — Психология случайности
Wave 4 (After Wave 3 — 4 RU posts):
├── Task 13: RU — RNG в играх
├── Task 14: RU — Случайный выбор команд
├── Task 15: RU — Теория цвета
└── Task 16: RU — UUID vs последовательные ID
Wave FINAL (After ALL tasks):
├── Task F1: Build verification + content spot-check
└── Task F2: Git commit (do NOT push)
```
### Dependency Matrix
- **Waves 1 & 2**: Independent (all EN posts can theoretically run in parallel, but 8 parallel tasks is too many)
- **Wave 3**: Depends on Wave 2 (RU writers should see EN content for reference, but not strictly blocked)
- **Wave 4**: Depends on Wave 3
- **FINAL**: Depends on Wave 4
---
## TODOs
- [x] 1. EN — What is Cryptographically Secure Randomness
**What to do**:
- Read `src/content/blog/en/what-is-cryptographically-secure-randomness.md`
- Replace placeholder body with real article (800–1500 words)
- Structure: h2 headings (What Is..., Why Math.random Is Not Enough, Where It Matters, Practical Checklist, Conclusion)
- Include practical examples: `crypto.getRandomValues()`, `/dev/urandom`, `secrets` module
- Mention related generators naturally: Password Generator, Hash Generator, UUID Generator
- SEO keywords: "cryptographically secure randomness", "CSPRNG", "secure random number generator"
**Must NOT do**:
- Do NOT modify frontmatter
- Do NOT change filename
**Recommended Agent Profile**:
- **Category**: `writing`
- **Skills**: []
- Reason: Pure content writing task
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 1 (Tasks 1–4)
- **Blocks**: None
- **Blocked By**: None
**References**:
- `src/content/blog/en/what-is-cryptographically-secure-randomness.md` — target file
- `src/content/blog/en/how-to-create-strong-passwords.md` — related post for cross-linking context
**Acceptance Criteria**:
- [ ] File contains real content with h2/h3 headings
- [ ] No placeholder text ("Stay tuned", "This article will explore") remains
- [ ] Word count ≥ 800
**QA Scenarios**:
```
Scenario: Content replaced successfully
Tool: Bash (grep)
Steps:
1. grep -i "stay tuned" src/content/blog/en/what-is-cryptographically-secure-randomness.md
Expected Result: No matches (exit code 1)
Evidence: terminal output
```
**Commit**: NO (group with final wave)
- [x] 2. EN — How to Create Strong Passwords
**What to do**:
- Read `src/content/blog/en/how-to-create-strong-passwords.md`
- Replace placeholder body with real article (800–1500 words)
- Structure: h2 headings (Why Length Beats Complexity, Passphrases vs Passwords, Password Managers, Two-Factor Authentication, Practical Checklist)
- Include NIST guidelines reference
- Mention related generators: Password Generator, Hash Generator
- SEO keywords: "strong passwords", "password security", "create strong password"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 1
**QA Scenarios**:
```
Scenario: No placeholder text
Tool: Bash (grep)
Steps:
1. grep -i "stay tuned" src/content/blog/en/how-to-create-strong-passwords.md
Expected Result: No matches
```
**Commit**: NO
- [x] 3. EN — Dice Notation Explained
**What to do**:
- Read `src/content/blog/en/dice-notation-explained.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (Basic Notation, Common Dice Types, Modifiers and Advantage, Exploding Dice, Digital Dice Rollers)
- Explain d4, d6, d8, d10, d12, d20, percentile dice
- Cover advantage/disadvantage (D&D 5e), exploding dice mechanic
- Mention related generator: Dice Roller
- SEO keywords: "dice notation", "dnd dice", "exploding dice", "rpg dice"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 1
**Commit**: NO
- [x] 4. EN — Psychology of Randomness
**What to do**:
- Read `src/content/blog/en/psychology-of-randomness.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (The Pattern-Seeking Brain, The Hot-Hand Fallacy, Gambler's Fallacy, How to Be Truly Random, Tools for Fairness)
- Reference real experiments (e.g., Tversky & Kahneman)
- Mention related generators: Coin Flip, Yes/No, Random Number
- SEO keywords: "psychology of randomness", "human randomness bias", "gambler's fallacy"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 1
**Commit**: NO
- [x] 5. EN — RNG in Gaming
**What to do**:
- Read `src/content/blog/en/rng-in-gaming.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (PRNG vs True RNG, Seeds and Determinism, Loot Boxes and Regulation, Fairness Auditing, Player Trust)
- Mention related generators: Dice Roller, Lottery, Wheel Spinner
- SEO keywords: "RNG in gaming", "random number generator games", "fairness in gaming"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 2
**Commit**: NO
- [x] 6. EN — Random Team Picker
**What to do**:
- Read `src/content/blog/en/random-team-picker.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (Eliminating Bias, Random vs Balanced Teams, Sports Leagues, Corporate Workshops, Tools and Tips)
- Mention related generators: Team Generator, List Shuffler
- SEO keywords: "random team picker", "fair team selection", "team generator"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 2
**Commit**: NO
- [x] 7. EN — Color Theory Palettes
**What to do**:
- Read `src/content/blog/en/color-theory-palettes.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (The Color Wheel, Complementary Colors, Analogous and Triadic, Accessibility and Contrast, Using Palette Generators)
- Mention related generators: Color Generator, Gradient Generator, Palette Generator
- SEO keywords: "color theory palettes", "harmonious color palettes", "color palette generator"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 2
**Commit**: NO
- [x] 8. EN — UUID vs Sequential IDs
**What to do**:
- Read `src/content/blog/en/uuid-vs-sequential-ids.md`
- Replace placeholder with real article (800–1500 words)
- Structure: h2 headings (What Is a UUID?, Storage and Performance, Collision Probability, Distributed Systems, When to Use What)
- Mention UUID v4, ULID, Snowflake IDs
- Mention related generators: UUID Generator, Hash Generator
- SEO keywords: "UUID vs sequential ID", "when to use UUID", "database ID strategy"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 2
**Commit**: NO
- [x] 9. RU — Криптографически стойкая случайность
**What to do**:
- Read `src/content/blog/ru/what-is-cryptographically-secure-randomness.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt content for Russian audience (not verbatim translation of EN)
- Structure: same topics as EN but localized
- Mention related generators naturally
- SEO keywords in Russian: "криптографически стойкая случайность", "CSPRNG", "безопасная генерация случайных чисел"
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 3
**Commit**: NO
- [x] 10. RU — Надёжные пароли
**What to do**:
- Read `src/content/blog/ru/how-to-create-strong-passwords.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 3
**Commit**: NO
- [x] 11. RU — Нотация кубиков
**What to do**:
- Read `src/content/blog/ru/dice-notation-guide.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian RPG community
- Mention related generator: Dice Roller
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 3
**Commit**: NO
- [x] 12. RU — Психология случайности
**What to do**:
- Read `src/content/blog/ru/psychology-of-randomness.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 3
**Commit**: NO
- [x] 13. RU — RNG в играх
**What to do**:
- Read `src/content/blog/ru/rng-in-gaming.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 4
**Commit**: NO
- [x] 14. RU — Случайный выбор команд
**What to do**:
- Read `src/content/blog/ru/random-team-selection.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 4
**Commit**: NO
- [x] 15. RU — Теория цвета
**What to do**:
- Read `src/content/blog/ru/color-theory-guide.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 4
**Commit**: NO
- [x] 16. RU — UUID vs последовательные ID
**What to do**:
- Read `src/content/blog/ru/uuid-vs-sequential-ids.md`
- Replace placeholder with real article (800–1500 words) in Russian
- Adapt for Russian audience
- Mention related generators
**Must NOT do**:
- Do NOT modify frontmatter
**Recommended Agent Profile**:
- **Category**: `writing`
**Parallelization**:
- **Can Run In Parallel**: YES
- **Parallel Group**: Wave 4
**Commit**: NO
---
## Final Verification Wave
- [x] F1. Build Verification + Content Spot-Check
Run `npm run build`. Must produce 92+ pages with 0 errors. Read 4 random posts (2 EN + 2 RU) and verify:
- No placeholder text remains
- h2 headings present
- Word count ≥ 800 per article
Output: `Build [PASS/FAIL] | Content [PASS/FAIL]`
- [x] F2. Git Commit
Stage all modified files. Commit with message: `content(blog): add real articles to all 16 posts`
Do NOT push to remote.
---
## Commit Strategy
- **F2**: `content(blog): add real articles to all 16 posts` — all modified `.md` files
---
## Success Criteria
### Verification Commands
```bash
npm run build # Expected: 92+ pages, 0 errors
grep -ri "stay tuned" src/content/blog/ # Expected: 0 matches
grep -ri "this article will explore" src/content/blog/ # Expected: 0 matches
```
### Final Checklist
- [ ] All 16 posts contain real content
- [ ] No placeholder text anywhere
- [ ] Build passes
- [ ] Frontmatter untouched
- [ ] Changes committed (not pushed)