diff --git a/.claude/skills/design-pixel-retro/SKILL.md b/.claude/skills/design-pixel-retro/SKILL.md new file mode 100644 index 00000000..a8e83036 --- /dev/null +++ b/.claude/skills/design-pixel-retro/SKILL.md @@ -0,0 +1,107 @@ +--- +name: design-pixel-retro +description: > + Pixel Art Retro design system — ChonkyPixels font, neon glow CTAs, pixel + dot animations, and dark foundation theme. Use when building retro/pixel art + UIs, foundation sites, when user says "pixel art", "retro design", "8-bit + aesthetic", "neon glow buttons", "pixel font", or "retro foundation style". +metadata: + author: dorian + version: 1.0.0 + category: design-system + tags: [pixel-art, retro, 8-bit, neon, dark-theme, foundation] +--- + +# Pixel Art Retro Design System + +Extracted from Archipelago Foundation. Pixel-perfect aesthetics with modern +web technology, neon glow accents, and playful retro energy. + +## Design Identity + +**Name:** Pixel Art Retro +**Mood:** Playful retro, 8-bit nostalgia with modern polish +**Background:** Dark (#0A0A0A) with pixel texture overlays +**Accent:** Bitcoin orange (#F7931A) with radial neon glow + +## Typography + +```css +--font-pixel: 'ChonkyPixels', monospace; /* Display/headings — CRITICAL */ +--font-body: 'Avenir Next', system-ui, sans-serif; +--font-mono: 'Courier New', monospace; +``` + +**Rule:** ChonkyPixels must be loaded with `font-synthesis: none` and +`!important` on headings to prevent browser synthesis of bold/italic. + +## Color Palette + +Same dark base as Glassmorphism, but with neon glow effects: +```css +--bg-primary: #0A0A0A; +--accent: #F7931A; +--accent-glow: radial-gradient(circle, rgba(247,147,26,0.4) 0%, transparent 70%); +--neon-green: #39ff14; +--neon-pink: #ff6ec7; +--neon-blue: #04d9ff; +``` + +## Key Components + +### Neon Glow CTA +```css +.neon-cta { + background: linear-gradient(135deg, #f7931a, #e68a00); + border: 2px solid rgba(247, 147, 26, 0.5); + border-radius: 4px; /* Sharp corners — pixel aesthetic */ + padding: 12px 32px; + font-family: var(--font-pixel); + text-transform: uppercase; + position: relative; +} +.neon-cta::after { + content: ''; + position: absolute; + inset: -8px; + background: var(--accent-glow); + opacity: 0; + transition: opacity 0.3s; + z-index: -1; +} +.neon-cta:hover::after { opacity: 1; } +``` + +### Pixel Dot Animation +```css +@keyframes pixel-dot-bounce { + 0%, 100% { transform: translateY(0); } + 50% { transform: translateY(-4px); } +} +.pixel-dot { animation: pixel-dot-bounce 0.6s steps(2) infinite; } +``` + +### Intro Sequence +```css +.intro-container { animation: intro-container 0.6s ease-out; transform-origin: center; } +.intro-corners { animation: intro-corners 0.5s ease-out 0.35s both; } +.intro-logo { animation: fadeIn 0.5s ease-out 0.7s both; } + +@keyframes intro-container { from { transform: scale(0.97); opacity: 0; } } +@keyframes intro-corners { from { transform: scale(0.8); opacity: 0; } } +``` + +## UI Approach + +- Sharp corners (2-4px radius) — pixel aesthetic, not rounded +- Stepped animations (`steps(N)`) where possible for pixel feel +- Monospace alignment for data displays +- Donation modal: max-width 480px, QR code on white background +- Theme toggle: smooth dark/light with inverted logo filter + +## Modular Architecture + +- Pixel font loaded via `@font-face` with subset for performance +- Glow effects via CSS pseudo-elements (no extra DOM) +- Animation keyframes in global stylesheet +- Component-scoped overrides only diff --git a/.claude/skills/iso-debug/references/boot-chain-reference.md b/.claude/skills/iso-debug/references/boot-chain-reference.md index af92f101..93b86118 100644 --- a/.claude/skills/iso-debug/references/boot-chain-reference.md +++ b/.claude/skills/iso-debug/references/boot-chain-reference.md @@ -18,6 +18,22 @@ The first 432 bytes of a hybrid-bootable ISO. Contains the Master Boot Record co **Rule**: Always extract MBR from a known-working ISO. Never rely on the generic ISOLINUX one. +### CRITICAL: Embedded vs Appended EFI — Real Hardware Impact + +Two approaches for EFI boot in xorriso. They produce DIFFERENT hybrid structures: + +| Approach | xorriso flag | cyl-align | CHS geometry | Real hardware | +|----------|-------------|-----------|--------------|---------------| +| **Embedded** | `-e boot/grub/efi.img` | `cyl-align-on` | Non-zero (e.g. 244/32) | **WORKS** | +| **Appended** | `-append_partition 2 ... -e --interval:appended_partition_2:all::` | `cyl-align-off` | `0/0` | **FAILS** | + +The Will Haley guide recommends appended, but on our Dell hardware only embedded works. +Use `xorriso -indev image.iso -report_system_area plain` to check which mode an ISO uses. + +### Common gotcha: installer minbase missing sudo +debootstrap --variant=minbase does NOT include sudo. If the installer runs as root +(via auto-login), do NOT use sudo in scripts. `bash: sudo: command not found` is the symptom. + ### xorriso flags for hybrid boot ```bash xorriso -as mkisofs -o output.iso \ diff --git a/.gitea/workflows/build-iso-dev.yml b/.gitea/workflows/build-iso-dev.yml index 89c77674..0f6f795f 100644 --- a/.gitea/workflows/build-iso-dev.yml +++ b/.gitea/workflows/build-iso-dev.yml @@ -109,6 +109,18 @@ jobs: fi echo "SMOKE TEST PASSED" + - name: QEMU boot test + timeout-minutes: 5 + continue-on-error: true + run: | + ISO=$(ls image-recipe/results/archipelago-installer-unbundled-*.iso 2>/dev/null | head -1) + if [ -n "$ISO" ] && command -v qemu-system-x86_64 >/dev/null 2>&1; then + echo "Running headless QEMU boot test..." + bash image-recipe/test-iso-headless.sh "$ISO" 120 + else + echo "Skipping QEMU test (no ISO or QEMU not available)" + fi + - name: Copy to Builds run: | ISO=$(ls image-recipe/results/archipelago-installer-unbundled-*.iso 2>/dev/null | head -1)