1 puntos por jaren82 3 시간 전 | 2 comentarios | Compartir por WhatsApp

Es un gestor de portapapeles para macOS donde lo que copias se va acumulando uno por uno para que después elijas qué usar.

Lo hice pensando en monetizarlo. El primer día ya se habló del precio, y tres días después decidí con qué modelo venderlo, así que no fue algo que hice como hobby y subí por casualidad. Pero después de terminarlo, soy quien más lo usa. Eso es lo que más me satisface.

Donde más útil me resultó fue al trabajar con IA. Si uso varios prompts o le pido que devuelva los resultados al portapapeles, se van acumulando ordenadamente, y aunque mientras tanto esté haciendo otra cosa, no se pierden.

Puedes editar el contenido acumulado. La mayoría de los gestores de portapapeles tienen un historial de solo lectura, pero aquí abres un ítem, lo editas directamente y lo guardas con ⌘S. Tiene números de línea, búsqueda con ⌘F y reemplazo con ⌘R. Eliminar el ida y vuelta de pasar lo copiado a un editor, corregirlo y volver a copiarlo resulta más importante de lo que parece.

También incluí pequeñas cosas que hacen falta al desarrollar: formatos JSON·SQL·Mongo, XML↔YAML, decodificación JWT, codificación Base64/URL, timestamps Unix, SHA-256, AES, y diff línea por línea eligiendo dos tarjetas con ⌘D. Son cosas que hice porque me daba flojera abrir pestañas del navegador.

En su estado predeterminado no solicita ningún permiso del sistema. Todos los datos se cifran y se guardan solo localmente; no hay analíticas, seguimiento ni servidor.

Registro de 24 días

Lo hice con Claude Code. Como quedó el historial de conversaciones, lo abrí y vi que fueron 310 entradas durante 24 días; al clasificarlas, hubo 28 señalamientos de defectos y 15 propuestas que rechacé o revertí. Ordenado cronológicamente, fue así.

5/7 (30 entradas) — La primera instrucción fue: "hazme preguntas sobre los requisitos y ve concretándolos". Ese mismo día definimos el nombre y el bundle ID, agregamos base64 y beautify, y añadimos la vista de detalle con ⌘⏎. También ese día surgió la conversación de si no sería una app de App Store a US$4.99. Y quitamos la función de pegado automático: "Parece que podría pegar cosas sin querer, mejor quitémosla".

6/7~7/7 — Preguntar "¿dónde se guarda el contenido del portapapeles?" llevó a introducir cifrado local. Arreglé un bug por el que lo copiado desde Excel se reconocía como imagen, y durante dos días rastreé por qué el atajo ⌘⇧V no funcionaba. Fue del estilo de sacar directamente los logs con log show y pasarlos.

8/7 — Definí con qué modelo venderlo. Entre cobrar desde el principio o lanzarlo gratis y cobrar dentro, pasé de "¿y si lo vendo solo de pago desde el inicio? Algo como 30 días gratis" a decidirme por la prueba de 30 días. Y recuperé el pegado automático que había quitado tres días antes, porque al usarlo yo mismo sentí que era incómodo que no se pegara de inmediato al seleccionar.

11/7 — Hice una función de snippets y luego la maté. "La usabilidad es una mierda" → "propón una dirección de mejora; si es mala, elimino la función" → "no, elimínala". Decidir tirar algo ya hecho fue lo más difícil.

12/7~16/7 — Para la distribución de licencias revisé Lemon Squeezy y PayPal, pero terminé ordenándolo todo alrededor de la App Store. Después fue una cadena de fallas de validación de dirección, códigos bancarios, W-8BEN y dudas sobre registrar un negocio. Esto tomó más tiempo que programar.

19/7 — Ya lo había enviado a revisión, pero mirando las capturas de pantalla del launcher descubrí que la app se instalaba con el nombre DevClip-AppStore. Cancelé el envío y volví a compilar.

25/7 — Rechazo. Fue por la Guideline 2.4.5 (Performance: Hardware Compatibility).

Rechazo y una decisión cerrada en 24 días

La causa del rechazo fue justamente esa función. El 5 de julio la había quitado yo mismo por considerarla riesgosa, y tres días después la recuperé porque, al usarla, resultó incómoda: el "pegado inmediato". Usa permisos de Accesibilidad, y Apple lo consideró un "uso no relacionado con fines de accesibilidad".

Quitar la función habría sido simple, pero como ya la había quitado una vez y la recuperé por necesidad, esta vez decidí defenderla. En cambio, cambié la forma de solicitar el permiso.

Ya estaba desactivada por defecto y solo se solicitaba cuando el usuario la activaba manualmente. El problema era que el revisor no tenía forma de comprobar eso en ninguna parte de la interfaz. Así que al activar el toggle, en lugar de ir directo a la ventana de permisos del sistema, hice que primero apareciera una ventana explicativa dentro de la app. Dice cosas como que "solo se usa para enviar un ⌘V justo después de elegir un ítem y no lee el contenido de otras apps", y solo al presionar "Continuar" se pasa a la ventana de permisos del sistema.

En las notas para revisión escribí la ruta de reproducción: "Puede comprobarlo presionándolo directamente en Configuración > General", lo reenvié y pasó.

"Ya funciona así" y "el usuario puede comprobar que funciona así" son problemas distintos.

Cómo trabajé con IA

Casi no escribí código directamente. Estuve en el lugar de leer y juzgar lo que se implementaba a partir de prompts; aunque soy ingeniero, esta vez en la práctica me dediqué a planificación y QA.

No todo salió bien. Arregló tres veces a base de conjeturas que el arrastre de imágenes no funcionara, y cada vez me tocaba verificarlo a mí. Solo después de decirle "haz pruebas, para que no tenga que comprobar todo yo a mano" cambió a un método de validar con datos reales antes de corregir. Desde entonces, cada bug que encontraba manualmente lo fijaba como test, y una parte importante de los 270 tests actuales nació así.

Al final quedaron 87 commits, unas 10 mil líneas de Swift y 3,700 líneas de tests.

Todas las funciones son gratuitas durante 30 días. Después, las funciones básicas siguen siendo gratis, y Pro no es una suscripción sino un pago único.

2 comentarios

 
selene 2 시간 전

Parece que admite casi todas las funciones que tiene Raycast; ¿hay alguna diferencia en particular?

 
jaren82 1 시간 전

Sí, si uno mira solo el historial del portapapeles, hay muchas coincidencias. Pero Raycast tiene muchas otras funciones además del portapapeles, así que me parecía excesivo.

Estas son las cosas en las que me enfoqué.

Primero, que sea ligero y que gestione solo el historial del portapapeles; actualmente pesa unos 2 MB.

Además, se puede editar el contenido guardado desde el detalle. Me resultó cómodo al revisar varios prompts y retocarlos un poco de antemano.

También cuidé la búsqueda y la organización en carpetas. Intenté resolver esos datos que uno necesita mientras trabaja, cosas de una sola vez o que da flojera volver a buscar.
Hice que se pueda buscar por contenido, etiquetas, título, etc.

Más adelante me gustaría permitir agregar funciones o distribuciones directamente mediante plugins, pero eso todavía no lo tengo concretado.

También creo que Raycast es una buena app, y quiero esforzarme para que esto pueda ser una opción según las preferencias de cada quien.

Gracias por tu opinión.