meatloaf-config/AGENTS.md

4.1 KiB

Meatloaf Manipulator — Agent Context

Project Overview

Meatloaf Manipulator is a React/Vite PWA for configuring and managing Meatloaf devices (Commodore 64 retro computing hardware). It is served at https://meatloaf.cc/config/.

Tech Stack

  • Framework: React 18 + Vite 6
  • Styling: Tailwind CSS 4 (via @tailwindcss/vite)
  • UI components: Radix UI primitives, MUI icons (@mui/icons-material), Lucide React icons
  • Routing: React Router 7 (single-page, page state managed in App.tsx)
  • Build base path: /config/ (overridable via BASE_PATH env var)

Project Structure

src/
  app/
    App.tsx               # Root component: routing, nav, layout
    components/
      StatusPage.tsx       # System status, activity log, file info, progress, overlays
      DevicesPage.tsx      # Device list
      DeviceDetailOverlay.tsx
      GeneralPage.tsx      # General/settings
      IECPage.tsx          # IEC bus configuration
      NetworkPage.tsx      # Network settings
      OtherPage.tsx        # Misc settings
      ToolsPage.tsx        # Tools
      SearchOverlay.tsx
      WiFiScanOverlay.tsx
      FileBrowser.tsx
      figma/               # Figma-generated components
      ui/                  # shadcn/Radix UI wrappers
  imports/
    logo.svg
    config.json            # Device config data shape
  main.tsx
  styles/
public/
  manifest.webmanifest
  icon.192.png / icon.512.png
  service-worker.js        # PWA service worker
index.html
vite.config.ts

Navigation

Bottom tab bar + header icons:

Nav item Page key Component
Status status StatusPage
Devices devices DevicesPage
IEC iec IECPage
Network network NetworkPage
More other OtherPage
(header) apps Apps grid
(profile) general GeneralPage
(profile) tools ToolsPage

Apps Page

Grid of app cards grouped by category, each navigates to a stub AppPage:

  • Disk: Directory Editor, Sector Editor, BAM Editor, Disk Visualizer, RAM/ROM Explorer, Dump Disk Image, Write Disk Image
  • Cartridge: PRG to CRT, Magic Desk Cart Builder, Easy Flash Cart Builder
  • Development: Basic Editor, Assembler, Sprite Editor, Character Set Editor, Petscii Editor
  • Display: Idle Animation, Loading Animation

All individual app pages are currently stubs (AppPage component with "coming soon" message).

Work to Date (chronological)

  1. Initial commit — project scaffolded with basic pages
  2. StatusPage enhancements — file info display, loading progress bar
  3. StatusPage overlays — reset functionality, directory map overlay, disk map overlay
  4. SearchOverlay polish — improved layout, responsiveness, background opacity
  5. DeviceDetailOverlay — media button titles improved
  6. Apps page — added apps nav item; built AppCard grid with category groupings; added stub AppPage for all individual apps
  7. StatusPage layout — reorganized action buttons; enhanced system status display and activity log
  8. PWA support — added manifest.webmanifest, service worker, PWA icons (icon.192.png, icon.512.png)
  9. Vite base path — set base: process.env.BASE_PATH || '/config/' in vite.config.ts
  10. Icon/manifest path fix — updated icon paths in manifest and HTML; adjusted service worker registration

Known Issues / Open Work

  • Service worker 404: https://meatloaf.cc/service-worker.js returns 404. The SW is likely not being copied to the dist output at the correct path, or the registration URL does not account for the /config/ base path.
  • App pages: All individual app pages (Directory Editor, Sector Editor, etc.) are stubs. Actual implementations are pending.
  • apple-mobile-web-app-capable deprecation: Already resolved in index.html (uses mobile-web-app-capable instead).

Configuration Shape

Config is loaded from src/imports/config.json and passed as props (config, setConfig) to all page components.