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:
@@ -6,7 +6,7 @@ import {
|
||||
isPageHumanStringKey,
|
||||
} from './constants'
|
||||
import { pageSpecV1Schema } from './schema'
|
||||
import { validateSimExprRefs } from './sim-eval'
|
||||
import { validateSimExprRefs, isValidSimParamId } from './sim-eval'
|
||||
import type {
|
||||
PageBlock,
|
||||
PageSpecV1,
|
||||
@@ -79,6 +79,13 @@ function validateSim(
|
||||
if (sim.simId === 'generic-formula') {
|
||||
const generic = sim as Extract<typeof sim, { simId: 'generic-formula' }>
|
||||
const paramIds = new Set(generic.params.map((p) => p.id))
|
||||
if (paramIds.size !== generic.params.length) {
|
||||
out.push(issue('sim_duplicate_id', `${path}.params`, 'Duplicate param id'))
|
||||
}
|
||||
const computedIds = new Set(generic.computed.map((c) => c.id))
|
||||
if (computedIds.size !== generic.computed.length) {
|
||||
out.push(issue('sim_duplicate_id', `${path}.computed`, 'Duplicate computed id'))
|
||||
}
|
||||
for (const p of generic.params) {
|
||||
if (p.min >= p.max) {
|
||||
out.push(issue('sim_param_range', `${path}.params`, `Param "${p.id}": min >= max`))
|
||||
|
||||
Reference in New Issue
Block a user