Repository navigation
Mascot Pixel Animation Set
github-actions[bot] edited this page Nov 4, 2026
·
2 revisions
Date: 2026-07-04 Status: Implemented
The original mascot (rounded all-blue flex glyph in frontend/src/components/mascot/index.tsx) read badly — feedback was blunt: it looked like a sex toy. The redesign moves to a skin-tone palette with dark outlines, real anatomy (knuckled fist, wristband, bicep), and multi-frame animations that work in both the React UI and the terminal.
-
Single source of truth:
testo_core/mascot/__init__.py. A frame is a list of equal-length strings; each character indexesPALETTE("."= transparent). Sprites are composed with_paste/_mirrorhelpers. -
Four animations:
-
flex(20×18, 6 frames) — bicep pumps relaxed → peak with a shine sparkle. Success/celebration. -
smash(22×18, 5 frames) — hammer fist drops from off-screen through a stack of bricks. Heavy work in progress. -
hurt(20×18, 7 frames) — spark flies in, star burst on the bicep, arm droops with bandage and falling sweat drop. Failure. -
gloves(26×13, 6 frames) — red and blue gloves wind up, punch with an impact burst, recoil. Comparisons/versus (delta engine).
-
-
Brand color stays as the blue wristband (
#3b82f6/#1d4ed8) on the skin-toned arm; gloves reuse red + brand blue.
-
Terminal:
testo_core/mascot/render.py— truecolor ANSI using▀half-blocks (two pixel rows per text line).play()animates in place with cursor control;frame_to_ansi()renders a still. Demo:python -m testo_core.mascot flex(also--still,--fps,--loops).frame_to_png()(stdlib-only PNG writer) exists for docs/previews. -
React:
frontend/src/components/mascot/-
animations.ts— generated, do not edit. Regenerate after changing frames:python -m testo_core.mascot.export_ts. -
PixelArt.tsx— SVG grid renderer (now aspect-ratio correct for non-square grids). -
AnimatedPixelArt.tsx— cycles frames on an interval;playing={false}shows a chosen still frame. -
index.tsx—MuscleLogo(still peak flex),MuscleFlex(flex),MuscleDefeated(hurt),MuscleSmash(smash),GlovesPunch(gloves),MuscleShrug(still, unchanged pose recolored).
-
| Component | Where | State |
|---|---|---|
MuscleLogo |
AppShell header | always |
MuscleFlex |
RunPanel | run passed |
MuscleDefeated |
RunPanel | run failed |
MuscleShrug |
empty states (Cycles, History, Dashboard) | no data |
MuscleSmash |
available, not yet wired | candidate: run executing |
GlovesPunch |
available, not yet wired | candidate: Compare page |
- Edit frames in
testo_core/mascot/__init__.py. - Preview:
python -m testo_core.mascot <name>in a terminal, or export PNG contact sheets withframe_to_png. - Regenerate the frontend data:
python -m testo_core.mascot.export_ts. - Commit both files together.
Generated from docs/Archive/Mascot Pixel Animation Set.md. Edit it there; changes made in the wiki are overwritten.
Architecture
CLI Commands
Processes & Guides
- CI-CD Pipeline Setup
- E2E Harness Operations Guide
- GitLab Pages Demo
- Publishing Docker Images
- Publishing to Artifactory
- Publishing to PyPI
- Setup Snippets
- Shared Resource Pools
- Team Server
Prompts & Snippets
Roadmap & Strategy
- Feature Gaps and Quick Wins - 2026-10-31
- New User Journey Audit - 2026-11-01
- Paid Features to Offer Free - 2026-10-31
- Product Roadmap
Specs & ADRs
- Affected Test Selection - 2026-10-30
- Alerts Where Developers Look - 2026-10-22
- Architecture Consolidation - 2026-10-06
- Architecture Review - 2026-10-31
- BehaveX Reports - 2026-10-21
- Better Flaky Signal - 2026-11-01
- Command Adapter and JUnit Import - 2026-09-25
- Config JSON Schema - 2026-10-22
- Crash Detection - 2026-10-31
- Delta Comparison Policy
- Docs Site - 2026-10-19
- Docs Vault and Wiki Sync - 2026-10-07
- Easy Setup - 2026-11-01
- Engine Fixes - 2026-11-01
- Engineering Health Review - 2026-10-31
- Exporting Results - 2026-11-01
- Flaky Test Issues - 2026-11-01
- Flaky Test Quarantine - 2026-10-22
- Free Copies of Paid Features - 2026-11-01
- GitHub Action PR Comment - 2026-10-19
- Human-Run Resource Provider - 2026-10-30
- Importer and Integration Bug Hunt - 2026-10-31
- Ingest and Team Server - 2026-10-22
- Interview Readiness Fixes - 2026-10-07
- Library Packaging
- Lifecycle Fixes - 2026-11-02
- MCP Server - 2026-11-01
- New User Journey Automation - 2026-11-01
- Open Source Features - 2026-10-19
- OpenTelemetry Export - 2026-10-30
- Phase 3 Delta Comparison Engine Plan
- Phase 3 Unified Dashboard Plan
- Phase 4 BYOK and Failure Analysis
- Phase 5 UI Redesign - Cycles-First Navigation
- Playwright Adapter - 2026-10-19
- Playwright JSON Import - 2026-10-22
- Plugin API - 2026-10-19
- Product Roadmap Work - 2026-10-25
- Product to Ten - 2026-10-25
- Project Health - 2026-10-26
- QASight Logo - 2026-11-05
- Qualflare Follow-ups - 2026-10-26
- Quarantine From the UI - 2026-11-01
- Specs & ADRs
- Rename to QASight - 2026-11-04
- Repository Pattern - Database-Agnostic Refactor
- Resource Lifecycle Hooks - 2026-10-26
- Resource Pools and Leases - 2026-10-26
- Run Deletion and Stop - 2026-11-02
- Runner Coverage - 2026-10-26
- Scale Runs and Stages - 2026-10-24
- Security and Install Review - 2026-10-31
- Switchable Team Features - 2026-10-24
- Test Delivery Metrics - 2026-11-02
- Test Labels, Environments and Releases - 2026-11-02
- Test Source in AI Summaries - 2026-11-01
- Throwaway Stage Containers - 2026-10-24
- Tidy Cards and Demo Examples - 2026-11-05
- UI Design Review - 2026-10-31
- UI Polish - 2026-11-08
- UI Restyle - 2026-10-19
- UI Review Fixes - 2026-11-01
Testing Workflows
Vault