## Bug Fixes ### Note Card Actions - Fix broken size change functionality (missing state declaration) - Implement React 19 useOptimistic for instant UI feedback - Add startTransition for non-blocking updates - Ensure smooth animations without page refresh - All note actions now work: pin, archive, color, size, checklist ### Markdown LaTeX Rendering - Add remark-math and rehype-katex plugins - Support inline equations with dollar sign syntax - Support block equations with double dollar sign syntax - Import KaTeX CSS for proper styling - Equations now render correctly instead of showing raw LaTeX ## Technical Details - Replace undefined currentNote references with optimistic state - Add optimistic updates before server actions for instant feedback - Use router.refresh() in transitions for smart cache invalidation - Install remark-math, rehype-katex, and katex packages ## Testing - Build passes successfully with no TypeScript errors - Dev server hot-reloads changes correctly
58 lines
2.0 KiB
TypeScript
58 lines
2.0 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { getAIProvider } from '@/lib/ai/factory'
|
|
import { getSystemConfig } from '@/lib/config'
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const config = await getSystemConfig()
|
|
const provider = getAIProvider(config)
|
|
|
|
// Test with a simple embedding request
|
|
const testText = 'test'
|
|
const embeddings = await provider.getEmbeddings(testText)
|
|
|
|
if (!embeddings || embeddings.length === 0) {
|
|
return NextResponse.json(
|
|
{
|
|
success: false,
|
|
provider: config.AI_PROVIDER || 'ollama',
|
|
error: 'No embeddings returned',
|
|
details: {
|
|
provider: config.AI_PROVIDER || 'ollama',
|
|
baseUrl: config.OLLAMA_BASE_URL || process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
|
|
model: config.AI_MODEL_EMBEDDING || process.env.OLLAMA_EMBEDDING_MODEL || 'embeddinggemma:latest'
|
|
}
|
|
},
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
|
|
return NextResponse.json({
|
|
success: true,
|
|
provider: config.AI_PROVIDER || 'ollama',
|
|
embeddingLength: embeddings.length,
|
|
firstValues: embeddings.slice(0, 5),
|
|
details: {
|
|
provider: config.AI_PROVIDER || 'ollama',
|
|
baseUrl: config.OLLAMA_BASE_URL || process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
|
|
model: config.AI_MODEL_EMBEDDING || process.env.OLLAMA_EMBEDDING_MODEL || 'embeddinggemma:latest'
|
|
}
|
|
})
|
|
} catch (error: any) {
|
|
console.error('AI test error:', error)
|
|
return NextResponse.json(
|
|
{
|
|
success: false,
|
|
error: error.message || 'Unknown error',
|
|
stack: process.env.NODE_ENV === 'development' ? error.stack : undefined,
|
|
details: {
|
|
provider: process.env.AI_PROVIDER || 'ollama',
|
|
baseUrl: process.env.OLLAMA_BASE_URL || 'http://localhost:11434',
|
|
model: process.env.OLLAMA_EMBEDDING_MODEL || 'embeddinggemma:latest'
|
|
}
|
|
},
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|