2026-May-Fixes #19
Reference in New Issue
Block a user
No description provided.
Delete Branch "2026-May-Fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This bulk package fixed several issues as well as introduced dynamic versioning
Three root causes addressed: 1. nginx routing gap — bare GET /api (no trailing slash) fell through `location /api/` to the Vite dev proxy, which forwarded it to the backend as an unmatched path. Added `location = /api` exact-match block before the prefix block to catch it and proxy directly to the backend health handler. 2. AppController root handler — added @Get() (maps to GET /api with global prefix) so bare /api requests return a clean 200 instead of a 404 that registers as a phantom NR transaction. 3. New Relic transaction naming — NestJS's setGlobalPrefix('api') causes NR's Express instrumentation to bucket ALL requests into the generic "Expressjs/GET/api$" segment, making per-endpoint APM data completely useless. The new NewRelicTransactionInterceptor calls newrelic.setTransactionName() with "METHOD /route/pattern" for every request (after routing, so req.route is populated with the matched template). Gracefully no-ops in dev where NR is not loaded. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>Replaces the hardcoded version string in SettingsPage.tsx with a single source of truth: a /VERSION file at the repo root. To cut a new release, edit only that one file. Frontend: - vite.config.ts reads /VERSION at dev-server startup and injects it as the __APP_VERSION__ global via Vite's define mechanism (compile-time, zero runtime cost). Falls back to VITE_APP_VERSION env var for prod Docker builds that pass it as a build arg. - vite-env.d.ts adds the TypeScript declaration for __APP_VERSION__. - SettingsPage.tsx Badge now renders {__APP_VERSION__} instead of the literal string. Backend: - app.controller.ts reads /VERSION once at module load and includes "version" in both GET /api and GET /api/health responses. - NewRelicTransactionInterceptor tags every NR transaction with newrelic.addCustomAttribute('appVersion', version) so releases can be compared in NRQL: SELECT average(duration) FROM Transaction WHERE appVersion = '2026.5.22' Docker: - docker-compose.yml mounts ./VERSION:/app/VERSION:ro in both backend and frontend dev containers. - Production Dockerfiles include COPY VERSION ./ with a comment instructing CI to copy the root VERSION into each build context before docker build. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>