Editor strip, Network/Console/Trace tabs, real Playwright tests, HC theme

UI:
- Editor tab strip above the report with per-spec scoping (sidebar tree,
  results, source, status counts, hero copy); cookie-persisted active spec
- Status pill + workers / headed overflow menu moved from topbar into the
  editor bar to slim the global chrome
- Summary stripe and pending-preview body so the report never lands empty
- Tag bar with first-6 + "+N more" + clear; auto-run first idle test on load
- Mobile drawer for the test explorer; keyboard shortcuts overlay (?)
- Skipped + failed sample tests with proper icons / step rendering

Tabs:
- Network tab: public git.levkin.ca repos rendered as Playwright-style
  GET ... 200 rows with expandable JSON bodies and repo links
- Trace tab: career timeline as a Gantt-style waterfall
- Console tab: live run events; Source tab regenerates per active spec

Theming:
- Wire up high-contrast (WCAG AAA) theme: cycle dark → light → hc → dark,
  widen theme cookie regex to accept "hc", add HC overrides for syntax
  tokens and a few hardcoded "text-on-accent" sites in app.css

Testing:
- Add @playwright/test dev dependency + playwright.config.ts on port 3173
- tests/portfolio.spec.ts: 37 specs across 12 describe blocks
- scripts/fetch-gitea-repos.mjs to refresh giteaRepos from the Gitea API

Docs / housekeeping:
- README rewritten to reflect editor strip, network tab, HC theme, test
  runner, and updated project structure
- IDEAS.md trimmed to remaining roadmap; shipped items removed
- .gitignore ignores stray PDFs at repo root (canonical resume in assets/)
- Add assets/ilia-dobkin-resume.pdf as the canonical resume binary

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Builder
2026-05-11 22:55:48 -04:00
co-authored by Cursor
parent 7564148c3c
commit b596b2d608
14 changed files with 3415 additions and 240 deletions
+45
View File
@@ -88,6 +88,51 @@
--statusbar-fg: #ffffff;
}
/* High Contrast — WCAG AAA (every text token ≥ 7:1 against --bg).
* Colors picked from the Windows / VS Code HC palette: pure black canvas,
* pure-white prose, yellow as the universal accent, lime/red/cyan for
* pass/fail/info so the three are still distinguishable for protanopia. */
:root[data-theme='hc'] {
--bg: #000000;
--bg-2: #000000;
--bg-3: #0a0a0a;
--panel: #000000;
--panel-2: #0a0a0a;
--line: #ffffff;
--line-2: #ffffff;
--text: #ffffff; /* 21:1 */
--text-2: #ffffff; /* 21:1 — no muting; AAA prose */
--text-3: #e6e6e6; /* 18:1 */
--text-4: #c0c0c0; /* 12.6:1 */
--accent: #ffff00; /* 19.6:1 — the one yellow */
--pass: #00ff00; /* 15.3:1 */
--pass-2: #00ff00;
--fail: #ff8585; /* 9.5:1 */
--skip: #ffd700; /* 16.4:1 */
--info: #7fd5ff; /* 11.7:1 */
--run: #00ff00;
--selection:#ffff00; /* paired with black text via override below */
--shadow: 0 0 0 1px #ffffff;
--hover: rgba(255,255,255,.18);
--active: rgba(255,255,255,.30);
--kbd-bg: #000000;
--tag-bg: #000000;
--tag-fg: #ffff00;
--green-arrow: #00ff00;
--topbar-bg: #000000;
--statusbar-bg: #ffff00;
--statusbar-fg: #000000;
}
:root[data-theme='hc'] ::selection { background: #ffff00; color: #000000; }
/* AAA also requires every interactive control to expose a visible focus
* indicator; force a 3px yellow outline on every focused element in HC,
* overriding the `outline: 0` declarations sprinkled through app.css. */
:root[data-theme='hc'] :focus-visible {
outline: 3px solid #ffff00 !important;
outline-offset: 2px;
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body {