V-Panel/AGENTS.md

3.2 KiB
Raw Blame History

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).

Shaders

  • vial_fill.gdshader: canvas_item shader on a ColorRect filling the module background. Uses rounded-rect SDF (rr_sdf), sum-of-sines water surface with edge damping, and layered effects (wave distortion, ripple rings, swirl, HSV shift, top-down lighting, sparkle, foam line).
  • Noise texture: a static 100×100 PNG (assets/textures/noise_100.png) loaded at runtime and passed as noise_tex sampler2D uniform. Used for organic distortion modulation.
  • Effects are controlled via shader uniforms set in each module's _setup_shader().

Labels / Readability

  • All percentage labels get a 3px black outline (outline_size / font_outline_color) for legibility against the liquid shader background.
  • Title labels get a 2px outline.

Project Structure

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

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.