feat: design system overhaul — sidebar, AI chats, settings, brainstorm, color cleanup
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 12s
- Sidebar: dynamic brand-accent colors, brainstorm section restyled - AI chat general: popup panel with expand/collapse, hides when contextual AI open - AI chat contextual: tabs reordered (Actions first), X close button, height fix - Settings: all tabs restyled, 6 new color presets (sage, terracotta, iron, etc.) - Global color cleanup: emerald/orange hardcoded → brand-accent dynamic - Brainstorm page: orange → brand-accent throughout - PageEntry animation component added to key pages - Floating AI button: bg-brand-accent instead of hardcoded black - i18n: all 15 locales updated with new AI/billing keys - Billing: freemium quota tracking, BYOK, stripe subscription scaffolding - Admin: integrated into new design - AGENTS.md + CLAUDE.md project rules added
This commit is contained in:
@@ -21,6 +21,10 @@ export async function initializeTestDatabase(prisma: PrismaClient) {
|
||||
await prisma.$connect()
|
||||
}
|
||||
|
||||
export async function setupTestEnvironment(): Promise<void> {
|
||||
// no-op — environment is ready via Docker
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup test database
|
||||
* Disconnects Prisma client and cleans all data
|
||||
@@ -39,6 +43,7 @@ export async function cleanupTestDatabase(prisma: PrismaClient) {
|
||||
await prisma.session.deleteMany()
|
||||
await prisma.account.deleteMany()
|
||||
await prisma.verificationToken.deleteMany()
|
||||
await prisma.subscription.deleteMany()
|
||||
await prisma.user.deleteMany()
|
||||
await prisma.$disconnect()
|
||||
} catch (error) {
|
||||
@@ -46,12 +51,25 @@ export async function cleanupTestDatabase(prisma: PrismaClient) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure a test user exists with the given ID (upsert by id).
|
||||
* Needed because PostgreSQL enforces FK constraints on Note.userId / Notebook.userId.
|
||||
*/
|
||||
export async function ensureTestUser(prisma: PrismaClient, userId: string): Promise<void> {
|
||||
await prisma.user.upsert({
|
||||
where: { id: userId },
|
||||
create: { id: userId, email: `${userId}@test-fixture.internal` },
|
||||
update: {},
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Create sample test data
|
||||
*/
|
||||
export async function createSampleNotes(prisma: PrismaClient, count: number = 10) {
|
||||
const notes = []
|
||||
const userId = 'test-user-123'
|
||||
await ensureTestUser(prisma, userId)
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
const note = await prisma.note.create({
|
||||
@@ -79,6 +97,7 @@ export async function createSampleNotes(prisma: PrismaClient, count: number = 10
|
||||
export async function createSampleAINotes(prisma: PrismaClient, count: number = 10) {
|
||||
const notes = []
|
||||
const userId = 'test-user-ai'
|
||||
await ensureTestUser(prisma, userId)
|
||||
|
||||
for (let i = 0; i < count; i++) {
|
||||
const note = await prisma.note.create({
|
||||
|
||||
Reference in New Issue
Block a user