git log · 195 días de historia

El nacimiento de Taski

De un primer commit incierto a un ecosistema completo en 6 plataformas. Seis 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
0Deploys
$ 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 844 deploys en cinco meses: 844 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.

94 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. 94 migraciones en seis meses, una cada dos días y medio. 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 confias 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 Ecosistema
De Mayo 2026 a Hoy

6 plataformas, un ecosistema

iPhone. Apple Watch. Mac. Windows. Web. Android.
4.121 commits. 844 deploys del worker. 94 migraciones de base de datos. 369 commits web. 85 commits desktop. 644 commits Android.
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í: 195 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 4121