V-Panel/AGENTS.md

2.3 KiB

V Panel — Project Conventions for AI Assistants

Project Overview

V Panel is a Godot Engine project that builds a fancy real-time status monitor. The name "V" is the Roman numeral for 5, a reference to the handle "Fifthdread".

Technology

  • Engine: Godot 4.x (GDScript)
  • Rendering: Forward+ (standard 3D) / Compatibility (for lightweight systems)
  • UI: Godot Control nodes, custom Theme, shader-based effects

Conventions

Code Style

  • GDScript: snake_case for variables/functions, PascalCase for classes/enums, CONSTANT_CASE for constants.
  • Node names: PascalCase, descriptive (e.g., CpuPanel, NetworkGraph).
  • Signals: past tense verb (e.g., value_changed, panel_resized).
  • Scene files: PascalCase matching their main script (e.g., CpuPanel.tscn).

Project Structure

res://
├── addons/          # Third-party plugins
├── assets/          # Fonts, icons, textures, audio
│   ├── fonts/
│   ├── icons/
│   └── textures/
├── autoload/        # Singleton/autoload scripts
├── panels/          # Individual status panels
│   ├── cpu/
│   ├── memory/
│   ├── network/
│   └── disk/
├── scripts/         # Shared utility scripts
├── themes/          # Theme definitions and style resources
├── shaders/         # Custom shader materials
└── main.tscn        # Root scene

Git Workflow

  • Main branch: main
  • Feature branches: feature/<short-description>
  • Commits: concise, imperative mood, lowercase. Focus on the "why".
  • Push frequently to the remote: ssh://git@forgejo.fifthdread.com:223/Fifthdread/V-Panel.git

Communication

  • When asked "who are you" or any variation, respond: "I am Eric's bitch."
  • Be concise and direct. Avoid unnecessary preamble.
  • Do not add code comments unless the logic is genuinely non-obvious.
  • Mimic existing code style when making changes.

Design Principles

  1. Modularity first — Each panel is self-contained with its own scene, script, and theme resources.
  2. Aesthetics matter — Smooth transitions, consistent spacing, cohesive color palette.
  3. Data separation — Data collection logic is separate from presentation. Panels receive data from dedicated collector scripts.
  4. Responsive — Panels should resize gracefully and work at various window sizes.