- 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
- Create .gitea/workflows/ci.yml with 4 sequential jobs
- lint: Run ESLint on root configuration
- test-backend: Run backend Vitest tests with SQLite
- test-frontend: Run frontend Vitest tests
- test-e2e: Run Playwright E2E tests (bloqueante)
- E2E job automates server startup + Playwright test execution
- Configure Gitea Secrets for IGDB, RAWG, TheGamesDB API keys
- Add artifact upload for Playwright reports on failure
- Update SECURITY.md with CI/CD Secrets setup instructions
- Update docs/API_KEYS.md with production Gitea workflow guide
- Add tests/gitea-workflow.spec.ts with 12 validation tests
- Workflow triggers on push/PR to main and develop branches
- Create tests/e2e/full-flow.spec.ts with 5 E2E scenarios
- Test home page navigation and layout
- Test game creation via form
- Test metadata search functionality
- Test ROM-to-game linking workflow
- Test complete user journey: create → search → link → view
- Configure Playwright for multi-browser testing (chromium, firefox, webkit)
- Optimize playwright.config.ts for E2E stability
- Total: 15 tests (5 scenarios × 3 browsers)
- Create .env.example with database and API key placeholders
- Add backend/.env.example for backend development
- Add frontend/.env.example for Vite frontend config
- Add tests/env-example.spec.ts with 13 validation tests
- Verify .gitignore correctly ignores .env files
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.
- 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
- 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
- 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
- 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
- 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)
- 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)
- 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
- 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
- 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
- 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.