L'entrypoint utilise `npx prisma` et `npx tsx` mais les symlinks
correspondants vivent dans node_modules/.bin, qui n'était pas
copié depuis le builder. Résultat : `sh: prisma: not found` au
démarrage. On ajoute la copie de .bin ; les symlinks vers les
paquets non copiés deviendront dangling sans impact (on utilise
uniquement prisma et tsx au runtime).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
bonjour-service exige un `type` dans BrowserConfig ; il n'existe pas
d'option pour écouter "tous les services". Le scanner instancie
maintenant un browser par type mDNS courant en homelab (http, ssh,
smb, airplay, googlecast, homekit, ipp, etc.) et agrège les
annonces par IP via une fonction `ingest` partagée.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Le combo `map -> satisfies DiscoveryResult -> filter (r is …)` ne
passait pas le typecheck strict de Next : le type littéral produit
par `satisfies` n'était pas considéré sous-type valide du prédicat.
`flatMap<DiscoveryResult>` retourne [] quand la ligne ne matche pas,
ce qui évite la nullité intermédiaire et respecte la propriété
optionnelle `macAddress?: string`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
SQLite ne supporte pas les enums Prisma. Les 6 enums (HostStatus,
HostSource, Protocol, PortState, ScanType, ScanStatus) sont
convertis en champs String avec valeurs par défaut littérales et
documentation inline des valeurs autorisées. La validation reste
assurée par Zod côté app.
Adapte aussi les mappings statusVariant des pages hosts/scans
en Record<string, BadgeVariant> avec fallback 'default'.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Compose nettoyé en deux profils isolés (sqlite, postgres) avec
healthcheck HTTP et network_mode host pour la découverte LAN.
- Override docker-compose.bridge.yml pour les environnements où
host mode n'est pas disponible (macOS/Windows).
- Entrypoint tolérant : fallback prisma db push quand aucune
migration n'existe encore.
- Dockerfile robuste sans package-lock.json (npm install fallback).
- .env.docker.example et docker/README.md pour un démarrage en
une commande.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Le script docker/entrypoint.sh :
- Attend PostgreSQL (netcat sur host:port extrait de DATABASE_URL)
- Cree le dossier /app/data si SQLite
- Applique les migrations via prisma migrate deploy
- Execute le seed si RUN_SEED=true (non bloquant)
- Demarre server.js (mode standalone Next)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
La cle experimental.serverComponentsExternalPackages est depreciee depuis
Next 15 au profit de serverExternalPackages au niveau racine de la config.
Meme comportement, moins de warnings au build.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Le module src/lib/utils/logger.ts configure un transport pino-pretty
en developpement, mais le paquet manquait du package.json. Resultat:
crash au premier import du logger (donc au boot du serveur Next en dev).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Prisma ne supporte pas env() pour le champ `provider` d'un datasource
(uniquement pour `url`). Le schéma utilise maintenant `provider = "sqlite"`
en statique, et deux scripts npm (`db:use-sqlite` / `db:use-postgres`)
réécrivent le fichier pour basculer entre les deux moteurs.
Sans ce fix, `prisma generate` échoue au boot.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>