Files
Learn_System/plans/lab-split/phase-3-token-purify.md
T
Maxim Dolgolyov 77ebe9e3e4 chore(plan): lab-split 5-phase plan
PLAN.md + 5 subplans + CONTEXT.md

Strategy: Incremental | Mode: Automated | Execution: Direct

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 22:33:41 +03:00

2.9 KiB

Phase 3: Token purification — 265 hardcoded colors → vars

Status: Not Started Parent plan: PLAN.md Domain: frontend

Objective

Заменить 265 хардкодных brand-цветов в lab-related files на var(--token) где это семантически корректно. Сохранить curated palettes (subject-specific colors) и canvas-fillStyle (CSS vars не resolve'ятся в canvas context).

Tasks

  • Идентифицировать все хардкоды в:
    • frontend/lab.html (HTML body + remaining inline styles)
    • frontend/css/lab.css (после Phase 1)
    • frontend/js/labs/lab-glue.js (после Phase 2)
  • Заменить direct token matches:
    • #9B5DE5var(--violet)
    • #06D6E0var(--cyan)
    • #06D664var(--green) (also #06D6A0 если есть)
    • #F15BB5var(--pink)
    • #FFB347var(--amber)
    • #0F172Avar(--text)
    • #3D4F6Bvar(--text-2)
    • #56687Avar(--text-3)
    • #EEF2FFvar(--bg)
  • KEEP (НЕ менять):
    • Tinted/alpha (rgba(155,93,229,0.12) etc.) — CSS не имеет color-mix() без deps
    • Canvas ctx.fillStyle = "#..." — CSS vars не работают в canvas
    • Curated subject palettes (bio violet / chem green / math cyan / phys amber) если они вложены массивом
    • Slightly-different shades (#9B5DE6#9B5DE5) — это намеренно другой цвет
  • Semantic aliases: использовать var(--danger) / var(--success) / var(--warning) / var(--info) в semantic context

Files to Modify

  • frontend/lab.html — заменить hardcodes
  • frontend/css/lab.css (после Phase 1) — заменить hardcodes
  • frontend/js/labs/lab-glue.js (после Phase 2) — заменить hardcodes если есть

Acceptance Criteria

  • Хардкодов brand-colors ≤ 30 (от 265, target 90%+ replacement)
  • Визуально lab выглядит идентично
  • Pre-commit hook passes
  • No regression в любой sim

Notes

  • Lab.html сейчас содержит много inline style="color: #XXX" — multi-line replacement через ast-index search + manual replacement
  • Don't over-aggressive — если color используется один раз в curated palette decoration, лучше keep
  • Document log: "Заменено: N, оставлено: M (reasons listed)"

Review Checklist

  • Counts reported: before / after
  • Spot-check 3 sims визуально (canvas рендеринг не поменялся)
  • No emoji в коде
  • Pre-commit hook passes

Handoff to Next Phase