git log · 291 días de historia

El nacimiento de Taski

De un primer commit incierto a un ecosistema completo en 6 plataformas. Casi diez meses de noches en vela, dudas y pequeñas victorias. Y una promesa que nunca se doblegó: tu privacidad, antes que nada.

0Commits
0Plataformas
0Días
0Builds iOS
$ git log --since="2025-11-26" --oneline | wc -l
01 La Chispa

Initial Commit

Todo arranca desde una carpeta vacía y una idea: una app de mensajería que ponga la privacidad en primer lugar. El primer commit está desnudo, un esqueleto Xcode, un proyecto SwiftUI con más esperanza que código. "tentativo sistemazione login" reza el segundo commit, pocos minutos después. Todavía no funciona nada, pero el viaje ha comenzado.

Initial Commit
Il secondo commit: tentativo sistemazione login

Las primeras palabras

En 24 horas, las notificaciones push y la conexión WebSocket cobran vida. El backend logra entregar un mensaje de un dispositivo a otro, en tiempo real. La implementación de la foto de perfil falla al primer intento. "App compila update profilo fallito" pero a la mañana siguiente funciona. Los mensajes aparecen. Por primera vez, dos dispositivos hablan entre sí.

¡Chat funcionando!

El mensaje del commit lo dice todo: "Chat funzionante, profilo funzionante" Por primera vez los chats persisten, los mensajes llegan, el perfil se actualiza. Los cimientos están puestos. De aquí en adelante se construye.

Las noches en vela

Los timestamps no mienten: commits a las 00:52, a las 2:13, a las 2:30, a las 4:53, a las 5:07. Una ráfaga de commits nocturnos lleva la app de "funciona" a "parece de verdad". Indicador de escritura, marcas de lectura, deeplinks, badges. A las 4:53 llega el primero de los fantasmas que perseguirán al proyecto: "fix chat fantasma e push" A las 5:07, exhausto: "risolti" Una sola palabra. Luego silencio hasta el día siguiente.

02 La Fortaleza

E2EE Implementada

Cinco días después del primer commit, el cifrado end-to-end cobra vida. Desde este instante cada mensaje nace blindado: solo pueden leerlo dos personas en el mundo, quien escribe y quien recibe. Nadie más. Ni siquiera quien ha pasado las noches construyendo Taski. No es una función entre tantas: es una promesa esculpida en el código, la razón por la que todo esto existe. Es el momento en que un experimento se convierte en un pacto de confianza.

E2EE Implementata

"TUTTO FUNZIONANTE DA QUESTO PUNTO"

El mensaje del commit en mayúsculas no miente. Notificaciones push con vista previa cifrada, respuestas a los mensajes, mensajes cifrados con la hora correcta. En solo 6 días, Taski tiene las bases completas de un messenger seguro. "NOTIFICHE FUNZIONANTI" grita un commit poco antes. El entusiasmo es palpable en el git log.

Contactos y verificación por SMS

De nuevo de noche, a la 1:06. Coincidencia de usuarios por número de teléfono. Acceso por SMS. Taski deja de ser un experimento y se convierte en algo que podrías instalar en el teléfono de tu madre.

Grupos: la montaña rusa

El 4 de diciembre, los grupos entran en el código. El git log narra una epopeya en cuatro actos: "Gruppi funzionanti" "Gruppi perfettamente funzionanti" "Gruppi quasi perfetti" "GRUPPI PERFETTI" Al día siguiente, otra vez: "Logica gruppi perfetta" Cinco commits, cinco niveles crecientes de certeza. O quizá de autoconvencimiento.

La semana de los "quizá"

21 commits en 4 días, y la duda impregna cada línea: "Per ora BENE" "Sistamazione spunte? Forse!" "chat eliminate sembra funzionare" "Abbinamento chat quasi perfetto" "sistemato forse tutto" No es certeza: es esperanza. Las marcas funcionan, luego dejan de hacerlo. Los chats fantasma aparecen y desaparecen. Los typos en los commits delatan el cansancio: "Sistamato", "nofifiche", "implemenzazione". Pero el código avanza.

El limbo navideño

Mientras el mundo celebra, los commits no se detienen. Transcripción de mensajes de voz. Vistas previas de enlaces. Vídeo. El 23 de diciembre: "Posizionamento messaggi quasi perfetto" El 27: "Forse ci siamo, chat sistamata" "Chat sembra ok" "Parece". "Quizá". "Casi". Las palabras de quien ha aprendido a no fiarse. El 26 de diciembre, día de San Esteban: "Sistemato problema freeze UI in chat" Ni un solo día de descanso para la app.

03 La Madurez

Llamadas de voz y vídeo

Llegan las llamadas de voz y vídeo en tiempo real, construidas sobre WebRTC con señalización vía WebSocket. Tono de llamada, gestión de las llamadas perdidas, altavoz automático en videollamada. Y también la voz, como cada palabra escrita, viaja cifrada end-to-end. "Nascondi tasto videochiamata (da riabilitare)" cuenta la lucha entre ambición y estabilidad. El 5 de enero: "Chiamate quasi perfette" De nuevo ese "casi". Y luego el verdadero enemigo: "Fix call zombie: terminate active call when app goes to background or is killed" Las llamadas fantasma, las que siguen activas cuando la app muere, perseguirán al código durante semanas.

El Watchdog

El código de error más temido por los desarrolladores iOS: 0x8BADF00D ("ate bad food"). Significa que el sistema ha matado la app porque el hilo principal estaba bloqueado. "fix: prevent watchdog crash (0x8BADF00D) from background reloadData" Aparecerá tres veces en la historia de Taski. Cada vez, horas de debug para entender qué operación tenía secuestrado el main thread. En abril el backup. En mayo la búsqueda con IA. El watchdog no perdona.

Nace el Worker

El backend se convierte en un Cloudflare Worker: serverless, distribuido en el edge, siempre cerca de quien escribe. Es el primer commit de un repositorio dedicado. De aquí partirán 1.275 commits en ocho meses: 1.275 veces en las que alguien contuvo la respiración al pulsar «enter». El corazón de Taski empieza a latir a un ritmo nuevo.

La infraestructura crece

Versionado para la rotación de las claves E2EE. Sistema de heartbeat para las llamadas. Stickers con almacenamiento dedicado y TTL. Cola de push construida sobre los Durable Objects, con ACK de confirmación desde el cliente. Rate limit anti-abuso en los SMS. Sistema de presencia pub/sub en tiempo real. Cada semana un sistema nuevo, construido ladrillo a ladrillo, a menudo hasta el amanecer.

Fuerza bruta

A veces la elegancia debe hacerse a un lado. Las notificaciones se duplican, los filtros no aguantan, y en cierto punto solo hace falta que la cosa funcione. "Forza retry push bypassando dedupe" Al día siguiente: "Fix push duplicate" Y el ciclo clásico: la corrección de la corrección. Un guion que se vuelve familiar. Habrá jornadas en las que el mismo trozo de backend se desplegará 34 veces: 34 pequeñas esperanzas, una tras otra.

Febrero 2026

Cero concesiones en las notificaciones

Una notificación perdida es un mensaje que no llega. Así el sistema de notificaciones se reconstruye desde cero: viajan a la velocidad del tiempo real, pero ninguna se pierde jamás. Incluso cuando estás offline, esperan, a salvo, hasta alcanzarte. Velocidad y fiabilidad, sin tener que elegir entre las dos. Es el inicio de una obsesión por el rendimiento que definirá los meses siguientes: cada detalle pulido es un mensaje que llega un instante antes, un usuario mejor servido.

Los fantasmas del backend

Los Durable Objects introducen un tipo de bug inédito: las sesiones zombie. WebSocket que parecen abiertas pero ya están muertas. La presencia de los amigos que parpadea, aparece y desaparece. "Fix forceDelivery for zombie WS sessions" "alarm-based stale sweep for zombie WS detection" "self-heal stale state" El código aprende a curarse solo: un alarm periódico hace el sweep de las conexiones obsoletas y limpia el estado. No es elegante. Pero a las tres de la madrugada, «funciona» es la palabra más hermosa del mundo.

-60% de llamadas entre los Durable Objects

Un solo commit reduce a la mitad el tráfico entre los Durable Objects. La idea: en vez de interrogar la presencia de cada usuario una a una, un PresenceRegistry sharded agrupa las queries en batch. Una sola llamada en lugar de decenas. Los costes se desploman, la latencia baja. Esa línea de código, escrita en silencio, ningún usuario la verá nunca. Pero todos la sentirán.

Hibernation: el sueño de los Durable Objects

Los Durable Objects son potentes, pero cuestan mientras siguen despiertos. La Hibernation API los pone en letargo cuando no hacen falta, manteniendo abiertas las conexiones WebSocket sin consumir recursos. ChatRoom y UserHub pasan ambos a hibernation. "eliminate ~99.7% DO GB*s" celebra el commit: un ahorro casi conmovedor, fruto de semanas de estudio. Luego, al día siguiente, el precio: "Fix presence false-offline after hibernation wake" El despertar no siempre es dulce. Cada victoria, aquí, se paga con un nuevo problema que amar.

104 migraciones de base de datos

Cada migración D1 es una operación a corazón abierto sobre la base de datos viva, sin poder apagarla nunca. Añadir una columna, crear un índice, eliminar una restricción: gestos minúsculos que, si se hacen mal, lo pararían todo. 104 migraciones en ocho meses, una cada poco más de dos días. Ninguna causó jamás un segundo de downtime. Detrás de ese silencio perfecto, un corazón que cada vez latía con fuerza.

04 La Expansión

Nace Taski Web

React, Vite y Tailwind. El cliente web llega con pairing vía código QR, E2EE completa y WebSocket en tiempo real. En apenas 17 días se convierte en un cliente completo: chat, multimedia, llamadas. "SECURITY: Remove open user search" La cautela no es un arrepentimiento: ya es parte del ADN. Proteger a las personas viene antes que sorprenderlas.

Historias y reacciones

Las Historias llegan a Taski: compartibles, efímeras y cifradas. Reacciones a los mensajes con emoji. Me gusta a las historias con avatar en la push. La app empieza a sentirse completa, ya no un proyecto sino un producto.

Siri y verificación de claves por QR

"Hey Siri, manda un messaggio con Taski" y sale, cifrado end-to-end, sin un solo toque. Puedes verificar en persona que de verdad estás hablando con quien crees, escaneando un código. Y compartir fotos y vídeos desde cualquier app, siempre protegidos. La seguridad que deja de ser una carga y se vuelve un gesto natural.

Compañero para Apple Watch

En un solo día, seis commits llevan Taski al Apple Watch: chat, fotos, avatar, logo en la toolbar, sync en tiempo real, fetch paralelo. Al día siguiente, el ajuste de cuentas: fix para el freeze de la UI, decrypt sacado fuera del main thread, locks vueltos asíncronos. La pantalla es del tamaño de un sello, pero los problemas son enormes. Y aun así, a la mañana siguiente, los mensajes llegan también allí.

Taski Desktop: Mac y Windows

Tauri 2 envuelve el cliente web en una app nativa. macOS y Windows el mismo día. Menu bar nativo, notificaciones de sistema con vista previa cifrada, respuesta directa desde la notificación, badge en el dock, auto-update y Handoff con iOS. Cuatro pantallas distintas, una sola conversación que te sigue allá donde vayas. Harán falta 85 commits para dejarlo completo, y cada uno es un pedazo de vida dejado ahí dentro.

La gran migración: de SwiftUI a ObjC

El chat nace en SwiftUI: elegante, declarativo, moderno. Y lento. El teclado aparece y desaparece como un fantasma, y nada duele más que algo que funciona casi: "Usato UIkit per chat da risolvere problema tastiera fantasma" El 28 de diciembre de 2025 el primer intento de pasar a UIKit. Luego meses de convivencia híbrida: SwiftUI que envuelve UIKit que llama a SwiftUI. El 7 de marzo, el crash que rompe toda la paciencia: "il datasource rows e il batch update non restano coerenti e UIKit abortisce con SIGABRT" El 20 de marzo, la decisión radical: reescribir el chat entero en Objective-C. No Swift, no SwiftUI. Objective-C. El lenguaje de los abuelos. Pero UICollectionView en ObjC no tiene overhead de bridge, no tiene los caprichos del layout SwiftUI, no tiene fantasmas. En 4 días, 20 commits llevan el chat de SwiftUI a ObjC: burbujas, input bar, emoji, respuestas, miniaturas, vídeo, enlaces clicables, reproductor de música, visor multimedia nativo. El resultado: scroll fluido, cero jank, cero crashes. A veces el progreso es volver atrás.

feat(chat): ObjC chat collection view with input bar, emoji sizing, camera, scroll fixes
05 La Inteligencia

TaskiAI: reescritura de mensajes

La inteligencia artificial entra en Taski de puntillas. Un botón sparkle en la barra de entrada reescribe una frase: más formal, más casual, corregida, traducida. Nunca impuesta, siempre ofrecida: una ayuda amable que se queda un paso atrás, dentro de los límites de la privacidad prometida el primer día.

TaskiAI Chatbot

En un solo día, 10 commits construyen un asistente conversacional completo, que vive junto a los chats en la lista. Adjuntos de fotos y PDF, renderizado Markdown, generación de documentos PDF, rate limit de 20 peticiones por hora, auto-switch entre modelos. "AI memo creation with reminders + Siri App Shortcut" La IA transforma un mensaje en un recordatorio y te lo programa vía Siri. Tecnología que, por una vez, parece cuidar de ti.

AKD: Auditable Key Directory

Un Auditable Key Directory: un registro de las claves públicas protegido por una hash-chain, con firmas del lado del cliente. Si alguien intentara sustituir a escondidas tu clave para espiarte, la cadena criptográfica lo desenmascararía al instante. Es una obsesión: hacer la traición imposible, no solo improbable. "Houston, we have a problem!" bromea la pantalla de mantenimiento con temática espacial añadida al día siguiente. Porque incluso en los momentos más serios, hace falta sonreír un poco.

TaskiAI entre líneas

Hasta ayer la IA vivía en una habitación propia. Ahora basta escribir @TaskiAI en mitad de una conversación y responde ahí mismo, en el flujo del chat, delante de todos. En los grupos se convierte en un participante más: uno que sabe responder, resumir, traducir, y nunca duerme. La respuesta aparece como por arte de magia entre los mensajes de los humanos, parte natural de la conversación.

Una memoria que no traiciona

Un asistente que olvida todo con cada mensaje es solo un eco. Así TaskiAI aprende a recordar: los hechos que le confías permanecen, conversación tras conversación. Pero con una regla de hierro: la memoria está cifrada de extremo a extremo como todo lo demás. Tus recuerdos con el asistente son solo tuyos: ni siquiera el servidor sabe qué recuerda TaskiAI de ti.

Abril 2026

Spotify, Voice AI y Anti-Abuso

Abril es un mes de explosión creativa. Integración Spotify con PKCE auth. Voice TaskiAI con GPT Realtime para conversaciones de voz. Sistema anti-abuso con IA: Llama Guard 3 + Haiku double-check, auto-suspensión de 7 días. Sistema de ban con broadcast en tiempo real vía WebSocket. La app no solo es bonita, también es segura.

El día más largo

59 commits en 24 horas. El récord absoluto del proyecto. Un día en el que todo ocurre a la vez: bugs críticos, ideas nuevas, correcciones sobre correcciones. El diario de ese día es una novela entera. Más de lo que Taski Desktop acumuló en toda su vida. Dormir, ese día, era un lujo que alguien decidió no concederse.

Las 72 horas

Tres días consecutivos: 34, 34 y 41 commits entre iOS y Worker. Anti-abuso IA, sistema de baneos, broadcast en tiempo real, dedup de la cola push, contexto de imágenes para TaskiAI. El Worker alcanza 34 deploys en un solo día: de media, uno cada 42 minutos. Durante tres días, dormir fue opcional. La pasión, a veces, se parece muchísimo a la locura.

06 El Blindaje

Audit y Hardening

Dos rondas de auditoría de seguridad. Comparaciones de tiempo constante sobre todos los datos sensibles, queries D1 atómicas para las menciones IA, control del tamaño antes de cada upload. Cada endpoint pasado por el tamiz, cada input validado. Nadie lo pidió, nadie se dará cuenta. Pero es aquí donde la confianza se construye de verdad: en los detalles que quedan invisibles.

Voice Web Search

TaskiAI Voice obtiene una herramienta de búsqueda en la web: durante una conversación de voz puede buscar en la red, anunciando cada búsqueda en voz alta por transparencia. Country mapping por idioma, máximo 3 búsquedas por llamada. También la honestidad, aquí, es una funcionalidad: sin magias silenciosas, sin secretos.

Taski llega a Android

Primero como wrapper Capacitor, luego la migración hacia un cliente nativo en Kotlin. El 17 y 18 de mayo, en largas sesiones nocturnas frente al monitor, toma forma: WebSocket, E2EE, push FCM, multimedia cifrada. Surge un bug cruel entre iOS y Android: las push cifradas simplemente no llegan. La solución son dos líneas en el Notification Service Extension de iOS, que permanecieron invisibles durante semanas porque una cache cubría el recorrido. Dos líneas, semanas de búsqueda. Diez bugs críticos arreglados tras la última auditoría. La sexta plataforma está viva. Ahora cualquiera, en cualquier teléfono, puede escribirse de forma segura.

El cliente Android nativo: CryptoService.kt, la misma E2EE que iOS y web

El bug aceptado

A veces la respuesta correcta no es "arreglar" sino "aceptar". En condiciones raras, una segunda notificación llega tras 60 segundos: una red de seguridad para cuando la primera no se confirma. Horas de análisis del problema, con la ayuda de la IA. Tres intentos anteriores de arreglarlo habían roto cosas más importantes. La conclusión: mejor una notificación duplicada una vez entre mil que una notificación perdida. iOS, casi siempre, la deduplica mediante collapse-id, y el caso que queda es rarísimo. El bug se documenta y se acepta. No todo hay que arreglarlo: algunas cosas hay que entenderlas, y dejarlas ir. Es una de las lecciones más difíciles de aprender, para quien escribe código, y quizá no solo.

Security Audit ofensivo

Una auditoría ofensiva completa: intentar romper con las propias manos lo que se ha construido, antes de que lo haga alguien más. Seis fixes desplegados: protección XSS, rate limit en el admin, eliminación de los error oracle, bloqueo de SMS por país, whitelist CORS, acceso al panel admin blindado. No se espera el ataque sentados: se sale a buscarlo. La paranoia, aquí, es la forma más alta de respeto hacia quien te confía sus mensajes más íntimos.

Apple App Attest

Apple App Attest integrado: attestation y assertion, trust tier para los dispositivos. Solo las apps genuinas, verificadas por el Secure Enclave de Apple, pueden hablar con el backend. Cada header de bypass eliminado. La cadena de confianza ahora está completa, desde el silicio de Apple hasta el servidor. Nada de esto se ve usando la app. Pero es lo que te permite dormir tranquilo.

Una ayuda siempre encendida

Hasta el producto más cuidado, tarde o temprano, necesita explicarse. Así nace Taski Support: no una página de FAQ muerta, sino un asistente de verdad, con un cerebro de IA propio, separado del resto de la app. Cuando algo va mal, abres una solicitud y al otro lado hay alguien que responde, a cualquier hora, en cualquier idioma. Porque una app que pone a las personas primero no puede dejarlas solas justo cuando necesitan ayuda.

Key Transparency: confía, pero verifica

La meta más ambiciosa de todas, y llega en la sesión de trabajo número 400. Hasta aquí el AKD verificaba tu cadena de claves; la Key Transparency va más allá: un log append-only al estilo Certificate Transparency, con Merkle tree, inclusion proof y consistency proof. El servidor no puede mentir a un usuario sin mentir a todos, y mentir a todos deja un rastro matemático imposible de ocultar. Los clientes se intercambian la cabeza del log piggyback en los mensajes cifrados (gossip): si el servidor mostrara dos versiones distintas de la verdad, alguien se daría cuenta. Y el toque final: el log vive en dos infraestructuras cloud independientes, gestionadas por empresas distintas, una que co-firma el estado de la otra. Para falsificar la verdad habría que corromperlas ambas en el mismo instante. Sin magias: solo matemática y firmas criptográficas. En producción en Worker, web e iOS el mismo día. Es el punto de llegada de una obsesión que empezó aquel primer diciembre. La confianza, desde hoy, ya no se pide: se demuestra.

La IA que da vida a las imágenes

TaskiAI ya sabía escribir, resumir, leer fotos y documentos, crear recordatorios. El 3 de junio aprende algo nuevo: a generar vídeo. Se lo pides, y de una idea nace algo que se mueve, ahí mismo en el chat, junto a los mensajes de cada día. Otro paso de un asistente que nunca deja de aprender.

El fantasma, por fin atrapado

¿Recuerdas el bug aceptado? La segunda notificación que de vez en cuando llegaba de más, la que habíamos decidido dejar vivir porque parecía imposible de atrapar. Semanas después, una noche frente a los logs, la verdad salió a la luz: no era para nada inevitable. Era una race condition: dos eventos compitiendo, y de vez en cuando llegando en el orden equivocado. Entendido el mecanismo, bastó un pequeño marcador en memoria para volver a poner orden en la carrera. Ninguna notificación perdida, ningún fantasma de más. Lo que habíamos aceptado no entender, al final lo entendimos. Y lo que se entiende, se puede resolver.

Una casa con su propio nombre

Durante meses el corazón de Taski vivió en una dirección de servicio, un subdominio técnico prestado. Una noche alguien desde fuera intenta llamar justo a esa puerta trasera, y la encuentra. Ningún daño: las defensas de verdad estaban en otra parte. Pero el mensaje es claro: es hora de cerrar la última puerta de servicio. El backend se muda por completo a taski.chat, su nombre, su dirección. No más cuartos traseros: una casa, una puerta, vigilada.

La firma que nadie puede falsificar

AKD y Key Transparency hacían imposible cambiar las claves a escondidas. Quedaba una sombra sutil: ¿y si fuera el propio servidor, desde el principio, fingiendo tu identidad? El 6 de junio esa sombra se desvanece. Cada persona tiene ahora una única clave de identidad, que vive solo en sus dispositivos y nunca toca el servidor ni la web. La primera vez que conoces a alguien, su marca queda grabada; desde ese momento, si algo no cuadra, lo sabes. AKD, Key Transparency, Identity Key: tres candados en la misma puerta. La confianza ya no es una promesa del servidor: es matemática en tus propias manos.

Un solo teléfono, el tuyo

Tu cuenta vive en un solo teléfono a la vez: el tuyo. Web y desktop dejan de ser entradas y se convierten en ventanas que se abren solo si las invitas, escaneando un código desde el dispositivo que tienes en la mano. Y cuando cambias a un teléfono nuevo, tus claves no renacen desde cero ni pasan por el servidor: migran de un dispositivo a otro, de ti a ti, como un testigo entregado en mano. Así, a quien intentara robarte el número para entrar desde una pantalla nueva, Taski le sigue pidiendo el teléfono que tienes en la mano: tu SIM, por sí sola, no basta para ser tú.

Bajo llave, incluso en reposo

Tus mensajes siempre se han cifrado mientras viajan. Ahora siguen cifrados también cuando duermen dentro del teléfono. Cada chat, cada foto, cada nota de voz reposa bajo llave, y esa llave vive en una cámara acorazada de hardware dentro del teléfono, que solo se abre cuando el dispositivo está desbloqueado y es de verdad tuyo. Así, si te roban el teléfono aunque solo esté bloqueado, o acaba en la mesa de un laboratorio forense, no encuentran tus conversaciones: encuentran ruido. En iPhone y en Android por igual.

La búsqueda que entiende

Antes buscabas una palabra y Taski encontraba solo a quien había escrito exactamente esa palabra. Ahora entiende lo que quieres decir: busca 'la cena de grupo' y recupera el mensaje en el que alguien proponía verse para comer, aunque no la hubiera llamado así. Quien lee el significado es un pequeño modelo de inteligencia artificial que funciona entero dentro del teléfono, en su chip neuronal: ninguna palabra, ningún pensamiento, sale jamás del dispositivo. La búsqueda se vuelve más inteligente en el mismo instante en que se vuelve más privada.

07 El Temple

El último resquicio, cerrado

Una auditoría ofensiva encuentra la grieta más fina que quedaba: desde un dispositivo secundario, o desde la web, alguien podría haber reescrito tu clave de identidad y ocupar tu lugar. De aquí en adelante esa clave solo se escribe desde el teléfono que tienes en la mano, tu dispositivo principal, y desde ningún otro. Alrededor, otras defensas se estrechan: la web entra con un billete de un solo uso en vez de un pase escrito en la dirección, y cualquier intento de devolver una clave a una versión sin firmar se rechaza sin más. Las puertas que más importan tienen ahora una sola llave: la tuya.

Bloquear, y desaparecer de verdad

Cuando bloqueas a alguien, ahora desapareces de verdad, en las dos direcciones. Sin última conexión, sin 'escribiendo...', sin foto de perfil que se actualiza: ni un resquicio por el que atisbarte. Como debería ser, como estás acostumbrado en otros sitios. Un muro, no una cortina.

El fantasma de la duración

Cada llamada parecía durar más o menos lo mismo, minuto y medio, dos, nunca de verdad más. No era la realidad: era un latido que el servidor se olvidaba de anotar. Cazado ese fantasma, la duración registrada vuelve a ser la real, desde el primer tono hasta la última palabra. Y hay más: si la otra persona cierra de golpe la app a mitad de llamada, la llamada termina al instante en ambos lados, en iPhone, Android y web, sin pantallas colgadas en el vacío.

Un cerebro nuevo

El modelo que da pensamiento y voz a TaskiAI pasa a una generación más reciente y más despierta. Responde mejor, razona mejor, entiende mejor lo que le pides. La parte que te cuida la privacidad sigue igual: más inteligente, no más entrometida.

Una voz que busca y entiende

Hablar con TaskiAI se vuelve más natural e inmediato. Mientras charláis puede buscar en la red para responderte con datos frescos, y lo hace en tu idioma, con tu acento, como si fuera de aquí. Una conversación, no una orden.

Stickers que nacen de tus palabras

Describe el sticker que tienes en mente y TaskiAI lo dibuja: en estilo dibujos animados, anime, o exactamente como te lo imaginas. Parte de una foto tuya y se convierte en un sticker con tu cara, un trocito de ti para pegar en el chat. La imaginación se vuelve pegatina en segundos.

Las voces, para leer y escuchar seguidas

No siempre puedes escuchar una nota de voz. Ahora la puedes leer: la transcripción aparece entera, palabra por palabra. Y cuando tienes varias por recuperar, se reproducen una tras otra solas, sin tocar nada, mientras a quien te las envió le llega en tiempo real la marca de que las has reproducido.

Treinta fotos de una sola vez

Eliges hasta treinta fotos y salen juntas, para llegar como una cuadrícula ordenada con el +N en la última, en vez de una ráfaga de burbujas. Y hasta los archivos más pesados ya no encuentran límites estrechos: documentos de hasta medio gigabyte pasan sin tropiezos. En iPhone, Android y web, por igual.

Listos para la multitud

Entre bastidores, Taski se prepara para sostener a muchas más personas a la vez. Los acuses de entrega y lectura descansan sobre cimientos más sólidos, las colas de notificaciones tienen techos que no se atascan, los grupos llegan hasta quinientas doce personas, las agendas se sincronizan por bloques ordenados. Y el servidor aprende a recordar quién eres sin volver a preguntárselo en cada paso. Trabajo invisible, para que todo siga fluido incluso cuando seamos muchos.

Mil pequeños cuidados

Y luego el cuidado por el detalle, ese que no es noticia pero se nota cada día. Una pulsación larga en la lista de chats abre la vista previa de la conversación y sus atajos. El calendario de recordatorios se abre y se cierra con un gesto natural. Las citas de las respuestas caen siempre en el sitio justo, incluso cuando el mensaje original queda lejos. Cien retoques que, juntos, cambian cómo se siente usar Taski cada día.

08 El Camino

Las puertas de casa

El final de julio cierra las puertas de casa una a una. Antes de dejar entrar un dispositivo nuevo, el iPhone quiere estar seguro de que eres tú quien lo pide: "richiedi Face ID prima di autorizzare un nuovo dispositivo collegato" En la lista de dispositivos, la app para Mac y Windows ya no se confunde con el navegador. Tu número solo lo ve quien te tiene en su agenda o comparte contigo un chat, un grupo, una llamada. Las acciones que no se pueden deshacer salen únicamente del teléfono que tienes en la mano. Y si alguien «elimina» un grupo, simplemente sale de él: el grupo sigue vivo para todos los demás.

La voz que se ve

Grabar un audio deja de ser un disparo sin vuelta atrás. Pausas, retomas, te escuchas antes de enviarlo. "Voice recorder v2: pausa/riprendi + riascolto anteprima + waveform fedele" En las burbujas aparece la forma de onda real de tu voz, no un dibujo cualquiera. El micrófono en la lista de chats se vuelve azul solo cuando el audio se ha escuchado de verdad, y cambia de color en directo: antes era un azul fijo que nunca había significado nada. Un audio también se escucha directamente desde la notificación, y las respuestas citan a quien tienes en tu agenda por su nombre, ya no como «Usuario desconocido».

Siete planes para una mudanza

Cambiar de teléfono es el momento más delicado en la vida de una cuenta cifrada: las claves tienen que pasar del viejo al nuevo, y nadie más debe poder rozarlas. Antes de escribir una sola línea, el plan se reescribe siete veces, rechazado y retomado hasta la última duda. "Piano consegna transfer v7.1: chiuso l'ultimo blocker, implementabile" Después, 53 sabotajes deliberados del código para ver si las pruebas se dan cuenta: seis defectos reales, descubiertos antes de que los encontrara otro. Ahora las claves y el historial llegan al teléfono nuevo aunque la red pierda una respuesta a mitad de camino o la app se cierre. En la primera mudanza de verdad, el teléfono viejo no quería hacerse a un lado. Encontrado el porqué, ahora se retira de verdad.

Las notificaciones que no mienten

Abres Taski desde una notificación y encuentras la línea «mensajes nuevos» justo donde tiene que estar, encima del primero que aún no has leído. Parece poca cosa. El día en que abrir desde las notificaciones se vuelve más rápido, esa línea desaparece. Devuelta a su sitio, funciona con dos mensajes y se rompe con tres: "Separatore nuovi messaggi: batch da 3+ lasciava il primo messaggio sopra" Y el numerito rojo del icono aprende a no mentir: responder o dejar un corazón desde una notificación, con la app cerrada, ya no pone a cero la cuenta de todos los demás chats.

Historias en tres tiempos

Crear una historia se convierte en un pequeño relato en tres tiempos: eliges entre las fotos recientes o disparas al vuelo, la ajustas en el editor, la publicas. "Storie: compositore a tre fasi con fotocamera, recenti ed editor" Luego vuelves a tus chats mientras se publica en segundo plano, con un anillo que marca su avance y un botón para pensártelo mejor. Una línea te dice quién la verá, antes de que sea demasiado tarde. En el editor el texto se arrastra, se vuelve a abrir, se agranda, con guías que te ayudan a centrarlo y una vibración suave cuando lo consigues. En iPhone y en Android.

Una sola decisión, en todas partes

Las confirmaciones de lectura dejan de ser un ajuste de cada dispositivo y pasan a ser una decisión tuya, de toda la cuenta. "Conferme di lettura: da preferenza del device a impostazione di account" Las desactivas en el teléfono y siguen desactivadas en la web, en Android, en el ordenador. Ningún dispositivo olvidado en un cajón puede traicionar lo que has decidido. Y la web recupera terreno: la sección para elegir quién te ve, el «escribiendo...», el botón para volver al final del chat, y se acabaron los saltos mientras te desplazas.

Trece minutos ilegibles

Durante trece minutos, algunos mensajes salen cerrados con una llave que ya nadie puede abrir. Nadie los leerá jamás: ni siquiera quien debía recibirlos. El síntoma es uno solo, «desde la web funciona, desde el iPhone llega cifrado», pero las causas son dos, y opuestas. La cura es un orden nuevo de las cosas: la clave nueva se publica antes de usarla, nunca después. "E2EE: pubblica la chiave prima di attivarla nella rotazione" Y cuando un contacto cambia de teléfono, se acabó la alarma roja de identidad comprometida y el envío bloqueado por una falsa sospecha. La seguridad tiene que detener los peligros reales, no asustar a quien no ha hecho nada.

Dónde estás, ahora

En iPhone nace la ubicación en tiempo real. Eliges durante cuánto compartirla, un cuarto de hora, una hora, ocho horas, y quien te espera ve tu puntito moverse por el mapa, ahí mismo, en el chat. Cifrada de extremo a extremo como cada palabra: el servidor la transporta sin poder leerla. Un toque y se abre a pantalla completa, o en Mapas, Google Maps, Waze. Y sigue actualizándose aunque lleves el teléfono en el bolsillo y la app cerrada. La primera versión es perfecta sobre el papel: compilada, probada, toda en verde. Y el puntito se queda quieto para siempre, porque la ubicación sale por un canal que nadie está escuchando. Luego se mueve, pero a saltos, como si se teletransportara: "Fa muovere il puntino della posizione live invece di teletrasportarlo" Aquí empieza el viaje más largo de estos meses.

Burbujas con forma de animal

No todo tiene que ser serio. En cada chat entre dos puedes darles a tus burbujas la forma de un animal: "Bolle chat a forma di animale (bassotto, capibara, papera, bruco)" Quien las recibe puede desactivarlas, si prefiere las burbujas de siempre. Y hasta un juego respeta las reglas de la casa: en el servidor no queda rastro de tu elección, que viaja escondida dentro del mensaje cifrado. En iPhone, Android, web y escritorio, dibujadas al milímetro para que sean iguales en todas partes: 120 comparaciones entre iPhone y Android, cero diferencias. Y a Android llegan también seis temas de color.

El código de seguridad, también desde la web

En el iPhone, durante una llamada, un código de seguridad te permite comprobar que nadie se ha metido en medio. Ahora lo ves idéntico también en la web y en la app de escritorio, en una pantalla de llamada rediseñada. "Codice di sicurezza E2EE nella schermata di chiamata web + restyle" La sorpresa: la web ya calculaba esa clave, y luego la tiraba. Y había una trampa sutil: calcular el código sobre la clave escrita como texto, en lugar de sobre sus bytes, habría dado un número perfectamente creíble. Y equivocado. La prueba final es la más sencilla de todas: dos pantallas una al lado de la otra, y el mismo código en ambas.

Los chats largos dejan de pesar

Quien tiene conversaciones de años conoce ese pequeño tirón en el primer desplazamiento, nada más abrir la app. "Scatti al primo scroll in chat lunghe a freddo" El análisis sobre el papel culpaba a la maquetación. La medición, la de verdad, encuentra otra cosa: medio segundo gastado en animar treinta filas que nadie podía ver, fuera de la pantalla. De 477 milisegundos a 17. Y borrar un chat enorme ya no bloquea la app: de 8,6 segundos a una quinta parte de segundo con cuarenta mil mensajes, liberando por fin también el espacio de fotos y vídeos. Las funciones para hacer limpieza, resulta, existían desde el primer día. Solo que nadie las llamaba.

El recorrido, fiel a la carretera

La ubicación en tiempo real se convierte en un relato: la estela sigue la carretera, reconoce las paradas, los tramos a pie y los tramos en coche, y al final el recorrido queda en el historial del contacto, guardado solo en el teléfono. Llega también a quien no abre la app, y cuando lo borras desaparece para siempre. Llegar hasta aquí es un viaje dentro del viaje, hecho en la calle con dos teléfonos en el asiento. La primera vuelta: tres kilómetros recorridos, 77 metros dibujados. Un tercio de los puntos no llega a su destino, y en un momento dado el mapa anuncia una velocidad máxima de 291 km/h. Dos veces de dos, el peor defecto se esconde dentro de la corrección anterior. "Un buco non e' la fine di un viaggio, e' un tratto che non abbiamo visto" El 27 de agosto, tras nueve kilómetros, los dos teléfonos cuentan la misma carretera con una diferencia del 2%.

999 MB

Mientras se persiguen los huecos en los recorridos, un número cambia la pregunta: 999 MB. Taski se ha convertido en el proceso más grande del teléfono, y iOS lo cierra sin piedad, once veces en veinte minutos. El culpable es un viejo amigo: el pequeño modelo de inteligencia artificial que hace privada la búsqueda, cargado en memoria en cada arranque y con cada mensaje recibido, aunque nadie esté buscando nada. Ahora solo despierta cuando hace falta. "Memoria: il modello della ricerca semantica non e' piu' residente a ogni avvio" Muchos huecos en los recorridos no eran culpa del GPS. Era la app, que se apagaba.

El perfil, por fin en orden

El perfil de un contacto era una lista de veintitrés filas todas iguales, donde cada cosa pesaba lo mismo que las demás. Se convierte en una composición de recuadros, como los compartimentos de un bento: arriba quién es, luego fotos, vídeos y enlaces reunidos en un solo lugar, y bloquear o reportar en una sola fila, sin tener que buscarla. "restyling Bento della schermata contatto, da 23 righe a 16 comandi" En iPhone y en Android.

Dos teléfonos, el mismo recorrido

Septiembre trae la pregunta más difícil: quien camina y quien mira, ¿ven de verdad la misma carretera? El primer día del mes la respuesta es no: 231 trozos de recorrido enviados, 128 llegados. Así que cada punto se convierte en un paquete numerado, y los dos teléfonos reconstruyen el viaje a partir de la misma secuencia, declarando los tramos que faltan en lugar de inventarlos. El 3 de septiembre: 462 puntos, idénticos en las dos pantallas. Luego las paradas, que el GPS rompía en un sinfín de falsos arranques: probada en la calle, la cura devuelve una sola parada de 52 minutos, tal como fue. La última parada, en cambio, moría en cero milisegundos, lanzada desde una tarea recién cancelada; hoy llega aunque quien camina no vuelva a abrir la app. Y una cura se quedó inerte tres veces, con todas las pruebas en verde, porque las pruebas recibían la carretera ya construida. "La traccia veniva buttata un istante prima di essere letta: terza volta inerte" No ha terminado. Es la obra abierta de estos días, el punto exacto en el que esta historia se interrumpe, y continúa.

09 El Ecosistema
Septiembre 2026

6 plataformas, un ecosistema

iPhone. Apple Watch. Mac. Windows. Web. Android.
6.304 commits: 3.453 en iOS, 1.275 en el worker, 966 en Android, 494 en la web, 116 en el escritorio. 514 builds de iOS. 104 migraciones de base de datos.
Cifrado de extremo a extremo en cada mensaje, llamada, foto, video, sticker.
IA integrada que respeta la privacidad. Anti-abuso con doble modelo de IA.
Hash-chained key directory para transparencia criptográfica.
Apple App Attest para confianza por hardware.

59 commits en un solo día. Commits a las 5 de la mañana. Typos en los commits que delatan el agotamiento. "Forse", "sembra", "quasi perfetto": las palabras de quien construye algo más grande que él mismo.

De Initial Commit hasta aquí: 291 días. De una carpeta vacía a un ecosistema.

La historia
continúa

Cada commit es un paso adelante. Cada bug arreglado es una lección aprendida. Cada feature es una promesa cumplida.

$ git log --oneline | wc -l 6304