Notas cortas de cada release. Más reciente arriba.
Cuando volvés a contar la misma historia con detalles distintos, la app la detecta y te enlaza las versiones. Vos confirmás si es la misma o las dejás separadas.
La memoria es reconstructiva. La misma persona cuenta la misma historia tres veces a lo largo del tiempo y cada vez recuerda algo distinto: un detalle nuevo, una versión más cuidada, una contradicción consigo misma. Lo que se perdía hasta ahora era el rastro de cómo la memoria fue cambiando — la app sobreescribía o guardaba dos anécdotas separadas sin reconocer que era el mismo evento.
Cuando guardás una anécdota nueva, en background corre una pasada de similitud (token-bag cosine — sin llamada a IA, ~50ms) contra las últimas 100 anécdotas que escribiste. Si encuentra alguna parecida arriba del threshold, deja un link candidato en una tabla nueva (anecdote_links).
Más tarde, cuando volvés a la anécdota, ves una sección discreta al pie del detalle:
§ Otras versiones de este recuerdo
"Las galletas de los sábados" — 2026-08-12 · 67%
Con dos botones inline: Misma historia ✓ o Son distintas ✗. La UI es la misma que ya tenemos para validación de themes en entrevistas — confirm/dismiss optimista, link a la otra anécdota, fade-out al descartar.
No necesitamos una tabla anecdote_versions ni un flujo "guardar como nueva versión" ni un selector explícito. El usuario re-cuenta la historia (porque la recordó distinto), la app la enlaza con la versión vieja, y vos confirmás. La cronología emerge gratis de los created_at de cada una.
Honestidad sobre el alcance:
Un endpoint POST async post-save que dispara fire-and-forget (mismo patrón que el AI rate dispatch que ya existe). Ningún cron nuevo, ninguna tabla pesada, cero llamadas extra al LLM. La detección es casi gratis en infra; el valor está en darle al usuario el espacio de reconocer su propia memoria como un objeto que cambia con el tiempo.
Dejamos de inventar la fecha de cada anécdota. Ahora cada una se ubica en la línea de tiempo con la precisión real con la que la recordás.
Hasta ahora, si una anécdota no tenía fecha exacta, la línea de tiempo la ubicaba en el día que la escribiste, no en el día que pasó. Lo marcábamos como "inferida" en gris, pero seguía siendo una mentirita: una historia de tu adolescencia caía en el mes que la subiste a la app.
Una historia escrita ayer no pasó ayer. La fecha de creación es metadata del sistema, no del recuerdo.
Cada anécdota se guarda ahora con uno de estos cuatro niveles, según lo que el usuario haya contado:
happened_date exacto. "El 14 de marzo del 96."En el heatmap cada nivel tiene su propio tratamiento visual: las fechas exactas son celdas mensuales, los años aprox. son columnas tenues con un ≈ arriba, y las épocas son franjas con hatching diagonal sobre los años que abarcan. Las "sin fecha" no se grafican — un contador discreto al pie te dice cuántas hay.
El chat editorial (/anecdotes/new) y la entrevista (/biography/interview) ya entienden expresiones rioplatenses y sacan el nivel correcto sin pedírtelo:
Regla de oro del prompt: preferimos honestidad sobre precisión inventada. Si duda entre "exacto" y "aprox", elige aprox.
En /anecdotes/[id]/edit ahora hay un selector de precisión al lado del texto: Día / Año / Época / No sé. Si la extracción del chat se equivocó, lo corregís sin tener que volver a explicarle al modelo.
Las funciones SQL compute_user_score y evaluate_achievements (logro five_years) ahora leen anecdotes.happened_date como fuente canónica, con fallback a la columna de origen heredado y al año de época cuando aplica. Las anécdotas que tagueaste con fecha real ya no se cuentan por la fecha en que las escribiste.
Para anécdotas viejas que sólo tenían created_at como única señal temporal (precision = "sin fecha" después de la migración), hay un script one-shot en scripts/backfill-anecdote-dates.mjs que las pasa por una extracción LLM y popula los campos cuando el texto da pistas claras. Soporta --dry-run, filtro por --user, y es idempotente.
Círculos cerrados nombrados (Familia / Trabajo / La banda) + cartas al futuro con entrega programada.
Podés crear grupos chicos de amigos con nombre — "Familia", "Amigos del barrio", "La banda" — en /dashboard/circulos. Asignás miembros uno por uno (tienen que ser amigos aceptados primero). Cuando compartís una anécdota, en el dialog de share ahora hay una sección "Círculos" arriba de la lista de amigos: marcás los círculos que quieras y solo sus miembros la ven.
La promesa de la red social lenta se vuelve verificable: "Vos decidís qué sale, a quién, y cuándo."
Nueva ruta /cartas. Escribís ahora una carta para alguien — tu hija de 18 años, tu pareja en su próximo aniversario, vos mismo en 10 años — y elegís cuándo entregarla:
2035-12-25.Un cron diario despierta las cartas cuando llega su fecha. Si el destinatario tiene cuenta de Anecdotario, la carta se materializa como un cofre que recibe en su /keepsakes. Si no tiene cuenta, te llega una notif que dice "tu carta para X está lista" y la mandás manualmente desde el editor de cofres pre-llenado (auto-send a externos espera Resend).
Mientras está sellada podés cancelarla. Una vez entregada, pasa al keepsake y vive ahí.
Lo que aún no está: self-letter (la versión "para vos mismo en 10 años") y el path post-mortem (depende del feature de herencia digital). El form los menciona explícitamente como "en construcción" donde aplica — preferimos honestidad sobre marketing.
Memorialización, lectura silenciosa, fechas duras y tono por anécdota — para que la app sepa cuándo callarse.
Una app que guarda toda tu vida tiene una responsabilidad rara: aprender cuándo callarse.
Si marcás la fecha de fallecimiento de alguien, dejamos de traerlo en sugerencias automáticas — no más cumpleaños recordados, no más "esta semana hace cinco años…", no más preguntas alegres. La persona sigue en tus anécdotas; vos podés escribir cuando quieras.
Sumamos también un modo de lectura silenciosa — una pantalla limpia para releer las anécdotas de alguien, una a una, sin métricas ni adornos.
Para fechas que querés reservar más allá de una persona — un diagnóstico, un aniversario complicado — podés marcarlas como fechas duras (con un recordatorio opt-in) o como días en silencio (la app no manda nada automatizado).
Y cada anécdota puede llevar un tono — alegre, difícil, mixto — para que las sugerencias sepan cuándo callarse.
Una tanda de mejoras chicas: pregunta curada cada lunes, aviso de cumples a 7 días vista, Whisper que entiende rioplatense, y borrar tu cuenta sin chatbots.
Una tanda de mejoras chicas:
/dashboard/profile, hacés click, y se borra todo (anécdotas, fotos, audios, perfil). Sin chatbots de retención, sin trámites.Mapa de calor con todas tus anécdotas a lo largo de los años, mini-entrevista al subir foto que detecta EXIF y sugiere personas.
Nueva ruta /timeline con tu vida entera en una pantalla. Mapa de calor estilo broadsheet editorial: meses en el eje vertical, años en el horizontal. Cada celda mensual brilla más cuando hubo más anécdotas en ese mes. Click en una celda te abre la anécdota destacada.
Sin librerías de viz pesadas — pure SVG + matemática.
Cuando subís una foto, el chat editorial que ya existía ahora lee EXIF (fecha y coords GPS) y sugiere personas de tu grafo (top 12 por menciones, excluyendo memorializadas). El LLM recibe esto como contexto y abre con preguntas concretas:
"¿Esto fue en 2018? Veo que mencionás seguido a tu vieja, tu hermano y a Sole — ¿alguno aparece en esta foto?"
En lugar de:
"¿Quiénes aparecen en la foto?"
La promesa del showroom ("como una mini-entrevista, no como un formulario") ahora es real, no solo aspiracional.
Cuando hovereás una línea entre dos personas en el grafo (/people/graph), aparece un tooltip con los títulos de las anécdotas en las que aparecen juntas. La línea ya no es solo un peso numérico — es la lista concreta de las historias compartidas.
Cuando cancelás tu suscripción, tu cuenta entra en modo museo: leés y exportás todo lo tuyo, las composiciones siguen ahí. Sin perder nada.
Las apps que dependen de tu corpus tienen un problema feo: cuando dejás de pagar, te bloquean acceso a lo que vos escribiste. Eso convierte el corpus en una jaula.
Anecdotario funciona distinto. Si dejás de pagar (porque no podés ese mes, porque te aburriste, porque querés volver más adelante), tu cuenta entra en modo museo:
.md, .pdf, .epub. Tu material, en tus manos, sin candados.Lo que no podés en modo museo: crear nuevo (anécdotas, cofres, composiciones). Pero lo que ya escribiste es tuyo, para siempre, aunque nunca más nos pagues.
Esa es la promesa: tu vida no se alquila.