71 lines
5.2 KiB
Markdown
71 lines
5.2 KiB
Markdown
# 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).
|
|
|
|
## Mod de lucru: delegare către subagenți + review înainte de commit
|
|
|
|
Preferințele lui Marius pentru sesiunile pe acest proiect:
|
|
|
|
- **Delegare**: modificările de cod de volum/rutină (aplicarea unei propuneri din `docs/propuneri_*.md`, editări pe cache-ul text + write-back, actualizări de documentație, rulări de teste) se deleagă către **subagenți Sonnet care lucrează în background** (team agents — Agent tool cu `model: sonnet`, lane-uri paralele unde e posibil), iar sesiunea principală doar orchestrează și monitorizează: împarte planul pe lane-uri, transmite constatările între agenți, verifică rezultatele (diff, teste, fidelity) și intervine direct doar la deblocări (procese agățate), decizii și verificări.
|
|
- **Fără commit fără review**: nu da commit din proprie inițiativă pe modificări de cod — Marius vrea întâi să **vadă diff-ul**. Pentru binarele VFP (`.vcx`/`.scx`), diff-ul lizibil se face pe forma text: regenerează textul din binarul vechi (HEAD din git) cu `vcx2txt.ps1 -Source` și compară-l cu textul editat din cache (`git diff --no-index`). Commit doar după ce Marius confirmă pe diff.
|
|
- **Arată diff-ul complet după orice modificare**: după ce agenții (proprii sau subagenți) termină o rundă de editări — inclusiv la asamblarea rezultatelor din lane-uri paralele — afișează-i lui Marius diff-ul complet (`git diff`, nu doar rezumat/`--stat`) înainte de a continua la pasul următor sau de a cere aprobare, nu doar un sumar descriptiv al schimbărilor.
|
|
|
|
## Project insights (docs/)
|
|
|
|
Vezi indexul din [`docs/README.md`](docs/README.md). Oferă-mi proactiv actualizarea `docs/`
|
|
ori de câte ori descoperi un insight nou și ne-evident despre acest proiect (flux ascuns,
|
|
capcană, convenție, procedură/pachet cheie, tabel relevant) — nu aștepta să fii întrebat.
|