feat: dashboard Second Brain, essai 7 jours et vérification e-mail
Rendre le dashboard actionnable (inbox, peek, carte mentale), aligner la facturation sur l’essai 7 jours, et bloquer le login e-mail tant que l’adresse n’est pas confirmée. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -214,6 +214,32 @@ export function normalizeSlideDeck(input: {
|
||||
}
|
||||
return { ...s, stats: valid.slice(0, 4) }
|
||||
}
|
||||
// Equation without real formulas → degrade to bullets (avoid shipping f(x)=?)
|
||||
if (s.type === 'equation') {
|
||||
const eqs = Array.isArray(s.equations) ? s.equations : []
|
||||
const real = eqs.filter((eq: any) => String(eq?.latex || '').trim() && !/f\s*\(\s*x\s*\)\s*=\s*\?/i.test(String(eq.latex)))
|
||||
if (real.length === 0) {
|
||||
return {
|
||||
type: 'bullets',
|
||||
title: trimStr(s.title || 'Points clés', 90),
|
||||
items: cleanList(
|
||||
[...(s.explanation ? [String(s.explanation)] : []), ...eqs.map((eq: any) => eq?.label).filter(Boolean)],
|
||||
4,
|
||||
140,
|
||||
),
|
||||
}
|
||||
}
|
||||
return { ...s, equations: real.slice(0, 4) }
|
||||
}
|
||||
// Image without URL → degrade to bullets (avoid placeholder in final deck)
|
||||
if (s.type === 'image' && !String(s.url || '').trim()) {
|
||||
const caption = String(s.caption || '').trim()
|
||||
return {
|
||||
type: 'bullets',
|
||||
title: trimStr(s.title || 'Illustration', 90),
|
||||
items: caption ? [caption] : cleanList(s.items, 3, 140),
|
||||
}
|
||||
}
|
||||
return s
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user