# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## What this is ROAAUTO is a **Visual FoxPro 9** desktop application (Romanian-language) for auto-service / car-dealer operations: devize (quotes/estimates), comenzi (work orders), facturare (invoicing). It is one member of the larger "ROA" suite and shares the `COMUN\` framework with the other ROA applications (ROAACNPRO, ROAGEST, etc.). ## Build, run, version control - **Build/run requires the Visual FoxPro 9 IDE on Windows.** There is no command-line build. Open `roaauto.pjx` in the VFP IDE and use *Build > Build Executable* to produce `roaauto.exe`. - **`.prg` files are source; `.fxp` are compiled, `.bak` are backups.** Edit the `.prg`. The `.scx/.sct` (forms), `.vcx/.vct` (class libraries), `.frx/.frt` (reports), and `.mnx/.mpr` (menus) are VFP binary/generated artifacts — **edit them in the VFP IDE, not by hand.** - **Version control: git runs in parallel with the legacy SVN.** SVN (`.svn/`) remains the "live" source of truth for this project and especially for `COMUN/`, which stays a working copy synced manually to git — git does not replace it, just mirrors it for tooling (search, diffing, agent workflows). Don't run `svn` commands from here unless explicitly asked; `.gitignore` simply excludes `.svn/`. - **Repo principal** (rădăcina acestui folder): `git@gitea.romfast.ro:romfast/roaauto.git`. - **`COMUN/`** are propriul `.git`, separat de repo-ul principal (de aceea `COMUN/` e în `.gitignore`-ul de la rădăcină — nu e tracked de repo-ul principal). Origin-ul lui e **același pentru toate aplicațiile ROA**: `git@gitea.romfast.ro:romfast/comun.git` — repo partajat, populat inițial din ROAACNPRO. Nu face force-push peste el fără să verifici întâi diferențele față de `origin/main` (ar afecta toate proiectele ROA care îl folosesc). - **`config.fpw`** sets the runtime environment. Don't enable SAFETY — the code relies on silent overwrite (see `EXCLUSIVE=OFF`/`SAFETY=OFF` conventions shared across ROA apps). - The compiler error log is `roaauto.ERR`; the runtime log is `LOG.txt`. ## Searching code inside `.vcx`/`.scx` (binary) libraries Most class/form code lives **inside binaries** (`.vcx`+`.vct`, `.scx`+`.sct`, …), not in `.prg`, so plain grep can't read it cleanly. Convert to TEXT form first and grep the text: ```powershell powershell -ExecutionPolicy Bypass -File D:\ROA\UTIL\foxbin2prg\vcx2txt.ps1 ` -Project D:\ROA\ROAAUTO\roaauto.pjx -ProjectRoot D:\ROA\ROAAUTO ` -CacheRoot D:\ROA\UTIL\foxbin2prg\_textcache_roaauto ``` This is project-driven (reads `roaauto.pjx`, converts only the `.vcx`/`.scx` the project actually uses) and writes to a **cache dedicated to this project** (`D:\ROA\UTIL\foxbin2prg\_textcache_roaauto\`) — don't mix it with other ROA projects' caches (e.g. `_textcache_roaacnpro`). Then `Grep` in that cache. Full guide: `docs/cautare_vcx_vct.md`. ## The COMUN shared framework `COMUN/` is shared, framework-level code used by every ROA app — not specific to ROAAUTO. Treat it as a vendored library: prefer app-specific changes in this repo's top-level `Programe/`, `Clase/`, `Ferestre/`, `Rapoarte/`, `Meniuri/` directories, and only touch `COMUN/` when the fix genuinely belongs to the shared framework (and remember it's versioned separately, shared with every other ROA app).