Skip to content

Identidad: logo propio e íconos para instalar la app - #30

Merged
maxiar merged 2 commits into
mainfrom
agent/28-identidad-logo-de-la-app-favicon-e-icono
Oct 9, 2026
Merged

maxiar merged 2 commits into
mainfrom
agent/28-identidad-logo-de-la-app-favicon-e-icono

Conversation

@maxiar-ai-dev-team-bot

Copy link
Copy Markdown
Collaborator

Closes #28

La PWA usaba los íconos y el azul de Flutter. Ahora tiene un símbolo propio, favicon e íconos de instalación derivados de un SVG, con Sello/Papel de DESIGN.md. No se modifican pantallas, cabecera ni etiqueta impresa.

Se generaron tres conceptos con la skill imagegen, exclusivamente mediante la herramienta integrada image_gen, sin CLI ni API keys. Elegí C: módulos y etiqueta diagonal porque sus cuatro piezas se distinguen a 16 px y en blanco y negro. A pierde detalle interno al reducirse; B puede confundirse con una impresora genérica. El símbolo no toma globos, cámaras, teléfonos ni motivos de WhatsApp, Instagram, Google o Mercado Pago.

  • Fuente: assets/branding/logo.svg (redibujo vectorial manual del concepto C).
  • Favicon 32 px; íconos PWA 192/512; maskable 192/512 con dibujo dentro del círculo seguro; Apple Touch 180 px opaco y enlazado en HTML.
  • Manifest: fondo #F7F6F2, tema #0F4C5C; meta theme-color consistente.
  • Generación reproducible: scripts/generate_branding.py, instrucciones en assets/branding/README.md. Sólo rasteriza el SVG local.
  • Conceptos originales, prompts y evidencia en docs/issue-28/, fuera de assets.

Cómo lo probé

TDD: los tests nuevos fallaron primero por colores de plantilla y tamaño anterior del favicon; luego pasaron con los assets nuevos. Verifican dimensiones, opacidad y zona segura maskable por píxel.

  • flutter analyze: sin errores ni warnings.
  • flutter test: 88 tests en verde.
  • flutter build web --release: correcto.
  • Playwright en 390 × 844: inicio → WhatsApp e Instagram → completar → etiqueta → Copiar link. Capturas incluidas. No se verificó el portapapeles del sistema.
  • Chromium con ventana real en Xvfb: favicon visible en la pestaña.
  • Detector Impeccable sobre HTML: sin hallazgos. No evalúa widgets Flutter; no se cambiaron widgets. Revisión visual independiente: ship, sin bloqueantes.

Entregable visible

Abrí los archivos de esta rama:

Para ver la lámina interactiva desde la raíz:

python3 -m http.server 8828

Abrí http://localhost:8828/docs/issue-28/preview.html.

Para probar la app y el favicon:

flutter build web --release
python3 -m http.server 8765 --directory build/web

Abrí http://localhost:8765. En iPhone, la instalación real se puede comprobar en el preview HTTPS del PR con Safari → Compartir → Agregar a inicio.

Prueba de image_gen

Tres llamadas y tres imágenes: un intento por concepto, sin regeneraciones. Tiempos observados: aproximadamente 39, 46 y 44 segundos. La herramienta devolvió raster con leves variaciones de tono; el redibujo SVG fija geometría y color exactos. Los originales se conservaron sin modificar. El README actual de ai-dev-team consultado no incluía la sección «Generación de imágenes»; se siguieron las instrucciones del issue y de la skill.

Limitaciones

La vista de iPhone es una simulación, no una instalación física. La revisión de parecido con marcas es visual, no una búsqueda exhaustiva de marcas registradas. Impeccable detectó que PRODUCT.md declara web y hay proyecto iOS; se mantuvo el alcance PWA explícito sin cambiar documentación de plataforma. El logo para la cabecera queda disponible para el siguiente issue.

@maxiar-ai-dev-team-bot maxiar-ai-dev-team-bot added agent:review Un agente reviewer revisa este PR (lo pone el dispatcher) engine:codex Motor: Codex agent:working Un agente está trabajando (lo pone el dispatcher) and removed agent:review Un agente reviewer revisa este PR (lo pone el dispatcher) labels Oct 9, 2026
@maxiar-ai-dev-team-bot

Copy link
Copy Markdown
Collaborator Author

Resumen

Revisé el issue #28, el diff completo, y corrí las verificaciones. El alcance se respeta: sólo toca assets/branding/, web/ (íconos, manifest, index.html), scripts/generate_branding.py, test/branding_test.dart y docs/issue-28/. No hay cambios en lib/ — pantallas, cabecera y etiqueta impresa quedan intactas, como se pide.

Verificación propia:

  • flutter analyze: sin observaciones.
  • flutter test: 88 tests en verde (coincide con lo declarado).
  • flutter build web --release: compila correctamente; el build resultante usa el favicon, el apple-touch-icon y los colores nuevos.
  • Reproducibilidad: corrí scripts/generate_branding.py con CairoSVG 2.9.1 desde cero y los seis PNG resultantes son byte-idénticos a los commiteados.
  • Colores: #0F4C5C (Sello) y #F7F6F2 (Papel) coinciden exactamente con DESIGN.md.
  • Zona segura maskable: el test valida por píxel que toda tinta queda dentro del círculo de radio 40%; confirmé que pasa.
  • Revisión visual de los 3 conceptos y el logo final: no veo parecido con WhatsApp, Instagram, Google ni Mercado Pago.
  • Entregable visible: probé las dos instrucciones (python3 -m http.server 8828 + preview.html, y build + servidor en 8765) y ambas funcionan; las capturas (favicon-browser.png, iphone-simulation.png, conceptos) muestran lo que el PR describe.
  • No hay regresiones: nada borrado ni desconectado de lo que ya funcionaba en main.

No encontré problemas bloqueantes.

Sugerencias (no bloqueantes)

  1. PRODUCT.md:42 — la sección "Brand Commitments" sigue diciendo "Sin identidad de marca propia definida todavía (sin logo ni paleta documentada...)", lo cual ya no es cierto después de este PR. El propio assets/branding/README.md reconoce la tensión y explica por qué no se tocó, así que no es un bloqueante, pero valdría la pena actualizar esa frase en un PR de documentación para que no quede desactualizada.

VEREDICTO: APROBADO

@maxiar-ai-dev-team-bot maxiar-ai-dev-team-bot added agent:qa QA prueba el comportamiento de este PR (lo pone el dispatcher) agent:working Un agente está trabajando (lo pone el dispatcher) and removed agent:working Un agente está trabajando (lo pone el dispatcher) labels Oct 9, 2026
@maxiar-ai-dev-team-bot

Copy link
Copy Markdown
Collaborator Author

QA de comportamiento sobre 478b78e, coincidente con el HEAD del PR. Build release local, Playwright + Chromium, flujos móviles en 390 × 844 y ventana real para el favicon. Sin cambios de código.

Plan numerado y resultados:

  1. ✅ Conceptos: abrir las tres propuestas, comprobar la elección y la lectura reducida/monocroma. Los tres conceptos están visibles; C mantiene sus cuatro piezas a 16 px y en blanco y negro. La pérdida de detalle de A está documentada como motivo de descarte. El registro incluye prompts, tres intentos totales y tiempos de 39,5/46/44 s; el uso histórico de image_gen se comprueba documentalmente, sin repetir la generación. Captura.
  2. ✅ Identidad propia: comparar visualmente el símbolo con las marcas mencionadas. No observé globos, cámaras, teléfonos, letras ni combinaciones que lo confundan con WhatsApp, Instagram, Google o Mercado Pago. Evaluación visual, sin búsqueda registral. Captura.
  3. ✅ SVG final: abrir assets/branding/logo.svg en el navegador. Se renderiza correctamente y coincide con el concepto C redibujado. Captura.
  4. ✅ Íconos: abrir la app y los recursos enlazados. Favicon visible en la pestaña real; PNG de 32, 192/512, maskable 192/512 y Apple Touch 180 px cargan correctamente y son opacos. La tinta de los maskable queda dentro del radio seguro del 40% (máximo observado menor al 37%); el recorte circular conserva el dibujo. El README documenta la rasterización desde el SVG. Pestaña real, íconos y recorte, simulación de iPhone. No se probó instalación en un iPhone físico; el issue admite simulación.
  5. ✅ Colores: consultar el manifest servido por el build. background_color: #F7F6F2 y theme_color: #0F4C5C, según DESIGN.md. El meta theme-color declarado también es Sello. Captura.
  6. ✅ Evidencia de descartados: abrir las propuestas conservadas en docs/issue-28/concepts/, fuera de assets/. Están disponibles los tres originales y el registro de generación. Captura.
  7. ✅ Regresión WhatsApp: inicio → WhatsApp → 11 2345 6789 → Ver etiqueta → Copiar link y Guardar imagen → volver al inicio. Portapapeles leído: https://wa.me/5491123456789. El PNG descargado mide 464 × 464 y un decodificador independiente lee ese mismo enlace del QR. Datos, etiqueta, copiar, regreso.
  8. ✅ Regresión Instagram: inicio → Instagram → @mi_comercio → Ver etiqueta → Copiar link y Guardar imagen → volver al inicio. Portapapeles leído: https://instagram.com/mi_comercio. El PNG descargado mide 464 × 464 y el QR decodifica al mismo enlace. Datos, etiqueta, copiar, regreso.

Verificación adicional: flutter analyze sin observaciones, flutter test con 88 tests aprobados y flutter build web --release correcto.

Incidencias de la ejecución, resueltas: Playwright no estaba en los entornos globales de Python/Node; se usó una instalación disponible. Un selector de meta encontró también el meta agregado por Flutter y se acotó al declarado. Los primeros intentos automatizados de volver por el selector semántico agotaron el tiempo; se repitieron ambos flujos con clics en la flecha visible y volvieron correctamente al inicio. La primera captura de escritorio incluyó otra ventana de esta misma prueba y se reemplazó por una captura aislada. Ningún comando de publicación de evidencia falló. Se usaron puertos 8930/8931 para evitar interferencias con otros servidores del contenedor.

Capturas nuevas publicadas en qa-evidence/pr-30/ronda-1/. Sin fallas funcionales observadas, sin aprobar ni mergear el PR.

QA: OK

@maxiar-ai-dev-team-bot maxiar-ai-dev-team-bot removed agent:working Un agente está trabajando (lo pone el dispatcher) agent:qa QA prueba el comportamiento de este PR (lo pone el dispatcher) labels Oct 9, 2026
@maxiar
maxiar merged commit 4e1c4d0 into main Oct 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine:codex Motor: Codex

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Identidad: logo de la app, favicon e íconos para instalar en el celular

2 participants