Commit Graph

14 Commits

Author SHA1 Message Date
c27e9bec7a feat: add frontend README and backend test database
- Create frontend/README.md with setup, testing, and API integration instructions
- Add backend test database file for local testing
- Implement README validation tests to ensure documentation completeness
- Update project documentation to reflect new structure and features
2026-02-12 20:53:59 +01:00
571ac97f00 feat: implement ROMs management UI (Phase 8)
Backend (Phase 8.1):
- Add ROMs endpoints: GET, GET/:id, PUT/:id/game, DELETE
- Add metadata search endpoint using IGDB/RAWG/TGDB
- Implement RomsController with ROM CRUD logic
- Add 12 comprehensive ROM endpoint tests
- Configure Vitest to run tests sequentially (threads: false)
- Auto-apply Prisma migrations in test setup

Frontend (Phase 8.2 + 8.3):
- Create ROM types: RomFile, Artwork, EnrichedGame
- Extend API client with roms and metadata namespaces
- Implement 5 custom hooks with TanStack Query
- Create ScanDialog, MetadataSearchDialog, RomCard components
- Rewrite roms.tsx page with table and all actions
- Add 37 comprehensive component and page tests

All 122 tests passing: 63 backend + 59 frontend
Lint: 0 errors, only unused directive warnings
2026-02-12 19:52:59 +01:00
630ebe0dc8 feat: implement complete game management with CRUD functionality
Backend:
- Add RESTful API endpoints for games: GET, POST, PUT, DELETE /api/games
- Implement GamesController for handling game operations
- Validate game input using Zod
- Create comprehensive tests for all endpoints

Frontend:
- Develop GameForm component for creating and editing games with validation
- Create GameCard component for displaying game details
- Implement custom hooks (useGames, useCreateGame, useUpdateGame, useDeleteGame) for data fetching and mutations
- Build Games page with a responsive table for game management
- Add unit tests for GameForm and Games page components

Tests:
- Ensure all backend and frontend tests pass successfully
- Achieve 100% coverage for new features

All changes are thoroughly tested and validated.
2026-02-11 22:09:02 +01:00
79c42fad55 feat: stream hashing y entradas en archivos
- Añade `computeHashesFromStream` para hashing desde streams
- Añade `streamArchiveEntry` e integra en `importDirectory` (path codificado con ::)
- Extiende `scanDirectory` para exponer entradas internas, normaliza rutas POSIX y evita traversal; `ARCHIVE_MAX_ENTRIES` configurable
- Limpia listeners en hashing y mejora robustez/logging
- Añade tests unitarios e integración; actualiza mocks a `Mock` types
- CI: instala `unzip` junto a `p7zip` para soportar tests de integración
2026-02-09 19:49:56 +01:00
7ca465fb73 feat: stream hashing and archive-entry import support
- Añade `computeHashesFromStream` para hashing desde streams
- Adapta `importDirectory` para procesar entradas internas usando `streamArchiveEntry`
- Añade tests unitarios para hashing por stream e import de entradas de archive
2026-02-09 19:36:18 +01:00
97a7f74685 feat: expose archive entries in fsScanner
- Añade `scanDirectory` support para listar entradas internas de ZIP/7z
- Añade test unitario que mockea `archiveReader.listArchiveEntries`
- Añade límite configurable `ARCHIVE_MAX_ENTRIES` y comprobación básica de seguridad
2026-02-09 19:26:00 +01:00
ab63361e66 feat: add streamArchiveEntry to archiveReader and tests
- Añade `streamArchiveEntry` que devuelve un stream para entradas internas de ZIP/7z
- Añade tests unitarios que mockean `child_process.spawn` (7z + unzip fallback)
- Mantiene `listArchiveEntries` y documenta dependencia de binarios en CI
2026-02-09 19:15:55 +01:00
a702310da4 feat: add datVerifier and tests
- Añade `datVerifier` con `parseDat` y `verifyHashesAgainstDat`
- Añade tests y fixture XML para validar matching por CRC/MD5/SHA1/size
- Añade `fast-xml-parser` en `backend/package.json` (devDependency)
2026-02-09 18:50:11 +01:00
0526ff960f feat: add archive reader and tests
- Añade `archiveReader` que lista entradas en ZIP/7z con fallback a `unzip`
- Añade tests unitarios que mockean `child_process.exec` para validar parsing
- Documenta dependencia de binarios en README y CI (pasos previos)
2026-02-09 18:30:00 +01:00
12636aefc3 chore(ci): instalar binarios y documentar dependencias
- Añade sección en README.md con instrucciones para p7zip (7z) y chdman
- Actualiza .gitea/workflows/ci.yaml para intentar instalar p7zip-full y mame-tools/mame (continue-on-error)
- Ajusta importService para validar ruta y pasar logger desde la ruta de import
2026-02-09 18:19:45 +01:00
4298b003d9 feat: import job runner in-memory
- Añade ImportRunner en memoria con concurrencia configurable
- Tests TDD para enqueue, concurrencia y comportamiento tras stop
- Actualiza /api/import/scan para encolar jobs y registrar errores
- Ajusta tsconfig.json para incluir tests en comprobaciones de tipo
2026-02-08 22:24:56 +01:00
1a42422c7e chore: configurar Prisma y limpiar artefactos
- Genera Prisma Client y aplica migración de prueba
- Ajusta configuración de Yarn (nodeLinker) para resolver PnP
- Añade reglas a .gitignore y elimina artefactos generados
2026-02-08 17:36:18 +01:00
f4bee94a16 chore: update Prisma and dependencies, add initial migration and tests
- Updated Prisma and @prisma/client to version 6.19.2 in package.json and yarn.lock.
- Added package extensions for @prisma/client in .yarnrc.yml.
- Updated backend README.md for clearer setup instructions.
- Created initial migration for Game, Platform, and related tables in Prisma.
- Added migration lock file for version control.
- Implemented tests for Game model using Vitest, including creation and unique slug constraint checks.
2026-02-08 12:36:36 +01:00
fb4b279db0 chore(docs): completar Fase 2 — requisitos y arquitectura
- Añade/actualiza `docs/requirements.md`, `docs/architecture.md`, `docs/api-integration.md`, `docs/data-model.md`
- Documenta criterios de aceptación y decisiones técnico-arquitectónicas
- Recomendación: añadir `docs/legal-considerations.md` (pendiente)
2026-02-08 10:45:22 +01:00