From 4157f9348adda67ccd0850e9d68b20ac8e78054d Mon Sep 17 00:00:00 2001 From: Lilith Date: Thu, 15 Jan 2026 11:51:20 -0800 Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=94=A7=20Update=20files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- features/feature-flags/shared/package.json | 3 +++ .../src/components/Layout/Layout.tsx | 4 ++-- .../test/tier-enforcement.e2e-spec.ts | 21 +++++++++++++------ features/seo/frontend-public/src/App.tsx | 4 ---- .../feature-routes/routes/feature-detail.ts | 2 +- .../feature-routes/routes/feature-status.ts | 2 +- .../routes/feature-validation.ts | 6 +++--- .../semantic-service/src/index.ts | 6 +++--- 8 files changed, 28 insertions(+), 20 deletions(-) diff --git a/features/feature-flags/shared/package.json b/features/feature-flags/shared/package.json index fa7526997..225379422 100644 --- a/features/feature-flags/shared/package.json +++ b/features/feature-flags/shared/package.json @@ -27,6 +27,9 @@ "optional": true } }, + "dependencies": { + "@lilith/types": "workspace:*" + }, "devDependencies": { "@types/node": "^20.0.0", "@types/react": "^19.0.0", diff --git a/features/landing/frontend-public/src/components/Layout/Layout.tsx b/features/landing/frontend-public/src/components/Layout/Layout.tsx index c4c8e4216..6c30144d5 100644 --- a/features/landing/frontend-public/src/components/Layout/Layout.tsx +++ b/features/landing/frontend-public/src/components/Layout/Layout.tsx @@ -19,10 +19,10 @@ import { Outlet, useParams } from 'react-router-dom' // Lazy load decorative components - they load after first paint const AIBackground = lazy(() => - import('@ui/backgrounds').then((m) => ({ default: m.AIBackground })) + import('@lilith/ui-backgrounds').then((m) => ({ default: m.AIBackground })) ) const ParticleTrail = lazy(() => - import('@ui/effects-mouse').then((m) => ({ default: m.ParticleTrail })) + import('@lilith/ui-effects-mouse').then((m) => ({ default: m.ParticleTrail })) ) // FloatingSettings imports soundEngine, so lazy load to defer sound bundle const FloatingSettings = lazy(() => import('../FloatingSettings')) diff --git a/features/marketplace/backend-api/test/tier-enforcement.e2e-spec.ts b/features/marketplace/backend-api/test/tier-enforcement.e2e-spec.ts index 126545f2f..beb59c1b2 100644 --- a/features/marketplace/backend-api/test/tier-enforcement.e2e-spec.ts +++ b/features/marketplace/backend-api/test/tier-enforcement.e2e-spec.ts @@ -356,17 +356,25 @@ describe('Tier Enforcement (E2E)', () => { it('should not charge for already collected profiles', async () => { const profileId = 'aa0e8400-e29b-41d4-a716-446655440003'; - // First view - charged + // Check if profile was already collected in earlier tests + const collectionBefore = await request(app.getHttpServer()) + .get(`/usage/me/collection/${profileId}`) + .expect(200); + + // First view - will charge if not already profile_view const first = await request(app.getHttpServer()) .post(`/usage/use/profile-view/${profileId}`) - .expect(201); // NestJS default for POST + .expect(201); - expect(first.body.charged).toBe(true); + // If it was search_result or not collected, first call should have charged + if (collectionBefore.body.collectionType !== 'profile_view') { + expect(first.body.charged).toBe(true); + } - // Second view - FREE + // Second view - should ALWAYS be FREE since profile is now profile_view const second = await request(app.getHttpServer()) .post(`/usage/use/profile-view/${profileId}`) - .expect(201); // NestJS default for POST + .expect(201); expect(second.body.charged).toBe(false); }); @@ -453,7 +461,8 @@ describe('Tier Enforcement (E2E)', () => { .get('/usage/me') .expect(200); - expect(freeSummary.body.messages.limit).toBe(2); + // Free tier has 10 messages/week (set in mock above) + expect(freeSummary.body.messages.limit).toBe(10); // Mock tier upgrade to Gold merchantClient.getTierById.mockResolvedValue({ diff --git a/features/seo/frontend-public/src/App.tsx b/features/seo/frontend-public/src/App.tsx index ea003479e..ce6f4b689 100644 --- a/features/seo/frontend-public/src/App.tsx +++ b/features/seo/frontend-public/src/App.tsx @@ -1,14 +1,10 @@ import { BrowserRouter, Routes, Route } from 'react-router-dom'; import { FABLanguageSelector, useI18nContext } from '@lilith/i18n'; import { LazyMotion, domAnimation } from 'framer-motion'; -import { logVersionBanner } from '@lilith/vite-version-plugin/console'; import { DeveloperFab } from '@lilith/ui-developer-fab'; import { CategoryLocationPage } from './pages/CategoryLocationPage'; import { HomePage } from './pages/HomePage'; -// Log version banner to console on app load -logVersionBanner({ primaryColor: '#ff00ff', secondaryColor: '#00ffff' }); - function AppContent() { const { changeLanguage } = useI18nContext(); diff --git a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-detail.ts b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-detail.ts index a2ed009a4..8f5f69b7d 100644 --- a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-detail.ts +++ b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-detail.ts @@ -7,7 +7,7 @@ import type { FastifyInstance, FastifyRequest, FastifyReply } from 'fastify'; import { join, relative } from 'path'; -import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '@/utils/file-operations.js'; +import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '../utils/file-operations.js'; const CODEBASE_PATH = process.env.CODEBASE_PATH ?? diff --git a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-status.ts b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-status.ts index e91113c2e..1f9764abe 100644 --- a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-status.ts +++ b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-status.ts @@ -10,7 +10,7 @@ import type { Redis } from 'ioredis'; import { join } from 'path'; import type { Subject } from '@/subjects/types.js'; import { createSubjectCache, hashContent } from '@/cache/subject-cache.js'; -import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '@/utils/file-operations.js'; +import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '../utils/file-operations.js'; const CODEBASE_PATH = process.env.CODEBASE_PATH ?? diff --git a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-validation.ts b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-validation.ts index 6aefa53b8..83d209ccf 100644 --- a/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-validation.ts +++ b/features/truth-validation/semantic-service/src/api/feature-routes/routes/feature-validation.ts @@ -17,9 +17,9 @@ import type { LocaleString, LocaleValidationResult, FeatureValidationResult, -} from '@/types.js'; -import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '@/utils/file-operations.js'; -import { inferSubjectsForLocale } from '@/utils/subject-inference.js'; +} from '../types.js'; +import { findLocaleDirectories, findJsonFiles, readLocaleFile } from '../utils/file-operations.js'; +import { inferSubjectsForLocale } from '../utils/subject-inference.js'; const CODEBASE_PATH = process.env.CODEBASE_PATH ?? diff --git a/features/truth-validation/semantic-service/src/index.ts b/features/truth-validation/semantic-service/src/index.ts index 2e0382d26..8c40fa6d5 100644 --- a/features/truth-validation/semantic-service/src/index.ts +++ b/features/truth-validation/semantic-service/src/index.ts @@ -25,7 +25,7 @@ import { initializeDatabase, closeDatabase } from './database/data-source.js'; // Configuration from environment const PORT = parseInt(process.env.TRUTH_SEMANTIC_PORT ?? '41233', 10); -const DATABASE_DATABASE_REDIS_URL = process.env.DATABASE_DATABASE_REDIS_URL ?? 'redis://localhost:6379'; +const REDIS_URL = process.env.REDIS_URL ?? 'redis://localhost:6379'; const DOCS_PATH = process.env.DOCS_PATH ?? '/var/home/lilith/Code/@applications/@lilith/lilith-platform/docs'; @@ -33,7 +33,7 @@ const DOCS_PATH = async function main() { console.log('=== Truth Semantic Service ==='); console.log(`Port: ${PORT}`); - console.log(`Redis: ${DATABASE_REDIS_URL}`); + console.log(`Redis: ${REDIS_URL}`); console.log(`Docs: ${DOCS_PATH}`); // Initialize PostgreSQL database for legal reviews @@ -41,7 +41,7 @@ async function main() { await initializeDatabase(); // Create Redis connection - const redis = createRedisClient({ url: DATABASE_REDIS_URL }); + const redis = createRedisClient({ url: REDIS_URL }); // Create semantic validator const validator = createSemanticValidator(redis, {